ARM: OMAP3/OMAP4: PRM: add prm_features flags and add IO wakeup under it
prm_features flag will contain SoC specific feature enabler flags. Initially IO wakeup is added under this. Helps to get rid of runtime cpu_is_X checks. Signed-off-by: Tero Kristo <t-kristo@ti.com> Signed-off-by: Paul Walmsley <paul@pwsan.com>
This commit is contained in:
parent
81243651ba
commit
2541d15f16
|
@ -17,10 +17,18 @@
|
|||
|
||||
# ifndef __ASSEMBLER__
|
||||
extern void __iomem *prm_base;
|
||||
extern u16 prm_features;
|
||||
extern void omap2_set_globals_prm(void __iomem *prm);
|
||||
int of_prcm_init(void);
|
||||
# endif
|
||||
|
||||
/*
|
||||
* prm_features flag values
|
||||
*
|
||||
* PRM_HAS_IO_WAKEUP: has IO wakeup capability
|
||||
* PRM_HAS_VOLTAGE: has voltage domains
|
||||
*/
|
||||
#define PRM_HAS_IO_WAKEUP (1 << 0)
|
||||
|
||||
/*
|
||||
* MAX_MODULE_SOFTRESET_WAIT: Maximum microseconds to wait for OMAP
|
||||
|
|
|
@ -247,7 +247,7 @@ void omap3xxx_prm_reconfigure_io_chain(void)
|
|||
*/
|
||||
static void __init omap3xxx_prm_enable_io_wakeup(void)
|
||||
{
|
||||
if (omap3_has_io_wakeup())
|
||||
if (prm_features & PRM_HAS_IO_WAKEUP)
|
||||
omap2_prm_set_mod_reg_bits(OMAP3430_EN_IO_MASK, WKUP_MOD,
|
||||
PM_WKEN);
|
||||
}
|
||||
|
@ -407,6 +407,9 @@ static struct prm_ll_data omap3xxx_prm_ll_data = {
|
|||
|
||||
int __init omap3xxx_prm_init(void)
|
||||
{
|
||||
if (omap3_has_io_wakeup())
|
||||
prm_features |= PRM_HAS_IO_WAKEUP;
|
||||
|
||||
return prm_register(&omap3xxx_prm_ll_data);
|
||||
}
|
||||
|
||||
|
@ -417,6 +420,9 @@ static int __init omap3xxx_prm_late_init(void)
|
|||
if (!cpu_is_omap34xx())
|
||||
return 0;
|
||||
|
||||
if (!(prm_features & PRM_HAS_IO_WAKEUP))
|
||||
return 0;
|
||||
|
||||
omap3xxx_prm_enable_io_wakeup();
|
||||
ret = omap_prcm_register_chain_handler(&omap3_prcm_irq_setup);
|
||||
if (!ret)
|
||||
|
|
|
@ -661,6 +661,9 @@ static struct prm_ll_data omap44xx_prm_ll_data = {
|
|||
|
||||
int __init omap44xx_prm_init(void)
|
||||
{
|
||||
if (cpu_is_omap44xx())
|
||||
prm_features |= PRM_HAS_IO_WAKEUP;
|
||||
|
||||
return prm_register(&omap44xx_prm_ll_data);
|
||||
}
|
||||
|
||||
|
@ -669,6 +672,9 @@ static int __init omap44xx_prm_late_init(void)
|
|||
if (!cpu_is_omap44xx())
|
||||
return 0;
|
||||
|
||||
if (!(prm_features & PRM_HAS_IO_WAKEUP))
|
||||
return 0;
|
||||
|
||||
omap44xx_prm_enable_io_wakeup();
|
||||
|
||||
return omap_prcm_register_chain_handler(&omap4_prcm_irq_setup);
|
||||
|
|
|
@ -62,6 +62,8 @@ static struct omap_prcm_irq_setup *prcm_irq_setup;
|
|||
/* prm_base: base virtual address of the PRM IP block */
|
||||
void __iomem *prm_base;
|
||||
|
||||
u16 prm_features;
|
||||
|
||||
/*
|
||||
* prm_ll_data: function pointers to SoC-specific implementations of
|
||||
* common PRM functions
|
||||
|
|
Loading…
Reference in New Issue