From df56ce3efbfb1bf2b2eaced96fa5581645b8604d Mon Sep 17 00:00:00 2001 From: Kumar Gala Date: Thu, 23 Apr 2020 13:22:38 -0500 Subject: [PATCH] drivers: ethernet: mcux: rework how unique mac is determined Instead of having a Kconfig property, if there is no local-mac-address property in the devicetree than we'll generate a unique MAC address based on unique ID registers on the SoC. We remove the local-mac-address properties in the SoC dtsi files to match the default behavior that existed before (ie, unique MAC address) Signed-off-by: Kumar Gala --- drivers/ethernet/Kconfig.mcux | 31 ------------------------------- drivers/ethernet/eth_mcux.c | 16 +++++++--------- dts/arm/nxp/nxp_k6x.dtsi | 1 - dts/arm/nxp/nxp_rt.dtsi | 1 - dts/arm/nxp/nxp_rt1060.dtsi | 1 - 5 files changed, 7 insertions(+), 43 deletions(-) diff --git a/drivers/ethernet/Kconfig.mcux b/drivers/ethernet/Kconfig.mcux index 3af27a2c14c..ab667ee7d3c 100644 --- a/drivers/ethernet/Kconfig.mcux +++ b/drivers/ethernet/Kconfig.mcux @@ -54,43 +54,12 @@ config ETH_MCUX_0 help Include port 0 driver -if ETH_MCUX_0 - -choice ETH_MCUX_0_MAC_SELECT - prompt "MAC address" - help - Choose how to configure MAC address. - -config ETH_MCUX_0_UNIQUE_MAC - bool "Stable MAC address" - help - Generate MAC address from MCU's unique identification register. -endchoice - -endif # ETH_MCUX_0 - config ETH_MCUX_1 bool "MCUX Ethernet port 1" depends on SOC_MIMXRT1062 || SOC_MIMXRT1064 help Include port 1 driver -if ETH_MCUX_1 - -choice ETH_MCUX_1_MAC_SELECT - prompt "MAC address" - help - Choose how to configure MAC address. - -config ETH_MCUX_1_UNIQUE_MAC - bool "Stable MAC address" - help - Generate MAC address from MCU's unique identification register. - -endchoice - -endif # ETH_MCUX_1 - config ETH_MCUX_HW_ACCELERATION bool "Enable hardware acceleration" help diff --git a/drivers/ethernet/eth_mcux.c b/drivers/ethernet/eth_mcux.c index f77d1a74c54..61042774dbc 100644 --- a/drivers/ethernet/eth_mcux.c +++ b/drivers/ethernet/eth_mcux.c @@ -887,8 +887,8 @@ static void generate_random_mac(u8_t *mac_addr) } #endif -#if defined(CONFIG_ETH_MCUX_0_UNIQUE_MAC) || \ - defined(CONFIG_ETH_MCUX_1_UNIQUE_MAC) +#if !DT_INST_NODE_HAS_PROP(0, local_mac_address) || \ + DT_HAS_NODE_STATUS_OKAY(DT_DRV_INST(1)) && !DT_INST_NODE_HAS_PROP(1, local_mac_address) static void generate_eth0_unique_mac(u8_t *mac_addr) { /* Trivially "hash" up to 128 bits of MCU unique identifier */ @@ -907,7 +907,7 @@ static void generate_eth0_unique_mac(u8_t *mac_addr) } #endif -#if defined(CONFIG_ETH_MCUX_1_UNIQUE_MAC) +#if DT_HAS_NODE_STATUS_OKAY(DT_DRV_INST(1)) && !DT_INST_NODE_HAS_PROP(1, local_mac_address) static void generate_eth1_unique_mac(u8_t *mac_addr) { generate_eth0_unique_mac(mac_addr); @@ -1204,15 +1204,14 @@ static struct eth_context eth_0_context = { .phy_addr = 0U, .phy_duplex = kPHY_FullDuplex, .phy_speed = kPHY_Speed100M, -#if defined(CONFIG_ETH_MCUX_0_UNIQUE_MAC) - .generate_mac = generate_eth0_unique_mac, -#endif #if DT_INST_PROP(0, zephyr_random_mac_address) .generate_mac = generate_random_mac, #endif #if NODE_HAS_VALID_MAC_ADDR(DT_DRV_INST(0)) .mac_addr = DT_INST_PROP(0, local_mac_address), .generate_mac = NULL, +#else + .generate_mac = generate_eth0_unique_mac, #endif }; @@ -1271,15 +1270,14 @@ static struct eth_context eth_1_context = { .phy_addr = 0U, .phy_duplex = kPHY_FullDuplex, .phy_speed = kPHY_Speed100M, -#if defined(CONFIG_ETH_MCUX_1_UNIQUE_MAC) - .generate_mac = generate_eth1_unique_mac, -#endif #if DT_INST_PROP(1, zephyr_random_mac_address) .generate_mac = generate_random_mac, #endif #if NODE_HAS_VALID_MAC_ADDR(DT_DRV_INST(1)) .mac_addr = DT_INST_PROP(1, local_mac_address), .generate_mac = NULL, +#else + .generate_mac = generate_eth1_unique_mac, #endif }; diff --git a/dts/arm/nxp/nxp_k6x.dtsi b/dts/arm/nxp/nxp_k6x.dtsi index cdef8452936..1fb6d975eec 100644 --- a/dts/arm/nxp/nxp_k6x.dtsi +++ b/dts/arm/nxp/nxp_k6x.dtsi @@ -473,7 +473,6 @@ interrupts = <83 0>, <84 0>, <85 0>; interrupt-names = "TX", "RX", "ERR_MISC"; status = "disabled"; - local-mac-address = [00 00 00 00 00 00]; label = "ETH_0"; clocks = <&sim KINETIS_SIM_CORESYS_CLK 0 0>; ptp { diff --git a/dts/arm/nxp/nxp_rt.dtsi b/dts/arm/nxp/nxp_rt.dtsi index 030b97eaeff..8424d6b0bfc 100644 --- a/dts/arm/nxp/nxp_rt.dtsi +++ b/dts/arm/nxp/nxp_rt.dtsi @@ -536,7 +536,6 @@ interrupts = <114 0>; interrupt-names = "COMMON"; status = "disabled"; - local-mac-address = [00 00 00 00 00 00]; label = "ETH_0"; ptp { compatible = "nxp,kinetis-ptp"; diff --git a/dts/arm/nxp/nxp_rt1060.dtsi b/dts/arm/nxp/nxp_rt1060.dtsi index c2bbc62e1f7..555c11527ae 100644 --- a/dts/arm/nxp/nxp_rt1060.dtsi +++ b/dts/arm/nxp/nxp_rt1060.dtsi @@ -30,7 +30,6 @@ interrupts = <152 0>; interrupt-names = "COMMON"; status = "disabled"; - local-mac-address = [00 00 00 00 00 00]; label = "ETH_1"; ptp { compatible = "nxp,kinetis-ptp";