[U-Boot] [PATCH-OMAP3] OMAP3: Convert readl/writel and replace hardcoded values
Dirk Behme
dirk.behme at googlemail.com
Sun Nov 23 14:01:33 CET 2008
Convert readl/writel to base + offset style. Replace hardcoded values with
macros.
No functional change.
Signed-off-by: Dirk Behme <dirk.behme at googlemail.com>
---
cpu/arm_cortexa8/omap3/board.c | 56 ++++++++-------
cpu/arm_cortexa8/omap3/clock.c | 47 ++++++++-----
cpu/arm_cortexa8/omap3/interrupts.c | 14 +--
cpu/arm_cortexa8/omap3/mem.c | 53 ++++++++------
cpu/arm_cortexa8/omap3/sys_info.c | 14 ++-
include/asm-arm/arch-omap3/cpu.h | 129 +++++++++++++++++++-----------------
include/asm-arm/arch-omap3/mem.h | 8 +-
include/asm-arm/arch-omap3/omap3.h | 2
8 files changed, 180 insertions(+), 143 deletions(-)
Index: u-boot-arm/cpu/arm_cortexa8/omap3/mem.c
===================================================================
--- u-boot-arm.orig/cpu/arm_cortexa8/omap3/mem.c
+++ u-boot-arm/cpu/arm_cortexa8/omap3/mem.c
@@ -106,6 +106,8 @@ u32 *onenand_cs_base;
#endif
+static u32 *sdrc_base = (u32 *)OMAP34XX_SDRC_BASE;
+
/**************************************************************************
* make_cs1_contiguous() - for es2 and above remap cs1 behind cs0 to allow
* command line mem=xyz use all memory with out discontinuous support
@@ -120,7 +122,7 @@ void make_cs1_contiguous(void)
size /= SZ_32M; /* find size to offset CS1 */
a_add_high = (size & 3) << 8; /* set up low field */
a_add_low = (size & 0x3C) >> 2; /* set up high field */
- writel((a_add_high | a_add_low), SDRC_CS_CFG);
+ writel((a_add_high | a_add_low), sdrc_base + OFFS(SDRC_CS_CFG));
}
@@ -175,36 +177,43 @@ void do_sdrc_init(u32 offset, u32 early)
if (early) {
/* reset sdrc controller */
- writel(SOFTRESET, SDRC_SYSCONFIG);
- wait_on_value(RESETDONE, RESETDONE, SDRC_STATUS, 12000000);
- writel(0, SDRC_SYSCONFIG);
+ writel(SOFTRESET, sdrc_base + OFFS(SDRC_SYSCONFIG));
+ wait_on_value(RESETDONE, RESETDONE, SDRC_STATUS_REG, 12000000);
+ writel(0, sdrc_base + OFFS(SDRC_SYSCONFIG));
/* setup sdrc to ball mux */
- writel(SDP_SDRC_SHARING, SDRC_SHARING);
+ writel(SDP_SDRC_SHARING, sdrc_base + OFFS(SDRC_SHARING));
- /* Disble Power Down of CKE cuz of 1 CKE on combo part */
- writel(0x00000081, SDRC_POWER);
+ /* Disable Power Down of CKE cuz of 1 CKE on combo part */
+ writel(SRFRONRESET | PAGEPOLICY_HIGH,
+ sdrc_base + OFFS(SDRC_POWER));
- writel(0x0000A, SDRC_DLLA_CTRL);
+ writel(ENADLL | DLLPHASE_90, sdrc_base + OFFS(SDRC_DLLA_CTRL));
sdelay(0x20000);
}
- writel(0x02584099, SDRC_MCFG_0 + offset);
- writel(0x4e201, SDRC_RFR_CTRL + offset);
- writel(0xaa9db4c6, SDRC_ACTIM_CTRLA_0 + actim_offs);
- writel(0x11517, SDRC_ACTIM_CTRLB_0 + actim_offs);
-
- writel(CMD_NOP, SDRC_MANUAL_0 + offset);
- writel(CMD_PRECHARGE, SDRC_MANUAL_0 + offset);
- writel(CMD_AUTOREFRESH, SDRC_MANUAL_0 + offset);
- writel(CMD_AUTOREFRESH, SDRC_MANUAL_0 + offset);
-
- /* CAS latency 3, Write Burst = Read Burst, Serial Mode,
- Burst length = 4 */
- writel(0x00000032, SDRC_MR_0 + offset);
+ writel(RASWIDTH_13BITS | CASWIDTH_10BITS | ADDRMUXLEGACY |
+ RAMSIZE_128 | BANKALLOCATION | B32NOT16 | B32NOT16 |
+ DEEPPD | DDR_SDRAM, sdrc_base + OFFS(SDRC_MCFG_0 + offset));
+ writel(ARCV | ARE_ARCV_1, sdrc_base + OFFS(SDRC_RFR_CTRL + offset));
+ writel(V_ACTIMA_165, sdrc_base +
+ OFFS(SDRC_ACTIM_CTRLA_0 + actim_offs));
+ writel(V_ACTIMB_165, sdrc_base +
+ OFFS(SDRC_ACTIM_CTRLB_0 + actim_offs));
+
+ writel(CMD_NOP, sdrc_base + OFFS(SDRC_MANUAL_0 + offset));
+ writel(CMD_PRECHARGE, sdrc_base + OFFS(SDRC_MANUAL_0 + offset));
+ writel(CMD_AUTOREFRESH, sdrc_base + OFFS(SDRC_MANUAL_0 + offset));
+ writel(CMD_AUTOREFRESH, sdrc_base + OFFS(SDRC_MANUAL_0 + offset));
+
+ /*
+ * CAS latency 3, Write Burst = Read Burst, Serial Mode,
+ * Burst length = 4
+ */
+ writel(CASL3 | BURSTLENGTH4, sdrc_base + OFFS(SDRC_MR_0 + offset));
if (!mem_ok(offset))
- writel(0, SDRC_MCFG_0 + offset);
+ writel(0, sdrc_base + OFFS(SDRC_MCFG_0 + offset));
}
void enable_gpmc_config(u32 *gpmc_config, u32 *gpmc_cs_base, u32 base,
Index: u-boot-arm/cpu/arm_cortexa8/omap3/sys_info.c
===================================================================
--- u-boot-arm.orig/cpu/arm_cortexa8/omap3/sys_info.c
+++ u-boot-arm/cpu/arm_cortexa8/omap3/sys_info.c
@@ -33,6 +33,8 @@
extern omap3_sysinfo sysinfo;
static u32 *gpmc_base = (u32 *)GPMC_BASE;
+static u32 *sdrc_base = (u32 *)OMAP34XX_SDRC_BASE;
+static u32 *ctrl_base = (u32 *)OMAP34XX_CTRL_BASE;
/******************************************
* get_cpu_rev(void) - extract version info
@@ -59,7 +61,8 @@ u32 get_cpu_rev(void)
****************************************************/
u32 is_mem_sdr(void)
{
- if (readl(SDRC_MR_0 + SDRC_CS0_OSET) == SDP_SDRC_MR_0_SDR)
+ if (readl(sdrc_base + OFFS(SDRC_MR_0 + SDRC_CS0_OSET)) ==
+ SDP_SDRC_MR_0_SDR)
return 1;
return 0;
}
@@ -72,7 +75,7 @@ u32 get_sdr_cs_size(u32 offset)
u32 size;
/* get ram size field */
- size = readl(SDRC_MCFG_0 + offset) >> 8;
+ size = readl(sdrc_base + OFFS(SDRC_MCFG_0 + offset)) >> 8;
size &= 0x3FF; /* remove unwanted bits */
size *= SZ_2M; /* find size in MB */
return size;
@@ -88,7 +91,7 @@ u32 get_sdr_cs_offset(u32 cs)
if (!cs)
return 0;
- offset = readl(SDRC_CS_CFG);
+ offset = readl(sdrc_base + OFFS(SDRC_CS_CFG));
offset = (offset & 15) << 27 | (offset & 0x30) >> 17;
return offset;
@@ -240,7 +243,7 @@ u32 is_running_in_sdram(void)
***************************************************************/
u32 get_boot_type(void)
{
- return (readl(CONTROL_STATUS) & SYSBOOT_MASK);
+ return (readl(ctrl_base + OFFS(CONTROL_STATUS)) & SYSBOOT_MASK);
}
/*************************************************************
@@ -248,5 +251,6 @@ u32 get_boot_type(void)
*************************************************************/
u32 get_device_type(void)
{
- return ((readl(CONTROL_STATUS) & (DEVICE_MASK)) >> 8);
+ return ((readl(ctrl_base + OFFS(CONTROL_STATUS)) &
+ (DEVICE_MASK)) >> 8);
}
Index: u-boot-arm/include/asm-arm/arch-omap3/cpu.h
===================================================================
--- u-boot-arm.orig/include/asm-arm/arch-omap3/cpu.h
+++ u-boot-arm/include/asm-arm/arch-omap3/cpu.h
@@ -29,14 +29,7 @@
/* Register offsets of common modules */
/* Control */
-#define CONTROL_STATUS (OMAP34XX_CTRL_BASE + 0x2F0)
-#define OMAP34XX_MCR (OMAP34XX_CTRL_BASE + 0x8C)
-#define CONTROL_SCALABLE_OMAP_STATUS (OMAP34XX_CTRL_BASE + 0x44C)
-#define CONTROL_SCALABLE_OMAP_OCP (OMAP34XX_CTRL_BASE + 0x534)
-
-/* Tap Information */
-#define TAP_IDCODE_REG (OMAP34XX_TAP_BASE + 0x204)
-#define PRODUCTION_ID (OMAP34XX_TAP_BASE + 0x208)
+#define CONTROL_STATUS 0x2F0
/* device type */
#define DEVICE_MASK (0x7 << 8)
@@ -104,36 +97,52 @@
/* (actual size small port) */
/* SMS */
-#define SMS_SYSCONFIG (OMAP34XX_SMS_BASE + 0x10)
-#define SMS_RG_ATT0 (OMAP34XX_SMS_BASE + 0x48)
-#define SMS_CLASS_ARB0 (OMAP34XX_SMS_BASE + 0xD0)
+#define SMS_SYSCONFIG 0x10
+#define SMS_RG_ATT0 0x48
+#define SMS_CLASS_ARB0 0xD0
#define BURSTCOMPLETE_GROUP7 (0x1 << 31)
/* SDRC */
-#define SDRC_SYSCONFIG (OMAP34XX_SDRC_BASE + 0x10)
-#define SDRC_STATUS (OMAP34XX_SDRC_BASE + 0x14)
-#define SDRC_CS_CFG (OMAP34XX_SDRC_BASE + 0x40)
-#define SDRC_SHARING (OMAP34XX_SDRC_BASE + 0x44)
-#define SDRC_DLLA_CTRL (OMAP34XX_SDRC_BASE + 0x60)
-#define SDRC_DLLA_STATUS (OMAP34XX_SDRC_BASE + 0x64)
-#define SDRC_DLLB_CTRL (OMAP34XX_SDRC_BASE + 0x68)
-#define SDRC_DLLB_STATUS (OMAP34XX_SDRC_BASE + 0x6C)
-#define DLLPHASE (0x1 << 1)
+#define SDRC_SYSCONFIG 0x10
+#define SDRC_STATUS 0x14
+#define SDRC_STATUS_REG (OMAP34XX_SDRC_BASE + SDRC_STATUS)
+#define SDRC_CS_CFG 0x40
+#define SDRC_SHARING 0x44
+#define SDRC_DLLA_CTRL 0x60
+#define SDRC_DLLA_STATUS 0x64
+#define SDRC_DLLB_CTRL 0x68
+#define SDRC_DLLB_STATUS 0x6C
+#define DLLPHASE_90 (0x1 << 1)
#define LOADDLL (0x1 << 2)
+#define ENADLL (0x1 << 3)
#define DLL_DELAY_MASK 0xFF00
#define DLL_NO_FILTER_MASK ((0x1 << 9) | (0x1 << 8))
-#define SDRC_POWER (OMAP34XX_SDRC_BASE + 0x70)
+#define SDRC_POWER 0x70
+#define PAGEPOLICY_HIGH (0x1 << 0)
+#define SRFRONRESET (0x1 << 7)
#define WAKEUPPROC (0x1 << 26)
-#define SDRC_MCFG_0 (OMAP34XX_SDRC_BASE + 0x80)
-#define SDRC_MR_0 (OMAP34XX_SDRC_BASE + 0x84)
-#define SDRC_ACTIM_CTRLA_0 (OMAP34XX_SDRC_BASE + 0x9C)
-#define SDRC_ACTIM_CTRLB_0 (OMAP34XX_SDRC_BASE + 0xA0)
-#define SDRC_ACTIM_CTRLA_1 (OMAP34XX_SDRC_BASE + 0xC4)
-#define SDRC_ACTIM_CTRLB_1 (OMAP34XX_SDRC_BASE + 0xC8)
-#define SDRC_RFR_CTRL (OMAP34XX_SDRC_BASE + 0xA4)
-#define SDRC_MANUAL_0 (OMAP34XX_SDRC_BASE + 0xA8)
+#define SDRC_MCFG_0 0x80
+#define DDR_SDRAM (0x1 << 0)
+#define DEEPPD (0x1 << 3)
+#define B32NOT16 (0x1 << 4)
+#define BANKALLOCATION (0x2 << 6)
+#define RAMSIZE_128 (0x40 << 8) /* RAM size in 2MB chunks */
+#define ADDRMUXLEGACY (0x1 << 19)
+#define CASWIDTH_10BITS (0x5 << 20)
+#define RASWIDTH_13BITS (0x2 << 24)
+#define SDRC_MR_0 0x84
+#define BURSTLENGTH4 (0x2 << 0)
+#define CASL3 (0x3 << 4)
+#define SDRC_ACTIM_CTRLA_0 0x9C
+#define SDRC_ACTIM_CTRLB_0 0xA0
+#define SDRC_ACTIM_CTRLA_1 0xC4
+#define SDRC_ACTIM_CTRLB_1 0xC8
+#define SDRC_RFR_CTRL 0xA4
+#define ARE_ARCV_1 (0x1 << 0)
+#define ARCV (0x4e2 << 8) /* Autorefresh count */
+#define SDRC_MANUAL_0 0xA8
#define OMAP34XX_SDRC_CS0 0x80000000
#define OMAP34XX_SDRC_CS1 0xA0000000
#define CMD_NOP 0x0
@@ -174,6 +183,7 @@
#define WD_UNLOCK2 0x5555
/* PRCM */
+#define PRCM_BASE 0x48004000
#define CM_FCLKEN_IVA2 0x48004000
#define CM_CLKEN_PLL_IVA2 0x48004004
#define CM_IDLEST_PLL_IVA2 0x48004024
@@ -187,16 +197,22 @@
#define CM_ICLKEN1_CORE 0x48004a10
#define CM_ICLKEN2_CORE 0x48004a14
#define CM_CLKSEL_CORE 0x48004a40
+#define CLKSEL_CORE 0xa40
#define CM_FCLKEN_GFX 0x48004b00
#define CM_ICLKEN_GFX 0x48004b10
#define CM_CLKSEL_GFX 0x48004b40
#define CM_FCLKEN_WKUP 0x48004c00
+#define FCLKEN_WKUP 0xc00
#define CM_ICLKEN_WKUP 0x48004c10
+#define ICLKEN_WKUP 0xc10
#define CM_CLKSEL_WKUP 0x48004c40
+#define CLKSEL_WKUP 0xc40
#define CM_IDLEST_WKUP 0x48004c20
#define CM_CLKEN_PLL 0x48004d00
+#define CLKEN_PLL 0xd00
#define CM_IDLEST_CKGEN 0x48004d20
#define CM_CLKSEL1_PLL 0x48004d40
+#define CLKSEL1_PLL 0xd40
#define CM_CLKSEL2_PLL 0x48004d44
#define CM_CLKSEL3_PLL 0x48004d48
#define CM_FCLKEN_DSS 0x48004e00
@@ -210,9 +226,11 @@
#define CM_CLKSEL_PER 0x48005040
#define CM_CLKSEL1_EMU 0x48005140
+#define PRM_BASE 0x48306000
#define PRM_CLKSEL 0x48306d40
#define PRM_RSTCTRL 0x48307250
#define PRM_CLKSRC_CTRL 0x48307270
+#define CLKSRC_CTRL 0x1270
#define SYSCLKDIV_1 (0x1 << 6)
#define SYSCLKDIV_2 (0x1 << 7)
@@ -244,35 +262,30 @@
#define PM_OCM_ROM_BASE_ADDR_ARM (SMX_APE_BASE + 0x12C00)
#define PM_IVA2_BASE_ADDR_ARM (SMX_APE_BASE + 0x14000)
-#define RT_REQ_INFO_PERMISSION_1 (PM_RT_APE_BASE_ADDR_ARM + 0x68)
-#define RT_READ_PERMISSION_0 (PM_RT_APE_BASE_ADDR_ARM + 0x50)
-#define RT_WRITE_PERMISSION_0 (PM_RT_APE_BASE_ADDR_ARM + 0x58)
-#define RT_ADDR_MATCH_1 (PM_RT_APE_BASE_ADDR_ARM + 0x60)
-
-#define GPMC_REQ_INFO_PERMISSION_0 (PM_GPMC_BASE_ADDR_ARM + 0x48)
-#define GPMC_READ_PERMISSION_0 (PM_GPMC_BASE_ADDR_ARM + 0x50)
-#define GPMC_WRITE_PERMISSION_0 (PM_GPMC_BASE_ADDR_ARM + 0x58)
-
-#define OCM_REQ_INFO_PERMISSION_0 (PM_OCM_RAM_BASE_ADDR_ARM + 0x48)
-#define OCM_READ_PERMISSION_0 (PM_OCM_RAM_BASE_ADDR_ARM + 0x50)
-#define OCM_WRITE_PERMISSION_0 (PM_OCM_RAM_BASE_ADDR_ARM + 0x58)
-#define OCM_ADDR_MATCH_2 (PM_OCM_RAM_BASE_ADDR_ARM + 0x80)
-
-#define IVA2_REQ_INFO_PERMISSION_0 (PM_IVA2_BASE_ADDR_ARM + 0x48)
-#define IVA2_READ_PERMISSION_0 (PM_IVA2_BASE_ADDR_ARM + 0x50)
-#define IVA2_WRITE_PERMISSION_0 (PM_IVA2_BASE_ADDR_ARM + 0x58)
-
-#define IVA2_REQ_INFO_PERMISSION_1 (PM_IVA2_BASE_ADDR_ARM + 0x68)
-#define IVA2_READ_PERMISSION_1 (PM_IVA2_BASE_ADDR_ARM + 0x70)
-#define IVA2_WRITE_PERMISSION_1 (PM_IVA2_BASE_ADDR_ARM + 0x78)
-
-#define IVA2_REQ_INFO_PERMISSION_2 (PM_IVA2_BASE_ADDR_ARM + 0x88)
-#define IVA2_READ_PERMISSION_2 (PM_IVA2_BASE_ADDR_ARM + 0x90)
-#define IVA2_WRITE_PERMISSION_2 (PM_IVA2_BASE_ADDR_ARM + 0x98)
-
-#define IVA2_REQ_INFO_PERMISSION_3 (PM_IVA2_BASE_ADDR_ARM + 0xA8)
-#define IVA2_READ_PERMISSION_3 (PM_IVA2_BASE_ADDR_ARM + 0xB0)
-#define IVA2_WRITE_PERMISSION_3 (PM_IVA2_BASE_ADDR_ARM + 0xB8)
+#define RT_REQ_INFO_PERMISSION_1 0x68
+#define RT_READ_PERMISSION_0 0x50
+#define RT_WRITE_PERMISSION_0 0x58
+#define RT_ADDR_MATCH_1 0x60
+
+#define GPMC_REQ_INFO_PERMISSION_0 0x48
+#define GPMC_READ_PERMISSION_0 0x50
+#define GPMC_WRITE_PERMISSION_0 0x58
+
+#define OCM_REQ_INFO_PERMISSION_0 0x48
+#define OCM_READ_PERMISSION_0 0x50
+#define OCM_WRITE_PERMISSION_0 0x58
+#define OCM_ADDR_MATCH_2 0x80
+
+#define IVA2_REQ_INFO_PERMISSION_0 0x48
+#define IVA2_READ_PERMISSION_0 0x50
+#define IVA2_WRITE_PERMISSION_0 0x58
+
+/* Permission values for registers -Full fledged permissions to all */
+#define UNLOCK_1 0xFFFFFFFF
+#define UNLOCK_2 0x00000000
+#define UNLOCK_3 0x0000FFFF
+
+#define NOT_EARLY 0
/* I2C base */
#define I2C_BASE1 (OMAP34XX_CORE_L4_IO_BASE + 0x70000)
Index: u-boot-arm/include/asm-arm/arch-omap3/mem.h
===================================================================
--- u-boot-arm.orig/include/asm-arm/arch-omap3/mem.h
+++ u-boot-arm/include/asm-arm/arch-omap3/mem.h
@@ -80,16 +80,16 @@ typedef enum {
#define TRP_165 3
#define TRAS_165 7
#define TRC_165 10
-#define TRFC_165 12
+#define TRFC_165 21
#define V_ACTIMA_165 ((TRFC_165 << 27) | (TRC_165 << 22) | \
(TRAS_165 << 18) | (TRP_165 << 15) | \
(TRCD_165 << 12) | (TRRD_165 << 9) | \
(TDPL_165 << 6) | (TDAL_165))
#define TWTR_165 1
-#define TCKE_165 2
-#define TXP_165 2
-#define XSR_165 20
+#define TCKE_165 1
+#define TXP_165 5
+#define XSR_165 23
#define V_ACTIMB_165 (((TCKE_165 << 12) | (XSR_165 << 0)) | \
(TXP_165 << 8) | (TWTR_165 << 16))
Index: u-boot-arm/cpu/arm_cortexa8/omap3/board.c
===================================================================
--- u-boot-arm.orig/cpu/arm_cortexa8/omap3/board.c
+++ u-boot-arm/cpu/arm_cortexa8/omap3/board.c
@@ -37,13 +37,6 @@
#include <asm/arch/sys_proto.h>
#include <asm/arch/mem.h>
-#define NOT_EARLY 0
-
-/* Permission values for registers -Full fledged permissions to all */
-#define UNLOCK_1 0xFFFFFFFF
-#define UNLOCK_2 0x00000000
-#define UNLOCK_3 0x0000FFFF
-
extern omap3_sysinfo sysinfo;
/******************************************************************************
@@ -63,27 +56,34 @@ static inline void delay(unsigned long l
*****************************************************************************/
void secure_unlock_mem(void)
{
+ u32 *pm_rt_ape_base = (u32 *)PM_RT_APE_BASE_ADDR_ARM;
+ u32 *pm_gpmc_base = (u32 *)PM_GPMC_BASE_ADDR_ARM;
+ u32 *pm_ocm_ram_base = (u32 *)PM_OCM_RAM_BASE_ADDR_ARM;
+ u32 *pm_iva2_base = (u32 *)PM_IVA2_BASE_ADDR_ARM;
+ u32 *sms_base = (u32 *)OMAP34XX_SMS_BASE;
+
/* Protection Module Register Target APE (PM_RT) */
- writel(UNLOCK_1, RT_REQ_INFO_PERMISSION_1);
- writel(UNLOCK_1, RT_READ_PERMISSION_0);
- writel(UNLOCK_1, RT_WRITE_PERMISSION_0);
- writel(UNLOCK_2, RT_ADDR_MATCH_1);
-
- writel(UNLOCK_3, GPMC_REQ_INFO_PERMISSION_0);
- writel(UNLOCK_3, GPMC_READ_PERMISSION_0);
- writel(UNLOCK_3, GPMC_WRITE_PERMISSION_0);
-
- writel(UNLOCK_3, OCM_REQ_INFO_PERMISSION_0);
- writel(UNLOCK_3, OCM_READ_PERMISSION_0);
- writel(UNLOCK_3, OCM_WRITE_PERMISSION_0);
- writel(UNLOCK_2, OCM_ADDR_MATCH_2);
+ writel(UNLOCK_1, pm_rt_ape_base + OFFS(RT_REQ_INFO_PERMISSION_1));
+ writel(UNLOCK_1, pm_rt_ape_base + OFFS(RT_READ_PERMISSION_0));
+ writel(UNLOCK_1, pm_rt_ape_base + OFFS(RT_WRITE_PERMISSION_0));
+ writel(UNLOCK_2, pm_rt_ape_base + OFFS(RT_ADDR_MATCH_1));
+
+ writel(UNLOCK_3, pm_gpmc_base + OFFS(GPMC_REQ_INFO_PERMISSION_0));
+ writel(UNLOCK_3, pm_gpmc_base + OFFS(GPMC_READ_PERMISSION_0));
+ writel(UNLOCK_3, pm_gpmc_base + OFFS(GPMC_WRITE_PERMISSION_0));
+
+ writel(UNLOCK_3, pm_ocm_ram_base + OFFS(OCM_REQ_INFO_PERMISSION_0));
+ writel(UNLOCK_3, pm_ocm_ram_base + OFFS(OCM_READ_PERMISSION_0));
+ writel(UNLOCK_3, pm_ocm_ram_base + OFFS(OCM_WRITE_PERMISSION_0));
+ writel(UNLOCK_2, pm_ocm_ram_base + OFFS(OCM_ADDR_MATCH_2));
/* IVA Changes */
- writel(UNLOCK_3, IVA2_REQ_INFO_PERMISSION_0);
- writel(UNLOCK_3, IVA2_READ_PERMISSION_0);
- writel(UNLOCK_3, IVA2_WRITE_PERMISSION_0);
+ writel(UNLOCK_3, pm_iva2_base + OFFS(IVA2_REQ_INFO_PERMISSION_0));
+ writel(UNLOCK_3, pm_iva2_base + OFFS(IVA2_READ_PERMISSION_0));
+ writel(UNLOCK_3, pm_iva2_base + OFFS(IVA2_WRITE_PERMISSION_0));
- writel(UNLOCK_1, SMS_RG_ATT0); /* SDRC region 0 public */
+ /* SDRC region 0 public */
+ writel(UNLOCK_1, sms_base + OFFS(SMS_RG_ATT0));
}
/******************************************************************************
@@ -210,7 +210,7 @@ void s_init(void)
#endif
/*
* Writing to AuxCR in U-boot using SMI for GP DEV
- * Currently SMI in Kernel on ES2 devices seems to have an isse
+ * Currently SMI in Kernel on ES2 devices seems to have an issue
* Once that is resolved, we can postpone this config to kernel
*/
if (get_device_type() == GP_DEVICE)
@@ -245,6 +245,8 @@ void wait_for_command_complete(unsigned
*****************************************************************************/
void watchdog_init(void)
{
+ u32 *wd2_base = (u32 *)WD2_BASE;
+
/*
* There are 3 watch dogs WD1=Secure, WD2=MPU, WD3=IVA. WD1 is
* either taken care of by ROM (HS/EMU) or not accessible (GP).
@@ -256,9 +258,9 @@ void watchdog_init(void)
sr32(CM_ICLKEN_WKUP, 5, 1, 1);
wait_on_value(ST_WDT2, 0x20, CM_IDLEST_WKUP, 5); /* some issue here */
- writel(WD_UNLOCK1, WD2_BASE + WSPR);
+ writel(WD_UNLOCK1, wd2_base + OFFS(WSPR));
wait_for_command_complete(WD2_BASE);
- writel(WD_UNLOCK2, WD2_BASE + WSPR);
+ writel(WD_UNLOCK2, wd2_base + OFFS(WSPR));
}
/******************************************************************************
Index: u-boot-arm/cpu/arm_cortexa8/omap3/interrupts.c
===================================================================
--- u-boot-arm.orig/cpu/arm_cortexa8/omap3/interrupts.c
+++ u-boot-arm/cpu/arm_cortexa8/omap3/interrupts.c
@@ -38,9 +38,6 @@
#define TIMER_LOAD_VAL 0
-/* macro to read the 32 bit timer */
-#define READ_TIMER (*(volatile ulong *)(CONFIG_SYS_TIMERBASE+TCRR))
-
#ifdef CONFIG_USE_IRQ
/* enable IRQ interrupts */
void enable_interrupts(void)
@@ -170,15 +167,16 @@ void do_irq(struct pt_regs *pt_regs)
static ulong timestamp;
static ulong lastinc;
+static u32 *timer_base = (u32 *)CONFIG_SYS_TIMERBASE;
/* nothing really to do with interrupts, just starts up a counter. */
int interrupt_init(void)
{
/* start the counter ticking up, reload value on overflow */
- writel(TIMER_LOAD_VAL, CONFIG_SYS_TIMERBASE + TLDR);
+ writel(TIMER_LOAD_VAL, timer_base + OFFS(TLDR));
/* enable timer */
writel((CONFIG_SYS_PVT << 2) | TCLR_PRE | TCLR_AR | TCLR_ST,
- CONFIG_SYS_TIMERBASE + TCLR);
+ timer_base + OFFS(TCLR));
reset_timer_masked(); /* init the timestamp and lastinc value */
@@ -233,14 +231,14 @@ void udelay(unsigned long usec)
void reset_timer_masked(void)
{
- /* reset time */
- lastinc = READ_TIMER; /* capture current incrementer value time */
+ /* reset time, capture current incrementer value time */
+ lastinc = readl(timer_base + OFFS(TCRR));
timestamp = 0; /* start "advancing" time stamp from 0 */
}
ulong get_timer_masked(void)
{
- ulong now = READ_TIMER; /* current tick value */
+ ulong now = readl(timer_base + OFFS(TCRR)); /* current tick value */
if (now >= lastinc) /* normal mode (non roll) */
/* move stamp fordward with absoulte diff ticks */
Index: u-boot-arm/cpu/arm_cortexa8/omap3/clock.c
===================================================================
--- u-boot-arm.orig/cpu/arm_cortexa8/omap3/clock.c
+++ u-boot-arm/cpu/arm_cortexa8/omap3/clock.c
@@ -41,36 +41,46 @@
u32 get_osc_clk_speed(void)
{
u32 start, cstart, cend, cdiff, val;
+ u32 *prcm_base = (u32 *)PRCM_BASE;
+ u32 *prm_base = (u32 *)PRM_BASE;
+ u32 *gpt1_base = (u32 *)OMAP34XX_GPT1;
+ u32 *s32k_base = (u32 *)SYNC_32KTIMER_BASE;
- val = readl(PRM_CLKSRC_CTRL);
+ val = readl(prm_base + OFFS(CLKSRC_CTRL));
/* If SYS_CLK is being divided by 2, remove for now */
val = (val & (~SYSCLKDIV_2)) | SYSCLKDIV_1;
- writel(val, PRM_CLKSRC_CTRL);
+ writel(val, prm_base + OFFS(CLKSRC_CTRL));
/* enable timer2 */
- val = readl(CM_CLKSEL_WKUP) | CLKSEL_GPT1;
- writel(val, CM_CLKSEL_WKUP); /* select sys_clk for GPT1 */
+ val = readl(prcm_base + OFFS(CLKSEL_WKUP)) | CLKSEL_GPT1;
+
+ /* select sys_clk for GPT1 */
+ writel(val, prcm_base + OFFS(CLKSEL_WKUP));
/* Enable I and F Clocks for GPT1 */
- val = readl(CM_ICLKEN_WKUP) | EN_GPT1 | EN_32KSYNC;
- writel(val, CM_ICLKEN_WKUP);
- val = readl(CM_FCLKEN_WKUP) | EN_GPT1;
- writel(val, CM_FCLKEN_WKUP);
+ val = readl(prcm_base + OFFS(ICLKEN_WKUP)) | EN_GPT1 | EN_32KSYNC;
+ writel(val, prcm_base + OFFS(ICLKEN_WKUP));
+ val = readl(prcm_base + OFFS(FCLKEN_WKUP)) | EN_GPT1;
+ writel(val, prcm_base + OFFS(FCLKEN_WKUP));
- writel(0, OMAP34XX_GPT1 + TLDR); /* start counting at 0 */
- writel(GPT_EN, OMAP34XX_GPT1 + TCLR); /* enable clock */
+ writel(0, gpt1_base + OFFS(TLDR)); /* start counting at 0 */
+ writel(GPT_EN, gpt1_base + OFFS(TCLR)); /* enable clock */
/* enable 32kHz source, determine sys_clk via gauging */
- start = 20 + readl(S32K_CR); /* start time in 20 cycles */
- while (readl(S32K_CR) < start) ; /* dead loop till start time */
+
+ /* start time in 20 cycles */
+ start = 20 + readl(s32k_base + OFFS(S32K_CR));
+
+ /* dead loop till start time */
+ while (readl(s32k_base + OFFS(S32K_CR)) < start);
/* get start sys_clk count */
- cstart = readl(OMAP34XX_GPT1 + TCRR);
+ cstart = readl(gpt1_base + OFFS(TCRR));
/* wait for 40 cycles */
- while (readl(S32K_CR) < (start + 20)) ;
- cend = readl(OMAP34XX_GPT1 + TCRR); /* get end sys_clk count */
+ while (readl(s32k_base + OFFS(S32K_CR)) < (start + 20)) ;
+ cend = readl(gpt1_base + OFFS(TCRR)); /* get end sys_clk count */
cdiff = cend - cstart; /* get elapsed ticks */
/* based on number of ticks assign speed */
@@ -123,6 +133,7 @@ void prcm_init(void)
int xip_safe, p0, p1, p2, p3;
u32 osc_clk = 0, sys_clkin_sel;
u32 clk_index, sil_index;
+ u32 *prcm_base = (u32 *)PRCM_BASE;
dpll_param *dpll_param_p;
f_lock_pll = (void *) ((u32) &_end_vect - (u32) &_start +
@@ -199,17 +210,17 @@ void prcm_init(void)
* if running from flash, jump to small relocated code
* area in SRAM.
*/
- p0 = readl(CM_CLKEN_PLL);
+ p0 = readl(prcm_base + OFFS(CLKEN_PLL));
sr32((u32) &p0, 0, 3, PLL_FAST_RELOCK_BYPASS);
sr32((u32) &p0, 4, 4, dpll_param_p->fsel); /* FREQSEL */
- p1 = readl(CM_CLKSEL1_PLL);
+ p1 = readl(prcm_base + OFFS(CLKSEL1_PLL));
sr32((u32) &p1, 27, 2, dpll_param_p->m2); /* Set M2 */
sr32((u32) &p1, 16, 11, dpll_param_p->m); /* Set M */
sr32((u32) &p1, 8, 7, dpll_param_p->n); /* Set N */
sr32((u32) &p1, 6, 1, 0); /* set source for 96M */
- p2 = readl(CM_CLKSEL_CORE);
+ p2 = readl(prcm_base + OFFS(CLKSEL_CORE));
sr32((u32) &p2, 8, 4, CORE_SSI_DIV); /* ssi */
sr32((u32) &p2, 4, 2, CORE_FUSB_DIV); /* fsusb */
sr32((u32) &p2, 2, 2, CORE_L4_DIV); /* l4 */
Index: u-boot-arm/include/asm-arm/arch-omap3/omap3.h
===================================================================
--- u-boot-arm.orig/include/asm-arm/arch-omap3/omap3.h
+++ u-boot-arm/include/asm-arm/arch-omap3/omap3.h
@@ -75,7 +75,7 @@
/* 32KTIMER */
#define SYNC_32KTIMER_BASE 0x48320000
-#define S32K_CR (SYNC_32KTIMER_BASE + 0x10)
+#define S32K_CR 0x10
/* OMAP3 GPIO registers */
#define OMAP34XX_GPIO1_BASE 0x48310000
More information about the U-Boot
mailing list