diff options
author | Tom Rini <trini@konsulko.com> | 2019-02-15 21:21:28 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2019-02-15 21:21:28 -0500 |
commit | d391c13c99a2b48c98cef6df4479247cd4e62f9d (patch) | |
tree | 6e5c9790db8a4743cc74f1de52c549bc0dcc006b /board/xilinx/zynq/board.c | |
parent | e35171e94efdd0fa6c63083a682d452a2403bea1 (diff) | |
parent | 91d7e0c47f51e73cd8357f023ffc7c217a3c7291 (diff) |
Merge tag 'xilinx-for-v2019.04-rc2' of git://git.denx.de/u-boot-microblaze
Xilinx changes for v2019.04-rc2
xilinx:
- Start to use distro boot commands first
- Setup fdtfile on ZynqMP
- Move mac addr eeprom read to common location
- Convert to OF_SEPARATE
- Switch all board to DM_I2C
- Some DT syncs
i2c:
- Remove !DM_I2C zynq driver
versal:
- Enable some more features
- Add mini configurations
Diffstat (limited to 'board/xilinx/zynq/board.c')
-rw-r--r-- | board/xilinx/zynq/board.c | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/board/xilinx/zynq/board.c b/board/xilinx/zynq/board.c index 614d93c082..b4b84df576 100644 --- a/board/xilinx/zynq/board.c +++ b/board/xilinx/zynq/board.c @@ -8,6 +8,7 @@ #include <dm/uclass.h> #include <fdtdec.h> #include <fpga.h> +#include <malloc.h> #include <mmc.h> #include <watchdog.h> #include <wdt.h> @@ -53,39 +54,54 @@ int board_init(void) int board_late_init(void) { + int env_targets_len = 0; + const char *mode; + char *new_targets; + char *env_targets; + switch ((zynq_slcr_get_boot_mode()) & ZYNQ_BM_MASK) { case ZYNQ_BM_QSPI: + mode = "qspi"; env_set("modeboot", "qspiboot"); break; case ZYNQ_BM_NAND: + mode = "nand"; env_set("modeboot", "nandboot"); break; case ZYNQ_BM_NOR: + mode = "nor"; env_set("modeboot", "norboot"); break; case ZYNQ_BM_SD: + mode = "mmc"; env_set("modeboot", "sdboot"); break; case ZYNQ_BM_JTAG: + mode = "pxe dhcp"; env_set("modeboot", "jtagboot"); break; default: + mode = ""; env_set("modeboot", ""); break; } - return 0; -} + /* + * One terminating char + one byte for space between mode + * and default boot_targets + */ + env_targets = env_get("boot_targets"); + if (env_targets) + env_targets_len = strlen(env_targets); -int zynq_board_read_rom_ethaddr(unsigned char *ethaddr) -{ -#if defined(CONFIG_ZYNQ_GEM_EEPROM_ADDR) && \ - defined(CONFIG_ZYNQ_GEM_I2C_MAC_OFFSET) - if (eeprom_read(CONFIG_ZYNQ_GEM_EEPROM_ADDR, - CONFIG_ZYNQ_GEM_I2C_MAC_OFFSET, - ethaddr, 6)) - printf("I2C EEPROM MAC address read failed\n"); -#endif + new_targets = calloc(1, strlen(mode) + env_targets_len + 2); + if (!new_targets) + return -ENOMEM; + + sprintf(new_targets, "%s %s", mode, + env_targets ? env_targets : ""); + + env_set("boot_targets", new_targets); return 0; } |