9
0
Fork 0

tegra: power up additional partitions on Tegra124

Those 3 are needed to power CPU0 from the CPUG cluster.

Signed-off-by: Lucas Stach <dev@lynxeye.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Lucas Stach 2014-06-03 22:34:59 +02:00 committed by Sascha Hauer
parent 3cc59d0e21
commit 3e5f060696
2 changed files with 22 additions and 6 deletions

View File

@ -66,4 +66,8 @@
#define PMC_PWRGATE_STATUS_TD (1 << 1)
#define PMC_PWRGATE_STATUS_CPU (1 << 0)
#define PMC_PARTID_CRAIL 0
#define PMC_PARTID_CE0 14
#define PMC_PARTID_C0NC 15
#define PMC_SCRATCH(i) (0x050 + 0x4*i)

View File

@ -197,26 +197,38 @@ static void start_cpu0_clocks(void)
tegra_ll_delay_usec(300);
}
static void maincomplex_powerup(void)
static void power_up_partition(u32 partid)
{
u32 reg;
if (!(readl(TEGRA_PMC_BASE + PMC_PWRGATE_STATUS) &
PMC_PWRGATE_STATUS_CPU)) {
writel(PMC_PWRGATE_TOGGLE_START | PMC_PWRGATE_TOGGLE_PARTID_CPU,
if (!(readl(TEGRA_PMC_BASE + PMC_PWRGATE_STATUS) & (1 << partid))) {
writel(PMC_PWRGATE_TOGGLE_START | partid,
TEGRA_PMC_BASE + PMC_PWRGATE_TOGGLE);
while (!(readl(TEGRA_PMC_BASE + PMC_PWRGATE_STATUS) &
PMC_PWRGATE_STATUS_CPU));
(1 << partid)));
reg = readl(TEGRA_PMC_BASE + PMC_REMOVE_CLAMPING_CMD);
reg |= PMC_REMOVE_CLAMPING_CMD_CPU;
reg |= (1 << partid);
writel(reg, TEGRA_PMC_BASE + PMC_REMOVE_CLAMPING_CMD);
tegra_ll_delay_usec(1000);
}
}
static void maincomplex_powerup(void)
{
/* main cpu rail */
power_up_partition(PMC_PARTID_CRAIL);
if (tegra_get_chiptype() >= TEGRA114) {
/* fast cluster uncore part */
power_up_partition(PMC_PARTID_C0NC);
/* fast cluster cpu0 part */
power_up_partition(PMC_PARTID_CE0);
}
}
static void tegra_cluster_switch_hp(void)
{
u32 reg;