ARM: OMAP2+: PRM: add generic API for checking hardreset status
PRM driver now has a generic API for checking hardreset status. SoC specific support functions are registered through the prm_ll_data. Signed-off-by: Tero Kristo <t-kristo@ti.com> Acked-by: Paul Walmsley <paul@pwsan.com> Tested-by: Nishanth Menon <nm@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:

committed by
Tony Lindgren

parent
37fb59d7e0
commit
1bc28b3472
@@ -52,6 +52,7 @@ u32 am33xx_prm_rmw_reg_bits(u32 mask, u32 bits, s16 inst, s16 idx)
|
||||
* am33xx_prm_is_hardreset_asserted - read the HW reset line state of
|
||||
* submodules contained in the hwmod module
|
||||
* @shift: register bit shift corresponding to the reset line to check
|
||||
* @part: PRM partition, ignored for AM33xx
|
||||
* @inst: CM instance register offset (*_INST macro)
|
||||
* @rstctrl_offs: RM_RSTCTRL register address offset for this module
|
||||
*
|
||||
@@ -59,7 +60,8 @@ u32 am33xx_prm_rmw_reg_bits(u32 mask, u32 bits, s16 inst, s16 idx)
|
||||
* 0 if the (sub)module hardreset line is not currently asserted, or
|
||||
* -EINVAL upon parameter error.
|
||||
*/
|
||||
int am33xx_prm_is_hardreset_asserted(u8 shift, s16 inst, u16 rstctrl_offs)
|
||||
static int am33xx_prm_is_hardreset_asserted(u8 shift, u8 part, s16 inst,
|
||||
u16 rstctrl_offs)
|
||||
{
|
||||
u32 v;
|
||||
|
||||
@@ -121,7 +123,7 @@ static int am33xx_prm_deassert_hardreset(u8 shift, u8 st_shift, u8 part,
|
||||
u32 mask = 1 << st_shift;
|
||||
|
||||
/* Check the current status to avoid de-asserting the line twice */
|
||||
if (am33xx_prm_is_hardreset_asserted(shift, inst, rstctrl_offs) == 0)
|
||||
if (am33xx_prm_is_hardreset_asserted(shift, 0, inst, rstctrl_offs) == 0)
|
||||
return -EEXIST;
|
||||
|
||||
/* Clear the reset status by writing 1 to the status bit */
|
||||
@@ -133,7 +135,7 @@ static int am33xx_prm_deassert_hardreset(u8 shift, u8 st_shift, u8 part,
|
||||
am33xx_prm_rmw_reg_bits(mask, 0, inst, rstctrl_offs);
|
||||
|
||||
/* wait the status to be set */
|
||||
omap_test_timeout(am33xx_prm_is_hardreset_asserted(st_shift, inst,
|
||||
omap_test_timeout(am33xx_prm_is_hardreset_asserted(st_shift, 0, inst,
|
||||
rstst_offs),
|
||||
MAX_MODULE_HARDRESET_WAIT, c);
|
||||
|
||||
@@ -351,6 +353,7 @@ struct pwrdm_ops am33xx_pwrdm_operations = {
|
||||
static struct prm_ll_data am33xx_prm_ll_data = {
|
||||
.assert_hardreset = am33xx_prm_assert_hardreset,
|
||||
.deassert_hardreset = am33xx_prm_deassert_hardreset,
|
||||
.is_hardreset_asserted = am33xx_prm_is_hardreset_asserted,
|
||||
};
|
||||
|
||||
int __init am33xx_prm_init(void)
|
||||
|
Reference in New Issue
Block a user