HW23: Set mac address based on board descriptor

BugzID: 70346
This commit is contained in:
Alexandre Bard 2021-02-17 19:42:58 +01:00
parent 7fd795ed3f
commit 2347f046e8
1 changed files with 56 additions and 0 deletions

View File

@ -31,9 +31,17 @@
#include "../../freescale/common/tcpc.h" #include "../../freescale/common/tcpc.h"
#include <cdns3-uboot.h> #include <cdns3-uboot.h>
#include <asm/arch/lpcg.h> #include <asm/arch/lpcg.h>
#include "../nm-common/board_descriptor.h"
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
#define BD_EEPROM_ADDR (0x50)
#define BD_ADDRESS (0x0000)
#define PD_ADDRESS (0x0200)
static BD_Context bdctx[3];
#define ESDHC_PAD_CTRL ((SC_PAD_CONFIG_NORMAL << PADRING_CONFIG_SHIFT) | (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) \ #define ESDHC_PAD_CTRL ((SC_PAD_CONFIG_NORMAL << PADRING_CONFIG_SHIFT) | (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) \
| (SC_PAD_28FDSOI_DSE_DV_HIGH << PADRING_DSE_SHIFT) | (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT)) | (SC_PAD_28FDSOI_DSE_DV_HIGH << PADRING_DSE_SHIFT) | (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT))
@ -195,6 +203,27 @@ int board_phy_config(struct phy_device *phydev)
} }
#endif #endif
static void set_mac_address(int index, uchar mac[6])
{
/* Then take mac from bd */
if (is_valid_ethaddr(mac)) {
eth_env_set_enetaddr_by_index("eth", index, mac);
}
else {
printf("Trying to set invalid MAC address");
}
}
int board_eth_init(bd_t *bis)
{
uint8_t mac_addr0[6] = {02,00,00,00,00,01};
bd_get_mac(0, mac_addr0, sizeof(mac_addr0));
set_mac_address(0, mac_addr0);
return 0;
}
int checkboard(void) int checkboard(void)
{ {
puts("Board: iMX8QXP MEK\n"); puts("Board: iMX8QXP MEK\n");
@ -494,6 +523,27 @@ int board_mmc_get_env_dev(int devno)
return devno; return devno;
} }
static int _bd_init(void)
{
if (bd_get_context(&bdctx[0], BD_EEPROM_ADDR, BD_ADDRESS) != 0) {
printf("%s() no valid bd found\n", __func__);
return -1;
}
if (bd_get_context(&bdctx[1], BD_EEPROM_ADDR, PD_ADDRESS) != 0) {
printf("%s() no valid pd found\n", __func__);
return -1;
}
bd_register_context_list(bdctx, ARRAY_SIZE(bdctx));
return 0;
}
static inline int read_eeprom(void)
{
return _bd_init();
}
int board_late_init(void) int board_late_init(void)
{ {
#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
@ -510,5 +560,11 @@ int board_late_init(void)
board_late_mmc_env_init(); board_late_mmc_env_init();
#endif #endif
if (read_eeprom() < 0) {
puts("Could no get board ID.\n");
}
board_eth_init(NULL);
return 0; return 0;
} }