diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-06 19:13:58 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-06 19:13:58 -0800 | 
| commit | 01539ba2a706ab7d35fc0667dff919ade7f87d63 (patch) | |
| tree | 5a4bd0cf78007d06690fe4ac06bbd49a5a70bc47 /arch/arm/mach-omap2/prcm.c | |
| parent | 9e9bc9736756f25d6c47b4eba0ebf25b20a6f153 (diff) | |
| parent | dc69d1af9e8d9cbbabff88bb35a6782187a22229 (diff) | |
| download | olio-linux-3.10-01539ba2a706ab7d35fc0667dff919ade7f87d63.tar.xz olio-linux-3.10-01539ba2a706ab7d35fc0667dff919ade7f87d63.zip  | |
Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6
* 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (243 commits)
  omap2: Make OMAP2PLUS select OMAP_DM_TIMER
  OMAP4: hwmod data: Fix alignment and end of line in structurefields
  OMAP4: hwmod data: Move the DMA structures
  OMAP4: hwmod data: Move the smartreflex structures
  OMAP4: hwmod data: Fix missing SIDLE_SMART_WKUP in smartreflexsysc
  arm: omap: tusb6010: add name for MUSB IRQ
  arm: omap: craneboard: Add USB EHCI support
  omap2+: Initialize serial port for dynamic remuxing for n8x0
  omap2+: Add struct omap_board_data and use it for platform level serial init
  omap2+: Allow hwmod state changes to mux pads based on the state changes
  omap2+: Add support for hwmod specific muxing of devices
  omap2+: Add omap_mux_get_by_name
  OMAP2: PM: fix compile error when !CONFIG_SUSPEND
  MAINTAINERS: OMAP: hwmod: update hwmod code, data maintainership
  OMAP4: Smartreflex framework extensions
  OMAP4: hwmod: Add inital data for smartreflex modules.
  OMAP4: PM: Program correct init voltages for scalable VDDs
  OMAP4: Adding voltage driver support
  OMAP4: Register voltage PMIC parameters with the voltage layer
  OMAP3: PM: Program correct init voltages for VDD1 and VDD2
  ...
