All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: netdev@vger.kernel.org
Cc: "David S. Miller" <davem@davemloft.net>,
	Andrew Lunn <andrew@lunn.ch>,
	Florian Fainelli <f.fainelli@gmail.com>,
	linux-kernel@vger.kernel.org, Guenter Roeck <linux@roeck-us.net>
Subject: [PATCH 02/18] net: dsa: mv88e6xxx: Provide function for common port initialization
Date: Sat, 21 Mar 2015 08:46:39 -0700	[thread overview]
Message-ID: <1426952815-4642-3-git-send-email-linux@roeck-us.net> (raw)
In-Reply-To: <1426952815-4642-1-git-send-email-linux@roeck-us.net>

Provide mv88e6xxx_setup_port_common() for common port initialization.
Currently only write Port 1 Control and VLAN configuration since
this will be needed for hardware bridging. More can be added later
if desired/needed.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
 drivers/net/dsa/mv88e6xxx.c | 39 +++++++++++++++++++++++++++++++++++++++
 drivers/net/dsa/mv88e6xxx.h |  1 +
 2 files changed, 40 insertions(+)

diff --git a/drivers/net/dsa/mv88e6xxx.c b/drivers/net/dsa/mv88e6xxx.c
index 6496beb..3c2cb45 100644
--- a/drivers/net/dsa/mv88e6xxx.c
+++ b/drivers/net/dsa/mv88e6xxx.c
@@ -700,6 +700,45 @@ int mv88e6xxx_set_eee(struct dsa_switch *ds, int port,
 	return 0;
 }
 
+int mv88e6xxx_setup_port_common(struct dsa_switch *ds, int port)
+{
+	struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
+	int reg;
+
+	mutex_lock(&ps->smi_mutex);
+
+	/* Port Control 1: disable trunking.  Also, if this is the
+	 * CPU port, enable learn messages to be sent to this port.
+	 */
+	ret = _mv88e6xxx_reg_write(ds, REG_PORT(port), 0x05,
+				   dsa_is_cpu_port(ds, port) ? 0x8000 : 0x0000);
+	if (ret)
+		goto abort;
+
+	/* Port based VLAN map: give each port its own address
+	 * database, allow the CPU port to talk to each of the 'real'
+	 * ports, and allow each of the 'real' ports to only talk to
+	 * the upstream port.
+	 */
+	reg = (port & 0xf) << 12;
+	if (dsa_is_cpu_port(ds, port))
+		reg |= ds->phys_port_mask;
+	else
+		reg |= 1 << dsa_upstream_port(ds);
+
+	ret = _mv88e6xxx_reg_write(ds, REG_PORT(port), 0x06, reg);
+	if (ret)
+		goto abort;
+
+	/* Default VLAN ID and priority: don't set a default VLAN
+	 * ID, and set the default packet priority to zero.
+	 */
+	ret = _mv88e6xxx_reg_write(ds, REG_PORT(port), 0x07, 0x0000);
+abort:
+	mutex_unlock(&ps->smi_mutex);
+	return ret;
+}
+
 int mv88e6xxx_setup_common(struct dsa_switch *ds)
 {
 	struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
diff --git a/drivers/net/dsa/mv88e6xxx.h b/drivers/net/dsa/mv88e6xxx.h
index a02d95a..a4df496 100644
--- a/drivers/net/dsa/mv88e6xxx.h
+++ b/drivers/net/dsa/mv88e6xxx.h
@@ -57,6 +57,7 @@ struct mv88e6xxx_hw_stat {
 	int reg;
 };
 
+int mv88e6xxx_setup_port_common(struct dsa_switch *ds, int port);
 int mv88e6xxx_setup_common(struct dsa_switch *ds);
 int __mv88e6xxx_reg_read(struct mii_bus *bus, int sw_addr, int addr, int reg);
 int mv88e6xxx_reg_read(struct dsa_switch *ds, int addr, int reg);
-- 
2.1.0


  parent reply	other threads:[~2015-03-21 15:47 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-21 15:46 [PATCH 0/18] net: dsa: HW bridging, EEE support Guenter Roeck
2015-03-21 15:46 ` [PATCH 01/18] net: dsa: mv88e6xxx: Factor out common initialization code Guenter Roeck
2015-03-21 15:46 ` Guenter Roeck [this message]
2015-03-21 22:41   ` [PATCH 02/18] net: dsa: mv88e6xxx: Provide function for common port initialization Guenter Roeck
2015-03-21 15:46 ` [PATCH 03/18] net: dsa: mv88e6xxx: Disable Message Port bit for CPU port Guenter Roeck
2015-03-21 15:46 ` [PATCH 04/18] net: dsa: mv88e6xxx: Split mv88e6xxx_reg_read and mv88e6xxx_reg_write Guenter Roeck
2015-03-21 15:46 ` [PATCH 05/18] net: dsa: mv88e6352: Use common port initialization code Guenter Roeck
2015-03-21 15:46 ` [PATCH 06/18] net: dsa: mv88e6123_61_65: Use common port configuration Guenter Roeck
2015-03-21 15:46 ` [PATCH 07/18] net: dsa: mv88e6171: " Guenter Roeck
2015-03-21 15:46 ` [PATCH 08/18] net: dsa: mv88e6xxx: Add Hardware bridging support Guenter Roeck
2015-03-22 20:06   ` Andrew Lunn
2015-03-22 20:45     ` Guenter Roeck
2015-03-22 20:59       ` Andrew Lunn
2015-03-22 22:39         ` Guenter Roeck
2015-03-23  1:18           ` Andrew Lunn
2015-03-23  1:33             ` Guenter Roeck
2015-03-22 22:24     ` David Miller
2015-03-22 22:45       ` Guenter Roeck
2015-03-21 15:46 ` [PATCH 09/18] net: dsa: mv88e6352: Add support for hardware bridging Guenter Roeck
2015-03-21 15:46 ` [PATCH 10/18] net: dsa: Add basic framework to support ndo_fdb functions Guenter Roeck
2015-03-21 15:46 ` [PATCH 11/18] net: dsa: mv88e6xxx: Add support for fdb_add, fdb_del, and fdb_getnext Guenter Roeck
2015-03-21 15:46 ` [PATCH 12/18] net: dsa: mv88e6352: Add support for ndo_fdb functions Guenter Roeck
2015-03-21 15:46 ` [PATCH 13/18] net: dsa: Centralise getting switch id Guenter Roeck
2015-03-21 15:46 ` [PATCH 14/18] net: dsa: mv88e6171: Add defines for switch product IDs Guenter Roeck
2015-03-21 15:46 ` [PATCH 15/18] net: dsa: mv88e6171: Add EEE support to the mv88e6172 Guenter Roeck
2015-03-21 15:46 ` [PATCH 16/18] net: dsa: mv88e6171: Add support for hardware bridging Guenter Roeck
2015-03-21 15:46 ` [RFT PATCH 17/18] net: dsa: mv88e6131: Use common initialization functions Guenter Roeck
2015-03-21 15:46 ` [RFT PATCH 18/18] net: dsa: mv88e6131: Add HW bridging support Guenter Roeck
2015-03-21 22:48 ` [PATCH 0/18] net: dsa: HW bridging, EEE support David Miller
2015-03-21 23:12   ` Guenter Roeck
2015-03-21 23:26     ` Andrew Lunn
2015-03-22  2:14     ` David Miller
2015-03-22  2:31       ` Guenter Roeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1426952815-4642-3-git-send-email-linux@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=f.fainelli@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.