ARM: OMAP3/4: PRM: add support of late_init call to prm_ll_ops
SoC specific late_init call is now registered during PRM init, and will be called automatically by PRM core. This helps to get rid of some redundant initcalls and cpu_is_X checks from the PRM code. Signed-off-by: Tero Kristo <t-kristo@ti.com> Signed-off-by: Paul Walmsley <paul@pwsan.com>
This commit is contained in:
parent
2541d15f16
commit
b550e47f5e
|
@ -126,6 +126,7 @@ struct prm_reset_src_map {
|
|||
* @read_reset_sources: ptr to the SoC PRM-specific get_reset_source impl
|
||||
* @was_any_context_lost_old: ptr to the SoC PRM context loss test fn
|
||||
* @clear_context_loss_flags_old: ptr to the SoC PRM context loss flag clear fn
|
||||
* @late_init: ptr to the late init function
|
||||
*
|
||||
* XXX @was_any_context_lost_old and @clear_context_loss_flags_old are
|
||||
* deprecated.
|
||||
|
@ -134,6 +135,7 @@ struct prm_ll_data {
|
|||
u32 (*read_reset_sources)(void);
|
||||
bool (*was_any_context_lost_old)(u8 part, s16 inst, u16 idx);
|
||||
void (*clear_context_loss_flags_old)(u8 part, s16 inst, u16 idx);
|
||||
int (*late_init)(void);
|
||||
};
|
||||
|
||||
extern int prm_register(struct prm_ll_data *pld);
|
||||
|
|
|
@ -401,8 +401,11 @@ struct pwrdm_ops omap3_pwrdm_operations = {
|
|||
*
|
||||
*/
|
||||
|
||||
static int omap3xxx_prm_late_init(void);
|
||||
|
||||
static struct prm_ll_data omap3xxx_prm_ll_data = {
|
||||
.read_reset_sources = &omap3xxx_prm_read_reset_sources,
|
||||
.late_init = &omap3xxx_prm_late_init,
|
||||
};
|
||||
|
||||
int __init omap3xxx_prm_init(void)
|
||||
|
@ -417,9 +420,6 @@ static int __init omap3xxx_prm_late_init(void)
|
|||
{
|
||||
int ret;
|
||||
|
||||
if (!cpu_is_omap34xx())
|
||||
return 0;
|
||||
|
||||
if (!(prm_features & PRM_HAS_IO_WAKEUP))
|
||||
return 0;
|
||||
|
||||
|
@ -431,7 +431,6 @@ static int __init omap3xxx_prm_late_init(void)
|
|||
|
||||
return ret;
|
||||
}
|
||||
omap_subsys_initcall(omap3xxx_prm_late_init);
|
||||
|
||||
static void __exit omap3xxx_prm_exit(void)
|
||||
{
|
||||
|
|
|
@ -650,6 +650,8 @@ struct pwrdm_ops omap4_pwrdm_operations = {
|
|||
.pwrdm_has_voltdm = omap4_check_vcvp,
|
||||
};
|
||||
|
||||
static int omap44xx_prm_late_init(void);
|
||||
|
||||
/*
|
||||
* XXX document
|
||||
*/
|
||||
|
@ -657,6 +659,7 @@ static struct prm_ll_data omap44xx_prm_ll_data = {
|
|||
.read_reset_sources = &omap44xx_prm_read_reset_sources,
|
||||
.was_any_context_lost_old = &omap44xx_prm_was_any_context_lost_old,
|
||||
.clear_context_loss_flags_old = &omap44xx_prm_clear_context_loss_flags_old,
|
||||
.late_init = &omap44xx_prm_late_init,
|
||||
};
|
||||
|
||||
int __init omap44xx_prm_init(void)
|
||||
|
@ -669,9 +672,6 @@ int __init omap44xx_prm_init(void)
|
|||
|
||||
static int __init omap44xx_prm_late_init(void)
|
||||
{
|
||||
if (!cpu_is_omap44xx())
|
||||
return 0;
|
||||
|
||||
if (!(prm_features & PRM_HAS_IO_WAKEUP))
|
||||
return 0;
|
||||
|
||||
|
@ -679,7 +679,6 @@ static int __init omap44xx_prm_late_init(void)
|
|||
|
||||
return omap_prcm_register_chain_handler(&omap4_prcm_irq_setup);
|
||||
}
|
||||
omap_subsys_initcall(omap44xx_prm_late_init);
|
||||
|
||||
static void __exit omap44xx_prm_exit(void)
|
||||
{
|
||||
|
|
|
@ -527,3 +527,11 @@ int __init of_prcm_init(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init prm_late_init(void)
|
||||
{
|
||||
if (prm_ll_data->late_init)
|
||||
return prm_ll_data->late_init();
|
||||
return 0;
|
||||
}
|
||||
subsys_initcall(prm_late_init);
|
||||
|
|
Loading…
Reference in New Issue