mirror of https://gitee.com/openkylin/linux.git
ARM: OMAP3: PRM: add API for checking and clearing cold reset status
This isolates the PRM register access within the PRM driver. Signed-off-by: Tero Kristo <t-kristo@ti.com>
This commit is contained in:
parent
55c6c3ad90
commit
9efcea09b0
|
@ -282,13 +282,9 @@ void omap3_clear_scratchpad_contents(void)
|
||||||
void __iomem *v_addr;
|
void __iomem *v_addr;
|
||||||
u32 offset = 0;
|
u32 offset = 0;
|
||||||
v_addr = OMAP2_L4_IO_ADDRESS(OMAP343X_SCRATCHPAD_ROM);
|
v_addr = OMAP2_L4_IO_ADDRESS(OMAP343X_SCRATCHPAD_ROM);
|
||||||
if (omap2_prm_read_mod_reg(OMAP3430_GR_MOD, OMAP3_PRM_RSTST_OFFSET) &
|
if (omap3xxx_prm_clear_global_cold_reset()) {
|
||||||
OMAP3430_GLOBAL_COLD_RST_MASK) {
|
|
||||||
for ( ; offset <= max_offset; offset += 0x4)
|
for ( ; offset <= max_offset; offset += 0x4)
|
||||||
writel_relaxed(0x0, (v_addr + offset));
|
writel_relaxed(0x0, (v_addr + offset));
|
||||||
omap2_prm_set_mod_reg_bits(OMAP3430_GLOBAL_COLD_RST_MASK,
|
|
||||||
OMAP3430_GR_MOD,
|
|
||||||
OMAP3_PRM_RSTST_OFFSET);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -389,6 +389,26 @@ void omap3xxx_prm_iva_idle(void)
|
||||||
OMAP3430_IVA2_MOD, OMAP2_RM_RSTCTRL);
|
OMAP3430_IVA2_MOD, OMAP2_RM_RSTCTRL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* omap3xxx_prm_clear_global_cold_reset - checks the global cold reset status
|
||||||
|
* and clears it if asserted
|
||||||
|
*
|
||||||
|
* Checks if cold-reset has occurred and clears the status bit if yes. Returns
|
||||||
|
* 1 if cold-reset has occurred, 0 otherwise.
|
||||||
|
*/
|
||||||
|
int omap3xxx_prm_clear_global_cold_reset(void)
|
||||||
|
{
|
||||||
|
if (omap2_prm_read_mod_reg(OMAP3430_GR_MOD, OMAP3_PRM_RSTST_OFFSET) &
|
||||||
|
OMAP3430_GLOBAL_COLD_RST_MASK) {
|
||||||
|
omap2_prm_set_mod_reg_bits(OMAP3430_GLOBAL_COLD_RST_MASK,
|
||||||
|
OMAP3430_GR_MOD,
|
||||||
|
OMAP3_PRM_RSTST_OFFSET);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* 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)
|
||||||
|
|
|
@ -165,6 +165,7 @@ extern u32 omap3xxx_prm_get_reset_sources(void);
|
||||||
int omap3xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 ignore_bits);
|
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);
|
||||||
|
|
||||||
#endif /* __ASSEMBLER */
|
#endif /* __ASSEMBLER */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue