Hello everyone, This is V4 of the series introducing the phy_port infrastructure. Previous version was incorrectly labeled V1, all previous versions can be found here : V3: https://lore.kernel.org/netdev/20250207223634.600218-1-maxime.chevallier@xxxxxxxxxxx/ RFC V2: https://lore.kernel.org/netdev/20250122174252.82730-1-maxime.chevallier@xxxxxxxxxxx/ RFC V1: https://lore.kernel.org/netdev/20241220201506.2791940-1-maxime.chevallier@xxxxxxxxxxx/ The goal of that work is to lay the ground for multi-port devices, either using multi-port PHY devices, or MII-side multiplexers. for now, that series only focuses on the PHY device aspect, and includes no uAPI and no muxing support yet. The key points from that series are : - The introduction of a dedicated object to represent a port - The introduciton of a new binding to represent these ports in devicetree, to accurately describe multi-port devices - The support of ports for PHY devices, including PHY-drivert SFP busses through a generic phylib set of upstream ops - The MAINTAINERS file was updated to account for the new files - Some documentation :) Changes in V4 : - Introduced a kernel doc - Reworked the mediums definitions in patch 2 - QCA807x now uses the generic SFP support - Fixed some implementation bugs to build the support list based on the interfaces supported on a port Maxime Chevallier (15): net: ethtool: Introduce ETHTOOL_LINK_MEDIUM_* values net: ethtool: Export the link_mode_params definitions net: phy: Introduce PHY ports representation net: phy: dp83822: Add support for phy_port representation net: phy: Create a phy_port for PHY-driven SFPs net: phy: Introduce generic SFP handling for PHY drivers net: phy: marvell-88x2222: Support SFP through phy_port interface net: phy: marvell: Support SFP through phy_port interface net: phy: marvell10g: Support SFP through phy_port net: phy: at803x: Support SFP through phy_port interface net: phy: qca807x: Support SFP through phy_port interface net: phy: Only rely on phy_port for PHY-driven SFP net: phy: dp83822: Add SFP support through the phy_port interface Documentation: networking: Document the phy_port infrastructure dt-bindings: net: Introduce the phy-port description .../devicetree/bindings/net/ethernet-phy.yaml | 18 + .../bindings/net/ethernet-port.yaml | 47 +++ Documentation/networking/index.rst | 1 + Documentation/networking/phy-port.rst | 111 +++++++ MAINTAINERS | 3 + drivers/net/phy/Makefile | 2 +- drivers/net/phy/dp83822.c | 71 ++-- drivers/net/phy/marvell-88x2222.c | 96 +++--- drivers/net/phy/marvell.c | 100 +++--- drivers/net/phy/marvell10g.c | 37 +-- drivers/net/phy/phy_device.c | 312 +++++++++++++++++- drivers/net/phy/phy_port.c | 176 ++++++++++ drivers/net/phy/phylink.c | 32 ++ drivers/net/phy/qcom/at803x.c | 64 +--- drivers/net/phy/qcom/qca807x.c | 75 ++--- include/linux/ethtool.h | 73 ++++ include/linux/phy.h | 38 ++- include/linux/phy_port.h | 92 ++++++ include/linux/phylink.h | 2 + net/ethtool/common.c | 250 ++++++++------ net/ethtool/common.h | 7 - 21 files changed, 1218 insertions(+), 389 deletions(-) create mode 100644 Documentation/devicetree/bindings/net/ethernet-port.yaml create mode 100644 Documentation/networking/phy-port.rst create mode 100644 drivers/net/phy/phy_port.c create mode 100644 include/linux/phy_port.h -- 2.48.1