summaryrefslogtreecommitdiffstats
path: root/arch/arm/boards
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/boards')
-rw-r--r--arch/arm/boards/ccxmx51/ccxmx51.c54
-rw-r--r--arch/arm/boards/ccxmx51/ccxmx51.h1
-rw-r--r--arch/arm/boards/ccxmx51/ccxmx51js.c1
-rw-r--r--arch/arm/boards/efika-mx-smartbook/board.c14
-rw-r--r--arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c7
-rw-r--r--arch/arm/boards/eukrea_cpuimx25/lowlevel.c35
-rw-r--r--arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c9
-rw-r--r--arch/arm/boards/eukrea_cpuimx27/lowlevel_init.S23
-rw-r--r--arch/arm/boards/eukrea_cpuimx35/lowlevel.c46
-rw-r--r--arch/arm/boards/freescale-mx25-3-stack/3stack.c9
-rw-r--r--arch/arm/boards/freescale-mx25-3-stack/lowlevel_init.S23
-rw-r--r--arch/arm/boards/freescale-mx35-3-stack/3stack.c12
-rw-r--r--arch/arm/boards/freescale-mx35-3-stack/lowlevel_init.S23
-rw-r--r--arch/arm/boards/guf-cupid/lowlevel.c45
-rw-r--r--arch/arm/boards/guf-neso/lowlevel.c33
-rw-r--r--arch/arm/boards/guf-vincell/env/init/bootargs-base8
-rw-r--r--arch/arm/boards/guf-vincell/env/init/config-board7
-rw-r--r--arch/arm/boards/guf-vincell/env/init/hostname8
-rw-r--r--arch/arm/boards/imx21ads/imx21ads.c9
-rw-r--r--arch/arm/boards/imx21ads/lowlevel_init.S23
-rw-r--r--arch/arm/boards/karo-tx25/board.c12
-rw-r--r--arch/arm/boards/karo-tx25/env/bin/init_board6
-rw-r--r--arch/arm/boards/karo-tx25/env/boot/nand-ubi10
-rw-r--r--arch/arm/boards/karo-tx25/env/config48
-rw-r--r--arch/arm/boards/karo-tx25/env/init/config-board7
-rw-r--r--arch/arm/boards/karo-tx25/env/init/mtdparts-nand11
-rw-r--r--arch/arm/boards/karo-tx25/lowlevel.c33
-rw-r--r--arch/arm/boards/pcm037/lowlevel.c34
-rw-r--r--arch/arm/boards/pcm037/pcm037.c8
-rw-r--r--arch/arm/boards/pcm038/lowlevel.c34
-rw-r--r--arch/arm/boards/pcm043/lowlevel.c47
-rw-r--r--arch/arm/boards/phycard-i.MX27/lowlevel_init.S26
32 files changed, 119 insertions, 547 deletions
diff --git a/arch/arm/boards/ccxmx51/ccxmx51.c b/arch/arm/boards/ccxmx51/ccxmx51.c
index b3173a424f..a9bf16a3d6 100644
--- a/arch/arm/boards/ccxmx51/ccxmx51.c
+++ b/arch/arm/boards/ccxmx51/ccxmx51.c
@@ -50,26 +50,26 @@
#include "ccxmx51.h"
static struct ccxmx51_ident ccxmx51_ids[] = {
-/* 0x00 */ { "Unknown", 0, 0, 0, 0, 0 },
-/* 0x01 */ { "Not supported", 0, 0, 0, 0, 0 },
-/* 0x02 */ { "i.MX515@800MHz, Wireless, PHY, Ext. Eth, Accel", SZ_512M, 0, 1, 1, 1 },
-/* 0x03 */ { "i.MX515@800MHz, PHY, Ext. Eth, Accel", SZ_512M, 0, 1, 1, 0 },
-/* 0x04 */ { "i.MX515@600MHz, Wireless, PHY, Ext. Eth, Accel", SZ_512M, 1, 1, 1, 1 },
-/* 0x05 */ { "i.MX515@600MHz, PHY, Ext. Eth, Accel", SZ_512M, 1, 1, 1, 0 },
-/* 0x06 */ { "i.MX515@800MHz, Wireless, PHY, Accel", SZ_512M, 0, 1, 0, 1 },
-/* 0x07 */ { "i.MX515@800MHz, PHY, Accel", SZ_512M, 0, 1, 0, 0 },
-/* 0x08 */ { "i.MX515@800MHz, Wireless, PHY, Accel", SZ_256M, 0, 1, 0, 1 },
-/* 0x09 */ { "i.MX515@800MHz, PHY, Accel", SZ_256M, 0, 1, 0, 0 },
-/* 0x0a */ { "i.MX515@600MHz, Wireless, PHY, Accel", SZ_256M, 1, 1, 0, 1 },
-/* 0x0b */ { "i.MX515@600MHz, PHY, Accel", SZ_256M, 1, 1, 0, 0 },
-/* 0x0c */ { "i.MX515@800MHz, Wireless, PHY, Accel", SZ_128M, 0, 1, 0, 1 },
-/* 0x0d */ { "i.MX512@800MHz", SZ_128M, 0, 0, 0, 0 },
-/* 0x0e */ { "i.MX515@800MHz, Wireless, PHY, Accel", SZ_512M, 0, 1, 0, 1 },
-/* 0x0f */ { "i.MX515@600MHz, PHY, Accel", SZ_128M, 1, 1, 0, 0 },
-/* 0x10 */ { "i.MX515@600MHz, Wireless, PHY, Accel", SZ_128M, 1, 1, 0, 1 },
-/* 0x11 */ { "i.MX515@800MHz, PHY, Accel", SZ_128M, 0, 1, 0, 0 },
-/* 0x12 */ { "i.MX515@600MHz, Wireless, PHY, Accel", SZ_512M, 1, 1, 0, 1 },
-/* 0x13 */ { "i.MX515@800MHz, PHY, Accel", SZ_512M, 0, 1, 0, 0 },
+/* 0x00 */ { "Unknown", 0, 0, 0, 0 },
+/* 0x01 */ { "Not supported", 0, 0, 0, 0 },
+/* 0x02 */ { "i.MX515@800MHz, Wireless, PHY, Ext. Eth, Accel", 0, 1, 1, 1 },
+/* 0x03 */ { "i.MX515@800MHz, PHY, Ext. Eth, Accel", 0, 1, 1, 0 },
+/* 0x04 */ { "i.MX515@600MHz, Wireless, PHY, Ext. Eth, Accel", 1, 1, 1, 1 },
+/* 0x05 */ { "i.MX515@600MHz, PHY, Ext. Eth, Accel", 1, 1, 1, 0 },
+/* 0x06 */ { "i.MX515@800MHz, Wireless, PHY, Accel", 0, 1, 0, 1 },
+/* 0x07 */ { "i.MX515@800MHz, PHY, Accel", 0, 1, 0, 0 },
+/* 0x08 */ { "i.MX515@800MHz, Wireless, PHY, Accel", 0, 1, 0, 1 },
+/* 0x09 */ { "i.MX515@800MHz, PHY, Accel", 0, 1, 0, 0 },
+/* 0x0a */ { "i.MX515@600MHz, Wireless, PHY, Accel", 1, 1, 0, 1 },
+/* 0x0b */ { "i.MX515@600MHz, PHY, Accel", 1, 1, 0, 0 },
+/* 0x0c */ { "i.MX515@800MHz, Wireless, PHY, Accel", 0, 1, 0, 1 },
+/* 0x0d */ { "i.MX512@800MHz", 0, 0, 0, 0 },
+/* 0x0e */ { "i.MX515@800MHz, Wireless, PHY, Accel", 0, 1, 0, 1 },
+/* 0x0f */ { "i.MX515@600MHz, PHY, Accel", 1, 1, 0, 0 },
+/* 0x10 */ { "i.MX515@600MHz, Wireless, PHY, Accel", 1, 1, 0, 1 },
+/* 0x11 */ { "i.MX515@800MHz, PHY, Accel", 0, 1, 0, 0 },
+/* 0x12 */ { "i.MX515@600MHz, Wireless, PHY, Accel", 1, 1, 0, 1 },
+/* 0x13 */ { "i.MX515@800MHz, PHY, Accel", 0, 1, 0, 0 },
};
struct ccxmx51_ident *ccxmx51_id;
@@ -363,12 +363,12 @@ static int ccxmx51_power_init(void)
/* De-assert reset of external devices on GP01, GPO2, GPO3 and GPO4 */
mc13xxx_reg_read(mc13xxx_dev, MC13892_REG_POWER_MISC, &val);
/* GPO1 - External */
- /* GP02 - LAN9221 */
- /* GP03 - FEC */
- /* GP04 - Wireless */
- if (IS_ENABLED(CONFIG_DRIVER_NET_SMC911X) && ccxmx51_id->eth0)
+ /* GP02 - LAN9221 Power */
+ /* GP03 - FEC Reset */
+ /* GP04 - Wireless Power */
+ if (IS_ENABLED(CONFIG_DRIVER_NET_SMC911X) && ccxmx51_id->eth1)
val |= (1 << 8);
- if (IS_ENABLED(CONFIG_DRIVER_NET_FEC_IMX) && ccxmx51_id->eth1)
+ if (IS_ENABLED(CONFIG_DRIVER_NET_FEC_IMX) && ccxmx51_id->eth0)
val |= (1 << 10);
if (ccxmx51_id->wless)
val |= (1 << 12);
@@ -408,8 +408,6 @@ static int ccxmx51_devices_init(void)
break;
}
printf("Module Serial : %c%d\n", manloc, ((hwid[2] & 0x3f) << 24) | (hwid[3] << 16) | (hwid[4] << 8) | hwid[5]);
- if ((ccxmx51_id->mem_sz - SZ_128M) > 0)
- arm_add_mem_device("ram1", MX51_CSD0_BASE_ADDR + SZ_128M, ccxmx51_id->mem_sz - SZ_128M);
}
imx51_add_uart1();
@@ -435,8 +433,8 @@ static int ccxmx51_devices_init(void)
#ifdef CONFIG_DRIVER_NET_FEC_IMX
if (ccxmx51_id->eth0 && !pwr) {
- imx51_add_fec(&fec_info);
eth_register_ethaddr(0, hwid);
+ imx51_add_fec(&fec_info);
}
#endif
diff --git a/arch/arm/boards/ccxmx51/ccxmx51.h b/arch/arm/boards/ccxmx51/ccxmx51.h
index 3feacac034..ef40b7f0a4 100644
--- a/arch/arm/boards/ccxmx51/ccxmx51.h
+++ b/arch/arm/boards/ccxmx51/ccxmx51.h
@@ -23,7 +23,6 @@ struct ccxmx51_hwid {
struct ccxmx51_ident {
const char *id_string;
- const int mem_sz;
const char industrial;
const char eth0;
const char eth1;
diff --git a/arch/arm/boards/ccxmx51/ccxmx51js.c b/arch/arm/boards/ccxmx51/ccxmx51js.c
index c947a1ee97..8c1d2dcd63 100644
--- a/arch/arm/boards/ccxmx51/ccxmx51js.c
+++ b/arch/arm/boards/ccxmx51/ccxmx51js.c
@@ -59,6 +59,7 @@ static iomux_v3_cfg_t ccxmx51js_pads[] = {
MX51_PAD_USBH1_DATA5__USBH1_DATA5,
MX51_PAD_USBH1_DATA6__USBH1_DATA6,
MX51_PAD_USBH1_DATA7__USBH1_DATA7,
+ MX51_PAD_DISPB2_SER_RS__GPIO3_8, /* Reset */
};
static struct esdhc_platform_data sdhc1_pdata = {
diff --git a/arch/arm/boards/efika-mx-smartbook/board.c b/arch/arm/boards/efika-mx-smartbook/board.c
index a455c55b8d..5c026892cf 100644
--- a/arch/arm/boards/efika-mx-smartbook/board.c
+++ b/arch/arm/boards/efika-mx-smartbook/board.c
@@ -198,7 +198,7 @@ static int efikamx_mem_init(void)
{
arm_add_mem_device("ram0", 0x90000000, SZ_512M);
- return 0;
+ return 0;
}
mem_initcall(efikamx_mem_init);
@@ -220,7 +220,7 @@ static const struct spi_board_info efikamx_spi_board_info[] = {
.chip_select = 1,
.max_speed_hz = 20 * 1000 * 1000,
.bus_num = 0,
- },
+ },
};
static void efikamx_power_init(void)
@@ -294,11 +294,11 @@ static void efikamx_power_init(void)
/* Set VDIG to 1.8V, VGEN3 to 1.8V, VCAM to 2.6V */
mc13xxx_reg_read(mc, MC13892_REG_SETTING_0, &val);
val &= ~(MC13892_SETTING_0_VCAM_MASK |
- MC13892_SETTING_0_VGEN3_MASK |
- MC13892_SETTING_0_VDIG_MASK);
+ MC13892_SETTING_0_VGEN3_MASK |
+ MC13892_SETTING_0_VDIG_MASK);
val |= MC13892_SETTING_0_VDIG_1_8 |
- MC13892_SETTING_0_VGEN3_1_8 |
- MC13892_SETTING_0_VCAM_2_6;
+ MC13892_SETTING_0_VGEN3_1_8 |
+ MC13892_SETTING_0_VCAM_2_6;
mc13xxx_reg_write(mc, MC13892_REG_SETTING_0, val);
/* Set VVIDEO to 2.775V, VAUDIO to 3V, VSD to 3.15V */
@@ -455,7 +455,7 @@ static int efikamx_devices_init(void)
imx51_add_mmc1(&efikasb_sd2_data);
for (i = 0; i < ARRAY_SIZE(leds); i++)
- led_gpio_register(&leds[i]);
+ led_gpio_register(&leds[i]);
imx51_add_i2c1(NULL);
diff --git a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c
index ae2363aa2a..98c9b435be 100644
--- a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c
+++ b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c
@@ -235,10 +235,3 @@ static int eukrea_cpuimx25_console_init(void)
}
console_initcall(eukrea_cpuimx25_console_init);
-
-#ifdef CONFIG_NAND_IMX_BOOT
-void __bare_init nand_boot(void)
-{
- imx_nand_load_image(_text, barebox_image_size);
-}
-#endif
diff --git a/arch/arm/boards/eukrea_cpuimx25/lowlevel.c b/arch/arm/boards/eukrea_cpuimx25/lowlevel.c
index 36ce98bc69..3c1b50cba1 100644
--- a/arch/arm/boards/eukrea_cpuimx25/lowlevel.c
+++ b/arch/arm/boards/eukrea_cpuimx25/lowlevel.c
@@ -30,27 +30,9 @@
#include <asm-generic/memory_layout.h>
#include <asm/system.h>
-#ifdef CONFIG_NAND_IMX_BOOT
-static void __bare_init __naked insdram(void)
-{
- uint32_t r;
-
- /* setup a stack to be able to call imx_nand_load_image() */
- arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
-
- imx_nand_load_image(_text, barebox_image_size);
-
- board_init_lowlevel_return();
-}
-#endif
-
void __bare_init __naked reset(void)
{
uint32_t r;
-#ifdef CONFIG_NAND_IMX_BOOT
- unsigned int *trg, *src;
- int i;
-#endif
register uint32_t loops = 0x20000;
common_reset();
@@ -146,21 +128,10 @@ void __bare_init __naked reset(void)
writel(0x82216080, MX25_ESDCTL_BASE_ADDR + IMX_ESDCTL0);
#ifdef CONFIG_NAND_IMX_BOOT
- /* skip NAND boot if not running from NFC space */
- r = get_pc();
- if (r < MX25_NFC_BASE_ADDR || r > MX25_NFC_BASE_ADDR + 0x800)
- board_init_lowlevel_return();
-
- src = (unsigned int *)MX25_NFC_BASE_ADDR;
- trg = (unsigned int *)_text;
-
- /* Move ourselves out of NFC SRAM */
- for (i = 0; i < 0x800 / sizeof(int); i++)
- *trg++ = *src++;
+ /* setup a stack to be able to call imx25_barebox_boot_nand_external() */
+ arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
- /* Jump to SDRAM */
- r = (unsigned int)&insdram;
- __asm__ __volatile__("mov pc, %0" : : "r"(r));
+ imx25_barebox_boot_nand_external();
#else
board_init_lowlevel_return();
#endif
diff --git a/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c b/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c
index 498e9b4a8e..65b6c44843 100644
--- a/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c
+++ b/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c
@@ -248,12 +248,3 @@ static int eukrea_cpuimx27_late_init(void)
}
late_initcall(eukrea_cpuimx27_late_init);
-
-#ifdef CONFIG_NAND_IMX_BOOT
-void __bare_init nand_boot(void)
-{
- imx_nand_load_image(_text, barebox_image_size);
- board_init_lowlevel_return();
-}
-#endif
-
diff --git a/arch/arm/boards/eukrea_cpuimx27/lowlevel_init.S b/arch/arm/boards/eukrea_cpuimx27/lowlevel_init.S
index 4ee6efb84e..4e69aac2d5 100644
--- a/arch/arm/boards/eukrea_cpuimx27/lowlevel_init.S
+++ b/arch/arm/boards/eukrea_cpuimx27/lowlevel_init.S
@@ -126,28 +126,7 @@ reset:
#ifdef CONFIG_NAND_IMX_BOOT
ldr sp, =STACK_BASE + STACK_SIZE - 12 /* Setup a temporary stack in SDRAM */
- ldr r0, =MX27_NFC_BASE_ADDR /* start of NFC SRAM */
- ldr r2, =MX27_NFC_BASE_ADDR + 0x1000 /* end of NFC SRAM */
-
- /* skip NAND boot if not running from NFC space */
- cmp pc, r0
- bls ret
- cmp pc, r2
- bhi ret
-
- /* Move ourselves out of NFC SRAM */
- ldr r1, =_text
-
-copy_loop:
- ldmia r0!, {r3-r9} /* copy from source address [r0] */
- stmia r1!, {r3-r9} /* copy to target address [r1] */
- cmp r0, r2 /* until source end address [r2] */
- ble copy_loop
-
- ldr pc, =1f /* Jump to SDRAM */
-1:
- b nand_boot /* Load barebox from NAND Flash */
- /* to SDRAM */
+ b imx27_barebox_boot_nand_external
#endif /* CONFIG_NAND_IMX_BOOT */
ret:
diff --git a/arch/arm/boards/eukrea_cpuimx35/lowlevel.c b/arch/arm/boards/eukrea_cpuimx35/lowlevel.c
index 052333503d..8f4615af41 100644
--- a/arch/arm/boards/eukrea_cpuimx35/lowlevel.c
+++ b/arch/arm/boards/eukrea_cpuimx35/lowlevel.c
@@ -35,34 +35,10 @@
#define MPCTL_PARAM_532 ((1 << 31) | IMX_PLL_PD(0) | IMX_PLL_MFD(11) | IMX_PLL_MFI(11) | IMX_PLL_MFN(1))
#define PPCTL_PARAM_300 (IMX_PLL_PD(0) | IMX_PLL_MFD(3) | IMX_PLL_MFI(6) | IMX_PLL_MFN(1))
-#ifdef CONFIG_NAND_IMX_BOOT
-static void __bare_init __naked insdram(void)
-{
- uint32_t r;
-
- /* Speed up NAND controller by adjusting the NFC divider */
- r = readl(MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
- r &= ~(0xf << 28);
- r |= 0x1 << 28;
- writel(r, MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
-
- /* setup a stack to be able to call imx_nand_load_image() */
- arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
-
- imx_nand_load_image(_text, barebox_image_size);
-
- board_init_lowlevel_return();
-}
-#endif
-
void __bare_init __naked reset(void)
{
uint32_t r, s;
unsigned long ccm_base = MX35_CCM_BASE_ADDR;
-#ifdef CONFIG_NAND_IMX_BOOT
- unsigned int *trg, *src;
- int i;
-#endif
register uint32_t loops = 0x20000;
common_reset();
@@ -155,23 +131,17 @@ void __bare_init __naked reset(void)
writel(0x82228080, MX35_ESDCTL_BASE_ADDR + IMX_ESDCTL0);
#ifdef CONFIG_NAND_IMX_BOOT
- /* skip NAND boot if not running from NFC space */
- r = get_pc();
- if (r < MX35_NFC_BASE_ADDR || r > MX35_NFC_BASE_ADDR + 0x800)
- board_init_lowlevel_return();
-
- src = (unsigned int *)MX35_NFC_BASE_ADDR;
- trg = (unsigned int *)_text;
+ /* Speed up NAND controller by adjusting the NFC divider */
+ r = readl(MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
+ r &= ~(0xf << 28);
+ r |= 0x1 << 28;
+ writel(r, MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
- /* Move ourselves out of NFC SRAM */
- for (i = 0; i < 0x800 / sizeof(int); i++)
- *trg++ = *src++;
+ /* setup a stack to be able to call imx35_barebox_boot_nand_external() */
+ arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
- /* Jump to SDRAM */
- r = (unsigned int)&insdram;
- __asm__ __volatile__("mov pc, %0" : : "r"(r));
+ imx35_barebox_boot_nand_external();
#else
board_init_lowlevel_return();
#endif
}
-
diff --git a/arch/arm/boards/freescale-mx25-3-stack/3stack.c b/arch/arm/boards/freescale-mx25-3-stack/3stack.c
index 1271ad95ca..4d048beb1b 100644
--- a/arch/arm/boards/freescale-mx25-3-stack/3stack.c
+++ b/arch/arm/boards/freescale-mx25-3-stack/3stack.c
@@ -274,14 +274,6 @@ static int imx25_console_init(void)
console_initcall(imx25_console_init);
-#ifdef CONFIG_NAND_IMX_BOOT
-void __bare_init nand_boot(void)
-{
- imx_nand_load_image(_text, barebox_image_size);
- board_init_lowlevel_return();
-}
-#endif
-
static int imx25_core_setup(void)
{
writel(0x01010103, MX25_CCM_BASE_ADDR + MX25_CCM_PCDR2);
@@ -289,4 +281,3 @@ static int imx25_core_setup(void)
}
core_initcall(imx25_core_setup);
-
diff --git a/arch/arm/boards/freescale-mx25-3-stack/lowlevel_init.S b/arch/arm/boards/freescale-mx25-3-stack/lowlevel_init.S
index fb980991a6..595c485128 100644
--- a/arch/arm/boards/freescale-mx25-3-stack/lowlevel_init.S
+++ b/arch/arm/boards/freescale-mx25-3-stack/lowlevel_init.S
@@ -100,28 +100,7 @@ reset:
#ifdef CONFIG_NAND_IMX_BOOT
ldr sp, =STACK_BASE + STACK_SIZE - 12 /* Setup a temporary stack in SDRAM */
- ldr r0, =MX25_NFC_BASE_ADDR /* start of NFC SRAM */
- ldr r2, =MX25_NFC_BASE_ADDR + 0x1000 /* end of NFC SRAM */
-
- /* skip NAND boot if not running from NFC space */
- cmp pc, r0
- bls ret
- cmp pc, r2
- bhi ret
-
- /* Move ourselves out of NFC SRAM */
- ldr r1, =_text
-
-copy_loop:
- ldmia r0!, {r3-r9} /* copy from source address [r0] */
- stmia r1!, {r3-r9} /* copy to target address [r1] */
- cmp r0, r2 /* until source end address [r2] */
- ble copy_loop
-
- ldr pc, =1f /* Jump to SDRAM */
-1:
- b nand_boot /* Load barebox from NAND Flash */
-
+ b imx25_barebox_boot_nand_external
#endif /* CONFIG_NAND_IMX_BOOT */
ret:
diff --git a/arch/arm/boards/freescale-mx35-3-stack/3stack.c b/arch/arm/boards/freescale-mx35-3-stack/3stack.c
index 3128d4fb1a..02844c5987 100644
--- a/arch/arm/boards/freescale-mx35-3-stack/3stack.c
+++ b/arch/arm/boards/freescale-mx35-3-stack/3stack.c
@@ -427,15 +427,3 @@ static int f3s_pmic_init(void)
}
late_initcall(f3s_pmic_init);
-
-#ifdef CONFIG_NAND_IMX_BOOT
-void __bare_init nand_boot(void)
-{
- /*
- * The driver is able to detect NAND's pagesize by CPU internal
- * fuses or external pull ups. But not the blocksize...
- */
- imx_nand_load_image(_text, barebox_image_size);
- board_init_lowlevel_return();
-}
-#endif
diff --git a/arch/arm/boards/freescale-mx35-3-stack/lowlevel_init.S b/arch/arm/boards/freescale-mx35-3-stack/lowlevel_init.S
index dada5f3fd5..5461b61fcb 100644
--- a/arch/arm/boards/freescale-mx35-3-stack/lowlevel_init.S
+++ b/arch/arm/boards/freescale-mx35-3-stack/lowlevel_init.S
@@ -157,28 +157,7 @@ reset:
#ifdef CONFIG_NAND_IMX_BOOT
ldr sp, =STACK_BASE + STACK_SIZE - 12 /* Setup a temporary stack in SDRAM */
- ldr r0, =MX35_NFC_BASE_ADDR /* start of NFC SRAM */
- ldr r2, =MX35_NFC_BASE_ADDR + 0x800 /* end of NFC SRAM */
-
- /* skip NAND boot if not running from NFC space */
- cmp pc, r0
- blo ret
- cmp pc, r2
- bhs ret
-
- /* Move ourselves out of NFC SRAM */
- ldr r1, =_text
-
-copy_loop:
- ldmia r0!, {r3-r9} /* copy from source address [r0] */
- stmia r1!, {r3-r9} /* copy to target address [r1] */
- cmp r0, r2 /* until source end address [r2] */
- ble copy_loop
-
- ldr pc, =1f /* Jump to SDRAM */
-1:
- b nand_boot /* Load barebox from NAND Flash */
-ret:
+ b imx35_barebox_boot_nand_external
#endif /* CONFIG_NAND_IMX_BOOT */
b board_init_lowlevel_return
diff --git a/arch/arm/boards/guf-cupid/lowlevel.c b/arch/arm/boards/guf-cupid/lowlevel.c
index 3de0346b98..f2994eb20d 100644
--- a/arch/arm/boards/guf-cupid/lowlevel.c
+++ b/arch/arm/boards/guf-cupid/lowlevel.c
@@ -42,26 +42,6 @@
#define SDRAM_COMPARE_CONST1 0x55555555
#define SDRAM_COMPARE_CONST2 0xaaaaaaaa
-#ifdef CONFIG_NAND_IMX_BOOT
-static void __bare_init __naked insdram(void)
-{
- uint32_t r;
-
- /* Speed up NAND controller by adjusting the NFC divider */
- r = readl(MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
- r &= ~(0xf << 28);
- r |= 0x1 << 28;
- writel(r, MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
-
- /* setup a stack to be able to call imx_nand_load_image() */
- arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
-
- imx_nand_load_image(_text, barebox_image_size);
-
- board_init_lowlevel_return();
-}
-#endif
-
static void __bare_init noinline setup_sdram(u32 memsize, u32 mode, u32 sdram_addr)
{
volatile int loop;
@@ -188,9 +168,6 @@ void __bare_init __naked reset(void)
u32 r0, r1;
void *iomuxc_base = (void *)MX35_IOMUXC_BASE_ADDR;
int i;
-#ifdef CONFIG_NAND_IMX_BOOT
- unsigned int *trg, *src;
-#endif
common_reset();
@@ -330,23 +307,17 @@ void __bare_init __naked reset(void)
setup_sdram(r0, ESDMISC_MDDR_EN, 0x80000f00);
#ifdef CONFIG_NAND_IMX_BOOT
- /* skip NAND boot if not running from NFC space */
- r0 = get_pc();
- if (r0 < MX35_NFC_BASE_ADDR || r0 > MX35_NFC_BASE_ADDR + 0x800)
- board_init_lowlevel_return();
-
- src = (unsigned int *)MX35_NFC_BASE_ADDR;
- trg = (unsigned int *)_text;
+ /* Speed up NAND controller by adjusting the NFC divider */
+ r0 = readl(MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
+ r0 &= ~(0xf << 28);
+ r0 |= 0x1 << 28;
+ writel(r0, MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
- /* Move ourselves out of NFC SRAM */
- for (i = 0; i < 0x800 / sizeof(int); i++)
- *trg++ = *src++;
+ /* setup a stack to be able to call imx35_barebox_boot_nand_external() */
+ arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
- /* Jump to SDRAM */
- r0 = (unsigned int)&insdram;
- __asm__ __volatile__("mov pc, %0" : : "r"(r0));
+ imx35_barebox_boot_nand_external();
#else
board_init_lowlevel_return();
#endif
}
-
diff --git a/arch/arm/boards/guf-neso/lowlevel.c b/arch/arm/boards/guf-neso/lowlevel.c
index ad414d9208..7a366d908c 100644
--- a/arch/arm/boards/guf-neso/lowlevel.c
+++ b/arch/arm/boards/guf-neso/lowlevel.c
@@ -30,27 +30,12 @@
#include <asm-generic/sections.h>
#include <asm-generic/memory_layout.h>
-#ifdef CONFIG_NAND_IMX_BOOT
-static void __bare_init __naked insdram(void)
-{
- /* setup a stack to be able to call imx_nand_load_image() */
- arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
-
- imx_nand_load_image(_text, barebox_image_size);
-
- board_init_lowlevel_return();
-}
-#endif
-
#define ESDCTL0_VAL (ESDCTL0_SDE | ESDCTL0_ROW13 | ESDCTL0_COL10)
void __bare_init __naked reset(void)
{
uint32_t r;
int i;
-#ifdef CONFIG_NAND_IMX_BOOT
- unsigned int *trg, *src;
-#endif
common_reset();
@@ -102,23 +87,11 @@ void __bare_init __naked reset(void)
MX27_ESDCTL_BASE_ADDR + IMX_ESDCTL0);
#ifdef CONFIG_NAND_IMX_BOOT
- /* skip NAND boot if not running from NFC space */
- r = get_pc();
- if (r < MX27_NFC_BASE_ADDR || r > MX27_NFC_BASE_ADDR + 0x800)
- board_init_lowlevel_return();
-
- src = (unsigned int *)MX27_NFC_BASE_ADDR;
- trg = (unsigned int *)_text;
-
- /* Move ourselves out of NFC SRAM */
- for (i = 0; i < 0x800 / sizeof(int); i++)
- *trg++ = *src++;
+ /* setup a stack to be able to call imx27_barebox_boot_nand_external() */
+ arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
- /* Jump to SDRAM */
- r = (unsigned int)&insdram;
- __asm__ __volatile__("mov pc, %0" : : "r"(r));
+ imx27_barebox_boot_nand_external();
#else
board_init_lowlevel_return();
#endif
}
-
diff --git a/arch/arm/boards/guf-vincell/env/init/bootargs-base b/arch/arm/boards/guf-vincell/env/init/bootargs-base
deleted file mode 100644
index d86975406e..0000000000
--- a/arch/arm/boards/guf-vincell/env/init/bootargs-base
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-if [ "$1" = menu ]; then
- init-menu-add-entry "$0" "Base bootargs"
- exit
-fi
-
-global.linux.bootargs.base="console=ttymxc0,115200"
diff --git a/arch/arm/boards/guf-vincell/env/init/config-board b/arch/arm/boards/guf-vincell/env/init/config-board
new file mode 100644
index 0000000000..77e9fc8b4d
--- /dev/null
+++ b/arch/arm/boards/guf-vincell/env/init/config-board
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# board defaults, do not change in running system. Change /env/config
+# instead
+
+global.hostname=vincell
+global.linux.bootargs.base="console=ttymxc0,115200"
diff --git a/arch/arm/boards/guf-vincell/env/init/hostname b/arch/arm/boards/guf-vincell/env/init/hostname
deleted file mode 100644
index ca2789ddf4..0000000000
--- a/arch/arm/boards/guf-vincell/env/init/hostname
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-if [ "$1" = menu ]; then
- init-menu-add-entry "$0" "hostname"
- exit
-fi
-
-global.hostname=vincell
diff --git a/arch/arm/boards/imx21ads/imx21ads.c b/arch/arm/boards/imx21ads/imx21ads.c
index ca566c831a..3d07633f59 100644
--- a/arch/arm/boards/imx21ads/imx21ads.c
+++ b/arch/arm/boards/imx21ads/imx21ads.c
@@ -189,12 +189,3 @@ static int mx21ads_console_init(void)
}
console_initcall(mx21ads_console_init);
-
-#ifdef CONFIG_NAND_IMX_BOOT
-void __bare_init nand_boot(void)
-{
- imx_nand_load_image(_text, barebox_image_size);
- board_init_lowlevel_return();
-}
-#endif
-
diff --git a/arch/arm/boards/imx21ads/lowlevel_init.S b/arch/arm/boards/imx21ads/lowlevel_init.S
index e52cac1443..f06c964dd6 100644
--- a/arch/arm/boards/imx21ads/lowlevel_init.S
+++ b/arch/arm/boards/imx21ads/lowlevel_init.S
@@ -120,28 +120,7 @@ reset:
#ifdef CONFIG_NAND_IMX_BOOT
ldr sp, =STACK_BASE + STACK_SIZE - 12 /* Setup a temporary stack in SDRAM */
- ldr r0, =MX21_NFC_BASE_ADDR /* start of NFC SRAM */
- ldr r2, =MX21_NFC_BASE_ADDR + 0x800 /* end of NFC SRAM */
-
- /* skip NAND boot if not running from NFC space */
- cmp pc, r0
- bls ret
- cmp pc, r2
- bhi ret
-
- /* Move ourselves out of NFC SRAM */
- ldr r1, =_text
-
-copy_loop:
- ldmia r0!, {r3-r9} /* copy from source address [r0] */
- stmia r1!, {r3-r9} /* copy to target address [r1] */
- cmp r0, r2 /* until source end address [r2] */
- ble copy_loop
-
- ldr pc, =1f /* Jump to SDRAM */
-1:
- b nand_boot /* Load barebox from NAND Flash */
- /* SRAM to SDRAM */
+ b imx21_barebox_boot_nand_external
#endif /* CONFIG_NAND_IMX_BOOT */
ret:
diff --git a/arch/arm/boards/karo-tx25/board.c b/arch/arm/boards/karo-tx25/board.c
index 98140b33cc..e581886911 100644
--- a/arch/arm/boards/karo-tx25/board.c
+++ b/arch/arm/boards/karo-tx25/board.c
@@ -20,6 +20,7 @@
#include <common.h>
#include <init.h>
#include <driver.h>
+#include <sizes.h>
#include <environment.h>
#include <mach/imx25-regs.h>
#include <asm/armlinux.h>
@@ -102,10 +103,10 @@ static int tx25_devices_init(void)
imx25_add_nand(&nand_info);
- devfs_add_partition("nand0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self_raw");
+ devfs_add_partition("nand0", 0x00000, SZ_512K, DEVFS_PARTITION_FIXED, "self_raw");
dev_add_bb_dev("self_raw", "self0");
- devfs_add_partition("nand0", 0x40000, 0x80000, DEVFS_PARTITION_FIXED, "env_raw");
+ devfs_add_partition("nand0", SZ_512K, SZ_512K, DEVFS_PARTITION_FIXED, "env_raw");
dev_add_bb_dev("env_raw", "env0");
add_mem_device("sram0", 0x78000000, 128 * 1024,
@@ -154,13 +155,6 @@ static int tx25_console_init(void)
console_initcall(tx25_console_init);
-#ifdef CONFIG_NAND_IMX_BOOT
-void __bare_init nand_boot(void)
-{
- imx_nand_load_image(_text, barebox_image_size);
-}
-#endif
-
static iomux_v3_cfg_t tx25_lcdc_gpios[] = {
MX25_PAD_A18__GPIO_2_4, /* LCD Reset (active LOW) */
MX25_PAD_PWM__GPIO_1_26, /* LCD Backlight brightness 0: full 1: off */
diff --git a/arch/arm/boards/karo-tx25/env/bin/init_board b/arch/arm/boards/karo-tx25/env/bin/init_board
deleted file mode 100644
index 1f35c961dc..0000000000
--- a/arch/arm/boards/karo-tx25/env/bin/init_board
+++ /dev/null
@@ -1,6 +0,0 @@
-
-if [ -e /dev/fb0 -a -e /env/splash.bmp ]; then
- splash /env/splash.bmp
- fb0.enable=1
-fi
-
diff --git a/arch/arm/boards/karo-tx25/env/boot/nand-ubi b/arch/arm/boards/karo-tx25/env/boot/nand-ubi
new file mode 100644
index 0000000000..67b0cb4afe
--- /dev/null
+++ b/arch/arm/boards/karo-tx25/env/boot/nand-ubi
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+if [ "$1" = menu ]; then
+ boot-menu-add-entry "$0" "nand (UBI)"
+ exit
+fi
+
+global.bootm.image="/dev/nand0.kernel.bb"
+#global.bootm.oftree="/env/oftree"
+global.linux.bootargs.dyn.root="root=ubi0:root ubi.mtd=nand0.root rootfstype=ubifs"
diff --git a/arch/arm/boards/karo-tx25/env/config b/arch/arm/boards/karo-tx25/env/config
deleted file mode 100644
index 87beb6d64b..0000000000
--- a/arch/arm/boards/karo-tx25/env/config
+++ /dev/null
@@ -1,48 +0,0 @@
-
-global.hostname=tx25
-baseboard=tx28stk5
-user=
-
-# use 'dhcp' to do dhcp in barebox and in kernel
-# use 'none' if you want to skip kernel ip autoconfiguration
-ip=dhcp
-
-# or set your networking parameters here
-#eth0.ipaddr=a.b.c.d
-#eth0.ethaddr=de:ad:be:ef:00:00
-#eth0.netmask=a.b.c.d
-#eth0.serverip=a.b.c.d
-#eth0.gateway=a.b.c.d
-
-# can be either 'nfs' or 'tftp'
-kernel_loc=tftp
-# can be either 'net' or 'initrd'
-rootfs_loc=net
-
-# can be either 'jffs2' or 'ubifs'
-rootfs_type=ubifs
-rootfsimage=root-${global.hostname}.$rootfs_type
-
-kernelimage=zImage-${global.hostname}
-#kernelimage=uImage-${global.hostname}
-#kernelimage=Image-${global.hostname}
-#kernelimage=Image-${global.hostname}.lzo
-
-if [ -n $user ]; then
- kernelimage="$user"-"$kernelimage"
- nfsroot="$eth0.serverip:/home/$user/nfsroot/${global.hostname}"
- rootfsimage="$user"-"$rootfsimage"
-else
- nfsroot="$eth0.serverip:/path/to/nfs/root"
-fi
-
-autoboot_timeout=3
-
-bootargs="console=ttymxc0,115200 tx25_base=$baseboard"
-
-nand_parts="256k(barebox)ro,512k(bareboxenv),2M(kernel),-(root)"
-nand_device=mxc_nand
-rootfs_mtdblock_nand=3
-
-PS1="\e[1;32mbarebox@\e[1;31m\h:\w\e[0m "
-
diff --git a/arch/arm/boards/karo-tx25/env/init/config-board b/arch/arm/boards/karo-tx25/env/init/config-board
new file mode 100644
index 0000000000..943b002d5f
--- /dev/null
+++ b/arch/arm/boards/karo-tx25/env/init/config-board
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# board defaults, do not change in running system. Change /env/config
+# instead
+
+global.hostname=tx25
+global.linux.bootargs.base="console=ttymxc0,115200"
diff --git a/arch/arm/boards/karo-tx25/env/init/mtdparts-nand b/arch/arm/boards/karo-tx25/env/init/mtdparts-nand
new file mode 100644
index 0000000000..4fffefca8b
--- /dev/null
+++ b/arch/arm/boards/karo-tx25/env/init/mtdparts-nand
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+if [ "$1" = menu ]; then
+ init-menu-add-entry "$0" "NAND partitions"
+ exit
+fi
+
+mtdparts="512k(nand0.barebox)ro,512k(nand0.bareboxenv),4M(nand0.kernel),-(nand0.root)"
+kernelname="mxc_nand"
+
+mtdparts-add -b -d nand0 -k ${kernelname} -p ${mtdparts}
diff --git a/arch/arm/boards/karo-tx25/lowlevel.c b/arch/arm/boards/karo-tx25/lowlevel.c
index 6f17958941..b1afe1872d 100644
--- a/arch/arm/boards/karo-tx25/lowlevel.c
+++ b/arch/arm/boards/karo-tx25/lowlevel.c
@@ -28,18 +28,6 @@
#include <asm-generic/sections.h>
#include <asm-generic/memory_layout.h>
-#ifdef CONFIG_NAND_IMX_BOOT
-static void __bare_init __naked insdram(void)
-{
- /* setup a stack to be able to call imx_nand_load_image() */
- arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
-
- imx_nand_load_image(_text, barebox_image_size);
-
- board_init_lowlevel_return();
-}
-#endif
-
static inline void __bare_init setup_sdram(uint32_t base, uint32_t esdctl,
uint32_t esdcfg)
{
@@ -67,10 +55,6 @@ static inline void __bare_init setup_sdram(uint32_t base, uint32_t esdctl,
void __bare_init __naked reset(void)
{
uint32_t r;
-#ifdef CONFIG_NAND_IMX_BOOT
- unsigned int *trg, *src;
- int i;
-#endif
common_reset();
@@ -149,21 +133,10 @@ void __bare_init __naked reset(void)
setup_sdram(0x90000000, ESDCTLVAL, ESDCFGVAL);
#ifdef CONFIG_NAND_IMX_BOOT
- /* skip NAND boot if not running from NFC space */
- r = get_pc();
- if (r < MX25_NFC_BASE_ADDR || r > MX25_NFC_BASE_ADDR + 0x800)
- board_init_lowlevel_return();
-
- src = (unsigned int *)MX25_NFC_BASE_ADDR;
- trg = (unsigned int *)_text;
-
- /* Move ourselves out of NFC SRAM */
- for (i = 0; i < 0x800 / sizeof(int); i++)
- *trg++ = *src++;
+ /* setup a stack to be able to call imx25_barebox_boot_nand_external() */
+ arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
- /* Jump to SDRAM */
- r = (unsigned int)&insdram;
- __asm__ __volatile__("mov pc, %0" : : "r"(r));
+ imx25_barebox_boot_nand_external();
#else
board_init_lowlevel_return();
#endif
diff --git a/arch/arm/boards/pcm037/lowlevel.c b/arch/arm/boards/pcm037/lowlevel.c
index baf63a53b9..da017325fe 100644
--- a/arch/arm/boards/pcm037/lowlevel.c
+++ b/arch/arm/boards/pcm037/lowlevel.c
@@ -30,28 +30,13 @@
#include <asm/barebox-arm-head.h>
#include <mach/esdctl.h>
-#ifdef CONFIG_NAND_IMX_BOOT
-static void __bare_init __naked insdram(void)
-{
- /* setup a stack to be able to call imx_nand_load_image() */
- arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
-
- imx_nand_load_image(_text, barebox_image_size);
-
- board_init_lowlevel_return();
-}
-#endif
-
#define ESDCTL0_VAL (ESDCTL0_SDE | ESDCTL0_ROW13 | ESDCTL0_COL10)
void __bare_init __naked reset(void)
{
uint32_t r;
volatile int v;
-#ifdef CONFIG_NAND_IMX_BOOT
- int i;
- unsigned int *trg, *src;
-#endif
+
common_reset();
writel(1 << 6, MX31_IPU_CTRL_BASE_ADDR);
@@ -141,21 +126,10 @@ void __bare_init __naked reset(void)
#endif
#ifdef CONFIG_NAND_IMX_BOOT
- /* skip NAND boot if not running from NFC space */
- r = get_pc();
- if (r < MX31_NFC_BASE_ADDR || r > MX31_NFC_BASE_ADDR + 0x800)
- board_init_lowlevel_return();
-
- src = (unsigned int *)MX31_NFC_BASE_ADDR;
- trg = (unsigned int *)_text;
-
- /* Move ourselves out of NFC SRAM */
- for (i = 0; i < 0x800 / sizeof(int); i++)
- *trg++ = *src++;
+ /* setup a stack to be able to call imx31_barebox_boot_nand_external() */
+ arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
- /* Jump to SDRAM */
- r = (unsigned int)&insdram;
- __asm__ __volatile__("mov pc, %0" : : "r"(r));
+ imx31_barebox_boot_nand_external();
#else
board_init_lowlevel_return();
#endif
diff --git a/arch/arm/boards/pcm037/pcm037.c b/arch/arm/boards/pcm037/pcm037.c
index 7894ff3bdb..959cc8ad8c 100644
--- a/arch/arm/boards/pcm037/pcm037.c
+++ b/arch/arm/boards/pcm037/pcm037.c
@@ -253,11 +253,3 @@ static int imx31_console_init(void)
}
console_initcall(imx31_console_init);
-
-#ifdef CONFIG_NAND_IMX_BOOT
-void __bare_init nand_boot(void)
-{
- imx_nand_load_image(_text, barebox_image_size);
- board_init_lowlevel_return();
-}
-#endif
diff --git a/arch/arm/boards/pcm038/lowlevel.c b/arch/arm/boards/pcm038/lowlevel.c
index 2f93c3127a..4515107741 100644
--- a/arch/arm/boards/pcm038/lowlevel.c
+++ b/arch/arm/boards/pcm038/lowlevel.c
@@ -31,27 +31,13 @@
#include "pll.h"
-#ifdef CONFIG_NAND_IMX_BOOT
-static void __bare_init __naked insdram(void)
-{
- /* setup a stack to be able to call imx_nand_load_image() */
- arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
-
- imx_nand_load_image(_text, barebox_image_size);
-
- board_init_lowlevel_return();
-}
-#endif
-
#define ESDCTL0_VAL (ESDCTL0_SDE | ESDCTL0_ROW13 | ESDCTL0_COL10)
void __bare_init __naked reset(void)
{
uint32_t r;
int i;
-#ifdef CONFIG_NAND_IMX_BOOT
- unsigned int *trg, *src;
-#endif
+
common_reset();
/* ahb lite ip interface */
@@ -108,23 +94,11 @@ void __bare_init __naked reset(void)
MX27_ESDCTL_BASE_ADDR + IMX_ESDCTL0);
#ifdef CONFIG_NAND_IMX_BOOT
- /* skip NAND boot if not running from NFC space */
- r = get_pc();
- if (r < MX27_NFC_BASE_ADDR || r > MX27_NFC_BASE_ADDR + 0x800)
- board_init_lowlevel_return();
-
- src = (unsigned int *)MX27_NFC_BASE_ADDR;
- trg = (unsigned int *)_text;
-
- /* Move ourselves out of NFC SRAM */
- for (i = 0; i < 0x800 / sizeof(int); i++)
- *trg++ = *src++;
+ /* setup a stack to be able to call mx27_barebox_boot_nand_external() */
+ arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
- /* Jump to SDRAM */
- r = (unsigned int)&insdram;
- __asm__ __volatile__("mov pc, %0" : : "r"(r));
+ imx27_barebox_boot_nand_external();
#else
board_init_lowlevel_return();
#endif
}
-
diff --git a/arch/arm/boards/pcm043/lowlevel.c b/arch/arm/boards/pcm043/lowlevel.c
index 751f6aefdf..639064f97f 100644
--- a/arch/arm/boards/pcm043/lowlevel.c
+++ b/arch/arm/boards/pcm043/lowlevel.c
@@ -40,36 +40,13 @@
#define CCM_PDR0_399 0x00011000
#define CCM_PDR0_532 0x00001000
-#ifdef CONFIG_NAND_IMX_BOOT
-static void __bare_init __naked insdram(void)
-{
- uint32_t r;
-
- /* Speed up NAND controller by adjusting the NFC divider */
- r = readl(MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
- r &= ~(0xf << 28);
- r |= 0x1 << 28;
- writel(r, MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
-
- /* setup a stack to be able to call imx_nand_load_image() */
- arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
-
- imx_nand_load_image(_text, barebox_image_size);
-
- board_init_lowlevel_return();
-}
-#endif
-
void __bare_init __naked reset(void)
{
uint32_t r, s;
unsigned long ccm_base = MX35_CCM_BASE_ADDR;
unsigned long iomuxc_base = MX35_IOMUXC_BASE_ADDR;
unsigned long esdctl_base = MX35_ESDCTL_BASE_ADDR;
-#ifdef CONFIG_NAND_IMX_BOOT
- unsigned int *trg, *src;
- int i;
-#endif
+
common_reset();
r = get_cr();
@@ -206,23 +183,17 @@ void __bare_init __naked reset(void)
writel(0x00002000, esdctl_base + IMX_ESDCTL1);
#ifdef CONFIG_NAND_IMX_BOOT
- /* skip NAND boot if not running from NFC space */
- r = get_pc();
- if (r < MX35_NFC_BASE_ADDR || r > MX35_NFC_BASE_ADDR + 0x800)
- board_init_lowlevel_return();
-
- src = (unsigned int *)MX35_NFC_BASE_ADDR;
- trg = (unsigned int *)_text;
+ /* Speed up NAND controller by adjusting the NFC divider */
+ r = readl(MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
+ r &= ~(0xf << 28);
+ r |= 0x1 << 28;
+ writel(r, MX35_CCM_BASE_ADDR + MX35_CCM_PDR4);
- /* Move ourselves out of NFC SRAM */
- for (i = 0; i < 0x800 / sizeof(int); i++)
- *trg++ = *src++;
+ /* setup a stack to be able to call imx35_barebox_boot_nand_external() */
+ arm_setup_stack(STACK_BASE + STACK_SIZE - 12);
- /* Jump to SDRAM */
- r = (unsigned int)&insdram;
- __asm__ __volatile__("mov pc, %0" : : "r"(r));
+ imx35_barebox_boot_nand_external();
#else
board_init_lowlevel_return();
#endif
}
-
diff --git a/arch/arm/boards/phycard-i.MX27/lowlevel_init.S b/arch/arm/boards/phycard-i.MX27/lowlevel_init.S
index 38cc55c1dc..cb5d83dd07 100644
--- a/arch/arm/boards/phycard-i.MX27/lowlevel_init.S
+++ b/arch/arm/boards/phycard-i.MX27/lowlevel_init.S
@@ -111,31 +111,7 @@ reset:
#ifdef CONFIG_NAND_IMX_BOOT
ldr sp, =0xa0f00000 /* Setup a temporary stack in SDRAM */
- ldr r0, =MX27_NFC_BASE_ADDR /* start of NFC SRAM */
- ldr r2, =MX27_NFC_BASE_ADDR + 0x1000 /* end of NFC SRAM */
-
- /* skip NAND boot if not running from NFC space */
- cmp pc, r0
- bls ret
- cmp pc, r2
- bhi ret
-
- /* Move ourselves out of NFC SRAM */
- ldr r1, =_text
-
-copy_loop:
- ldmia r0!, {r3-r9} /* copy from source address [r0] */
- stmia r1!, {r3-r9} /* copy to target address [r1] */
- cmp r0, r2 /* until source end address [r2] */
- ble copy_loop
-
- ldr pc, =1f /* Jump to SDRAM */
-1:
- ldr r0,=_text
- ldr r1,=_barebox_image_size
- bl imx_nand_load_image
- b board_init_lowlevel_return
-
+ b imx27_barebox_boot_nand_external
#endif /* CONFIG_NAND_IMX_BOOT */
ret: