Message ID | 1484955062-26718-6-git-send-email-andrew@lunn.ch |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On 01/20/2017 03:30 PM, Andrew Lunn wrote: > The internal PHYs of the mv88e6390 do not have a model ID. Trap any > calls to the ID register, and if it is zero, return the ID for the > mv88e6390. The Marvell PHY driver can then bind to this ID. > > Signed-off-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Nice and clean!
Hi Andrew, Andrew Lunn <andrew@lunn.ch> writes: > The internal PHYs of the mv88e6390 do not have a model ID. Trap any > calls to the ID register, and if it is zero, return the ID for the > mv88e6390. The Marvell PHY driver can then bind to this ID. This, in addition to the temperature code not working (despite what the datasheet says) makes me wonder if this is intentional from Marvell. Do we have a revision number for the 88E6390X's on the ZII Dev Rev C board? It would be interesting to ask Gregory maybe about that. This looks not "production-ready". Other than that, I have no objection on the patch itself if that is indeed expected from them... Thanks, Vivien
Hi Vivien, On sam., janv. 21 2017, Vivien Didelot <vivien.didelot@savoirfairelinux.com> wrote: > Hi Andrew, > > Andrew Lunn <andrew@lunn.ch> writes: > >> The internal PHYs of the mv88e6390 do not have a model ID. Trap any >> calls to the ID register, and if it is zero, return the ID for the >> mv88e6390. The Marvell PHY driver can then bind to this ID. > > This, in addition to the temperature code not working (despite what the > datasheet says) makes me wonder if this is intentional from Marvell. Do > we have a revision number for the 88E6390X's on the ZII Dev Rev C board? > > It would be interesting to ask Gregory maybe about that. This looks not > "production-ready". What I can say is that with the 88E6341, which seems to have the same issue (ie incomplete PHY ID), reading the temperature worked. Gregory > > Other than that, I have no objection on the patch itself if that is > indeed expected from them... > > Thanks, > > Vivien
diff --git a/drivers/net/dsa/mv88e6xxx/global2.c b/drivers/net/dsa/mv88e6xxx/global2.c index 5c9ccb6775ae..e2b00d1b0c28 100644 --- a/drivers/net/dsa/mv88e6xxx/global2.c +++ b/drivers/net/dsa/mv88e6xxx/global2.c @@ -518,7 +518,21 @@ int mv88e6xxx_g2_smi_phy_read(struct mv88e6xxx_chip *chip, int addr, int reg, if (err) return err; - return mv88e6xxx_g2_read(chip, GLOBAL2_SMI_PHY_DATA, val); + err = mv88e6xxx_g2_read(chip, GLOBAL2_SMI_PHY_DATA, val); + if (err) + return err; + + if (reg == MII_PHYSID2) { + /* The mv88e6390 internal PHYS don't have a model number. + * Use the switch family model number instead. + */ + if (!(*val & 0x1ff)) { + if (chip->info->family == MV88E6XXX_FAMILY_6390) + *val |= PORT_SWITCH_ID_PROD_NUM_6390; + } + } + + return 0; } int mv88e6xxx_g2_smi_phy_write(struct mv88e6xxx_chip *chip, int addr, int reg,
The internal PHYs of the mv88e6390 do not have a model ID. Trap any calls to the ID register, and if it is zero, return the ID for the mv88e6390. The Marvell PHY driver can then bind to this ID. Signed-off-by: Andrew Lunn <andrew@lunn.ch> --- drivers/net/dsa/mv88e6xxx/global2.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)