net: dsa: lan9303: Adjust phy_addr_base expressions
authorEgil Hjelmeland <privat@egil-hjelmeland.no>
Fri, 29 Dec 2017 12:38:24 +0000 (13:38 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 4 Jan 2018 18:35:07 +0000 (13:35 -0500)
Simplify calculation of chip->phy_addr_base in lan9303_detect_phy_setup().

Use GENMASK to calculate phys_mii_mask from LAN9303_NUM_PORTS and
phy_addr_base.

Signed-off-by: Egil Hjelmeland <privat@egil-hjelmeland.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/lan9303-core.c

index 3088cdc5d205bae1a75c62c8918d02d659814641..4efb772dbc7e2746fd44e0889be364165b9a0e77 100644 (file)
@@ -495,10 +495,7 @@ static int lan9303_detect_phy_setup(struct lan9303 *chip)
                return reg;
        }
 
-       if ((reg != 0) && (reg != 0xffff))
-               chip->phy_addr_base = 1;
-       else
-               chip->phy_addr_base = 0;
+       chip->phy_addr_base = reg != 0 && reg != 0xffff;
 
        dev_dbg(chip->dev, "Phy setup '%s' detected\n",
                chip->phy_addr_base ? "1-2-3" : "0-1-2");
@@ -1283,13 +1280,16 @@ static const struct dsa_switch_ops lan9303_switch_ops = {
 
 static int lan9303_register_switch(struct lan9303 *chip)
 {
+       int base;
+
        chip->ds = dsa_switch_alloc(chip->dev, LAN9303_NUM_PORTS);
        if (!chip->ds)
                return -ENOMEM;
 
        chip->ds->priv = chip;
        chip->ds->ops = &lan9303_switch_ops;
-       chip->ds->phys_mii_mask = chip->phy_addr_base ? 0xe : 0x7;
+       base = chip->phy_addr_base;
+       chip->ds->phys_mii_mask = GENMASK(LAN9303_NUM_PORTS - 1 + base, base);
 
        return dsa_register_switch(chip->ds);
 }