Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46b3af27 authored by Tero Kristo's avatar Tero Kristo Committed by Paul Walmsley
Browse files

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: default avatarTero Kristo <t-kristo@ti.com>
[paul@pwsan.com: add flag bit rather than overloading .context_offs;
 update changelog message]
Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
parent ce80979a
Loading
Loading
Loading
Loading
+46 −0
Original line number Original line Diff line number Diff line
@@ -204,6 +204,7 @@ static struct omap_hwmod omap44xx_l4_abe_hwmod = {
			.clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,
			.clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,
			.context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
			.context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
			.lostcontext_mask = OMAP4430_LOSTMEM_AESSMEM_MASK,
			.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",
	.name		= "mpu_private",
	.class		= &omap44xx_mpu_bus_hwmod_class,
	.class		= &omap44xx_mpu_bus_hwmod_class,
	.clkdm_name	= "mpuss_clkdm",
	.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,
	.class		= &omap44xx_ctrl_module_hwmod_class,
	.clkdm_name	= "l4_cfg_clkdm",
	.clkdm_name	= "l4_cfg_clkdm",
	.mpu_irqs	= omap44xx_ctrl_module_core_irqs,
	.mpu_irqs	= omap44xx_ctrl_module_core_irqs,
	.prcm = {
		.omap4 = {
			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
		},
	},
};
};


/* ctrl_module_pad_core */
/* ctrl_module_pad_core */
@@ -456,6 +467,11 @@ static struct omap_hwmod omap44xx_ctrl_module_pad_core_hwmod = {
	.name		= "ctrl_module_pad_core",
	.name		= "ctrl_module_pad_core",
	.class		= &omap44xx_ctrl_module_hwmod_class,
	.class		= &omap44xx_ctrl_module_hwmod_class,
	.clkdm_name	= "l4_cfg_clkdm",
	.clkdm_name	= "l4_cfg_clkdm",
	.prcm = {
		.omap4 = {
			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
		},
	},
};
};


/* ctrl_module_wkup */
/* ctrl_module_wkup */
@@ -463,6 +479,11 @@ static struct omap_hwmod omap44xx_ctrl_module_wkup_hwmod = {
	.name		= "ctrl_module_wkup",
	.name		= "ctrl_module_wkup",
	.class		= &omap44xx_ctrl_module_hwmod_class,
	.class		= &omap44xx_ctrl_module_hwmod_class,
	.clkdm_name	= "l4_wkup_clkdm",
	.clkdm_name	= "l4_wkup_clkdm",
	.prcm = {
		.omap4 = {
			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
		},
	},
};
};


/* ctrl_module_pad_wkup */
/* ctrl_module_pad_wkup */
@@ -470,6 +491,11 @@ static struct omap_hwmod omap44xx_ctrl_module_pad_wkup_hwmod = {
	.name		= "ctrl_module_pad_wkup",
	.name		= "ctrl_module_pad_wkup",
	.class		= &omap44xx_ctrl_module_hwmod_class,
	.class		= &omap44xx_ctrl_module_hwmod_class,
	.clkdm_name	= "l4_wkup_clkdm",
	.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",
	.name		= "prcm_mpu",
	.class		= &omap44xx_prcm_hwmod_class,
	.class		= &omap44xx_prcm_hwmod_class,
	.clkdm_name	= "l4_wkup_clkdm",
	.clkdm_name	= "l4_wkup_clkdm",
	.prcm = {
		.omap4 = {
			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
		},
	},
};
};


/* cm_core_aon */
/* cm_core_aon */
static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
	.name		= "cm_core_aon",
	.name		= "cm_core_aon",
	.class		= &omap44xx_prcm_hwmod_class,
	.class		= &omap44xx_prcm_hwmod_class,
	.prcm = {
		.omap4 = {
			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
		},
	},
};
};


/* cm_core */
/* cm_core */
static struct omap_hwmod omap44xx_cm_core_hwmod = {
static struct omap_hwmod omap44xx_cm_core_hwmod = {
	.name		= "cm_core",
	.name		= "cm_core",
	.class		= &omap44xx_prcm_hwmod_class,
	.class		= &omap44xx_prcm_hwmod_class,
	.prcm = {
		.omap4 = {
			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
		},
	},
};
};


/* prm */
/* prm */
@@ -2586,6 +2627,11 @@ static struct omap_hwmod omap44xx_scrm_hwmod = {
	.name		= "scrm",
	.name		= "scrm",
	.class		= &omap44xx_scrm_hwmod_class,
	.class		= &omap44xx_scrm_hwmod_class,
	.clkdm_name	= "l4_wkup_clkdm",
	.clkdm_name	= "l4_wkup_clkdm",
	.prcm = {
		.omap4 = {
			.flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
		},
	},
};
};


/*
/*
+11 −1
Original line number Original line Diff line number Diff line
@@ -2,7 +2,7 @@
 * omap_hwmod macros, structures
 * omap_hwmod macros, structures
 *
 *
 * Copyright (C) 2009-2011 Nokia Corporation
 * Copyright (C) 2009-2011 Nokia Corporation
 * Copyright (C) 2011 Texas Instruments, Inc.
 * Copyright (C) 2012 Texas Instruments, Inc.
 * Paul Walmsley
 * Paul Walmsley
 *
 *
 * Created in collaboration with (alphabetical order): Benoît Cousson,
 * Created in collaboration with (alphabetical order): Benoît Cousson,
@@ -384,6 +384,14 @@ struct omap_hwmod_omap2_prcm {
	u8 idlest_stdby_bit;
	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
 * 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
 * @lostcontext_mask: bitmask for selecting bits from RM_*_CONTEXT register
 * @rstst_reg: (AM33XX only) address of the XXX_RSTST register in the PRM
 * @rstst_reg: (AM33XX only) address of the XXX_RSTST register in the PRM
 * @submodule_wkdep_bit: bit shift of the WKDEP range
 * @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
 * If @lostcontext_mask is not defined, context loss check code uses
 * whole register without masking. @lostcontext_mask should only be
 * whole register without masking. @lostcontext_mask should only be
@@ -406,6 +415,7 @@ struct omap_hwmod_omap4_prcm {
	u32		lostcontext_mask;
	u32		lostcontext_mask;
	u8		submodule_wkdep_bit;
	u8		submodule_wkdep_bit;
	u8		modulemode;
	u8		modulemode;
	u8		flags;
};
};