From 1f6e33606ff7b6438f629853800cb40f63fbdfcd Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Sat, 9 May 2015 12:01:21 +0200 Subject: 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. --- board/toradex/common/common.c | 32 ++++++++++++++++++++++++++++++-- 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 #include +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); -- cgit v1.2.3