• Florian Fainelli's avatar
    net: dsa: bcm_sf2: Do not register slave MDIO bus with OF · 536fab5b
    Florian Fainelli authored
    We were registering our slave MDIO bus with OF and doing so with
    assigning the newly created slave_mii_bus of_node to the master MDIO bus
    controller node. This is a bad thing to do for a number of reasons:
    
    - we are completely lying about the slave MII bus is arranged and yet we
      still want to control which MDIO devices it probes. It was attempted
      before to play tricks with the bus_mask to perform that:
      https://www.spinics.net/lists/netdev/msg429420.html but the approach
      was rightfully rejected
    
    - the device_node reference counting is messed up and we are effectively
      doing a double probe on the devices we already probed using the
      master, this messes up all resources reference counts (such as clocks)
    
    The proper fix for this as indicated by David in his reply to the
    thread above is to use a platform data style registration so as to
    control exactly which devices we probe:
    https://www.spinics.net/lists/netdev/msg430083.html
    
    By using mdiobus_register(), our slave_mii_bus->phy_mask value is used
    as intended, and all the PHY addresses that must be redirected towards
    our slave MDIO bus is happening while other addresses get redirected
    towards the master MDIO bus.
    
    Fixes: 461cd1b0 ("net: dsa: bcm_sf2: Register our slave MDIO bus")
    Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: default avatarVivien Didelot <vivien.didelot@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    536fab5b
bcm_sf2.c 34 KB