aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTero Kristo <t-kristo@ti.com>2014-02-26 05:00:16 -0500
committerTero Kristo <t-kristo@ti.com>2014-07-04 10:02:15 -0400
commit7e28b465fdea3f0601a1c76e47c50d05c7c603e2 (patch)
treecf498d1add78a8aae7a8df8addb7fec36ad7f415
parent9efcea09b0b56488e46ab3a36fe8dbce9eded529 (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.c11
-rw-r--r--arch/arm/mach-omap2/prm3xxx.c9
-rw-r--r--arch/arm/mach-omap2/prm3xxx.h1
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
46struct omap3_scratchpad_prcm_block { 46struct 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
412void 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
414static int omap3_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) 423static 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);
166void omap3xxx_prm_iva_idle(void); 166void omap3xxx_prm_iva_idle(void);
167void omap3_prm_reset_modem(void); 167void omap3_prm_reset_modem(void);
168int omap3xxx_prm_clear_global_cold_reset(void); 168int omap3xxx_prm_clear_global_cold_reset(void);
169void omap3_prm_save_scratchpad_contents(u32 *ptr);
169 170
170#endif /* __ASSEMBLER */ 171#endif /* __ASSEMBLER */
171 172