drivers: ethernet: nxp: fix mac addr order
make sure, that zephyr,random-mac-address has a higher prio, than local-mac-address, as documented in ethernet-controller.yaml. Also make sure, that no vaild mac address doesn't lead to init fail, as it can still be set later via set_config. Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
This commit is contained in:
parent
faf1b10d5c
commit
5638d9fa47
@ -738,8 +738,6 @@ static int eth_nxp_enet_init(const struct device *dev)
|
||||
k_work_init(&data->rx_work, eth_nxp_enet_rx_thread);
|
||||
|
||||
switch (config->mac_addr_source) {
|
||||
case MAC_ADDR_SOURCE_LOCAL:
|
||||
break;
|
||||
case MAC_ADDR_SOURCE_RANDOM:
|
||||
gen_random_mac(data->mac_addr,
|
||||
FREESCALE_OUI_B0, FREESCALE_OUI_B1, FREESCALE_OUI_B2);
|
||||
@ -751,7 +749,7 @@ static int eth_nxp_enet_init(const struct device *dev)
|
||||
nxp_enet_fused_mac(data->mac_addr);
|
||||
break;
|
||||
default:
|
||||
return -ENOTSUP;
|
||||
break;
|
||||
}
|
||||
|
||||
err = clock_control_get_rate(config->clock_dev, config->clock_subsys,
|
||||
@ -966,12 +964,12 @@ BUILD_ASSERT(NXP_ENET_PHY_MODE(DT_DRV_INST(n)) != NXP_ENET_RGMII_MODE || \
|
||||
" and CONFIG_ETH_NXP_ENET_1G enabled");
|
||||
|
||||
#define NXP_ENET_MAC_ADDR_SOURCE(n) \
|
||||
COND_CODE_1(DT_NODE_HAS_PROP(DT_DRV_INST(n), local_mac_address), \
|
||||
(MAC_ADDR_SOURCE_LOCAL), \
|
||||
(COND_CODE_1(DT_INST_PROP(n, zephyr_random_mac_address), \
|
||||
COND_CODE_1(DT_INST_PROP(n, zephyr_random_mac_address), \
|
||||
(MAC_ADDR_SOURCE_RANDOM), \
|
||||
(COND_CODE_1(DT_INST_PROP(n, nxp_unique_mac), (MAC_ADDR_SOURCE_UNIQUE), \
|
||||
(COND_CODE_1(DT_INST_PROP(n, nxp_fused_mac), (MAC_ADDR_SOURCE_FUSED), \
|
||||
(COND_CODE_1(DT_NODE_HAS_PROP(DT_DRV_INST(n), local_mac_address), \
|
||||
(MAC_ADDR_SOURCE_LOCAL), \
|
||||
(MAC_ADDR_SOURCE_INVALID))))))))
|
||||
|
||||
#define NXP_ENET_MAC_INIT(n) \
|
||||
|
||||
@ -641,13 +641,17 @@ static int eth_nxp_enet_qos_mac_init(const struct device *dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (config->mac_addr_source == NXP_ENET_QOS_MAC_ADDR_SOURCE_LOCAL) {
|
||||
/* Use the mac address provided in the devicetree */
|
||||
} else if (config->mac_addr_source == NXP_ENET_QOS_MAC_ADDR_SOURCE_UNIQUE) {
|
||||
switch (config->mac_addr_source) {
|
||||
case NXP_ENET_QOS_MAC_ADDR_SOURCE_RANDOM:
|
||||
gen_random_mac(data->mac_addr.addr, NXP_OUI_BYTE_0, NXP_OUI_BYTE_1, NXP_OUI_BYTE_2);
|
||||
break;
|
||||
|
||||
case NXP_ENET_QOS_MAC_ADDR_SOURCE_UNIQUE:
|
||||
nxp_enet_unique_mac(data->mac_addr.addr);
|
||||
} else {
|
||||
gen_random_mac(data->mac_addr.addr,
|
||||
NXP_OUI_BYTE_0, NXP_OUI_BYTE_1, NXP_OUI_BYTE_2);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/* This driver cannot work without interrupts. */
|
||||
@ -776,12 +780,12 @@ static const struct ethernet_api api_funcs = {
|
||||
"MAC address not specified on ENET QOS DT node");
|
||||
|
||||
#define NXP_ENET_QOS_MAC_ADDR_SOURCE(n) \
|
||||
COND_CODE_1(DT_NODE_HAS_PROP(DT_DRV_INST(n), local_mac_address), \
|
||||
(NXP_ENET_QOS_MAC_ADDR_SOURCE_LOCAL), \
|
||||
(COND_CODE_1(DT_INST_PROP(n, zephyr_random_mac_address), \
|
||||
(NXP_ENET_QOS_MAC_ADDR_SOURCE_RANDOM), \
|
||||
(COND_CODE_1(DT_INST_PROP(n, nxp_unique_mac), \
|
||||
(NXP_ENET_QOS_MAC_ADDR_SOURCE_UNIQUE), \
|
||||
COND_CODE_1(DT_INST_PROP(n, zephyr_random_mac_address), \
|
||||
(NXP_ENET_QOS_MAC_ADDR_SOURCE_RANDOM), \
|
||||
(COND_CODE_1(DT_INST_PROP(n, nxp_unique_mac), \
|
||||
(NXP_ENET_QOS_MAC_ADDR_SOURCE_UNIQUE), \
|
||||
(COND_CODE_1(DT_NODE_HAS_PROP(DT_DRV_INST(n), local_mac_address), \
|
||||
(NXP_ENET_QOS_MAC_ADDR_SOURCE_LOCAL), \
|
||||
(NXP_ENET_QOS_MAC_ADDR_SOURCE_INVALID))))))
|
||||
|
||||
#define NXP_ENET_QOS_CONNECT_IRQS(node_id, prop, idx) \
|
||||
|
||||
Loading…
Reference in New Issue
Block a user