> Since several chips have this issue, we can introduce a u16 physid2_mask > member in the mv88e6xxx_info structure and move the check in > mv88e6xxx_phy_read() so that the logic of device (as in Global2) helpers > are not affected by such (necessary) hack. Something like: > > static int mv88e6xxx_phy_read(struct mv88e6xxx_chip *chip, int phy, > int reg, u16 *val) > { > ... > > err = chip->info->ops->phy_read(chip, bus, addr, reg, val); > if (err) > return err; > > if (reg == MII_PHYSID2 && chip->info->physid2_mask) { > /* Some internal PHYs don't have a model number, > * so return the switch family model number directly. > */ > if (!(*val & chip->info->physid2_mask))
Hi Vivien I don't see the need to have per switch masks. Lets just hard code it to ignore the lower 4 bits. > *val |= chip->info->prod_num; and this is not good. I deliberately picked the family num, not the product num. Otherwise for the 6390 family, we have 6 different PHY IDs. And two more for Gregorys two switches. Andrew