Current AM57xx evm supports both BeagleBoard-X15 (http://beagleboard.org/x15) and AM57xx EVM (http://www.ti.com/tool/tmdxevm5728).
The AM572x EValuation Module(EVM) provides an affordable platform to quickly start evaluation of Sitara. ARM Cortex-A15 AM57x Processors (AM5728, AM5726, AM5718, AM5716) and accelerate development for HMI, machine vision, networking, medical imaging and many other industrial applications. This EVM is based on the same BeagleBoard-X15 Chassis and adds mPCIe, mSATA, LCD, touchscreen, Camera, push button and TI's wlink8 offering. Since the EEPROM contents are compatible between the BeagleBoard-X15 and the AM57xx-evm, we add support for the detection logic to enable support for various user programmable scripting capability. NOTE: U-boot configuration is currently a superset of AM57xx evm and BeagleBoard-X15 and no additional configuration tweaking is needed. This change also sets up the stage for future support of TI AM57xx EVMs to the same base bootloader build. Signed-off-by: Steve Kipisz <s-kipi...@ti.com> --- v2 Based on: master a6104737 ARM: at91: sama5: change the environment address to 0x6000 Build testing: MAKEALL -s omap4 -s omap5 (no warnings/build errors) Boot Testing: am57xx_evm_nodt_config: http://pastebin.ubuntu.com/13039296/ beagle_x15_config: http://pastebin.ubuntu.com/13039331/ Changes in v2 (since v1): - move the board detection code into the new routine do_board_detect - eliminate board.h and move the ix_xxx into board.c - redo commit message to be more clear v1: http://marc.info/?t=144608007900002&r=1&w=2 http://marc.info/?t=144608007900004&r=1&w=2 (mailing list squashed original submission) board/ti/am57xx/board.c | 53 +++++++++++++++++++++++++++++++++++++++ include/configs/am57xx_evm.h | 4 +++ include/configs/ti_omap5_common.h | 2 ++ 3 files changed, 59 insertions(+) diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c index 042f9ab1965a..41dd8333b1eb 100644 --- a/board/ti/am57xx/board.c +++ b/board/ti/am57xx/board.c @@ -32,6 +32,9 @@ #include "mux_data.h" +#define is_x15() board_am_is("BBRDX15_") +#define is_am572x_evm() board_am_is("AM572PM_") + #ifdef CONFIG_DRIVER_TI_CPSW #include <cpsw.h> #endif @@ -246,6 +249,54 @@ struct vcores_data beagle_x15_volts = { .iva.pmic = &tps659038, }; +#ifdef CONFIG_SPL_BUILD +/* No env to setup for SPL */ +static inline void setup_board_eeprom_env(void) { } + +/* Override function to read eeprom information */ +void do_board_detect(void) +{ + struct ti_am_eeprom *ep; + int rc; + + rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS, + CONFIG_EEPROM_CHIP_ADDRESS, &ep); + if (rc) + printf("ti_i2c_eeprom_init failed %d\n", rc); +} + +#else /* CONFIG_SPL_BUILD */ + +static void setup_board_eeprom_env(void) +{ + char *name = NULL; + int rc; + struct ti_am_eeprom_printable p; + + rc = ti_i2c_eeprom_am_get_print(CONFIG_EEPROM_BUS_ADDRESS, + CONFIG_EEPROM_CHIP_ADDRESS, &p); + if (rc) { + printf("Invalid EEPROM data(@0x%p). Default to X15\n", + TI_AM_EEPROM_DATA); + goto invalid_eeprom; + } + + if (is_x15()) + name = "beagle_x15"; + else if (is_am572x_evm()) + name = "am57xx_evm"; + else + printf("Unidentified board claims %s in eeprom header\n", + p.name); + +invalid_eeprom: + set_board_info_env(name, "beagle_x15", p.version, p.serial); +} + +/* Eeprom is alread read by SPL.. nothing more to do here.. */ + +#endif /* CONFIG_SPL_BUILD */ + void hw_data_init(void) { *prcm = &dra7xx_prcm; @@ -265,6 +316,8 @@ int board_init(void) int board_late_init(void) { init_sata(0); + setup_board_eeprom_env(); + /* * DEV_CTRL.DEV_ON = 1 please - else palmas switches off in 8 seconds * This is the POWERHOLD-in-Low behavior. diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h index 6308cab8e680..1fffdb18fbcd 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -88,4 +88,8 @@ #define CONFIG_SYS_SCSI_MAX_DEVICE (CONFIG_SYS_SCSI_MAX_SCSI_ID * \ CONFIG_SYS_SCSI_MAX_LUN) +/* EEPROM */ +#define CONFIG_EEPROM_CHIP_ADDRESS 0x50 +#define CONFIG_EEPROM_BUS_ADDRESS 0 + #endif /* __CONFIG_AM57XX_EVM_H */ diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h index 5acbc92c3f60..ae6e2a556a93 100644 --- a/include/configs/ti_omap5_common.h +++ b/include/configs/ti_omap5_common.h @@ -120,6 +120,8 @@ "setenv fdtfile dra72-evm.dtb; fi;" \ "if test $board_name = beagle_x15; then " \ "setenv fdtfile am57xx-beagle-x15.dtb; fi;" \ + "if test $board_name = am57xx_evm; then " \ + "setenv fdtfile am57xx-evm.dtb; fi;" \ "if test $fdtfile = undefined; then " \ "echo WARNING: Could not determine device tree to use; fi; \0" \ "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};\0" \ -- 1.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot