Commit a4926c29 authored by Marek Behún's avatar Marek Behún Committed by Paolo Abeni

net: dsa: mv88e6xxx: fix mdio bus' phy_mask member

Commit 2c7e46ed ("net: dsa: mv88e6xxx: mask apparently non-existing
phys during probing") added non-trivial bus->phy_mask in
mv88e6xxx_mdio_register() in order to avoid excessive mdio bus
transactions during probing.

But the mask is incorrect for switches with non-zero phy_base_addr (such
as 88E6341).

Fix this.

Fixes: 2c7e46ed ("net: dsa: mv88e6xxx: mask apparently non-existing phys during probing")
Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
Tested-by: default avatarKlaus Kudielka <klaus.kudielka@gmail.com>
Reviewed-by: default avatarVladimir Oltean <olteanv@gmail.com>
Link: https://lore.kernel.org/r/20230319140238.9470-1-kabel@kernel.orgSigned-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent a08df15e
......@@ -3805,7 +3805,9 @@ static int mv88e6xxx_mdio_register(struct mv88e6xxx_chip *chip,
bus->read_c45 = mv88e6xxx_mdio_read_c45;
bus->write_c45 = mv88e6xxx_mdio_write_c45;
bus->parent = chip->dev;
bus->phy_mask = GENMASK(31, mv88e6xxx_num_ports(chip));
bus->phy_mask = ~GENMASK(chip->info->phy_base_addr +
mv88e6xxx_num_ports(chip) - 1,
chip->info->phy_base_addr);
if (!external) {
err = mv88e6xxx_g2_irq_mdio_setup(chip, bus);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment