From: Arnd Bergmann The newly added netc dsa support has incorrect Kconfig dependencies, leading to Kconfig and link failures: WARNING: unmet direct dependencies detected for FSL_ENETC_MDIO Depends on [n]: NETDEVICES [=y] && ETHERNET [=n] && NET_VENDOR_FREESCALE [=n] && PCI [=y] && PHYLIB [=y] Selected by [y]: - NET_DSA_NETC_SWITCH [=y] && NETDEVICES [=y] && (ARM64 || COMPILE_TEST [=y]) && NET_DSA [=y] && PCI [=y] WARNING: unmet direct dependencies detected for NXP_NTMP Depends on [n]: NETDEVICES [=y] && ETHERNET [=n] && NET_VENDOR_FREESCALE [=n] Selected by [m]: - NET_DSA_NETC_SWITCH [=m] && NETDEVICES [=y] && (ARM64 || COMPILE_TEST [=y]) && NET_DSA [=m] && PCI [=y] ERROR: modpost: "enetc_mdio_read_c22" [drivers/net/dsa/netc/nxp-netc-switch.ko] undefined! ERROR: modpost: "ntmp_fdbt_delete_entry" [drivers/net/dsa/netc/nxp-netc-switch.ko] undefined! ERROR: modpost: "enetc_mdio_read_c45" [drivers/net/dsa/netc/nxp-netc-switch.ko] undefined! Add the required 'NET_VENDOR_FREESCALE' dependency to make it possible to select both the PHY and NTMP library modules. Originally this was meant to be done through an 'IS_REACHABLE' check in the header file, but that did not work because the drivers/net/ethernet/freescale directory is not even entered in this case. IS_REACHABLE() is generally counterproductive because even when it works as intended, it turns a helpful link-time error into a silent runtime failure that is harder to debug. In this case, it clearly did not even do anything. Fixes: 187fbae024c8 ("net: dsa: netc: introduce NXP NETC switch driver for i.MX94") Signed-off-by: Arnd Bergmann --- drivers/net/dsa/netc/Kconfig | 1 + include/linux/fsl/enetc_mdio.h | 22 ---------------------- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/drivers/net/dsa/netc/Kconfig b/drivers/net/dsa/netc/Kconfig index d2f78d74ac23..eaad3cb5babe 100644 --- a/drivers/net/dsa/netc/Kconfig +++ b/drivers/net/dsa/netc/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config NET_DSA_NETC_SWITCH tristate "NXP NETC Ethernet switch support" + depends on NET_VENDOR_FREESCALE depends on ARM64 || COMPILE_TEST depends on NET_DSA && PCI select NET_DSA_TAG_NETC diff --git a/include/linux/fsl/enetc_mdio.h b/include/linux/fsl/enetc_mdio.h index 623ccfcbf39c..7cd5be694cc4 100644 --- a/include/linux/fsl/enetc_mdio.h +++ b/include/linux/fsl/enetc_mdio.h @@ -35,8 +35,6 @@ struct enetc_mdio_priv { int mdio_base; }; -#if IS_REACHABLE(CONFIG_FSL_ENETC_MDIO) - int enetc_mdio_read_c22(struct mii_bus *bus, int phy_id, int regnum); int enetc_mdio_write_c22(struct mii_bus *bus, int phy_id, int regnum, u16 value); @@ -45,24 +43,4 @@ int enetc_mdio_write_c45(struct mii_bus *bus, int phy_id, int devad, int regnum, u16 value); struct enetc_hw *enetc_hw_alloc(struct device *dev, void __iomem *port_regs); -#else - -static inline int enetc_mdio_read_c22(struct mii_bus *bus, int phy_id, - int regnum) -{ return -EINVAL; } -static inline int enetc_mdio_write_c22(struct mii_bus *bus, int phy_id, - int regnum, u16 value) -{ return -EINVAL; } -static inline int enetc_mdio_read_c45(struct mii_bus *bus, int phy_id, - int devad, int regnum) -{ return -EINVAL; } -static inline int enetc_mdio_write_c45(struct mii_bus *bus, int phy_id, - int devad, int regnum, u16 value) -{ return -EINVAL; } -static inline struct enetc_hw *enetc_hw_alloc(struct device *dev, - void __iomem *port_regs) -{ return ERR_PTR(-EINVAL); } - -#endif - #endif -- 2.39.5