diff options
author | Tero Kristo <t-kristo@ti.com> | 2014-02-26 05:00:16 -0500 |
---|---|---|
committer | Tero Kristo <t-kristo@ti.com> | 2014-07-04 10:02:15 -0400 |
commit | 7e28b465fdea3f0601a1c76e47c50d05c7c603e2 (patch) | |
tree | cf498d1add78a8aae7a8df8addb7fec36ad7f415 | |
parent | 9efcea09b0b56488e46ab3a36fe8dbce9eded529 (diff) |
ARM: OMAP3: PRM: add API for saving PRM scratchpad contents
This isolates the PRM register access within the PRM driver.
Signed-off-by: Tero Kristo <t-kristo@ti.com>
-rw-r--r-- | arch/arm/mach-omap2/control.c | 11 | ||||
-rw-r--r-- | arch/arm/mach-omap2/prm3xxx.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-omap2/prm3xxx.h | 1 |
3 files changed, 12 insertions, 9 deletions
diff --git a/arch/arm/mach-omap2/control.c b/arch/arm/mach-omap2/control.c index f8eb3e4354ad..83080949d0d3 100644 --- a/arch/arm/mach-omap2/control.c +++ b/arch/arm/mach-omap2/control.c | |||
@@ -44,8 +44,7 @@ struct omap3_scratchpad { | |||
44 | }; | 44 | }; |
45 | 45 | ||
46 | struct omap3_scratchpad_prcm_block { | 46 | struct omap3_scratchpad_prcm_block { |
47 | u32 prm_clksrc_ctrl; | 47 | u32 prm_contents[2]; |
48 | u32 prm_clksel; | ||
49 | u32 cm_contents[11]; | 48 | u32 cm_contents[11]; |
50 | u32 prcm_block_size; | 49 | u32 prcm_block_size; |
51 | }; | 50 | }; |
@@ -327,13 +326,7 @@ void omap3_save_scratchpad_contents(void) | |||
327 | scratchpad_contents.sdrc_block_offset = 0x64; | 326 | scratchpad_contents.sdrc_block_offset = 0x64; |
328 | 327 | ||
329 | /* Populate the PRCM block contents */ | 328 | /* Populate the PRCM block contents */ |
330 | prcm_block_contents.prm_clksrc_ctrl = | 329 | omap3_prm_save_scratchpad_contents(prcm_block_contents.prm_contents); |
331 | omap2_prm_read_mod_reg(OMAP3430_GR_MOD, | ||
332 | OMAP3_PRM_CLKSRC_CTRL_OFFSET); | ||
333 | prcm_block_contents.prm_clksel = | ||
334 | omap2_prm_read_mod_reg(OMAP3430_CCR_MOD, | ||
335 | OMAP3_PRM_CLKSEL_OFFSET); | ||
336 | |||
337 | omap3_cm_save_scratchpad_contents(prcm_block_contents.cm_contents); | 330 | omap3_cm_save_scratchpad_contents(prcm_block_contents.cm_contents); |
338 | 331 | ||
339 | prcm_block_contents.prcm_block_size = 0x0; | 332 | prcm_block_contents.prcm_block_size = 0x0; |
diff --git a/arch/arm/mach-omap2/prm3xxx.c b/arch/arm/mach-omap2/prm3xxx.c index 4733c28d9d64..4d93b844bcc4 100644 --- a/arch/arm/mach-omap2/prm3xxx.c +++ b/arch/arm/mach-omap2/prm3xxx.c | |||
@@ -409,6 +409,15 @@ int omap3xxx_prm_clear_global_cold_reset(void) | |||
409 | return 0; | 409 | return 0; |
410 | } | 410 | } |
411 | 411 | ||
412 | void omap3_prm_save_scratchpad_contents(u32 *ptr) | ||
413 | { | ||
414 | *ptr++ = omap2_prm_read_mod_reg(OMAP3430_GR_MOD, | ||
415 | OMAP3_PRM_CLKSRC_CTRL_OFFSET); | ||
416 | |||
417 | *ptr++ = omap2_prm_read_mod_reg(OMAP3430_GR_MOD, | ||
418 | OMAP3_PRM_CLKSEL_OFFSET); | ||
419 | } | ||
420 | |||
412 | /* Powerdomain low-level functions */ | 421 | /* Powerdomain low-level functions */ |
413 | 422 | ||
414 | static int omap3_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) | 423 | static int omap3_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) |
diff --git a/arch/arm/mach-omap2/prm3xxx.h b/arch/arm/mach-omap2/prm3xxx.h index 7548ae0e86d5..c5f9cbabb5bb 100644 --- a/arch/arm/mach-omap2/prm3xxx.h +++ b/arch/arm/mach-omap2/prm3xxx.h | |||
@@ -166,6 +166,7 @@ int omap3xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 ignore_bits); | |||
166 | void omap3xxx_prm_iva_idle(void); | 166 | void omap3xxx_prm_iva_idle(void); |
167 | void omap3_prm_reset_modem(void); | 167 | void omap3_prm_reset_modem(void); |
168 | int omap3xxx_prm_clear_global_cold_reset(void); | 168 | int omap3xxx_prm_clear_global_cold_reset(void); |
169 | void omap3_prm_save_scratchpad_contents(u32 *ptr); | ||
169 | 170 | ||
170 | #endif /* __ASSEMBLER */ | 171 | #endif /* __ASSEMBLER */ |
171 | 172 | ||