diff options
Diffstat (limited to 'arch/arm/mach-tegra/powergate.c')
-rw-r--r-- | arch/arm/mach-tegra/powergate.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/powergate.c b/arch/arm/mach-tegra/powergate.c index 7120ad7e1355..c238699ae86f 100644 --- a/arch/arm/mach-tegra/powergate.c +++ b/arch/arm/mach-tegra/powergate.c @@ -41,6 +41,14 @@ #define PWRGATE_STATUS 0x38 static int tegra_num_powerdomains; +static int tegra_num_cpu_domains; +static u8 *tegra_cpu_domains; +static u8 tegra30_cpu_domains[] = { + TEGRA_POWERGATE_CPU0, + TEGRA_POWERGATE_CPU1, + TEGRA_POWERGATE_CPU2, + TEGRA_POWERGATE_CPU3, +}; static DEFINE_SPINLOCK(tegra_powergate_lock); @@ -161,6 +169,14 @@ err_power: return ret; } +int tegra_cpu_powergate_id(int cpuid) +{ + if (cpuid > 0 && cpuid < tegra_num_cpu_domains) + return tegra_cpu_domains[cpuid]; + + return -EINVAL; +} + int __init tegra_powergate_init(void) { switch (tegra_chip_id) { @@ -169,6 +185,8 @@ int __init tegra_powergate_init(void) break; case TEGRA30: tegra_num_powerdomains = 14; + tegra_num_cpu_domains = 4; + tegra_cpu_domains = tegra30_cpu_domains; break; default: /* Unknown Tegra variant. Disable powergating */ @@ -178,7 +196,6 @@ int __init tegra_powergate_init(void) return 0; } -arch_initcall(tegra_powergate_init); #ifdef CONFIG_DEBUG_FS |