From: David Daney <david.daney@xxxxxxxxxx> This code has been working well for about six months on a couple of different configurations (boards), so I thought it would be a good time to send it out again, and I hope get it on the path towards merging. v3: Update binding to use "mdio-mux-gpio" compatible property. Cleanups suggested by Grant Likely. Now uses the driver probe deferral mechanism if GPIOs or parent bus not available. v2: Update bindings to use "reg" and "mdio-parent-bus" instead of "cell-index" and "parent-bus" v1: We have several different boards with a multiplexer in the MDIO bus. There is an MDIO bus controller connected to a switching device with several child MDIO busses. Everything is wired up using device tree bindings. 1/3 - New of_mdio_find_bus() function used to help configuring the driver topology. 2/3 - MDIO bus multiplexer framework. 3/3 - A driver for a GPIO controlled multiplexer. David Daney (3): netdev/of/phy: New function: of_mdio_find_bus(). netdev/of/phy: Add MDIO bus multiplexer support. netdev/of/phy: Add MDIO bus multiplexer driven by GPIO lines. .../devicetree/bindings/net/mdio-mux-gpio.txt | 127 +++++++++++++ Documentation/devicetree/bindings/net/mdio-mux.txt | 136 ++++++++++++++ drivers/net/phy/Kconfig | 18 ++ drivers/net/phy/Makefile | 2 + drivers/net/phy/mdio-mux-gpio.c | 142 +++++++++++++++ drivers/net/phy/mdio-mux.c | 192 ++++++++++++++++++++ drivers/net/phy/mdio_bus.c | 32 ++++ drivers/of/of_mdio.c | 2 + include/linux/mdio-mux.h | 21 ++ include/linux/of_mdio.h | 2 + 10 files changed, 674 insertions(+), 0 deletions(-) create mode 100644 Documentation/devicetree/bindings/net/mdio-mux-gpio.txt create mode 100644 Documentation/devicetree/bindings/net/mdio-mux.txt create mode 100644 drivers/net/phy/mdio-mux-gpio.c create mode 100644 drivers/net/phy/mdio-mux.c create mode 100644 include/linux/mdio-mux.h -- 1.7.2.3