diff options
author | Paul Walmsley <paul@pwsan.com> | 2012-10-30 03:56:29 +0100 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2012-11-08 20:33:08 +0100 |
commit | c4ceedcb18cf7a06059482a3a1828b9aad9f78cf (patch) | |
tree | e9b5e9bb75aa84ea70159fa68e103a69518a1eee /arch/arm/mach-omap2/cm.h | |
parent | ARM: OMAP2xxx: APLL/CM: convert to use omap2_cm_wait_module_ready() (diff) | |
download | linux-c4ceedcb18cf7a06059482a3a1828b9aad9f78cf.tar.xz linux-c4ceedcb18cf7a06059482a3a1828b9aad9f78cf.zip |
ARM: OMAP2+: CM/clock: convert _omap2_module_wait_ready() to use SoC-independent CM functions
Convert the OMAP clock code's _omap2_module_wait_ready() to use
SoC-independent CM functions that are provided by the CM code, rather
than using a deprecated function from mach-omap2/prcm.c.
This facilitates the future conversion of the CM code to a driver, and
also removes a mach-omap2/prcm.c user. mach-omap2/prcm.c will be removed
by a subsequent patch.
Some modules have IDLEST registers that aren't in the CM module, such
as the AM3517 IDLEST bits. So we also need a fallback function for
these non-CM odd cases. Create a temporary one in mach-omap2/clock.c,
intended to exist until the SCM drivers are ready.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Tested-by: Vaibhav Hiremath <hvaibhav@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2/cm.h')
-rw-r--r-- | arch/arm/mach-omap2/cm.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/cm.h b/arch/arm/mach-omap2/cm.h index b3cee913dd67..e419ecb7cce4 100644 --- a/arch/arm/mach-omap2/cm.h +++ b/arch/arm/mach-omap2/cm.h @@ -37,8 +37,18 @@ /** * struct cm_ll_data - fn ptrs to per-SoC CM function implementations + * @split_idlest_reg: ptr to the SoC CM-specific split_idlest_reg impl + * @wait_module_ready: ptr to the SoC CM-specific wait_module_ready impl */ -struct cm_ll_data {}; +struct cm_ll_data { + int (*split_idlest_reg)(void __iomem *idlest_reg, s16 *prcm_inst, + u8 *idlest_reg_id); + int (*wait_module_ready)(s16 prcm_mod, u8 idlest_id, u8 idlest_shift); +}; + +extern int cm_split_idlest_reg(void __iomem *idlest_reg, s16 *prcm_inst, + u8 *idlest_reg_id); +extern int cm_wait_module_ready(s16 prcm_mod, u8 idlest_id, u8 idlest_shift); extern int cm_register(struct cm_ll_data *cld); extern int cm_unregister(struct cm_ll_data *cld); |