aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>2017-12-05 15:34:10 -0500
committerDavid S. Miller <davem@davemloft.net>2017-12-05 18:01:33 -0500
commitfa371c803c4fafbf088381aa1235ccde7dfa09dd (patch)
tree8a06a0dbbc49618409a4e491b8ba08593347c922
parent3ee50cbf3a8e0846a12b3fdf8aa9397668981c16 (diff)
net: dsa: mv88e6xxx: helper to setup upstream port
Add a helper function to setup the upstream port of a given port. This is the port used to reach the dedicated CPU port. This function will be extended later to setup the global upstream port as well. Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/dsa/mv88e6xxx/chip.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 4b9ac962fd49..77488b40cceb 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -1744,6 +1744,23 @@ static int mv88e6xxx_serdes_power(struct mv88e6xxx_chip *chip, int port,
1744 return 0; 1744 return 0;
1745} 1745}
1746 1746
1747static int mv88e6xxx_setup_upstream_port(struct mv88e6xxx_chip *chip, int port)
1748{
1749 struct dsa_switch *ds = chip->ds;
1750 int upstream_port;
1751 int err;
1752
1753 upstream_port = dsa_upstream_port(ds);
1754 if (chip->info->ops->port_set_upstream_port) {
1755 err = chip->info->ops->port_set_upstream_port(chip, port,
1756 upstream_port);
1757 if (err)
1758 return err;
1759 }
1760
1761 return 0;
1762}
1763
1747static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port) 1764static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port)
1748{ 1765{
1749 struct dsa_switch *ds = chip->ds; 1766 struct dsa_switch *ds = chip->ds;
@@ -1814,13 +1831,9 @@ static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port)
1814 if (err) 1831 if (err)
1815 return err; 1832 return err;
1816 1833
1817 reg = 0; 1834 err = mv88e6xxx_setup_upstream_port(chip, port);
1818 if (chip->info->ops->port_set_upstream_port) { 1835 if (err)
1819 err = chip->info->ops->port_set_upstream_port( 1836 return err;
1820 chip, port, dsa_upstream_port(ds));
1821 if (err)
1822 return err;
1823 }
1824 1837
1825 err = mv88e6xxx_port_set_8021q_mode(chip, port, 1838 err = mv88e6xxx_port_set_8021q_mode(chip, port,
1826 MV88E6XXX_PORT_CTL2_8021Q_MODE_DISABLED); 1839 MV88E6XXX_PORT_CTL2_8021Q_MODE_DISABLED);