Commit 7e28b465 authored by Tero Kristo's avatar Tero Kristo

ARM: OMAP3: PRM: add API for saving PRM scratchpad contents

This isolates the PRM register access within the PRM driver.
Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
parent 9efcea09
...@@ -44,8 +44,7 @@ struct omap3_scratchpad { ...@@ -44,8 +44,7 @@ struct omap3_scratchpad {
}; };
struct omap3_scratchpad_prcm_block { struct omap3_scratchpad_prcm_block {
u32 prm_clksrc_ctrl; u32 prm_contents[2];
u32 prm_clksel;
u32 cm_contents[11]; u32 cm_contents[11];
u32 prcm_block_size; u32 prcm_block_size;
}; };
...@@ -327,13 +326,7 @@ void omap3_save_scratchpad_contents(void) ...@@ -327,13 +326,7 @@ void omap3_save_scratchpad_contents(void)
scratchpad_contents.sdrc_block_offset = 0x64; scratchpad_contents.sdrc_block_offset = 0x64;
/* Populate the PRCM block contents */ /* Populate the PRCM block contents */
prcm_block_contents.prm_clksrc_ctrl = omap3_prm_save_scratchpad_contents(prcm_block_contents.prm_contents);
omap2_prm_read_mod_reg(OMAP3430_GR_MOD,
OMAP3_PRM_CLKSRC_CTRL_OFFSET);
prcm_block_contents.prm_clksel =
omap2_prm_read_mod_reg(OMAP3430_CCR_MOD,
OMAP3_PRM_CLKSEL_OFFSET);
omap3_cm_save_scratchpad_contents(prcm_block_contents.cm_contents); omap3_cm_save_scratchpad_contents(prcm_block_contents.cm_contents);
prcm_block_contents.prcm_block_size = 0x0; prcm_block_contents.prcm_block_size = 0x0;
......
...@@ -409,6 +409,15 @@ int omap3xxx_prm_clear_global_cold_reset(void) ...@@ -409,6 +409,15 @@ int omap3xxx_prm_clear_global_cold_reset(void)
return 0; return 0;
} }
void omap3_prm_save_scratchpad_contents(u32 *ptr)
{
*ptr++ = omap2_prm_read_mod_reg(OMAP3430_GR_MOD,
OMAP3_PRM_CLKSRC_CTRL_OFFSET);
*ptr++ = omap2_prm_read_mod_reg(OMAP3430_GR_MOD,
OMAP3_PRM_CLKSEL_OFFSET);
}
/* Powerdomain low-level functions */ /* Powerdomain low-level functions */
static int omap3_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) static int omap3_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst)
......
...@@ -166,6 +166,7 @@ int omap3xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 ignore_bits); ...@@ -166,6 +166,7 @@ int omap3xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 ignore_bits);
void omap3xxx_prm_iva_idle(void); void omap3xxx_prm_iva_idle(void);
void omap3_prm_reset_modem(void); void omap3_prm_reset_modem(void);
int omap3xxx_prm_clear_global_cold_reset(void); int omap3xxx_prm_clear_global_cold_reset(void);
void omap3_prm_save_scratchpad_contents(u32 *ptr);
#endif /* __ASSEMBLER */ #endif /* __ASSEMBLER */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment