diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-12 14:45:16 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-12 14:45:16 -0500 |
commit | 8287361abca36504da813638310d2547469283eb (patch) | |
tree | 8d98e9a910885efdb09ae5390a3ae44040557e2f /arch/arm/mach-omap2/cm33xx.c | |
parent | 2989950cea13711f0cc573c26cde8fe08a36be03 (diff) | |
parent | 8556650dd3370a927217f16444aac5cc0c71e61b (diff) |
Merge tag 'headers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC Header cleanups from Olof Johansson:
"This is a collection of header file cleanups, mostly for OMAP and
AT91, that keeps moving the platforms in the direction of
multiplatform by removing the need for mach-dependent header files
used in drivers and other places."
Fix up mostly trivial conflicts as per Olof.
* tag 'headers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (106 commits)
ARM: OMAP2+: Move iommu/iovmm headers to platform_data
ARM: OMAP2+: Make some definitions local
ARM: OMAP2+: Move iommu2 to drivers/iommu/omap-iommu2.c
ARM: OMAP2+: Move plat/iovmm.h to include/linux/omap-iommu.h
ARM: OMAP2+: Move iopgtable header to drivers/iommu/
ARM: OMAP: Merge iommu2.h into iommu.h
atmel: move ATMEL_MAX_UART to platform_data/atmel.h
ARM: OMAP: Remove omap_init_consistent_dma_size()
arm: at91: move at91rm9200 rtc header in drivers/rtc
arm: at91: move reset controller header to arm/arm/mach-at91
arm: at91: move pit define to the driver
arm: at91: move at91_shdwc.h to arch/arm/mach-at91
arm: at91: move board header to arch/arm/mach-at91
arn: at91: move at91_tc.h to arch/arm/mach-at91
arm: at91 move at91_aic.h to arch/arm/mach-at91
arm: at91 move board.h to arch/arm/mach-at91
arm: at91: move platfarm_data to include/linux/platform_data/atmel.h
arm: at91: drop machine defconfig
ARM: OMAP: Remove NEED_MACH_GPIO_H
ARM: OMAP: Remove unnecessary mach and plat includes
...
Diffstat (limited to 'arch/arm/mach-omap2/cm33xx.c')
-rw-r--r-- | arch/arm/mach-omap2/cm33xx.c | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/cm33xx.c b/arch/arm/mach-omap2/cm33xx.c index 13f56eafef03..058ce3c0873e 100644 --- a/arch/arm/mach-omap2/cm33xx.c +++ b/arch/arm/mach-omap2/cm33xx.c | |||
@@ -22,8 +22,7 @@ | |||
22 | #include <linux/err.h> | 22 | #include <linux/err.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | 24 | ||
25 | #include <plat/common.h> | 25 | #include "clockdomain.h" |
26 | |||
27 | #include "cm.h" | 26 | #include "cm.h" |
28 | #include "cm33xx.h" | 27 | #include "cm33xx.h" |
29 | #include "cm-regbits-34xx.h" | 28 | #include "cm-regbits-34xx.h" |
@@ -311,3 +310,58 @@ void am33xx_cm_module_disable(u16 inst, s16 cdoffs, u16 clkctrl_offs) | |||
311 | v &= ~AM33XX_MODULEMODE_MASK; | 310 | v &= ~AM33XX_MODULEMODE_MASK; |
312 | am33xx_cm_write_reg(v, inst, clkctrl_offs); | 311 | am33xx_cm_write_reg(v, inst, clkctrl_offs); |
313 | } | 312 | } |
313 | |||
314 | /* | ||
315 | * Clockdomain low-level functions | ||
316 | */ | ||
317 | |||
318 | static int am33xx_clkdm_sleep(struct clockdomain *clkdm) | ||
319 | { | ||
320 | am33xx_cm_clkdm_force_sleep(clkdm->cm_inst, clkdm->clkdm_offs); | ||
321 | return 0; | ||
322 | } | ||
323 | |||
324 | static int am33xx_clkdm_wakeup(struct clockdomain *clkdm) | ||
325 | { | ||
326 | am33xx_cm_clkdm_force_wakeup(clkdm->cm_inst, clkdm->clkdm_offs); | ||
327 | return 0; | ||
328 | } | ||
329 | |||
330 | static void am33xx_clkdm_allow_idle(struct clockdomain *clkdm) | ||
331 | { | ||
332 | am33xx_cm_clkdm_enable_hwsup(clkdm->cm_inst, clkdm->clkdm_offs); | ||
333 | } | ||
334 | |||
335 | static void am33xx_clkdm_deny_idle(struct clockdomain *clkdm) | ||
336 | { | ||
337 | am33xx_cm_clkdm_disable_hwsup(clkdm->cm_inst, clkdm->clkdm_offs); | ||
338 | } | ||
339 | |||
340 | static int am33xx_clkdm_clk_enable(struct clockdomain *clkdm) | ||
341 | { | ||
342 | if (clkdm->flags & CLKDM_CAN_FORCE_WAKEUP) | ||
343 | return am33xx_clkdm_wakeup(clkdm); | ||
344 | |||
345 | return 0; | ||
346 | } | ||
347 | |||
348 | static int am33xx_clkdm_clk_disable(struct clockdomain *clkdm) | ||
349 | { | ||
350 | bool hwsup = false; | ||
351 | |||
352 | hwsup = am33xx_cm_is_clkdm_in_hwsup(clkdm->cm_inst, clkdm->clkdm_offs); | ||
353 | |||
354 | if (!hwsup && (clkdm->flags & CLKDM_CAN_FORCE_SLEEP)) | ||
355 | am33xx_clkdm_sleep(clkdm); | ||
356 | |||
357 | return 0; | ||
358 | } | ||
359 | |||
360 | struct clkdm_ops am33xx_clkdm_operations = { | ||
361 | .clkdm_sleep = am33xx_clkdm_sleep, | ||
362 | .clkdm_wakeup = am33xx_clkdm_wakeup, | ||
363 | .clkdm_allow_idle = am33xx_clkdm_allow_idle, | ||
364 | .clkdm_deny_idle = am33xx_clkdm_deny_idle, | ||
365 | .clkdm_clk_enable = am33xx_clkdm_clk_enable, | ||
366 | .clkdm_clk_disable = am33xx_clkdm_clk_disable, | ||
367 | }; | ||