diff options
Diffstat (limited to 'arch/arm/boards')
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: |