diff options
author | Stefan Agner <stefan.agner@toradex.com> | 2015-05-09 12:01:21 +0200 |
---|---|---|
committer | Stefan Agner <stefan.agner@toradex.com> | 2015-05-09 12:01:21 +0200 |
commit | 1f6e33606ff7b6438f629853800cb40f63fbdfcd (patch) | |
tree | 88a2864d849ae62a02472cab47c07397896af076 | |
parent | 2da77958e96151295e72f8f85aee352d0b4010fe (diff) |
toradex: configblock: move environment config to common
Move setting of environment variables to common code. This prepares
for further enhancements which will enhance the device tree with
module specific information from the configblock.
-rw-r--r-- | board/toradex/common/common.c | 32 | ||||
-rw-r--r-- | board/toradex/common/configblock.c | 25 |
2 files changed, 30 insertions, 27 deletions
diff --git a/board/toradex/common/common.c b/board/toradex/common/common.c index 30c8ebf8bd..4cb3420240 100644 --- a/board/toradex/common/common.c +++ b/board/toradex/common/common.c @@ -8,6 +8,8 @@ #include <common.h> #include <g_dnl.h> +static char trdx_serial_str[9]; + __weak int checkboard_fallback(void) { return 0; @@ -77,17 +79,43 @@ u32 get_board_rev(void) int checkboard(void) { #ifdef CONFIG_TRDX_CFG_BLOCK + unsigned char ethaddr[6]; + if (read_trdx_cfg_block()) { printf("Missing Toradex config block\n"); checkboard_fallback(); return 0; } - printf("Model: Toradex %s V%d.%d%c\n", + /* board serial-number */ + sprintf(trdx_serial_str, "%08u", trdx_serial); + setenv("serial#", trdx_serial_str); + + /* + * Check if environment contains a valid MAC address, + * set the one from config block if not + */ + if (!eth_getenv_enetaddr("ethaddr", ethaddr)) + eth_setenv_enetaddr("ethaddr", (u8 *)&trdx_eth_addr); + +#ifdef CONFIG_TRDX_CFG_BLOCK_2ND_ETHADDR + if (!eth_getenv_enetaddr("eth1addr", ethaddr)) { + /* + * Secondary MAC address is allocated from block + * 0x100000 higher then the first MAC address + */ + memcpy(ethaddr, &trdx_eth_addr, 6); + ethaddr[3] += 0x10; + eth_setenv_enetaddr("eth1addr", ethaddr); + } +#endif + + printf("Model: Toradex %s V%d.%d%c, Serial# %08u\n", toradex_modules[trdx_hw_tag.prodid], trdx_hw_tag.ver_major, trdx_hw_tag.ver_minor, - (char)trdx_hw_tag.ver_assembly + 'A'); + (char)trdx_hw_tag.ver_assembly + 'A', + trdx_serial); #else checkboard_fallback(); #endif diff --git a/board/toradex/common/configblock.c b/board/toradex/common/configblock.c index 11e2ba2b55..f007073e2b 100644 --- a/board/toradex/common/configblock.c +++ b/board/toradex/common/configblock.c @@ -152,8 +152,6 @@ int read_trdx_cfg_block(void) struct toradex_tag *tag; size_t size = TRDX_CFG_BLOCK_MAX_SIZE; int offset; - unsigned char ethaddr[6]; - char serial[9]; /* Allocate RAM area for config block */ config_block = memalign(ARCH_DMA_MINALIGN, size); @@ -197,29 +195,6 @@ int read_trdx_cfg_block(void) /* NIC part of MAC address is serial number */ trdx_serial = ntohl(trdx_eth_addr.nic) >> 8; - - /* board serial-number */ - sprintf(serial, "%08u", trdx_serial); - setenv("serial#", serial); - - /* - * Check if environment contains a valid MAC address, - * set the one from config block if not - */ - if (!eth_getenv_enetaddr("ethaddr", ethaddr)) - eth_setenv_enetaddr("ethaddr", (u8 *)&trdx_eth_addr); - -#ifdef CONFIG_TRDX_CFG_BLOCK_2ND_ETHADDR - if (!eth_getenv_enetaddr("eth1addr", ethaddr)) { - /* - * Secondary MAC address is allocated from block - * 0x100000 higher then the first MAC address - */ - memcpy(ethaddr, &trdx_eth_addr, 6); - ethaddr[3] += 0x10; - eth_setenv_enetaddr("eth1addr", ethaddr); - } -#endif break; case TAG_HW: memcpy(&trdx_hw_tag, config_block + offset, 8); |