diff options
author | KyongHo Cho <pullip.cho@samsung.com> | 2011-03-07 09:10:24 +0900 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2011-03-15 21:37:38 +0900 |
commit | b0b6ff0b21057bb8e58b0be8b427a4713fd4b5a5 (patch) | |
tree | 911aa86fbe18c818d619304c2e8e458ccd739936 /arch/arm/mach-exynos4/dev-sysmmu.c | |
parent | b34f003f271d477f61a980d280afc77929047440 (diff) | |
download | kernel_samsung_tuna-b0b6ff0b21057bb8e58b0be8b427a4713fd4b5a5.zip kernel_samsung_tuna-b0b6ff0b21057bb8e58b0be8b427a4713fd4b5a5.tar.gz kernel_samsung_tuna-b0b6ff0b21057bb8e58b0be8b427a4713fd4b5a5.tar.bz2 |
ARM: EXYNOS4: Implement Clock gating for System MMU
This patch includes the implementation of the clock gating
for System MMU. Initially, all System MMUs are not asserted
the system clock. Asserting the system clock to a System MMU
is enabled only when s5p_sysmmu_enable() is called. Likewise,
it is disabled only when s5p_sysmmu_disable() is called.
Therefore, clock gating on System MMUs are still invisible to
the outside of the System MMU driver.
Signed-off-by: KyongHo Cho <pullip.cho@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch/arm/mach-exynos4/dev-sysmmu.c')
-rw-r--r-- | arch/arm/mach-exynos4/dev-sysmmu.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/arch/arm/mach-exynos4/dev-sysmmu.c b/arch/arm/mach-exynos4/dev-sysmmu.c index 6889c9a..3b7cae0 100644 --- a/arch/arm/mach-exynos4/dev-sysmmu.c +++ b/arch/arm/mach-exynos4/dev-sysmmu.c @@ -208,3 +208,25 @@ struct platform_device exynos4_device_sysmmu = { .resource = exynos4_sysmmu_resource, }; EXPORT_SYMBOL(exynos4_device_sysmmu); + +static struct clk *sysmmu_clk[S5P_SYSMMU_TOTAL_IPNUM]; +void sysmmu_clk_init(struct device *dev, sysmmu_ips ips) +{ + sysmmu_clk[ips] = clk_get(dev, sysmmu_ips_name[ips]); + if (IS_ERR(sysmmu_clk[ips])) + sysmmu_clk[ips] = NULL; + else + clk_put(sysmmu_clk[ips]); +} + +void sysmmu_clk_enable(sysmmu_ips ips) +{ + if (sysmmu_clk[ips]) + clk_enable(sysmmu_clk[ips]); +} + +void sysmmu_clk_disable(sysmmu_ips ips) +{ + if (sysmmu_clk[ips]) + clk_disable(sysmmu_clk[ips]); +} |