diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-09-05 10:40:04 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-09-05 10:40:04 +0200 |
commit | 7f6b6d25d899fea83412255d1d819e3b6450f144 (patch) | |
tree | 4da546d3b4045c842af7ccad3004c6476cb4d523 /arch/arm/boards/beaglebone | |
parent | 1729b1798e1bfd4614a9cf7cf651cee8b6923283 (diff) | |
parent | f1cf4433bfc2d2e7bfdab8eacc401a0ccf2fe08d (diff) | |
download | barebox-7f6b6d25d899fea83412255d1d819e3b6450f144.tar.gz barebox-7f6b6d25d899fea83412255d1d819e3b6450f144.tar.xz |
Merge branch 'for-next/omap'
Conflicts:
arch/arm/boards/pcm051/env/config
Diffstat (limited to 'arch/arm/boards/beaglebone')
-rw-r--r-- | arch/arm/boards/beaglebone/beaglebone.h | 9 | ||||
-rw-r--r-- | arch/arm/boards/beaglebone/board.c | 70 | ||||
-rw-r--r-- | arch/arm/boards/beaglebone/lowlevel.c | 311 |
3 files changed, 182 insertions, 208 deletions
diff --git a/arch/arm/boards/beaglebone/beaglebone.h b/arch/arm/boards/beaglebone/beaglebone.h new file mode 100644 index 0000000000..25c5b0eebc --- /dev/null +++ b/arch/arm/boards/beaglebone/beaglebone.h @@ -0,0 +1,9 @@ +#ifndef __BOARD_BEAGLEBONE_H +#define __BOARD_BEAGLEBONE_H + +static inline int is_beaglebone_black(void) +{ + return am33xx_get_cpu_rev() != AM335X_ES1_0; +} + +#endif /* __BOARD_BEAGLEBONE_H */ diff --git a/arch/arm/boards/beaglebone/board.c b/arch/arm/boards/beaglebone/board.c index 52b3ec8f5c..dfeb47cee2 100644 --- a/arch/arm/boards/beaglebone/board.c +++ b/arch/arm/boards/beaglebone/board.c @@ -26,10 +26,13 @@ #include <init.h> #include <driver.h> #include <envfs.h> +#include <environment.h> +#include <globalvar.h> #include <sizes.h> #include <io.h> #include <ns16550.h> #include <net.h> +#include <bootsource.h> #include <asm/armlinux.h> #include <generated/mach-types.h> #include <mach/am33xx-silicon.h> @@ -49,6 +52,8 @@ #include <mach/am33xx-generic.h> #include <mach/cpsw.h> +#include "beaglebone.h" + #ifdef CONFIG_DRIVER_SERIAL_NS16550 /** @@ -71,7 +76,10 @@ console_initcall(beaglebone_console_init); static int beaglebone_mem_init(void) { - omap_add_ram0(SZ_256M); + if (is_beaglebone_black()) + omap_add_ram0(SZ_512M); + else + omap_add_ram0(SZ_256M); return 0; } @@ -100,16 +108,72 @@ static void beaglebone_eth_init(void) am33xx_add_cpsw(&cpsw_data); } +static struct i2c_board_info i2c0_devices[] = { + { + I2C_BOARD_INFO("24c256", 0x50) + }, +}; + +static const __maybe_unused struct module_pin_mux mmc1_pin_mux[] = { + {OFFSET(gpmc_ad0), (MODE(1) | RXACTIVE)}, /* MMC1_DAT0 */ + {OFFSET(gpmc_ad1), (MODE(1) | RXACTIVE)}, /* MMC1_DAT1 */ + {OFFSET(gpmc_ad2), (MODE(1) | RXACTIVE)}, /* MMC1_DAT2 */ + {OFFSET(gpmc_ad3), (MODE(1) | RXACTIVE)}, /* MMC1_DAT3 */ + {OFFSET(gpmc_ad4), (MODE(1) | RXACTIVE)}, /* MMC1_DAT4 */ + {OFFSET(gpmc_ad5), (MODE(1) | RXACTIVE)}, /* MMC1_DAT5 */ + {OFFSET(gpmc_ad6), (MODE(1) | RXACTIVE)}, /* MMC1_DAT6 */ + {OFFSET(gpmc_ad7), (MODE(1) | RXACTIVE)}, /* MMC1_DAT7 */ + {OFFSET(gpmc_csn1), (MODE(2) | RXACTIVE | PULLUP_EN)}, /* MMC1_CLK */ + {OFFSET(gpmc_csn2), (MODE(2) | RXACTIVE | PULLUP_EN)}, /* MMC1_CMD */ + {-1}, +}; + +static struct omap_hsmmc_platform_data beaglebone_sd = { + .devname = "sd", +}; + +static struct omap_hsmmc_platform_data beaglebone_emmc = { + .devname = "emmc", +}; + static int beaglebone_devices_init(void) { - am33xx_add_mmc0(NULL); + am33xx_enable_mmc0_pin_mux(); + am33xx_add_mmc0(&beaglebone_sd); + + if (is_beaglebone_black()) { + configure_module_pin_mux(mmc1_pin_mux); + am33xx_add_mmc1(&beaglebone_emmc); + } + + if (bootsource_get() == BOOTSOURCE_MMC) { + if (bootsource_get_instance() == 0) + omap_set_bootmmc_devname("sd"); + else + omap_set_bootmmc_devname("emmc"); + } am33xx_enable_i2c0_pin_mux(); + i2c_register_board_info(0, i2c0_devices, ARRAY_SIZE(i2c0_devices)); + am33xx_add_i2c0(NULL); + beaglebone_eth_init(); + return 0; +} +device_initcall(beaglebone_devices_init); + +static int beaglebone_env_init(void) +{ + int black = is_beaglebone_black(); + + globalvar_add_simple("board.variant", black ? "boneblack" : "bone"); + + printf("detected 'BeagleBone %s'\n", black ? "Black" : "White"); + armlinux_set_bootparams((void *)0x80000100); armlinux_set_architecture(MACH_TYPE_BEAGLEBONE); return 0; } -device_initcall(beaglebone_devices_init); +late_initcall(beaglebone_env_init); diff --git a/arch/arm/boards/beaglebone/lowlevel.c b/arch/arm/boards/beaglebone/lowlevel.c index d871ca1504..2ff7c7169c 100644 --- a/arch/arm/boards/beaglebone/lowlevel.c +++ b/arch/arm/boards/beaglebone/lowlevel.c @@ -1,6 +1,7 @@ #include <init.h> #include <sizes.h> #include <io.h> +#include <debug_ll.h> #include <asm/barebox-arm-head.h> #include <asm/barebox-arm.h> #include <mach/am33xx-silicon.h> @@ -10,213 +11,96 @@ #include <mach/sys_info.h> #include <mach/syslib.h> #include <mach/am33xx-mux.h> +#include <mach/am33xx-generic.h> #include <mach/wdt.h> -/* UART Defines */ -#define UART_SYSCFG_OFFSET (0x54) -#define UART_SYSSTS_OFFSET (0x58) +#include "beaglebone.h" -#define UART_RESET (0x1 << 1) -#define UART_CLK_RUNNING_MASK 0x1 -#define UART_SMART_IDLE_EN (0x1 << 0x3) - -/* AM335X EMIF Register values */ -#define EMIF_SDMGT 0x80000000 -#define EMIF_SDRAM 0x00004650 -#define EMIF_PHYCFG 0x2 -#define DDR_PHY_RESET (0x1 << 10) -#define DDR_FUNCTIONAL_MODE_EN 0x1 -#define DDR_PHY_READY (0x1 << 2) -#define VTP_CTRL_READY (0x1 << 5) -#define VTP_CTRL_ENABLE (0x1 << 6) -#define VTP_CTRL_LOCK_EN (0x1 << 4) -#define VTP_CTRL_START_EN (0x1) -#define DDR2_RATIO 0x80 /* for mDDR */ -#define CMD_FORCE 0x00 /* common #def */ -#define CMD_DELAY 0x00 - -#define EMIF_READ_LATENCY 0x05 -#define EMIF_TIM1 0x0666B3D6 -#define EMIF_TIM2 0x143731DA -#define EMIF_TIM3 0x00000347 -#define EMIF_SDCFG 0x43805332 -#define EMIF_SDREF 0x0000081a -#define DDR2_DLL_LOCK_DIFF 0x0 #define DDR2_RD_DQS 0x12 #define DDR2_PHY_FIFO_WE 0x80 - -#define DDR2_INVERT_CLKOUT 0x00 #define DDR2_WR_DQS 0x00 #define DDR2_PHY_WRLVL 0x00 #define DDR2_PHY_GATELVL 0x00 #define DDR2_PHY_WR_DATA 0x40 -#define PHY_RANK0_DELAY 0x01 -#define PHY_DLL_LOCK_DIFF 0x0 -#define DDR_IOCTRL_VALUE 0x18B - -static void beaglebone_data_macro_config(int dataMacroNum) -{ - u32 BaseAddrOffset = 0x00; - - if (dataMacroNum == 1) - BaseAddrOffset = 0xA4; - - __raw_writel(((DDR2_RD_DQS<<30)|(DDR2_RD_DQS<<20) - |(DDR2_RD_DQS<<10)|(DDR2_RD_DQS<<0)), - (AM33XX_DATA0_RD_DQS_SLAVE_RATIO_0 + BaseAddrOffset)); - __raw_writel(DDR2_RD_DQS>>2, - (AM33XX_DATA0_RD_DQS_SLAVE_RATIO_1 + BaseAddrOffset)); - __raw_writel(((DDR2_WR_DQS<<30)|(DDR2_WR_DQS<<20) - |(DDR2_WR_DQS<<10)|(DDR2_WR_DQS<<0)), - (AM33XX_DATA0_WR_DQS_SLAVE_RATIO_0 + BaseAddrOffset)); - __raw_writel(DDR2_WR_DQS>>2, - (AM33XX_DATA0_WR_DQS_SLAVE_RATIO_1 + BaseAddrOffset)); - __raw_writel(((DDR2_PHY_WRLVL<<30)|(DDR2_PHY_WRLVL<<20) - |(DDR2_PHY_WRLVL<<10)|(DDR2_PHY_WRLVL<<0)), - (AM33XX_DATA0_WRLVL_INIT_RATIO_0 + BaseAddrOffset)); - __raw_writel(DDR2_PHY_WRLVL>>2, - (AM33XX_DATA0_WRLVL_INIT_RATIO_1 + BaseAddrOffset)); - __raw_writel(((DDR2_PHY_GATELVL<<30)|(DDR2_PHY_GATELVL<<20) - |(DDR2_PHY_GATELVL<<10)|(DDR2_PHY_GATELVL<<0)), - (AM33XX_DATA0_GATELVL_INIT_RATIO_0 + BaseAddrOffset)); - __raw_writel(DDR2_PHY_GATELVL>>2, - (AM33XX_DATA0_GATELVL_INIT_RATIO_1 + BaseAddrOffset)); - __raw_writel(((DDR2_PHY_FIFO_WE<<30)|(DDR2_PHY_FIFO_WE<<20) - |(DDR2_PHY_FIFO_WE<<10)|(DDR2_PHY_FIFO_WE<<0)), - (AM33XX_DATA0_FIFO_WE_SLAVE_RATIO_0 + BaseAddrOffset)); - __raw_writel(DDR2_PHY_FIFO_WE>>2, - (AM33XX_DATA0_FIFO_WE_SLAVE_RATIO_1 + BaseAddrOffset)); - __raw_writel(((DDR2_PHY_WR_DATA<<30)|(DDR2_PHY_WR_DATA<<20) - |(DDR2_PHY_WR_DATA<<10)|(DDR2_PHY_WR_DATA<<0)), - (AM33XX_DATA0_WR_DATA_SLAVE_RATIO_0 + BaseAddrOffset)); - __raw_writel(DDR2_PHY_WR_DATA>>2, - (AM33XX_DATA0_WR_DATA_SLAVE_RATIO_1 + BaseAddrOffset)); - __raw_writel(PHY_DLL_LOCK_DIFF, - (AM33XX_DATA0_DLL_LOCK_DIFF_0 + BaseAddrOffset)); -} - -static void beaglebone_cmd_macro_config(void) -{ - __raw_writel(DDR2_RATIO, AM33XX_CMD0_CTRL_SLAVE_RATIO_0); - __raw_writel(CMD_FORCE, AM33XX_CMD0_CTRL_SLAVE_FORCE_0); - __raw_writel(CMD_DELAY, AM33XX_CMD0_CTRL_SLAVE_DELAY_0); - __raw_writel(DDR2_DLL_LOCK_DIFF, AM33XX_CMD0_DLL_LOCK_DIFF_0); - __raw_writel(DDR2_INVERT_CLKOUT, AM33XX_CMD0_INVERT_CLKOUT_0); - - __raw_writel(DDR2_RATIO, AM33XX_CMD1_CTRL_SLAVE_RATIO_0); - __raw_writel(CMD_FORCE, AM33XX_CMD1_CTRL_SLAVE_FORCE_0); - __raw_writel(CMD_DELAY, AM33XX_CMD1_CTRL_SLAVE_DELAY_0); - __raw_writel(DDR2_DLL_LOCK_DIFF, AM33XX_CMD1_DLL_LOCK_DIFF_0); - __raw_writel(DDR2_INVERT_CLKOUT, AM33XX_CMD1_INVERT_CLKOUT_0); - - __raw_writel(DDR2_RATIO, AM33XX_CMD2_CTRL_SLAVE_RATIO_0); - __raw_writel(CMD_FORCE, AM33XX_CMD2_CTRL_SLAVE_FORCE_0); - __raw_writel(CMD_DELAY, AM33XX_CMD2_CTRL_SLAVE_DELAY_0); - __raw_writel(DDR2_DLL_LOCK_DIFF, AM33XX_CMD2_DLL_LOCK_DIFF_0); - __raw_writel(DDR2_INVERT_CLKOUT, AM33XX_CMD2_INVERT_CLKOUT_0); -} - -static void beaglebone_config_vtp(void) -{ - __raw_writel(__raw_readl(AM33XX_VTP0_CTRL_REG) | VTP_CTRL_ENABLE, - AM33XX_VTP0_CTRL_REG); - __raw_writel(__raw_readl(AM33XX_VTP0_CTRL_REG) & (~VTP_CTRL_START_EN), - AM33XX_VTP0_CTRL_REG); - __raw_writel(__raw_readl(AM33XX_VTP0_CTRL_REG) | VTP_CTRL_START_EN, - AM33XX_VTP0_CTRL_REG); - - /* Poll for READY */ - while ((__raw_readl(AM33XX_VTP0_CTRL_REG) & VTP_CTRL_READY) != VTP_CTRL_READY); -} - -static void beaglebone_config_emif_ddr2(void) -{ - u32 i; - - /*Program EMIF0 CFG Registers*/ - __raw_writel(EMIF_READ_LATENCY, AM33XX_EMIF4_0_REG(DDR_PHY_CTRL_1)); - __raw_writel(EMIF_READ_LATENCY, AM33XX_EMIF4_0_REG(DDR_PHY_CTRL_1_SHADOW)); - __raw_writel(EMIF_READ_LATENCY, AM33XX_EMIF4_0_REG(DDR_PHY_CTRL_2)); - __raw_writel(EMIF_TIM1, AM33XX_EMIF4_0_REG(SDRAM_TIM_1)); - __raw_writel(EMIF_TIM1, AM33XX_EMIF4_0_REG(SDRAM_TIM_1_SHADOW)); - __raw_writel(EMIF_TIM2, AM33XX_EMIF4_0_REG(SDRAM_TIM_2)); - __raw_writel(EMIF_TIM2, AM33XX_EMIF4_0_REG(SDRAM_TIM_2_SHADOW)); - __raw_writel(EMIF_TIM3, AM33XX_EMIF4_0_REG(SDRAM_TIM_3)); - __raw_writel(EMIF_TIM3, AM33XX_EMIF4_0_REG(SDRAM_TIM_3_SHADOW)); - - __raw_writel(EMIF_SDCFG, AM33XX_EMIF4_0_REG(SDRAM_CONFIG)); - __raw_writel(EMIF_SDCFG, AM33XX_EMIF4_0_REG(SDRAM_CONFIG2)); - - /* __raw_writel(EMIF_SDMGT, EMIF0_0_SDRAM_MGMT_CTRL); - __raw_writel(EMIF_SDMGT, EMIF0_0_SDRAM_MGMT_CTRL_SHD); */ - __raw_writel(0x00004650, AM33XX_EMIF4_0_REG(SDRAM_REF_CTRL)); - __raw_writel(0x00004650, AM33XX_EMIF4_0_REG(SDRAM_REF_CTRL_SHADOW)); - - for (i = 0; i < 5000; i++) { - - } - - /* __raw_writel(EMIF_SDMGT, EMIF0_0_SDRAM_MGMT_CTRL); - __raw_writel(EMIF_SDMGT, EMIF0_0_SDRAM_MGMT_CTRL_SHD); */ - __raw_writel(EMIF_SDREF, AM33XX_EMIF4_0_REG(SDRAM_REF_CTRL)); - __raw_writel(EMIF_SDREF, AM33XX_EMIF4_0_REG(SDRAM_REF_CTRL_SHADOW)); - - __raw_writel(EMIF_SDCFG, AM33XX_EMIF4_0_REG(SDRAM_CONFIG)); - __raw_writel(EMIF_SDCFG, AM33XX_EMIF4_0_REG(SDRAM_CONFIG2)); -} - -static void beaglebone_config_ddr(void) -{ - enable_ddr_clocks(); - - beaglebone_config_vtp(); - - beaglebone_cmd_macro_config(); - beaglebone_data_macro_config(0); - beaglebone_data_macro_config(1); - - __raw_writel(PHY_RANK0_DELAY, AM33XX_DATA0_RANK0_DELAYS_0); - __raw_writel(PHY_RANK0_DELAY, AM33XX_DATA1_RANK0_DELAYS_0); - - __raw_writel(DDR_IOCTRL_VALUE, AM33XX_DDR_CMD0_IOCTRL); - __raw_writel(DDR_IOCTRL_VALUE, AM33XX_DDR_CMD1_IOCTRL); - __raw_writel(DDR_IOCTRL_VALUE, AM33XX_DDR_CMD2_IOCTRL); - __raw_writel(DDR_IOCTRL_VALUE, AM33XX_DDR_DATA0_IOCTRL); - __raw_writel(DDR_IOCTRL_VALUE, AM33XX_DDR_DATA1_IOCTRL); - - __raw_writel(__raw_readl(AM33XX_DDR_IO_CTRL) & 0xefffffff, AM33XX_DDR_IO_CTRL); - __raw_writel(__raw_readl(AM33XX_DDR_CKE_CTRL) | 0x00000001, AM33XX_DDR_CKE_CTRL); - - beaglebone_config_emif_ddr2(); -} - -/* - * early system init of muxing and clocks. - */ -void beaglebone_sram_init(void) -{ - u32 regVal, uart_base; - - /* Setup the PLLs and the clocks for the peripherals */ - pll_init(MPUPLL_M_500); - - beaglebone_config_ddr(); - - /* UART softreset */ - uart_base = AM33XX_UART0_BASE; - - regVal = __raw_readl(uart_base + UART_SYSCFG_OFFSET); - regVal |= UART_RESET; - __raw_writel(regVal, (uart_base + UART_SYSCFG_OFFSET) ); - while ((__raw_readl(uart_base + UART_SYSSTS_OFFSET) & - UART_CLK_RUNNING_MASK) != UART_CLK_RUNNING_MASK); - - /* Disable smart idle */ - regVal = __raw_readl((uart_base + UART_SYSCFG_OFFSET)); - regVal |= UART_SMART_IDLE_EN; - __raw_writel(regVal, (uart_base + UART_SYSCFG_OFFSET)); -} +static const struct am33xx_cmd_control ddr2_cmd_ctrl = { + .slave_ratio0 = 0x80, + .dll_lock_diff0 = 0x0, + .invert_clkout0 = 0x0, + .slave_ratio1 = 0x80, + .dll_lock_diff1 = 0x0, + .invert_clkout1 = 0x0, + .slave_ratio2 = 0x80, + .dll_lock_diff2 = 0x0, + .invert_clkout2 = 0x0, +}; + +static const struct am33xx_emif_regs ddr2_regs = { + .emif_read_latency = 0x5, + .emif_tim1 = 0x0666B3D6, + .emif_tim2 = 0x143731DA, + .emif_tim3 = 0x00000347, + .sdram_config = 0x43805332, + .sdram_config2 = 0x43805332, + .sdram_ref_ctrl = 0x0000081a, +}; + +static const struct am33xx_ddr_data ddr2_data = { + .rd_slave_ratio0 = (DDR2_RD_DQS << 30) | (DDR2_RD_DQS << 20) | + (DDR2_RD_DQS << 10) | (DDR2_RD_DQS << 0), + .wr_dqs_slave_ratio0 = (DDR2_WR_DQS << 30) | (DDR2_WR_DQS << 20) | + (DDR2_WR_DQS << 10) | (DDR2_WR_DQS << 0), + .wrlvl_init_ratio0 = (DDR2_PHY_WRLVL << 30) | + (DDR2_PHY_WRLVL << 20) | + (DDR2_PHY_WRLVL << 10) | + (DDR2_PHY_WRLVL << 0), + .gatelvl_init_ratio0 = (DDR2_PHY_GATELVL << 30) | + (DDR2_PHY_GATELVL << 20) | + (DDR2_PHY_GATELVL << 10) | + (DDR2_PHY_GATELVL << 0), + .fifo_we_slave_ratio0 = (DDR2_PHY_FIFO_WE << 30) | + (DDR2_PHY_FIFO_WE << 20) | + (DDR2_PHY_FIFO_WE << 10) | + (DDR2_PHY_FIFO_WE << 0), + .wr_slave_ratio0 = (DDR2_PHY_WR_DATA << 30) | + (DDR2_PHY_WR_DATA << 20) | + (DDR2_PHY_WR_DATA << 10) | + (DDR2_PHY_WR_DATA << 0), + .use_rank0_delay = 0x01, + .dll_lock_diff0 = 0x0, +}; + +static const struct am33xx_ddr_data ddr3_data = { + .rd_slave_ratio0 = 0x38, + .wr_dqs_slave_ratio0 = 0x44, + .fifo_we_slave_ratio0 = 0x94, + .wr_slave_ratio0 = 0x7D, + .use_rank0_delay = 0x01, + .dll_lock_diff0 = 0x0, +}; + +static const struct am33xx_cmd_control ddr3_cmd_ctrl = { + .slave_ratio0 = 0x80, + .dll_lock_diff0 = 0x1, + .invert_clkout0 = 0x0, + .slave_ratio1 = 0x80, + .dll_lock_diff1 = 0x1, + .invert_clkout1 = 0x0, + .slave_ratio2 = 0x80, + .dll_lock_diff2 = 0x1, + .invert_clkout2 = 0x0, +}; + +static const struct am33xx_emif_regs ddr3_regs = { + .emif_read_latency = 0x100007, + .emif_tim1 = 0x0AAAD4DB, + .emif_tim2 = 0x266B7FDA, + .emif_tim3 = 0x501F867F, + .zq_config = 0x50074BE4, + .sdram_config = 0x61C05332, + .sdram_config2 = 0x0, + .sdram_ref_ctrl = 0xC30, +}; /** * @brief The basic entry point for board initialization. @@ -229,8 +113,6 @@ void beaglebone_sram_init(void) */ static int beaglebone_board_init(void) { - int in_sdram = running_in_sdram(); - /* WDT1 is already running when the bootloader gets control * Disable it to avoid "random" resets */ @@ -239,23 +121,42 @@ static int beaglebone_board_init(void) __raw_writel(WDT_DISABLE_CODE2, AM33XX_WDT_REG(WSPR)); while(__raw_readl(AM33XX_WDT_REG(WWPS)) != 0x0); - /* Dont reconfigure SDRAM while running in SDRAM! */ - if (!in_sdram) - beaglebone_sram_init(); + if (running_in_sdram()) + return 0; + + /* Setup the PLLs and the clocks for the peripherals */ + if (is_beaglebone_black()) { + pll_init(MPUPLL_M_500, 24, DDRPLL_M_400); + am335x_sdram_init(0x18B, &ddr3_cmd_ctrl, &ddr3_regs, + &ddr3_data); + } else { + pll_init(MPUPLL_M_500, 24, DDRPLL_M_266); + am335x_sdram_init(0x18B, &ddr2_cmd_ctrl, &ddr2_regs, + &ddr2_data); + } - /* Enable pin mux */ + am33xx_uart0_soft_reset(); am33xx_enable_uart0_pin_mux(); + omap_uart_lowlevel_init(); + putc_ll('>'); return 0; } void __bare_init __naked barebox_arm_reset_vector(uint32_t *data) { - omap_save_bootinfo(); + unsigned sdram; + + am33xx_save_bootinfo(data); arm_cpu_lowlevel_init(); beaglebone_board_init(); - barebox_arm_entry(0x80000000, SZ_256M, 0); + if (is_beaglebone_black()) + sdram = SZ_512M; + else + sdram = SZ_256M; + + barebox_arm_entry(0x80000000, sdram, 0); } |