|
@@ -0,0 +1,92 @@
|
|
|
+/*
|
|
|
+ * OMAP2/3 System Control Module register access
|
|
|
+ *
|
|
|
+ * Copyright (C) 2007, 2012 Texas Instruments, Inc.
|
|
|
+ * Copyright (C) 2007 Nokia Corporation
|
|
|
+ *
|
|
|
+ * Written by Paul Walmsley
|
|
|
+ *
|
|
|
+ * This program is free software; you can redistribute it and/or modify
|
|
|
+ * it under the terms of the GNU General Public License version 2 as
|
|
|
+ * published by the Free Software Foundation.
|
|
|
+ */
|
|
|
+#undef DEBUG
|
|
|
+
|
|
|
+#include <linux/kernel.h>
|
|
|
+#include <linux/io.h>
|
|
|
+
|
|
|
+#include "soc.h"
|
|
|
+#include "iomap.h"
|
|
|
+#include "common.h"
|
|
|
+#include "cm-regbits-34xx.h"
|
|
|
+#include "prm-regbits-34xx.h"
|
|
|
+#include "prm3xxx.h"
|
|
|
+#include "cm3xxx.h"
|
|
|
+#include "sdrc.h"
|
|
|
+#include "pm.h"
|
|
|
+#include "control.h"
|
|
|
+
|
|
|
+/* Used by omap3_ctrl_save_padconf() */
|
|
|
+#define START_PADCONF_SAVE 0x2
|
|
|
+#define PADCONF_SAVE_DONE 0x1
|
|
|
+
|
|
|
+static void __iomem *omap2_ctrl_base;
|
|
|
+static void __iomem *omap4_ctrl_pad_base;
|
|
|
+
|
|
|
+#if defined(CONFIG_ARCH_OMAP3) && defined(CONFIG_PM)
|
|
|
+struct omap3_scratchpad {
|
|
|
+ u32 boot_config_ptr;
|
|
|
+ u32 public_restore_ptr;
|
|
|
+ u32 secure_ram_restore_ptr;
|
|
|
+ u32 sdrc_module_semaphore;
|
|
|
+ u32 prcm_block_offset;
|
|
|
+ u32 sdrc_block_offset;
|
|
|
+};
|
|
|
+
|
|
|
+struct omap3_scratchpad_prcm_block {
|
|
|
+ u32 prm_clksrc_ctrl;
|
|
|
+ u32 prm_clksel;
|
|
|
+ u32 cm_clksel_core;
|
|
|
+ u32 cm_clksel_wkup;
|
|
|
+ u32 cm_clken_pll;
|
|
|
+ u32 cm_autoidle_pll;
|
|
|
+ u32 cm_clksel1_pll;
|
|
|
+ u32 cm_clksel2_pll;
|
|
|
+ u32 cm_clksel3_pll;
|
|
|
+ u32 cm_clken_pll_mpu;
|
|
|
+ u32 cm_autoidle_pll_mpu;
|
|
|
+ u32 cm_clksel1_pll_mpu;
|
|
|
+ u32 cm_clksel2_pll_mpu;
|
|
|
+ u32 prcm_block_size;
|
|
|
+};
|
|
|
+
|
|
|
+struct omap3_scratchpad_sdrc_block {
|
|
|
+ u16 sysconfig;
|
|
|
+ u16 cs_cfg;
|
|
|
+ u16 sharing;
|
|
|
+ u16 err_type;
|
|
|
+ u32 dll_a_ctrl;
|
|
|
+ u32 dll_b_ctrl;
|
|
|
+ u32 power;
|
|
|
+ u32 cs_0;
|
|
|
+ u32 mcfg_0;
|
|
|
+ u16 mr_0;
|
|
|
+ u16 emr_1_0;
|
|
|
+ u16 emr_2_0;
|
|
|
+ u16 emr_3_0;
|
|
|
+ u32 actim_ctrla_0;
|
|
|
+ u32 actim_ctrlb_0;
|
|
|
+ u32 rfr_ctrl_0;
|
|
|
+ u32 cs_1;
|
|
|
+ u32 mcfg_1;
|
|
|
+ u16 mr_1;
|
|
|
+ u16 emr_1_1;
|
|
|
+ u16 emr_2_1;
|
|
|
+ u16 emr_3_1;
|
|
|
+ u32 actim_ctrla_1;
|
|
|
+ u32 actim_ctrlb_1;
|
|
|
+ u32 rfr_ctrl_1;
|
|
|
+ u16 dcdl_1_ctrl;
|
|
|
+ u16 dcdl_2_ctrl;
|
|
|
+ u32 flags;
|
|
|
+ u32 block_size;
|