]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
net: dsa :mv88e6xxx: Disable unused ports
authorAndrew Lunn <andrew@lunn.ch>
Tue, 30 Apr 2019 22:08:31 +0000 (00:08 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sat, 4 May 2019 03:53:06 +0000 (23:53 -0400)
If the NO_CPU strap is set, the switch starts in 'dumb hub' mode, with
all ports enable. Ports which are then actively used are reconfigured
as required when the driver starts. However unused ports are left
alone. Change this to disable them, and turn off any SERDES
interface. This could save some power and so reduce the temperature a
bit.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Vivien Didelot <vivien.didelot@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx/chip.c

index dc891d83610edd7b5385b58513f800b547810611..46020fe1b5e7075f4548e38f2a8f4ecd87ec84d9 100644 (file)
@@ -2599,8 +2599,18 @@ static int mv88e6xxx_setup(struct dsa_switch *ds)
 
        /* Setup Switch Port Registers */
        for (i = 0; i < mv88e6xxx_num_ports(chip); i++) {
-               if (dsa_is_unused_port(ds, i))
+               if (dsa_is_unused_port(ds, i)) {
+                       err = mv88e6xxx_port_set_state(chip, i,
+                                                      BR_STATE_DISABLED);
+                       if (err)
+                               goto unlock;
+
+                       err = mv88e6xxx_serdes_power(chip, i, false);
+                       if (err)
+                               goto unlock;
+
                        continue;
+               }
 
                err = mv88e6xxx_setup_port(chip, i);
                if (err)