Fix up trivial conflict in arch/arm/plat-omap/Kconfig
Diffstat (limited to 'arch/arm/mach-omap2/prcm.c')
| -rw-r--r-- | arch/arm/mach-omap2/prcm.c | 554 | 
1 files changed, 50 insertions, 504 deletions
diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c index a51846e3a6f..679bcd28576 100644 --- a/arch/arm/mach-omap2/prcm.c +++ b/arch/arm/mach-omap2/prcm.c @@ -17,7 +17,8 @@   * it under the terms of the GNU General Public License version 2 as   * published by the Free Software Foundation.   */ -#include <linux/module.h> + +#include <linux/kernel.h>  #include <linux/init.h>  #include <linux/clk.h>  #include <linux/io.h> @@ -29,105 +30,27 @@  #include "clock.h"  #include "clock2xxx.h" -#include "cm.h" -#include "prm.h" +#include "cm2xxx_3xxx.h" +#include "prm2xxx_3xxx.h" +#include "prm44xx.h" +#include "prminst44xx.h"  #include "prm-regbits-24xx.h"  #include "prm-regbits-44xx.h"  #include "control.h" -static void __iomem *prm_base; -static void __iomem *cm_base; -static void __iomem *cm2_base; +void __iomem *prm_base; +void __iomem *cm_base; +void __iomem *cm2_base;  #define MAX_MODULE_ENABLE_WAIT		100000 -struct omap3_prcm_regs { -	u32 control_padconf_sys_nirq; -	u32 iva2_cm_clksel1; -	u32 iva2_cm_clksel2; -	u32 cm_sysconfig; -	u32 sgx_cm_clksel; -	u32 dss_cm_clksel; -	u32 cam_cm_clksel; -	u32 per_cm_clksel; -	u32 emu_cm_clksel; -	u32 emu_cm_clkstctrl; -	u32 pll_cm_autoidle2; -	u32 pll_cm_clksel4; -	u32 pll_cm_clksel5; -	u32 pll_cm_clken2; -	u32 cm_polctrl; -	u32 iva2_cm_fclken; -	u32 iva2_cm_clken_pll; -	u32 core_cm_fclken1; -	u32 core_cm_fclken3; -	u32 sgx_cm_fclken; -	u32 wkup_cm_fclken; -	u32 dss_cm_fclken; -	u32 cam_cm_fclken; -	u32 per_cm_fclken; -	u32 usbhost_cm_fclken; -	u32 core_cm_iclken1; -	u32 core_cm_iclken2; -	u32 core_cm_iclken3; -	u32 sgx_cm_iclken; -	u32 wkup_cm_iclken; -	u32 dss_cm_iclken; -	u32 cam_cm_iclken; -	u32 per_cm_iclken; -	u32 usbhost_cm_iclken; -	u32 iva2_cm_autiidle2; -	u32 mpu_cm_autoidle2; -	u32 iva2_cm_clkstctrl; -	u32 mpu_cm_clkstctrl; -	u32 core_cm_clkstctrl; -	u32 sgx_cm_clkstctrl; -	u32 dss_cm_clkstctrl; -	u32 cam_cm_clkstctrl; -	u32 per_cm_clkstctrl; -	u32 neon_cm_clkstctrl; -	u32 usbhost_cm_clkstctrl; -	u32 core_cm_autoidle1; -	u32 core_cm_autoidle2; -	u32 core_cm_autoidle3; -	u32 wkup_cm_autoidle; -	u32 dss_cm_autoidle; -	u32 cam_cm_autoidle; -	u32 per_cm_autoidle; -	u32 usbhost_cm_autoidle; -	u32 sgx_cm_sleepdep; -	u32 dss_cm_sleepdep; -	u32 cam_cm_sleepdep; -	u32 per_cm_sleepdep; -	u32 usbhost_cm_sleepdep; -	u32 cm_clkout_ctrl; -	u32 prm_clkout_ctrl; -	u32 sgx_pm_wkdep; -	u32 dss_pm_wkdep; -	u32 cam_pm_wkdep; -	u32 per_pm_wkdep; -	u32 neon_pm_wkdep; -	u32 usbhost_pm_wkdep; -	u32 core_pm_mpugrpsel1; -	u32 iva2_pm_ivagrpsel1; -	u32 core_pm_mpugrpsel3; -	u32 core_pm_ivagrpsel3; -	u32 wkup_pm_mpugrpsel; -	u32 wkup_pm_ivagrpsel; -	u32 per_pm_mpugrpsel; -	u32 per_pm_ivagrpsel; -	u32 wkup_pm_wken; -}; - -static struct omap3_prcm_regs prcm_context; -  u32 omap_prcm_get_reset_sources(void)  {  	/* XXX This presumably needs modification for 34XX */  	if (cpu_is_omap24xx() || cpu_is_omap34xx()) -		return prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTST) & 0x7f; +		return omap2_prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTST) & 0x7f;  	if (cpu_is_omap44xx()) -		return prm_read_mod_reg(WKUP_MOD, OMAP4_RM_RSTST) & 0x7f; +		return omap2_prm_read_mod_reg(WKUP_MOD, OMAP4_RM_RSTST) & 0x7f;  	return 0;  } @@ -143,126 +66,46 @@ void omap_prcm_arch_reset(char mode, const char *cmd)  		prcm_offs = WKUP_MOD;  	} else if (cpu_is_omap34xx()) { -		u32 l; -  		prcm_offs = OMAP3430_GR_MOD; -		l = ('B' << 24) | ('M' << 16) | (cmd ? (u8)*cmd : 0); -		/* Reserve the first word in scratchpad for communicating -		 * with the boot ROM. A pointer to a data structure -		 * describing the boot process can be stored there, -		 * cf. OMAP34xx TRM, Initialization / Software Booting -		 * Configuration. */ -		omap_writel(l, OMAP343X_SCRATCHPAD + 4); -	} else if (cpu_is_omap44xx()) -		prcm_offs = OMAP4430_PRM_DEVICE_MOD; -	else +		omap3_ctrl_write_boot_mode((cmd ? (u8)*cmd : 0)); +	} else if (cpu_is_omap44xx()) { +		omap4_prm_global_warm_sw_reset(); /* never returns */ +	} else {  		WARN_ON(1); +	} -	if (cpu_is_omap24xx() || cpu_is_omap34xx()) -		prm_set_mod_reg_bits(OMAP_RST_DPLL3_MASK, prcm_offs, -						 OMAP2_RM_RSTCTRL); -	if (cpu_is_omap44xx()) -		prm_set_mod_reg_bits(OMAP4430_RST_GLOBAL_WARM_SW_MASK, -				     prcm_offs, OMAP4_RM_RSTCTRL); -} - -static inline u32 __omap_prcm_read(void __iomem *base, s16 module, u16 reg) -{ -	BUG_ON(!base); -	return __raw_readl(base + module + reg); -} - -static inline void __omap_prcm_write(u32 value, void __iomem *base, -						s16 module, u16 reg) -{ -	BUG_ON(!base); -	__raw_writel(value, base + module + reg); -} - -/* Read a register in a PRM module */ -u32 prm_read_mod_reg(s16 module, u16 idx) -{ -	return __omap_prcm_read(prm_base, module, idx); -} - -/* Write into a register in a PRM module */ -void prm_write_mod_reg(u32 val, s16 module, u16 idx) -{ -	__omap_prcm_write(val, prm_base, module, idx); -} - -/* Read-modify-write a register in a PRM module. Caller must lock */ -u32 prm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx) -{ -	u32 v; - -	v = prm_read_mod_reg(module, idx); -	v &= ~mask; -	v |= bits; -	prm_write_mod_reg(v, module, idx); - -	return v; -} - -/* Read a PRM register, AND it, and shift the result down to bit 0 */ -u32 prm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask) -{ -	u32 v; - -	v = prm_read_mod_reg(domain, idx); -	v &= mask; -	v >>= __ffs(mask); - -	return v; -} - -/* Read a PRM register, AND it, and shift the result down to bit 0 */ -u32 omap4_prm_read_bits_shift(void __iomem *reg, u32 mask) -{ -	u32 v; - -	v = __raw_readl(reg); -	v &= mask; -	v >>= __ffs(mask); - -	return v; -} - -/* Read-modify-write a register in a PRM module. Caller must lock */ -u32 omap4_prm_rmw_reg_bits(u32 mask, u32 bits, void __iomem *reg) -{ -	u32 v; - -	v = __raw_readl(reg); -	v &= ~mask; -	v |= bits; -	__raw_writel(v, reg); - -	return v; -} -/* Read a register in a CM module */ -u32 cm_read_mod_reg(s16 module, u16 idx) -{ -	return __omap_prcm_read(cm_base, module, idx); -} - -/* Write into a register in a CM module */ -void cm_write_mod_reg(u32 val, s16 module, u16 idx) -{ -	__omap_prcm_write(val, cm_base, module, idx); -} - -/* Read-modify-write a register in a CM module. Caller must lock */ -u32 cm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx) -{ -	u32 v; - -	v = cm_read_mod_reg(module, idx); -	v &= ~mask; -	v |= bits; -	cm_write_mod_reg(v, module, idx); +	/* +	 * As per Errata i520, in some cases, user will not be able to +	 * access DDR memory after warm-reset. +	 * This situation occurs while the warm-reset happens during a read +	 * access to DDR memory. In that particular condition, DDR memory +	 * does not respond to a corrupted read command due to the warm +	 * reset occurrence but SDRC is waiting for read completion. +	 * SDRC is not sensitive to the warm reset, but the interconnect is +	 * reset on the fly, thus causing a misalignment between SDRC logic, +	 * interconnect logic and DDR memory state. +	 * WORKAROUND: +	 * Steps to perform before a Warm reset is trigged: +	 * 1. enable self-refresh on idle request +	 * 2. put SDRC in idle +	 * 3. wait until SDRC goes to idle +	 * 4. generate SW reset (Global SW reset) +	 * +	 * Steps to be performed after warm reset occurs (in bootloader): +	 * if HW warm reset is the source, apply below steps before any +	 * accesses to SDRAM: +	 * 1. Reset SMS and SDRC and wait till reset is complete +	 * 2. Re-initialize SMS, SDRC and memory +	 * +	 * NOTE: Above work around is required only if arch reset is implemented +	 * using Global SW reset(GLOBAL_SW_RST). DPLL3 reset does not need +	 * the WA since it resets SDRC as well as part of cold reset. +	 */ -	return v; +	/* XXX should be moved to some OMAP2/3 specific code */ +	omap2_prm_set_mod_reg_bits(OMAP_RST_DPLL3_MASK, prcm_offs, +				   OMAP2_RM_RSTCTRL); +	omap2_prm_read_mod_reg(prcm_offs, OMAP2_RM_RSTCTRL); /* OCP barrier */  }  /** @@ -274,6 +117,9 @@ u32 cm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx)   *   * Returns 1 if the module indicated readiness in time, or 0 if it   * failed to enable in roughly MAX_MODULE_ENABLE_WAIT microseconds. + * + * XXX This function is deprecated.  It should be removed once the + * hwmod conversion is complete.   */  int omap2_cm_wait_idlest(void __iomem *reg, u32 mask, u8 idlest,  				const char *name) @@ -316,303 +162,3 @@ void __init omap2_set_globals_prcm(struct omap_globals *omap2_globals)  		WARN_ON(!cm2_base);  	}  } - -#ifdef CONFIG_ARCH_OMAP3 -void omap3_prcm_save_context(void) -{ -	prcm_context.control_padconf_sys_nirq = -			 omap_ctrl_readl(OMAP343X_CONTROL_PADCONF_SYSNIRQ); -	prcm_context.iva2_cm_clksel1 = -			 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_CLKSEL1); -	prcm_context.iva2_cm_clksel2 = -			 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_CLKSEL2); -	prcm_context.cm_sysconfig = __raw_readl(OMAP3430_CM_SYSCONFIG); -	prcm_context.sgx_cm_clksel = -			 cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_CLKSEL); -	prcm_context.dss_cm_clksel = -			 cm_read_mod_reg(OMAP3430_DSS_MOD, CM_CLKSEL); -	prcm_context.cam_cm_clksel = -			 cm_read_mod_reg(OMAP3430_CAM_MOD, CM_CLKSEL); -	prcm_context.per_cm_clksel = -			 cm_read_mod_reg(OMAP3430_PER_MOD, CM_CLKSEL); -	prcm_context.emu_cm_clksel = -			 cm_read_mod_reg(OMAP3430_EMU_MOD, CM_CLKSEL1); -	prcm_context.emu_cm_clkstctrl = -			 cm_read_mod_reg(OMAP3430_EMU_MOD, OMAP2_CM_CLKSTCTRL); -	prcm_context.pll_cm_autoidle2 = -			 cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE2); -	prcm_context.pll_cm_clksel4 = -			cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL4); -	prcm_context.pll_cm_clksel5 = -			 cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL5); -	prcm_context.pll_cm_clken2 = -			cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKEN2); -	prcm_context.cm_polctrl = __raw_readl(OMAP3430_CM_POLCTRL); -	prcm_context.iva2_cm_fclken = -			 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_FCLKEN); -	prcm_context.iva2_cm_clken_pll = cm_read_mod_reg(OMAP3430_IVA2_MOD, -			OMAP3430_CM_CLKEN_PLL); -	prcm_context.core_cm_fclken1 = -			 cm_read_mod_reg(CORE_MOD, CM_FCLKEN1); -	prcm_context.core_cm_fclken3 = -			 cm_read_mod_reg(CORE_MOD, OMAP3430ES2_CM_FCLKEN3); -	prcm_context.sgx_cm_fclken = -			 cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_FCLKEN); -	prcm_context.wkup_cm_fclken = -			 cm_read_mod_reg(WKUP_MOD, CM_FCLKEN); -	prcm_context.dss_cm_fclken = -			 cm_read_mod_reg(OMAP3430_DSS_MOD, CM_FCLKEN); -	prcm_context.cam_cm_fclken = -			 cm_read_mod_reg(OMAP3430_CAM_MOD, CM_FCLKEN); -	prcm_context.per_cm_fclken = -			 cm_read_mod_reg(OMAP3430_PER_MOD, CM_FCLKEN); -	prcm_context.usbhost_cm_fclken = -			 cm_read_mod_reg(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN); -	prcm_context.core_cm_iclken1 = -			 cm_read_mod_reg(CORE_MOD, CM_ICLKEN1); -	prcm_context.core_cm_iclken2 = -			 cm_read_mod_reg(CORE_MOD, CM_ICLKEN2); -	prcm_context.core_cm_iclken3 = -			 cm_read_mod_reg(CORE_MOD, CM_ICLKEN3); -	prcm_context.sgx_cm_iclken = -			 cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_ICLKEN); -	prcm_context.wkup_cm_iclken = -			 cm_read_mod_reg(WKUP_MOD, CM_ICLKEN); -	prcm_context.dss_cm_iclken = -			 cm_read_mod_reg(OMAP3430_DSS_MOD, CM_ICLKEN); -	prcm_context.cam_cm_iclken = -			 cm_read_mod_reg(OMAP3430_CAM_MOD, CM_ICLKEN); -	prcm_context.per_cm_iclken = -			 cm_read_mod_reg(OMAP3430_PER_MOD, CM_ICLKEN); -	prcm_context.usbhost_cm_iclken = -			 cm_read_mod_reg(OMAP3430ES2_USBHOST_MOD, CM_ICLKEN); -	prcm_context.iva2_cm_autiidle2 = -			 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_AUTOIDLE2); -	prcm_context.mpu_cm_autoidle2 = -			 cm_read_mod_reg(MPU_MOD, CM_AUTOIDLE2); -	prcm_context.iva2_cm_clkstctrl = -			 cm_read_mod_reg(OMAP3430_IVA2_MOD, OMAP2_CM_CLKSTCTRL); -	prcm_context.mpu_cm_clkstctrl = -			 cm_read_mod_reg(MPU_MOD, OMAP2_CM_CLKSTCTRL); -	prcm_context.core_cm_clkstctrl = -			 cm_read_mod_reg(CORE_MOD, OMAP2_CM_CLKSTCTRL); -	prcm_context.sgx_cm_clkstctrl = -			 cm_read_mod_reg(OMAP3430ES2_SGX_MOD, -						OMAP2_CM_CLKSTCTRL); -	prcm_context.dss_cm_clkstctrl = -			 cm_read_mod_reg(OMAP3430_DSS_MOD, OMAP2_CM_CLKSTCTRL); -	prcm_context.cam_cm_clkstctrl = -			 cm_read_mod_reg(OMAP3430_CAM_MOD, OMAP2_CM_CLKSTCTRL); -	prcm_context.per_cm_clkstctrl = -			 cm_read_mod_reg(OMAP3430_PER_MOD, OMAP2_CM_CLKSTCTRL); -	prcm_context.neon_cm_clkstctrl = -			 cm_read_mod_reg(OMAP3430_NEON_MOD, OMAP2_CM_CLKSTCTRL); -	prcm_context.usbhost_cm_clkstctrl = -			 cm_read_mod_reg(OMAP3430ES2_USBHOST_MOD, -						OMAP2_CM_CLKSTCTRL); -	prcm_context.core_cm_autoidle1 = -			 cm_read_mod_reg(CORE_MOD, CM_AUTOIDLE1); -	prcm_context.core_cm_autoidle2 = -			 cm_read_mod_reg(CORE_MOD, CM_AUTOIDLE2); -	prcm_context.core_cm_autoidle3 = -			 cm_read_mod_reg(CORE_MOD, CM_AUTOIDLE3); -	prcm_context.wkup_cm_autoidle = -			 cm_read_mod_reg(WKUP_MOD, CM_AUTOIDLE); -	prcm_context.dss_cm_autoidle = -			 cm_read_mod_reg(OMAP3430_DSS_MOD, CM_AUTOIDLE); -	prcm_context.cam_cm_autoidle = -			 cm_read_mod_reg(OMAP3430_CAM_MOD, CM_AUTOIDLE); -	prcm_context.per_cm_autoidle = -			 cm_read_mod_reg(OMAP3430_PER_MOD, CM_AUTOIDLE); -	prcm_context.usbhost_cm_autoidle = -			 cm_read_mod_reg(OMAP3430ES2_USBHOST_MOD, CM_AUTOIDLE); -	prcm_context.sgx_cm_sleepdep = -		 cm_read_mod_reg(OMAP3430ES2_SGX_MOD, OMAP3430_CM_SLEEPDEP); -	prcm_context.dss_cm_sleepdep = -		 cm_read_mod_reg(OMAP3430_DSS_MOD, OMAP3430_CM_SLEEPDEP); -	prcm_context.cam_cm_sleepdep = -		 cm_read_mod_reg(OMAP3430_CAM_MOD, OMAP3430_CM_SLEEPDEP); -	prcm_context.per_cm_sleepdep = -		 cm_read_mod_reg(OMAP3430_PER_MOD, OMAP3430_CM_SLEEPDEP); -	prcm_context.usbhost_cm_sleepdep = -		 cm_read_mod_reg(OMAP3430ES2_USBHOST_MOD, OMAP3430_CM_SLEEPDEP); -	prcm_context.cm_clkout_ctrl = cm_read_mod_reg(OMAP3430_CCR_MOD, -		 OMAP3_CM_CLKOUT_CTRL_OFFSET); -	prcm_context.prm_clkout_ctrl = prm_read_mod_reg(OMAP3430_CCR_MOD, -		OMAP3_PRM_CLKOUT_CTRL_OFFSET); -	prcm_context.sgx_pm_wkdep = -		 prm_read_mod_reg(OMAP3430ES2_SGX_MOD, PM_WKDEP); -	prcm_context.dss_pm_wkdep = -		 prm_read_mod_reg(OMAP3430_DSS_MOD, PM_WKDEP); -	prcm_context.cam_pm_wkdep = -		 prm_read_mod_reg(OMAP3430_CAM_MOD, PM_WKDEP); -	prcm_context.per_pm_wkdep = -		 prm_read_mod_reg(OMAP3430_PER_MOD, PM_WKDEP); -	prcm_context.neon_pm_wkdep = -		 prm_read_mod_reg(OMAP3430_NEON_MOD, PM_WKDEP); -	prcm_context.usbhost_pm_wkdep = -		 prm_read_mod_reg(OMAP3430ES2_USBHOST_MOD, PM_WKDEP); -	prcm_context.core_pm_mpugrpsel1 = -		 prm_read_mod_reg(CORE_MOD, OMAP3430_PM_MPUGRPSEL1); -	prcm_context.iva2_pm_ivagrpsel1 = -		 prm_read_mod_reg(OMAP3430_IVA2_MOD, OMAP3430_PM_IVAGRPSEL1); -	prcm_context.core_pm_mpugrpsel3 = -		 prm_read_mod_reg(CORE_MOD, OMAP3430ES2_PM_MPUGRPSEL3); -	prcm_context.core_pm_ivagrpsel3 = -		 prm_read_mod_reg(CORE_MOD, OMAP3430ES2_PM_IVAGRPSEL3); -	prcm_context.wkup_pm_mpugrpsel = -		 prm_read_mod_reg(WKUP_MOD, OMAP3430_PM_MPUGRPSEL); -	prcm_context.wkup_pm_ivagrpsel = -		 prm_read_mod_reg(WKUP_MOD, OMAP3430_PM_IVAGRPSEL); -	prcm_context.per_pm_mpugrpsel = -		 prm_read_mod_reg(OMAP3430_PER_MOD, OMAP3430_PM_MPUGRPSEL); -	prcm_context.per_pm_ivagrpsel = -		 prm_read_mod_reg(OMAP3430_PER_MOD, OMAP3430_PM_IVAGRPSEL); -	prcm_context.wkup_pm_wken = prm_read_mod_reg(WKUP_MOD, PM_WKEN); -	return; -} - -void omap3_prcm_restore_context(void) -{ -	omap_ctrl_writel(prcm_context.control_padconf_sys_nirq, -					 OMAP343X_CONTROL_PADCONF_SYSNIRQ); -	cm_write_mod_reg(prcm_context.iva2_cm_clksel1, OMAP3430_IVA2_MOD, -					 CM_CLKSEL1); -	cm_write_mod_reg(prcm_context.iva2_cm_clksel2, OMAP3430_IVA2_MOD, -					 CM_CLKSEL2); -	__raw_writel(prcm_context.cm_sysconfig, OMAP3430_CM_SYSCONFIG); -	cm_write_mod_reg(prcm_context.sgx_cm_clksel, OMAP3430ES2_SGX_MOD, -					 CM_CLKSEL); -	cm_write_mod_reg(prcm_context.dss_cm_clksel, OMAP3430_DSS_MOD, -					 CM_CLKSEL); -	cm_write_mod_reg(prcm_context.cam_cm_clksel, OMAP3430_CAM_MOD, -					 CM_CLKSEL); -	cm_write_mod_reg(prcm_context.per_cm_clksel, OMAP3430_PER_MOD, -					 CM_CLKSEL); -	cm_write_mod_reg(prcm_context.emu_cm_clksel, OMAP3430_EMU_MOD, -					 CM_CLKSEL1); -	cm_write_mod_reg(prcm_context.emu_cm_clkstctrl, OMAP3430_EMU_MOD, -					 OMAP2_CM_CLKSTCTRL); -	cm_write_mod_reg(prcm_context.pll_cm_autoidle2, PLL_MOD, -					 CM_AUTOIDLE2); -	cm_write_mod_reg(prcm_context.pll_cm_clksel4, PLL_MOD, -					OMAP3430ES2_CM_CLKSEL4); -	cm_write_mod_reg(prcm_context.pll_cm_clksel5, PLL_MOD, -					 OMAP3430ES2_CM_CLKSEL5); -	cm_write_mod_reg(prcm_context.pll_cm_clken2, PLL_MOD, -					OMAP3430ES2_CM_CLKEN2); -	__raw_writel(prcm_context.cm_polctrl, OMAP3430_CM_POLCTRL); -	cm_write_mod_reg(prcm_context.iva2_cm_fclken, OMAP3430_IVA2_MOD, -					 CM_FCLKEN); -	cm_write_mod_reg(prcm_context.iva2_cm_clken_pll, OMAP3430_IVA2_MOD, -					OMAP3430_CM_CLKEN_PLL); -	cm_write_mod_reg(prcm_context.core_cm_fclken1, CORE_MOD, CM_FCLKEN1); -	cm_write_mod_reg(prcm_context.core_cm_fclken3, CORE_MOD, -					 OMAP3430ES2_CM_FCLKEN3); -	cm_write_mod_reg(prcm_context.sgx_cm_fclken, OMAP3430ES2_SGX_MOD, -					 CM_FCLKEN); -	cm_write_mod_reg(prcm_context.wkup_cm_fclken, WKUP_MOD, CM_FCLKEN); -	cm_write_mod_reg(prcm_context.dss_cm_fclken, OMAP3430_DSS_MOD, -					 CM_FCLKEN); -	cm_write_mod_reg(prcm_context.cam_cm_fclken, OMAP3430_CAM_MOD, -					 CM_FCLKEN); -	cm_write_mod_reg(prcm_context.per_cm_fclken, OMAP3430_PER_MOD, -					 CM_FCLKEN); -	cm_write_mod_reg(prcm_context.usbhost_cm_fclken, -					 OMAP3430ES2_USBHOST_MOD, CM_FCLKEN); -	cm_write_mod_reg(prcm_context.core_cm_iclken1, CORE_MOD, CM_ICLKEN1); -	cm_write_mod_reg(prcm_context.core_cm_iclken2, CORE_MOD, CM_ICLKEN2); -	cm_write_mod_reg(prcm_context.core_cm_iclken3, CORE_MOD, CM_ICLKEN3); -	cm_write_mod_reg(prcm_context.sgx_cm_iclken, OMAP3430ES2_SGX_MOD, -					CM_ICLKEN); -	cm_write_mod_reg(prcm_context.wkup_cm_iclken, WKUP_MOD, CM_ICLKEN); -	cm_write_mod_reg(prcm_context.dss_cm_iclken, OMAP3430_DSS_MOD, -					CM_ICLKEN); -	cm_write_mod_reg(prcm_context.cam_cm_iclken, OMAP3430_CAM_MOD, -					CM_ICLKEN); -	cm_write_mod_reg(prcm_context.per_cm_iclken, OMAP3430_PER_MOD, -					CM_ICLKEN); -	cm_write_mod_reg(prcm_context.usbhost_cm_iclken, -					OMAP3430ES2_USBHOST_MOD, CM_ICLKEN); -	cm_write_mod_reg(prcm_context.iva2_cm_autiidle2, OMAP3430_IVA2_MOD, -					CM_AUTOIDLE2); -	cm_write_mod_reg(prcm_context.mpu_cm_autoidle2, MPU_MOD, CM_AUTOIDLE2); -	cm_write_mod_reg(prcm_context.iva2_cm_clkstctrl, OMAP3430_IVA2_MOD, -					OMAP2_CM_CLKSTCTRL); -	cm_write_mod_reg(prcm_context.mpu_cm_clkstctrl, MPU_MOD, -					OMAP2_CM_CLKSTCTRL); -	cm_write_mod_reg(prcm_context.core_cm_clkstctrl, CORE_MOD, -					OMAP2_CM_CLKSTCTRL); -	cm_write_mod_reg(prcm_context.sgx_cm_clkstctrl, OMAP3430ES2_SGX_MOD, -					OMAP2_CM_CLKSTCTRL); -	cm_write_mod_reg(prcm_context.dss_cm_clkstctrl, OMAP3430_DSS_MOD, -					OMAP2_CM_CLKSTCTRL); -	cm_write_mod_reg(prcm_context.cam_cm_clkstctrl, OMAP3430_CAM_MOD, -					OMAP2_CM_CLKSTCTRL); -	cm_write_mod_reg(prcm_context.per_cm_clkstctrl, OMAP3430_PER_MOD, -					OMAP2_CM_CLKSTCTRL); -	cm_write_mod_reg(prcm_context.neon_cm_clkstctrl, OMAP3430_NEON_MOD, -					OMAP2_CM_CLKSTCTRL); -	cm_write_mod_reg(prcm_context.usbhost_cm_clkstctrl, -				OMAP3430ES2_USBHOST_MOD, OMAP2_CM_CLKSTCTRL); -	cm_write_mod_reg(prcm_context.core_cm_autoidle1, CORE_MOD, -					CM_AUTOIDLE1); -	cm_write_mod_reg(prcm_context.core_cm_autoidle2, CORE_MOD, -					CM_AUTOIDLE2); -	cm_write_mod_reg(prcm_context.core_cm_autoidle3, CORE_MOD, -					CM_AUTOIDLE3); -	cm_write_mod_reg(prcm_context.wkup_cm_autoidle, WKUP_MOD, CM_AUTOIDLE); -	cm_write_mod_reg(prcm_context.dss_cm_autoidle, OMAP3430_DSS_MOD, -					CM_AUTOIDLE); -	cm_write_mod_reg(prcm_context.cam_cm_autoidle, OMAP3430_CAM_MOD, -					CM_AUTOIDLE); -	cm_write_mod_reg(prcm_context.per_cm_autoidle, OMAP3430_PER_MOD, -					CM_AUTOIDLE); -	cm_write_mod_reg(prcm_context.usbhost_cm_autoidle, -					OMAP3430ES2_USBHOST_MOD, CM_AUTOIDLE); -	cm_write_mod_reg(prcm_context.sgx_cm_sleepdep, OMAP3430ES2_SGX_MOD, -					OMAP3430_CM_SLEEPDEP); -	cm_write_mod_reg(prcm_context.dss_cm_sleepdep, OMAP3430_DSS_MOD, -					OMAP3430_CM_SLEEPDEP); -	cm_write_mod_reg(prcm_context.cam_cm_sleepdep, OMAP3430_CAM_MOD, -					OMAP3430_CM_SLEEPDEP); -	cm_write_mod_reg(prcm_context.per_cm_sleepdep, OMAP3430_PER_MOD, -					OMAP3430_CM_SLEEPDEP); -	cm_write_mod_reg(prcm_context.usbhost_cm_sleepdep, -				OMAP3430ES2_USBHOST_MOD, OMAP3430_CM_SLEEPDEP); -	cm_write_mod_reg(prcm_context.cm_clkout_ctrl, OMAP3430_CCR_MOD, -					OMAP3_CM_CLKOUT_CTRL_OFFSET); -	prm_write_mod_reg(prcm_context.prm_clkout_ctrl, OMAP3430_CCR_MOD, -					OMAP3_PRM_CLKOUT_CTRL_OFFSET); -	prm_write_mod_reg(prcm_context.sgx_pm_wkdep, OMAP3430ES2_SGX_MOD, -					PM_WKDEP); -	prm_write_mod_reg(prcm_context.dss_pm_wkdep, OMAP3430_DSS_MOD, -					PM_WKDEP); -	prm_write_mod_reg(prcm_context.cam_pm_wkdep, OMAP3430_CAM_MOD, -					PM_WKDEP); -	prm_write_mod_reg(prcm_context.per_pm_wkdep, OMAP3430_PER_MOD, -					PM_WKDEP); -	prm_write_mod_reg(prcm_context.neon_pm_wkdep, OMAP3430_NEON_MOD, -					PM_WKDEP); -	prm_write_mod_reg(prcm_context.usbhost_pm_wkdep, -					OMAP3430ES2_USBHOST_MOD, PM_WKDEP); -	prm_write_mod_reg(prcm_context.core_pm_mpugrpsel1, CORE_MOD, -					OMAP3430_PM_MPUGRPSEL1); -	prm_write_mod_reg(prcm_context.iva2_pm_ivagrpsel1, OMAP3430_IVA2_MOD, -					OMAP3430_PM_IVAGRPSEL1); -	prm_write_mod_reg(prcm_context.core_pm_mpugrpsel3, CORE_MOD, -					OMAP3430ES2_PM_MPUGRPSEL3); -	prm_write_mod_reg(prcm_context.core_pm_ivagrpsel3, CORE_MOD, -					OMAP3430ES2_PM_IVAGRPSEL3); -	prm_write_mod_reg(prcm_context.wkup_pm_mpugrpsel, WKUP_MOD, -					OMAP3430_PM_MPUGRPSEL); -	prm_write_mod_reg(prcm_context.wkup_pm_ivagrpsel, WKUP_MOD, -					OMAP3430_PM_IVAGRPSEL); -	prm_write_mod_reg(prcm_context.per_pm_mpugrpsel, OMAP3430_PER_MOD, -					OMAP3430_PM_MPUGRPSEL); -	prm_write_mod_reg(prcm_context.per_pm_ivagrpsel, OMAP3430_PER_MOD, -					 OMAP3430_PM_IVAGRPSEL); -	prm_write_mod_reg(prcm_context.wkup_pm_wken, WKUP_MOD, PM_WKEN); -	return; -} -#endif  |