On Wed, Aug 31, 2011 at 3:01 PM, David Daney <david.daney@xxxxxxxxxx> wrote: > This patch adds a somewhat generic framework for MDIO bus > multiplexers. It is modeled on the I2C multiplexer. > > The multiplexer is needed if there are multiple PHYs with the same > address connected to the same MDIO bus adepter, or if there is > insufficient electrical drive capability for all the connected PHY > devices. > > Conceptually it could look something like this: > > ------------------ > | Control Signal | > --------+--------- > | > --------------- --------+------ > | MDIO MASTER |---| Multiplexer | > --------------- --+-------+---- > | | > C C > h h > i i > l l > d d > | | > --------- A B --------- > | | | | | | > | PHY@1 +-------+ +---+ PHY@1 | > | | | | | | > --------- | | --------- > --------- | | --------- > | | | | | | > | PHY@2 +-------+ +---+ PHY@2 | > | | | | > --------- --------- > > This framework configures the bus topology from device tree data. The > mechanics of switching the multiplexer is left to device specific > drivers. > > The follow-on patch contains a multiplexer driven by GPIO lines. It's amazing how various companies' board designers have come up with the same brain-dead PHY topologies. We (Freescale) have some similar code in our tree, but it's not this generically applicable. > > Signed-off-by: David Daney <david.daney@xxxxxxxxxx> > Cc: Grant Likely <grant.likely@xxxxxxxxxxxx> > Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Looks good to me. Acked-by: Andy Fleming <afleming@xxxxxxxxxxxxx>