mirror of https://gitee.com/openkylin/linux.git
ARM: OMAP4: hwmod: flag hwmods/modules not supporting module level context status
On OMAP4 most modules/hwmods support module level context status. On OMAP3 and earlier, we relied on the power domain level context status. Identify all modules that don't support 'context_offs' by adding a flag bit, HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT. Rest have a valid 'context_offs' populated in .prcm structure already. Signed-off-by: Tero Kristo <t-kristo@ti.com> [paul@pwsan.com: add flag bit rather than overloading .context_offs; update changelog message] Signed-off-by: Paul Walmsley <paul@pwsan.com>
This commit is contained in:
parent
ce80979aed
commit
46b3af2789
|
@ -204,6 +204,7 @@ static struct omap_hwmod omap44xx_l4_abe_hwmod = {
|
|||
.clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,
|
||||
.context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
|
||||
.lostcontext_mask = OMAP4430_LOSTMEM_AESSMEM_MASK,
|
||||
.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
@ -260,6 +261,11 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = {
|
|||
.name = "mpu_private",
|
||||
.class = &omap44xx_mpu_bus_hwmod_class,
|
||||
.clkdm_name = "mpuss_clkdm",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -449,6 +455,11 @@ static struct omap_hwmod omap44xx_ctrl_module_core_hwmod = {
|
|||
.class = &omap44xx_ctrl_module_hwmod_class,
|
||||
.clkdm_name = "l4_cfg_clkdm",
|
||||
.mpu_irqs = omap44xx_ctrl_module_core_irqs,
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/* ctrl_module_pad_core */
|
||||
|
@ -456,6 +467,11 @@ static struct omap_hwmod omap44xx_ctrl_module_pad_core_hwmod = {
|
|||
.name = "ctrl_module_pad_core",
|
||||
.class = &omap44xx_ctrl_module_hwmod_class,
|
||||
.clkdm_name = "l4_cfg_clkdm",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/* ctrl_module_wkup */
|
||||
|
@ -463,6 +479,11 @@ static struct omap_hwmod omap44xx_ctrl_module_wkup_hwmod = {
|
|||
.name = "ctrl_module_wkup",
|
||||
.class = &omap44xx_ctrl_module_hwmod_class,
|
||||
.clkdm_name = "l4_wkup_clkdm",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/* ctrl_module_pad_wkup */
|
||||
|
@ -470,6 +491,11 @@ static struct omap_hwmod omap44xx_ctrl_module_pad_wkup_hwmod = {
|
|||
.name = "ctrl_module_pad_wkup",
|
||||
.class = &omap44xx_ctrl_module_hwmod_class,
|
||||
.clkdm_name = "l4_wkup_clkdm",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -2539,18 +2565,33 @@ static struct omap_hwmod omap44xx_prcm_mpu_hwmod = {
|
|||
.name = "prcm_mpu",
|
||||
.class = &omap44xx_prcm_hwmod_class,
|
||||
.clkdm_name = "l4_wkup_clkdm",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/* cm_core_aon */
|
||||
static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
|
||||
.name = "cm_core_aon",
|
||||
.class = &omap44xx_prcm_hwmod_class,
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/* cm_core */
|
||||
static struct omap_hwmod omap44xx_cm_core_hwmod = {
|
||||
.name = "cm_core",
|
||||
.class = &omap44xx_prcm_hwmod_class,
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/* prm */
|
||||
|
@ -2586,6 +2627,11 @@ static struct omap_hwmod omap44xx_scrm_hwmod = {
|
|||
.name = "scrm",
|
||||
.class = &omap44xx_scrm_hwmod_class,
|
||||
.clkdm_name = "l4_wkup_clkdm",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* omap_hwmod macros, structures
|
||||
*
|
||||
* Copyright (C) 2009-2011 Nokia Corporation
|
||||
* Copyright (C) 2011 Texas Instruments, Inc.
|
||||
* Copyright (C) 2012 Texas Instruments, Inc.
|
||||
* Paul Walmsley
|
||||
*
|
||||
* Created in collaboration with (alphabetical order): Benoît Cousson,
|
||||
|
@ -384,6 +384,14 @@ struct omap_hwmod_omap2_prcm {
|
|||
u8 idlest_stdby_bit;
|
||||
};
|
||||
|
||||
/*
|
||||
* Possible values for struct omap_hwmod_omap4_prcm.flags
|
||||
*
|
||||
* HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT: Some IP blocks don't have a PRCM
|
||||
* module-level context loss register associated with them; this
|
||||
* flag bit should be set in those cases
|
||||
*/
|
||||
#define HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT (1 << 0)
|
||||
|
||||
/**
|
||||
* struct omap_hwmod_omap4_prcm - OMAP4-specific PRCM data
|
||||
|
@ -392,6 +400,7 @@ struct omap_hwmod_omap2_prcm {
|
|||
* @lostcontext_mask: bitmask for selecting bits from RM_*_CONTEXT register
|
||||
* @rstst_reg: (AM33XX only) address of the XXX_RSTST register in the PRM
|
||||
* @submodule_wkdep_bit: bit shift of the WKDEP range
|
||||
* @flags: PRCM register capabilities for this IP block
|
||||
*
|
||||
* If @lostcontext_mask is not defined, context loss check code uses
|
||||
* whole register without masking. @lostcontext_mask should only be
|
||||
|
@ -406,6 +415,7 @@ struct omap_hwmod_omap4_prcm {
|
|||
u32 lostcontext_mask;
|
||||
u8 submodule_wkdep_bit;
|
||||
u8 modulemode;
|
||||
u8 flags;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue