Hi Andrew, On Friday 07 April 2017 16:29:43 Andrew Lunn wrote: > > +static int lan9303_virt_phy_reg_read(struct lan9303 *chip, int regnum) > > +{ > > + int ret; > > + u32 val; > > + > > + if (regnum > MII_EXPANSION) { > > + if (regnum == MII_LAN911X_SPECIAL_CONTROL_STATUS) > > + regnum = 7; /* map to LAN9303_VIRT_SPECIAL_CTRL */ > > + else > > + return -EINVAL; > > + } > > What PHY ID does the virtual PHY use? The same as the LAN911X? Or > something different.
Something different: 0x00000000 (instead of 0x0007c0d1 the real PHYs are using). > I'm just wondering if this should be in the PHY > driver. But that only works if you can differentiate the virtual PHY > from the real PHYs in the PHY driver. For the real PHYs the driver states: SMSC LAN911x Internal PHY dsa-0.0:01: attached PHY driver [SMSC LAN911x Internal PHY] (mii_bus:phy_addr=dsa-0.0:01, irq=-1) SMSC LAN911x Internal PHY dsa-0.0:02: attached PHY driver [SMSC LAN911x Internal PHY] (mii_bus:phy_addr=dsa-0.0:02, irq=-1) For the virtual PHY the driver states (MDIO emulation case): Generic PHY 63fec000.etherne:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=63fec000.etherne:00, irq=-1) And for the fixed-link case: Generic PHY fixed-0:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=fixed-0:00, irq=-1) Regards, Juergen -- Pengutronix e.K. | Juergen Borleis | Industrial Linux Solutions | http://www.pengutronix.de/ |