|
@@ -425,3 +425,70 @@ void omap3_save_scratchpad_contents(void)
|
|
|
sdrc_block_contents.actim_ctrlb_1 =
|
|
|
sdrc_read_reg(SDRC_ACTIM_CTRL_B_1);
|
|
|
sdrc_block_contents.rfr_ctrl_1 =
|
|
|
+ sdrc_read_reg(SDRC_RFR_CTRL_1);
|
|
|
+ sdrc_block_contents.dcdl_1_ctrl = 0x0;
|
|
|
+ sdrc_block_contents.dcdl_2_ctrl = 0x0;
|
|
|
+ sdrc_block_contents.flags = 0x0;
|
|
|
+ sdrc_block_contents.block_size = 0x0;
|
|
|
+
|
|
|
+ arm_context_addr = virt_to_phys(omap3_arm_context);
|
|
|
+
|
|
|
+ /* Copy all the contents to the scratchpad location */
|
|
|
+ scratchpad_address = OMAP2_L4_IO_ADDRESS(OMAP343X_SCRATCHPAD);
|
|
|
+ memcpy_toio(scratchpad_address, &scratchpad_contents,
|
|
|
+ sizeof(scratchpad_contents));
|
|
|
+ /* Scratchpad contents being 32 bits, a divide by 4 done here */
|
|
|
+ memcpy_toio(scratchpad_address +
|
|
|
+ scratchpad_contents.prcm_block_offset,
|
|
|
+ &prcm_block_contents, sizeof(prcm_block_contents));
|
|
|
+ memcpy_toio(scratchpad_address +
|
|
|
+ scratchpad_contents.sdrc_block_offset,
|
|
|
+ &sdrc_block_contents, sizeof(sdrc_block_contents));
|
|
|
+ /*
|
|
|
+ * Copies the address of the location in SDRAM where ARM
|
|
|
+ * registers get saved during a MPU OFF transition.
|
|
|
+ */
|
|
|
+ memcpy_toio(scratchpad_address +
|
|
|
+ scratchpad_contents.sdrc_block_offset +
|
|
|
+ sizeof(sdrc_block_contents), &arm_context_addr, 4);
|
|
|
+}
|
|
|
+
|
|
|
+void omap3_control_save_context(void)
|
|
|
+{
|
|
|
+ control_context.sysconfig = omap_ctrl_readl(OMAP2_CONTROL_SYSCONFIG);
|
|
|
+ control_context.devconf0 = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
|
|
|
+ control_context.mem_dftrw0 =
|
|
|
+ omap_ctrl_readl(OMAP343X_CONTROL_MEM_DFTRW0);
|
|
|
+ control_context.mem_dftrw1 =
|
|
|
+ omap_ctrl_readl(OMAP343X_CONTROL_MEM_DFTRW1);
|
|
|
+ control_context.msuspendmux_0 =
|
|
|
+ omap_ctrl_readl(OMAP2_CONTROL_MSUSPENDMUX_0);
|
|
|
+ control_context.msuspendmux_1 =
|
|
|
+ omap_ctrl_readl(OMAP2_CONTROL_MSUSPENDMUX_1);
|
|
|
+ control_context.msuspendmux_2 =
|
|
|
+ omap_ctrl_readl(OMAP2_CONTROL_MSUSPENDMUX_2);
|
|
|
+ control_context.msuspendmux_3 =
|
|
|
+ omap_ctrl_readl(OMAP2_CONTROL_MSUSPENDMUX_3);
|
|
|
+ control_context.msuspendmux_4 =
|
|
|
+ omap_ctrl_readl(OMAP2_CONTROL_MSUSPENDMUX_4);
|
|
|
+ control_context.msuspendmux_5 =
|
|
|
+ omap_ctrl_readl(OMAP2_CONTROL_MSUSPENDMUX_5);
|
|
|
+ control_context.sec_ctrl = omap_ctrl_readl(OMAP2_CONTROL_SEC_CTRL);
|
|
|
+ control_context.devconf1 = omap_ctrl_readl(OMAP343X_CONTROL_DEVCONF1);
|
|
|
+ control_context.csirxfe = omap_ctrl_readl(OMAP343X_CONTROL_CSIRXFE);
|
|
|
+ control_context.iva2_bootaddr =
|
|
|
+ omap_ctrl_readl(OMAP343X_CONTROL_IVA2_BOOTADDR);
|
|
|
+ control_context.iva2_bootmod =
|
|
|
+ omap_ctrl_readl(OMAP343X_CONTROL_IVA2_BOOTMOD);
|
|
|
+ control_context.debobs_0 = omap_ctrl_readl(OMAP343X_CONTROL_DEBOBS(0));
|
|
|
+ control_context.debobs_1 = omap_ctrl_readl(OMAP343X_CONTROL_DEBOBS(1));
|
|
|
+ control_context.debobs_2 = omap_ctrl_readl(OMAP343X_CONTROL_DEBOBS(2));
|
|
|
+ control_context.debobs_3 = omap_ctrl_readl(OMAP343X_CONTROL_DEBOBS(3));
|
|
|
+ control_context.debobs_4 = omap_ctrl_readl(OMAP343X_CONTROL_DEBOBS(4));
|
|
|
+ control_context.debobs_5 = omap_ctrl_readl(OMAP343X_CONTROL_DEBOBS(5));
|
|
|
+ control_context.debobs_6 = omap_ctrl_readl(OMAP343X_CONTROL_DEBOBS(6));
|
|
|
+ control_context.debobs_7 = omap_ctrl_readl(OMAP343X_CONTROL_DEBOBS(7));
|
|
|
+ control_context.debobs_8 = omap_ctrl_readl(OMAP343X_CONTROL_DEBOBS(8));
|
|
|
+ control_context.prog_io0 = omap_ctrl_readl(OMAP343X_CONTROL_PROG_IO0);
|
|
|
+ control_context.prog_io1 = omap_ctrl_readl(OMAP343X_CONTROL_PROG_IO1);
|
|
|
+ control_context.dss_dpll_spreading =
|