diff options
Diffstat (limited to 'arch/arm/cpu/armv7/mx5')
| -rw-r--r-- | arch/arm/cpu/armv7/mx5/lowlevel_init.S | 46 | ||||
| -rw-r--r-- | arch/arm/cpu/armv7/mx5/soc.c | 39 | 
2 files changed, 62 insertions, 23 deletions
| diff --git a/arch/arm/cpu/armv7/mx5/lowlevel_init.S b/arch/arm/cpu/armv7/mx5/lowlevel_init.S index 683a7b53a..a40b84fee 100644 --- a/arch/arm/cpu/armv7/mx5/lowlevel_init.S +++ b/arch/arm/cpu/armv7/mx5/lowlevel_init.S @@ -36,9 +36,9 @@  	/* reconfigure L2 cache aux control reg */  	mov r0, #0xC0			/* tag RAM */  	add r0, r0, #0x4		/* data RAM */ -	orr r0, r0, #(1 << 24)		/* disable write allocate delay */ -	orr r0, r0, #(1 << 23)		/* disable write allocate combine */ -	orr r0, r0, #(1 << 22)		/* disable write allocate */ +	orr r0, r0, #1 << 24		/* disable write allocate delay */ +	orr r0, r0, #1 << 23		/* disable write allocate combine */ +	orr r0, r0, #1 << 22		/* disable write allocate */  #if defined(CONFIG_MX51)  	ldr r1, =0x0 @@ -46,7 +46,7 @@  	cmp r3, #0x10  	/* disable write combine for TO 2 and lower revs */ -	orrls r0, r0, #(1 << 25) +	orrls r0, r0, #1 << 25  #endif  	mcr 15, 1, r0, c9, c0, 2 @@ -247,9 +247,9 @@  	movhi r1, #0  #else  	mov r1, #0 -  #endif  	str r1, [r0, #CLKCTL_CACRR] +  	/* Switch ARM back to PLL 1 */  	mov r1, #0  	str r1, [r0, #CLKCTL_CCSR] @@ -288,9 +288,9 @@  	/* Switch peripheral to PLL2 */  	ldr r0, =CCM_BASE_ADDR  	ldr r1, =0x00808145 -	orr r1, r1, #(2 << 10) -	orr r1, r1, #(0 << 16) -	orr r1, r1, #(1 << 19) +	orr r1, r1, #2 << 10 +	orr r1, r1, #0 << 16 +	orr r1, r1, #1 << 19  	str r1, [r0, #CLKCTL_CBCDR]  	ldr r1, =0x00016154 @@ -331,10 +331,10 @@ ENTRY(lowlevel_init)  #if defined(CONFIG_MX51)  	ldr r0, =GPIO1_BASE_ADDR  	ldr r1, [r0, #0x0] -	orr r1, r1, #(1 << 23) +	orr r1, r1, #1 << 23  	str r1, [r0, #0x0]  	ldr r1, [r0, #0x4] -	orr r1, r1, #(1 << 23) +	orr r1, r1, #1 << 23  	str r1, [r0, #0x4]  #endif @@ -351,16 +351,16 @@ ENTRY(lowlevel_init)  ENDPROC(lowlevel_init)  /* Board level setting value */ -W_DP_OP_864:              .word DP_OP_864 -W_DP_MFD_864:             .word DP_MFD_864 -W_DP_MFN_864:             .word DP_MFN_864 -W_DP_MFN_800_DIT:         .word DP_MFN_800_DIT -W_DP_OP_800:              .word DP_OP_800 -W_DP_MFD_800:             .word DP_MFD_800 -W_DP_MFN_800:             .word DP_MFN_800 -W_DP_OP_665:              .word DP_OP_665 -W_DP_MFD_665:             .word DP_MFD_665 -W_DP_MFN_665:             .word DP_MFN_665 -W_DP_OP_216:              .word DP_OP_216 -W_DP_MFD_216:             .word DP_MFD_216 -W_DP_MFN_216:             .word DP_MFN_216 +W_DP_OP_864:		.word DP_OP_864 +W_DP_MFD_864:		.word DP_MFD_864 +W_DP_MFN_864:		.word DP_MFN_864 +W_DP_MFN_800_DIT:	.word DP_MFN_800_DIT +W_DP_OP_800:		.word DP_OP_800 +W_DP_MFD_800:		.word DP_MFD_800 +W_DP_MFN_800:		.word DP_MFN_800 +W_DP_OP_665:		.word DP_OP_665 +W_DP_MFD_665:		.word DP_MFD_665 +W_DP_MFN_665:		.word DP_MFN_665 +W_DP_OP_216:		.word DP_OP_216 +W_DP_MFD_216:		.word DP_MFD_216 +W_DP_MFN_216:		.word DP_MFN_216 diff --git a/arch/arm/cpu/armv7/mx5/soc.c b/arch/arm/cpu/armv7/mx5/soc.c index 3f5a4f726..263658aa4 100644 --- a/arch/arm/cpu/armv7/mx5/soc.c +++ b/arch/arm/cpu/armv7/mx5/soc.c @@ -30,6 +30,7 @@  #include <asm/errno.h>  #include <asm/io.h> +#include <asm/imx-common/boot_mode.h>  #if !(defined(CONFIG_MX51) || defined(CONFIG_MX53))  #error "CPU_TYPE not defined" @@ -71,6 +72,14 @@ u32 get_cpu_rev(void)  	return system_rev;  } +#ifndef CONFIG_SYS_DCACHE_OFF +void enable_caches(void) +{ +	/* Enable D-cache. I-cache is already enabled in start.S */ +	dcache_enable(); +} +#endif +  #if defined(CONFIG_FEC_MXC)  void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)  { @@ -115,3 +124,33 @@ void set_chipselect_size(int const cs_size)  	writel(reg, &iomuxc_regs->gpr1);  } + +#ifdef CONFIG_MX53 +void boot_mode_apply(unsigned cfg_val) +{ +	writel(cfg_val, &((struct srtc_regs *)SRTC_BASE_ADDR)->lpgr); +} +/* + * cfg_val will be used for + * Boot_cfg3[7:0]:Boot_cfg2[7:0]:Boot_cfg1[7:0] + * + * If bit 28 of LPGR is set upon watchdog reset, + * bits[25:0] of LPGR will move to SBMR. + */ +const struct boot_mode soc_boot_modes[] = { +	{"normal",	MAKE_CFGVAL(0x00, 0x00, 0x00, 0x00)}, +	/* usb or serial download */ +	{"usb",		MAKE_CFGVAL(0x00, 0x00, 0x00, 0x13)}, +	{"sata",	MAKE_CFGVAL(0x28, 0x00, 0x00, 0x12)}, +	{"escpi1:0",	MAKE_CFGVAL(0x38, 0x20, 0x00, 0x12)}, +	{"escpi1:1",	MAKE_CFGVAL(0x38, 0x20, 0x04, 0x12)}, +	{"escpi1:2",	MAKE_CFGVAL(0x38, 0x20, 0x08, 0x12)}, +	{"escpi1:3",	MAKE_CFGVAL(0x38, 0x20, 0x0c, 0x12)}, +	/* 4 bit bus width */ +	{"esdhc1",	MAKE_CFGVAL(0x40, 0x20, 0x00, 0x12)}, +	{"esdhc2",	MAKE_CFGVAL(0x40, 0x20, 0x08, 0x12)}, +	{"esdhc3",	MAKE_CFGVAL(0x40, 0x20, 0x10, 0x12)}, +	{"esdhc4",	MAKE_CFGVAL(0x40, 0x20, 0x18, 0x12)}, +	{NULL,		0}, +}; +#endif |