Hi all, This patch series adds PHYLINK support to DSA which is necessary to support more complex PHY and pluggable modules setups.
Patch series can be found here: https://github.com/ffainelli/linux/commits/dsa-phylink This was tested on: - dsa-loop - bcm_sf2 - mv88e6xxx - b53 With a variety of test cases: - internal & external MDIO PHYs - MoCA with link notification through interrupt/MMIO register - built-in PHYs - ifconfig up/down for several cycles works - bind/unbind of the drivers This is technically v2 of what was posted back in March 2018, changes from last time: - fixed probe/remove of drivers - fixed missing gpiod_put() for link GPIOs - fixed polling of link GPIOs (Russell I would need your SoB on the patch you provided offline initially, added some modifications to it) - tested across a wider set of platforms And everything should still work as expected. Please be aware of the following: - switch drivers (like bcm_sf2) which may have user-facing network ports using fixed links would need to implement phylink_mac_ops to remain functional. PHYLINK does not create a phy_device for fixed links, therefore our call to adjust_link() from phylink_mac_link_{up,down} would not be calling into the driver. This *should not* affect CPU/DSA ports which are configured through adjust_link() but have no network devices - support for SFP/SFF is now possible, but switch drivers will still need some modifications to properly support those, including, but not limited to using the correct binding information. This will be submitted on top of this series Please do test on your respective platforms/switches and let me know if you find any issues, hopefully everything still works like before. Thank you! Florian Fainelli (7): net: phy: phylink: Use gpiod_get_value_cansleep() net: phy: phylink: Release link GPIO net: dsa: Add PHYLINK switch operations net: dsa: bcm_sf2: Implement phylink_mac_ops net: dsa: Eliminate dsa_slave_get_link() net: dsa: Plug in PHYLINK support net: dsa: bcm_sf2: Get rid of PHYLIB functions Russell King (2): net: phy: phylink: Poll link GPIOs net: dsa: mv88e6xxx: add PHYLINK support drivers/net/dsa/bcm_sf2.c | 191 ++++++++++++-------- drivers/net/dsa/mv88e6xxx/chip.c | 81 +++++++++ drivers/net/dsa/mv88e6xxx/port.c | 39 ++++ drivers/net/dsa/mv88e6xxx/port.h | 3 + drivers/net/phy/phylink.c | 20 ++- include/net/dsa.h | 25 +++ net/dsa/Kconfig | 2 +- net/dsa/dsa_priv.h | 9 - net/dsa/slave.c | 293 ++++++++++++++++++------------- 9 files changed, 456 insertions(+), 207 deletions(-) -- 2.17.0