dsa: lan9303: write reg only if necessary
authorJerry Ray <jerry.ray@microchip.com>
Tue, 17 Jan 2023 20:57:00 +0000 (14:57 -0600)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Jan 2023 08:53:13 +0000 (08:53 +0000)
As the regmap_write() is over a slow bus that will sleep, we can speed up
the boot-up time a bit by not bothering to clear a bit that is already
clear.

Signed-off-by: Jerry Ray <jerry.ray@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/lan9303-core.c

index 66466d5..a4decf4 100644 (file)
@@ -915,8 +915,11 @@ static int lan9303_setup(struct dsa_switch *ds)
        if (ret)
                return (ret);
 
-       reg &= ~LAN9303_VIRT_SPECIAL_TURBO;
-       regmap_write(chip->regmap, LAN9303_VIRT_SPECIAL_CTRL, reg);
+       /* Clear the TURBO Mode bit if it was set. */
+       if (reg & LAN9303_VIRT_SPECIAL_TURBO) {
+               reg &= ~LAN9303_VIRT_SPECIAL_TURBO;
+               regmap_write(chip->regmap, LAN9303_VIRT_SPECIAL_CTRL, reg);
+       }
 
        ret = lan9303_setup_tagging(chip);
        if (ret)