Commit 5638d9fa authored by Fin Maaß's avatar Fin Maaß Committed by Benjamin Cabé
Browse files

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: default avatarFin Maaß <f.maass@vogl-electronic.com>
parent faf1b10d
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -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)								\
+16 −12
Original line number Diff line number Diff line
@@ -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),			\
	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)                                              \