static int am43xx_suspend_init(void) { int ret = 0; ret = am43xx_map_scu(); if (ret) { pr_err("PM: Could not ioremap SCU\n"); return ret; } susp_params.l2_base_virt = omap4_get_l2cache_base(); susp_params.cke_override_virt = ioremap(AM43XX_CTRL_CKE_OVERRIDE, SZ_4); if (!susp_params.cke_override_virt) { pr_err("PM: Could not ioremap CKE override in Control Module\n"); return -ENOMEM; } /* Physical resume address to be used by ROM code */ am33xx_pm->ipc.reg0 = (AM33XX_OCMC_END - am43xx_do_wfi_sz + am43xx_resume_offset + 0x4); return ret; }
static void save_l2x0_context(void) { u32 val; void __iomem *l2x0_base = omap4_get_l2cache_base(); val = __raw_readl(l2x0_base + L2X0_AUX_CTRL); __raw_writel(val, sar_base + L2X0_AUXCTRL_OFFSET); val = __raw_readl(l2x0_base + L2X0_PREFETCH_CTRL); __raw_writel(val, sar_base + L2X0_PREFETCH_CTRL_OFFSET); }
static void __init save_l2x0_context(void) { void __iomem *l2x0_base = omap4_get_l2cache_base(); if (l2x0_base && sar_base) { writel_relaxed(l2x0_saved_regs.aux_ctrl, sar_base + L2X0_AUXCTRL_OFFSET); writel_relaxed(l2x0_saved_regs.prefetch_ctrl, sar_base + L2X0_PREFETCH_CTRL_OFFSET); } }