devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCHv5 0/5] GEHC Bx50 Switch Support
@ 2018-01-23 15:03 Sebastian Reichel
  2018-01-23 15:03 ` [PATCHv5 1/5] net: dsa: Support internal phy on 'cpu' port Sebastian Reichel
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Sebastian Reichel @ 2018-01-23 15:03 UTC (permalink / raw)
  To: Andrew Lunn, Vivien Didelot, Florian Fainelli, Shawn Guo,
	Sascha Hauer, Fabio Estevam
  Cc: Ian Ray, Nandor Han, Rob Herring, David S. Miller,
	netdev-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	kernel-81qHHgoATdEGFh7si24rbyp2UmYkHbXO, Sebastian Reichel

Hi,

This adds support for the internal switch found in GE Healthcare
B450v3, B650v3 and B850v3. All devices use a GPIO bitbanged MDIO
bus to communicate with the switch and a PCIe based network card
for exchanging network data. The cpu network data link requires,
that the switch's internal phy interface is enabled, so support
for that is added by the first patch in this series.

The patch series is based on v4.15-rc8.

Changes since PATCHv4:
 * Introduce dsa_port_link_(un)register_of and mark the fixed
   variant static.
 * Update patch description to describe the phy<->phy connection
   from i210 to the Marvell switch
Changes since PATCHv3:
 * Enable the phy in dsa_port_setup() instead of abusing the
   fixed link setup function
Changes since PATCHv2:
 * Add phy nodes to switch in bx50.dtsi and reference them
   from switch ports
 * Enable cpu-port's phy based on 'phy-handle' instead of 'phy-mode'
Changes since PATCHv1:
 * Use 'marvell,mv88e6085' instead of introducing compatible
   string for mv88e6240.
 * Fix indention of DT nodes
 * Only enable 'cpu' phy, if explicitly set to "internal".

-- Sebastian

Sebastian Reichel (5):
  net: dsa: Support internal phy on 'cpu' port
  ARM: dts: imx6q-bx50v3: Add internal switch
  ARM: dts: imx6q-b850v3: Add switch port configuration
  ARM: dts: imx6q-b650v3: Add switch port configuration
  ARM: dts: imx6q-b450v3: Add switch port configuration

 arch/arm/boot/dts/imx6q-b450v3.dts  |  52 ++++++++++++++++++
 arch/arm/boot/dts/imx6q-b650v3.dts  |  52 ++++++++++++++++++
 arch/arm/boot/dts/imx6q-b850v3.dts  |  75 ++++++++++++++++++++++++++
 arch/arm/boot/dts/imx6q-bx50v3.dtsi |  62 ++++++++++++++++++++++
 net/dsa/dsa2.c                      |   7 ++-
 net/dsa/dsa_priv.h                  |   4 +-
 net/dsa/legacy.c                    |   4 +-
 net/dsa/port.c                      | 103 +++++++++++++++++++++++++++---------
 8 files changed, 327 insertions(+), 32 deletions(-)

-- 
2.15.1

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCHv5 1/5] net: dsa: Support internal phy on 'cpu' port
  2018-01-23 15:03 [PATCHv5 0/5] GEHC Bx50 Switch Support Sebastian Reichel
@ 2018-01-23 15:03 ` Sebastian Reichel
       [not found]   ` <20180123150350.11031-2-sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
  2018-01-23 15:03 ` [PATCHv5 2/5] ARM: dts: imx6q-bx50v3: Add internal switch Sebastian Reichel
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Sebastian Reichel @ 2018-01-23 15:03 UTC (permalink / raw)
  To: Andrew Lunn, Vivien Didelot, Florian Fainelli, Shawn Guo,
	Sascha Hauer, Fabio Estevam
  Cc: Ian Ray, Nandor Han, Rob Herring, David S. Miller, netdev,
	devicetree, linux-kernel, kernel, Sebastian Reichel

This adds support for enabling the internal PHY for a 'cpu' port.
It has been tested on GE B850v3,  B650v3 and B450v3, which have a
built-in MV88E6240 switch hardwired to a PCIe based network card.
On these machines the internal PHY of the i210 network card and
the Marvell switch are connected to each other and must be enabled
for properly using the switch. While the i210 PHY will be enabled
when the network interface is enabled, the switch's port is not
exposed as network interface. Additionally the mv88e6xxx driver
resets the chip during probe, so the PHY is disabled without this
patch.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
 net/dsa/dsa2.c     |   7 ++--
 net/dsa/dsa_priv.h |   4 +--
 net/dsa/legacy.c   |   4 +--
 net/dsa/port.c     | 103 ++++++++++++++++++++++++++++++++++++++++-------------
 4 files changed, 86 insertions(+), 32 deletions(-)

diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c
index 1e287420ff49..78c8111eedc2 100644
--- a/net/dsa/dsa2.c
+++ b/net/dsa/dsa2.c
@@ -271,13 +271,12 @@ static int dsa_port_setup(struct dsa_port *dp)
 		break;
 	case DSA_PORT_TYPE_CPU:
 	case DSA_PORT_TYPE_DSA:
-		err = dsa_port_fixed_link_register_of(dp);
+		err = dsa_port_link_register_of(dp);
 		if (err) {
-			dev_err(ds->dev, "failed to register fixed link for port %d.%d\n",
+			dev_err(ds->dev, "failed to setup link for port %d.%d\n",
 				ds->index, dp->index);
 			return err;
 		}
-
 		break;
 	case DSA_PORT_TYPE_USER:
 		err = dsa_slave_create(dp);
@@ -301,7 +300,7 @@ static void dsa_port_teardown(struct dsa_port *dp)
 		break;
 	case DSA_PORT_TYPE_CPU:
 	case DSA_PORT_TYPE_DSA:
-		dsa_port_fixed_link_unregister_of(dp);
+		dsa_port_link_unregister_of(dp);
 		break;
 	case DSA_PORT_TYPE_USER:
 		if (dp->slave) {
diff --git a/net/dsa/dsa_priv.h b/net/dsa/dsa_priv.h
index 7d036696e8c4..1cb3b75720c8 100644
--- a/net/dsa/dsa_priv.h
+++ b/net/dsa/dsa_priv.h
@@ -157,8 +157,8 @@ int dsa_port_vlan_add(struct dsa_port *dp,
 		      struct switchdev_trans *trans);
 int dsa_port_vlan_del(struct dsa_port *dp,
 		      const struct switchdev_obj_port_vlan *vlan);
-int dsa_port_fixed_link_register_of(struct dsa_port *dp);
-void dsa_port_fixed_link_unregister_of(struct dsa_port *dp);
+int dsa_port_link_register_of(struct dsa_port *dp);
+void dsa_port_link_unregister_of(struct dsa_port *dp);
 
 /* slave.c */
 extern const struct dsa_device_ops notag_netdev_ops;
diff --git a/net/dsa/legacy.c b/net/dsa/legacy.c
index 84611d7fcfa2..a8d94a65849f 100644
--- a/net/dsa/legacy.c
+++ b/net/dsa/legacy.c
@@ -86,7 +86,7 @@ static int dsa_cpu_dsa_setups(struct dsa_switch *ds)
 		if (!(dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port)))
 			continue;
 
-		ret = dsa_port_fixed_link_register_of(&ds->ports[port]);
+		ret = dsa_port_link_register_of(&ds->ports[port]);
 		if (ret)
 			return ret;
 	}
@@ -275,7 +275,7 @@ static void dsa_switch_destroy(struct dsa_switch *ds)
 	for (port = 0; port < ds->num_ports; port++) {
 		if (!(dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port)))
 			continue;
-		dsa_port_fixed_link_unregister_of(&ds->ports[port]);
+		dsa_port_link_unregister_of(&ds->ports[port]);
 	}
 
 	if (ds->slave_mii_bus && ds->ops->phy_read)
diff --git a/net/dsa/port.c b/net/dsa/port.c
index bb4be2679904..7acc1169d75e 100644
--- a/net/dsa/port.c
+++ b/net/dsa/port.c
@@ -273,7 +273,56 @@ int dsa_port_vlan_del(struct dsa_port *dp,
 	return 0;
 }
 
-int dsa_port_fixed_link_register_of(struct dsa_port *dp)
+static int dsa_port_setup_phy_of(struct dsa_port *dp, bool enable)
+{
+	struct device_node *port_dn = dp->dn;
+	struct device_node *phy_dn;
+	struct dsa_switch *ds = dp->ds;
+	struct phy_device *phydev;
+	int port = dp->index;
+	int err = 0;
+
+	phy_dn = of_parse_phandle(port_dn, "phy-handle", 0);
+	if (!phy_dn)
+		return 0;
+
+	phydev = of_phy_find_device(phy_dn);
+	if (!phydev) {
+		err = -EPROBE_DEFER;
+		goto err_put_of;
+	}
+
+	if (enable) {
+		err = genphy_config_init(phydev);
+		if (err < 0)
+			goto err_put_dev;
+
+		err = genphy_resume(phydev);
+		if (err < 0)
+			goto err_put_dev;
+
+		err = genphy_read_status(phydev);
+		if (err < 0)
+			goto err_put_dev;
+	} else {
+		err = genphy_suspend(phydev);
+		if (err < 0)
+			goto err_put_dev;
+	}
+
+	if (ds->ops->adjust_link)
+		ds->ops->adjust_link(ds, port, phydev);
+
+	dev_dbg(ds->dev, "enabled port's phy: %s", phydev_name(phydev));
+
+err_put_dev:
+	put_device(&phydev->mdio.dev);
+err_put_of:
+	of_node_put(phy_dn);
+	return err;
+}
+
+static int dsa_port_fixed_link_register_of(struct dsa_port *dp)
 {
 	struct device_node *dn = dp->dn;
 	struct dsa_switch *ds = dp->ds;
@@ -282,38 +331,44 @@ int dsa_port_fixed_link_register_of(struct dsa_port *dp)
 	int mode;
 	int err;
 
-	if (of_phy_is_fixed_link(dn)) {
-		err = of_phy_register_fixed_link(dn);
-		if (err) {
-			dev_err(ds->dev,
-				"failed to register the fixed PHY of port %d\n",
-				port);
-			return err;
-		}
+	err = of_phy_register_fixed_link(dn);
+	if (err) {
+		dev_err(ds->dev,
+			"failed to register the fixed PHY of port %d\n",
+			port);
+		return err;
+	}
 
-		phydev = of_phy_find_device(dn);
+	phydev = of_phy_find_device(dn);
 
-		mode = of_get_phy_mode(dn);
-		if (mode < 0)
-			mode = PHY_INTERFACE_MODE_NA;
-		phydev->interface = mode;
+	mode = of_get_phy_mode(dn);
+	if (mode < 0)
+		mode = PHY_INTERFACE_MODE_NA;
+	phydev->interface = mode;
 
-		genphy_config_init(phydev);
-		genphy_read_status(phydev);
+	genphy_config_init(phydev);
+	genphy_read_status(phydev);
 
-		if (ds->ops->adjust_link)
-			ds->ops->adjust_link(ds, port, phydev);
+	if (ds->ops->adjust_link)
+		ds->ops->adjust_link(ds, port, phydev);
 
-		put_device(&phydev->mdio.dev);
-	}
+	put_device(&phydev->mdio.dev);
 
 	return 0;
 }
 
-void dsa_port_fixed_link_unregister_of(struct dsa_port *dp)
+int dsa_port_link_register_of(struct dsa_port *dp)
 {
-	struct device_node *dn = dp->dn;
+	if (of_phy_is_fixed_link(dp->dn))
+		return dsa_port_fixed_link_register_of(dp);
+	else
+		return dsa_port_setup_phy_of(dp, true);
+}
 
-	if (of_phy_is_fixed_link(dn))
-		of_phy_deregister_fixed_link(dn);
+void dsa_port_link_unregister_of(struct dsa_port *dp)
+{
+	if (of_phy_is_fixed_link(dp->dn))
+		of_phy_deregister_fixed_link(dp->dn);
+	else
+		dsa_port_setup_phy_of(dp, false);
 }
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCHv5 2/5] ARM: dts: imx6q-bx50v3: Add internal switch
  2018-01-23 15:03 [PATCHv5 0/5] GEHC Bx50 Switch Support Sebastian Reichel
  2018-01-23 15:03 ` [PATCHv5 1/5] net: dsa: Support internal phy on 'cpu' port Sebastian Reichel
@ 2018-01-23 15:03 ` Sebastian Reichel
  2018-01-23 15:34   ` Florian Fainelli
  2018-01-23 15:03 ` [PATCHv5 3/5] ARM: dts: imx6q-b850v3: Add switch port configuration Sebastian Reichel
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Sebastian Reichel @ 2018-01-23 15:03 UTC (permalink / raw)
  To: Andrew Lunn, Vivien Didelot, Florian Fainelli, Shawn Guo,
	Sascha Hauer, Fabio Estevam
  Cc: Ian Ray, Nandor Han, Rob Herring, David S. Miller, netdev,
	devicetree, linux-kernel, kernel, Sebastian Reichel

B850v3, B650v3 and B450v3 all have a GPIO bit banged MDIO bus to
communicate with a Marvell switch. On all devices the switch is
connected to a PCI based network card, which needs to be referenced
by DT, so this also adds the common PCI root node.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
 arch/arm/boot/dts/imx6q-bx50v3.dtsi | 62 +++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/arch/arm/boot/dts/imx6q-bx50v3.dtsi b/arch/arm/boot/dts/imx6q-bx50v3.dtsi
index 0808dffc9a48..09b13ac967ec 100644
--- a/arch/arm/boot/dts/imx6q-bx50v3.dtsi
+++ b/arch/arm/boot/dts/imx6q-bx50v3.dtsi
@@ -99,6 +99,56 @@
 		mux-int-port = <1>;
 		mux-ext-port = <4>;
 	};
+
+	aliases {
+		mdio-gpio0 = &mdio0;
+	};
+
+	mdio0: mdio-gpio {
+		compatible = "virtual,mdio-gpio";
+		gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>, /* mdc */
+			<&gpio2 7 GPIO_ACTIVE_HIGH>; /* mdio */
+
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		switch@0 {
+			compatible = "marvell,mv88e6085"; /* 88e6240*/
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0>;
+
+			switch_ports: ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+			};
+
+			mdio {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+				switchphy0: switchphy@0 {
+					reg = <0>;
+				};
+
+				switchphy1: switchphy@1 {
+					reg = <1>;
+				};
+
+				switchphy2: switchphy@2 {
+					reg = <2>;
+				};
+
+				switchphy3: switchphy@3 {
+					reg = <3>;
+				};
+
+				switchphy4: switchphy@4 {
+					reg = <4>;
+				};
+			};
+		};
+	};
 };
 
 &ecspi5 {
@@ -337,3 +387,15 @@
 		tcxo-clock-frequency = <26000000>;
 	};
 };
+
+&pcie {
+	/* Synopsys, Inc. Device */
+	pci_root: root@0,0 {
+		compatible = "pci16c3,abcd";
+		reg = <0x00000000 0 0 0 0>;
+
+		#address-cells = <3>;
+		#size-cells = <2>;
+		#interrupt-cells = <1>;
+	};
+};
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCHv5 3/5] ARM: dts: imx6q-b850v3: Add switch port configuration
  2018-01-23 15:03 [PATCHv5 0/5] GEHC Bx50 Switch Support Sebastian Reichel
  2018-01-23 15:03 ` [PATCHv5 1/5] net: dsa: Support internal phy on 'cpu' port Sebastian Reichel
  2018-01-23 15:03 ` [PATCHv5 2/5] ARM: dts: imx6q-bx50v3: Add internal switch Sebastian Reichel
@ 2018-01-23 15:03 ` Sebastian Reichel
  2018-01-23 15:34   ` Florian Fainelli
  2018-01-23 15:03 ` [PATCHv5 4/5] ARM: dts: imx6q-b650v3: " Sebastian Reichel
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Sebastian Reichel @ 2018-01-23 15:03 UTC (permalink / raw)
  To: Andrew Lunn, Vivien Didelot, Florian Fainelli, Shawn Guo,
	Sascha Hauer, Fabio Estevam
  Cc: Ian Ray, Nandor Han, Rob Herring, David S. Miller, netdev,
	devicetree, linux-kernel, kernel, Sebastian Reichel

This adds support for the Marvell switch and names the network
ports according to the labels, that can be found next to the
connectors ("ID", "IX", "ePort 1", "ePort 2"). The switch is
connected to the host system using a PCI based network card.

The PCI bus configuration has been written using the following
information:

root@b850v3# lspci -tv
-[0000:00]---00.0-[01]----00.0-[02-05]--+-01.0-[03]----00.0  Intel Corporation I210 Gigabit Network Connection
                                        +-02.0-[04]----00.0  Intel Corporation I210 Gigabit Network Connection
                                        \-03.0-[05]--
root@b850v3# lspci -nn
00:00.0 PCI bridge [0604]: Synopsys, Inc. Device [16c3:abcd] (rev 01)
01:00.0 PCI bridge [0604]: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch [10b5:8605] (rev ab)
02:01.0 PCI bridge [0604]: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch [10b5:8605] (rev ab)
02:02.0 PCI bridge [0604]: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch [10b5:8605] (rev ab)
02:03.0 PCI bridge [0604]: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch [10b5:8605] (rev ab)
03:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)
04:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
 arch/arm/boot/dts/imx6q-b850v3.dts | 75 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 75 insertions(+)

diff --git a/arch/arm/boot/dts/imx6q-b850v3.dts b/arch/arm/boot/dts/imx6q-b850v3.dts
index 46bdc6722715..35edbdc7bcd1 100644
--- a/arch/arm/boot/dts/imx6q-b850v3.dts
+++ b/arch/arm/boot/dts/imx6q-b850v3.dts
@@ -212,3 +212,78 @@
 		};
 	};
 };
+
+&pci_root {
+	/* PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch */
+	bridge@1,0 {
+		compatible = "pci10b5,8605";
+		reg = <0x00010000 0 0 0 0>;
+
+		#address-cells = <3>;
+		#size-cells = <2>;
+		#interrupt-cells = <1>;
+
+		bridge@2,1 {
+			compatible = "pci10b5,8605";
+			reg = <0x00020800 0 0 0 0>;
+
+			#address-cells = <3>;
+			#size-cells = <2>;
+			#interrupt-cells = <1>;
+
+			/* Intel Corporation I210 Gigabit Network Connection */
+			ethernet@3,0 {
+				compatible = "pci8086,1533";
+				reg = <0x00030000 0 0 0 0>;
+			};
+		};
+
+		bridge@2,2 {
+			compatible = "pci10b5,8605";
+			reg = <0x00021000 0 0 0 0>;
+
+			#address-cells = <3>;
+			#size-cells = <2>;
+			#interrupt-cells = <1>;
+
+			/* Intel Corporation I210 Gigabit Network Connection */
+			switch_nic: ethernet@4,0 {
+				compatible = "pci8086,1533";
+				reg = <0x00040000 0 0 0 0>;
+			};
+		};
+	};
+};
+
+&switch_ports {
+	port@0 {
+		reg = <0>;
+		label = "eneport1";
+		phy-handle = <&switchphy0>;
+	};
+
+	port@1 {
+		reg = <1>;
+		label = "eneport2";
+		phy-handle = <&switchphy1>;
+	};
+
+	port@2 {
+		reg = <2>;
+		label = "enix";
+		phy-handle = <&switchphy2>;
+	};
+
+	port@3 {
+		reg = <3>;
+		label = "enid";
+		phy-handle = <&switchphy3>;
+	};
+
+	port@4 {
+		reg = <4>;
+		label = "cpu";
+		ethernet = <&switch_nic>;
+		phy-handle = <&switchphy4>;
+	};
+};
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCHv5 4/5] ARM: dts: imx6q-b650v3: Add switch port configuration
  2018-01-23 15:03 [PATCHv5 0/5] GEHC Bx50 Switch Support Sebastian Reichel
                   ` (2 preceding siblings ...)
  2018-01-23 15:03 ` [PATCHv5 3/5] ARM: dts: imx6q-b850v3: Add switch port configuration Sebastian Reichel
@ 2018-01-23 15:03 ` Sebastian Reichel
  2018-01-23 15:34   ` Florian Fainelli
  2018-01-23 15:03 ` [PATCHv5 5/5] ARM: dts: imx6q-b450v3: " Sebastian Reichel
       [not found] ` <20180123150350.11031-1-sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
  5 siblings, 1 reply; 12+ messages in thread
From: Sebastian Reichel @ 2018-01-23 15:03 UTC (permalink / raw)
  To: Andrew Lunn, Vivien Didelot, Florian Fainelli, Shawn Guo,
	Sascha Hauer, Fabio Estevam
  Cc: Ian Ray, Nandor Han, Rob Herring, David S. Miller, netdev,
	devicetree, linux-kernel, kernel, Sebastian Reichel

This adds support for the Marvell switch and names the network
ports according to the labels, that can be found next to the
connectors. The switch is connected to the host system using a
PCI based network card.

The PCI bus configuration has been written using the following
information:

root@b650v3# lspci -tv
-[0000:00]---00.0-[01]----00.0  Intel Corporation I210 Gigabit Network Connection
root@b650v3# lspci -nn
00:00.0 PCI bridge [0604]: Synopsys, Inc. Device [16c3:abcd] (rev 01)
01:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
 arch/arm/boot/dts/imx6q-b650v3.dts | 52 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/arch/arm/boot/dts/imx6q-b650v3.dts b/arch/arm/boot/dts/imx6q-b650v3.dts
index 7f9f176901d4..5650a9b11091 100644
--- a/arch/arm/boot/dts/imx6q-b650v3.dts
+++ b/arch/arm/boot/dts/imx6q-b650v3.dts
@@ -111,3 +111,55 @@
 	fsl,tx-cal-45-dp-ohms = <55>;
 	fsl,tx-d-cal = <100>;
 };
+
+&pci_root {
+	/* Intel Corporation I210 Gigabit Network Connection */
+	switch_nic: ethernet@3,0 {
+		compatible = "pci8086,1533";
+		reg = <0x00010000 0 0 0 0>;
+	};
+};
+
+&switch_ports {
+	port@0 {
+		reg = <0>;
+		label = "enacq";
+		phy-handle = <&switchphy0>;
+	};
+
+	port@1 {
+		reg = <1>;
+		label = "eneport1";
+		phy-handle = <&switchphy1>;
+	};
+
+	port@2 {
+		reg = <2>;
+		label = "enix";
+		phy-handle = <&switchphy2>;
+	};
+
+	port@3 {
+		reg = <3>;
+		label = "enid";
+		phy-handle = <&switchphy3>;
+	};
+
+	port@4 {
+		reg = <4>;
+		label = "cpu";
+		ethernet = <&switch_nic>;
+		phy-handle = <&switchphy4>;
+	};
+
+	port@5 {
+		reg = <5>;
+		label = "enembc";
+
+		/* connected to Ethernet MAC of AT91RM9200 in MII mode */
+		fixed-link {
+			speed = <100>;
+			full-duplex;
+		};
+	};
+};
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCHv5 5/5] ARM: dts: imx6q-b450v3: Add switch port configuration
  2018-01-23 15:03 [PATCHv5 0/5] GEHC Bx50 Switch Support Sebastian Reichel
                   ` (3 preceding siblings ...)
  2018-01-23 15:03 ` [PATCHv5 4/5] ARM: dts: imx6q-b650v3: " Sebastian Reichel
@ 2018-01-23 15:03 ` Sebastian Reichel
  2018-01-23 15:34   ` Florian Fainelli
       [not found] ` <20180123150350.11031-1-sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
  5 siblings, 1 reply; 12+ messages in thread
From: Sebastian Reichel @ 2018-01-23 15:03 UTC (permalink / raw)
  To: Andrew Lunn, Vivien Didelot, Florian Fainelli, Shawn Guo,
	Sascha Hauer, Fabio Estevam
  Cc: Ian Ray, Nandor Han, Rob Herring, David S. Miller, netdev,
	devicetree, linux-kernel, kernel, Sebastian Reichel

This adds support for the Marvell switch and names the network
ports according to the labels, that can be found next to the
connectors. The switch is connected to the host system using a
PCI based network card.

The PCI bus configuration has been written using the following
information:

root@b450v3# lspci -tv
-[0000:00]---00.0-[01]----00.0  Intel Corporation I210 Gigabit Network Connection
root@b450v3# lspci -nn
00:00.0 PCI bridge [0604]: Synopsys, Inc. Device [16c3:abcd] (rev 01)
01:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
 arch/arm/boot/dts/imx6q-b450v3.dts | 52 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/arch/arm/boot/dts/imx6q-b450v3.dts b/arch/arm/boot/dts/imx6q-b450v3.dts
index 404a93d9596b..3ec58500e9c2 100644
--- a/arch/arm/boot/dts/imx6q-b450v3.dts
+++ b/arch/arm/boot/dts/imx6q-b450v3.dts
@@ -112,3 +112,55 @@
                 line-name = "PCA9539-P07";
         };
 };
+
+&pci_root {
+	/* Intel Corporation I210 Gigabit Network Connection */
+	switch_nic: ethernet@3,0 {
+		compatible = "pci8086,1533";
+		reg = <0x00010000 0 0 0 0>;
+	};
+};
+
+&switch_ports {
+	port@0 {
+		reg = <0>;
+		label = "enacq";
+		phy-handle = <&switchphy0>;
+	};
+
+	port@1 {
+		reg = <1>;
+		label = "eneport1";
+		phy-handle = <&switchphy1>;
+	};
+
+	port@2 {
+		reg = <2>;
+		label = "enix";
+		phy-handle = <&switchphy2>;
+	};
+
+	port@3 {
+		reg = <3>;
+		label = "enid";
+		phy-handle = <&switchphy3>;
+	};
+
+	port@4 {
+		reg = <4>;
+		label = "cpu";
+		ethernet = <&switch_nic>;
+		phy-handle = <&switchphy4>;
+	};
+
+	port@5 {
+		reg = <5>;
+		label = "enembc";
+
+		/* connected to Ethernet MAC of AT91RM9200 in MII mode */
+		fixed-link {
+			speed = <100>;
+			full-duplex;
+		};
+	};
+};
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCHv5 1/5] net: dsa: Support internal phy on 'cpu' port
       [not found]   ` <20180123150350.11031-2-sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
@ 2018-01-23 15:29     ` Florian Fainelli
  0 siblings, 0 replies; 12+ messages in thread
From: Florian Fainelli @ 2018-01-23 15:29 UTC (permalink / raw)
  To: Sebastian Reichel, Andrew Lunn, Vivien Didelot, Shawn Guo,
	Sascha Hauer, Fabio Estevam
  Cc: Ian Ray, Nandor Han, Rob Herring, David S. Miller,
	netdev-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	kernel-81qHHgoATdEGFh7si24rbyp2UmYkHbXO



On 01/23/2018 07:03 AM, Sebastian Reichel wrote:
> This adds support for enabling the internal PHY for a 'cpu' port.
> It has been tested on GE B850v3,  B650v3 and B450v3, which have a
> built-in MV88E6240 switch hardwired to a PCIe based network card.
> On these machines the internal PHY of the i210 network card and
> the Marvell switch are connected to each other and must be enabled
> for properly using the switch. While the i210 PHY will be enabled
> when the network interface is enabled, the switch's port is not
> exposed as network interface. Additionally the mv88e6xxx driver
> resets the chip during probe, so the PHY is disabled without this
> patch.

This looks good now, thanks for your patience Sebastian!

> 
> Signed-off-by: Sebastian Reichel <sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>

Reviewed-by: Florian Fainelli <f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
-- 
Florian
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCHv5 2/5] ARM: dts: imx6q-bx50v3: Add internal switch
  2018-01-23 15:03 ` [PATCHv5 2/5] ARM: dts: imx6q-bx50v3: Add internal switch Sebastian Reichel
@ 2018-01-23 15:34   ` Florian Fainelli
  0 siblings, 0 replies; 12+ messages in thread
From: Florian Fainelli @ 2018-01-23 15:34 UTC (permalink / raw)
  To: Sebastian Reichel, Andrew Lunn, Vivien Didelot, Shawn Guo,
	Sascha Hauer, Fabio Estevam
  Cc: Ian Ray, Nandor Han, Rob Herring, David S. Miller, netdev,
	devicetree, linux-kernel, kernel



On 01/23/2018 07:03 AM, Sebastian Reichel wrote:
> B850v3, B650v3 and B450v3 all have a GPIO bit banged MDIO bus to
> communicate with a Marvell switch. On all devices the switch is
> connected to a PCI based network card, which needs to be referenced
> by DT, so this also adds the common PCI root node.
> 
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCHv5 3/5] ARM: dts: imx6q-b850v3: Add switch port configuration
  2018-01-23 15:03 ` [PATCHv5 3/5] ARM: dts: imx6q-b850v3: Add switch port configuration Sebastian Reichel
@ 2018-01-23 15:34   ` Florian Fainelli
  0 siblings, 0 replies; 12+ messages in thread
From: Florian Fainelli @ 2018-01-23 15:34 UTC (permalink / raw)
  To: Sebastian Reichel, Andrew Lunn, Vivien Didelot, Shawn Guo,
	Sascha Hauer, Fabio Estevam
  Cc: Ian Ray, Nandor Han, Rob Herring, David S. Miller, netdev,
	devicetree, linux-kernel, kernel



On 01/23/2018 07:03 AM, Sebastian Reichel wrote:
> This adds support for the Marvell switch and names the network
> ports according to the labels, that can be found next to the
> connectors ("ID", "IX", "ePort 1", "ePort 2"). The switch is
> connected to the host system using a PCI based network card.
> 
> The PCI bus configuration has been written using the following
> information:
> 
> root@b850v3# lspci -tv
> -[0000:00]---00.0-[01]----00.0-[02-05]--+-01.0-[03]----00.0  Intel Corporation I210 Gigabit Network Connection
>                                         +-02.0-[04]----00.0  Intel Corporation I210 Gigabit Network Connection
>                                         \-03.0-[05]--
> root@b850v3# lspci -nn
> 00:00.0 PCI bridge [0604]: Synopsys, Inc. Device [16c3:abcd] (rev 01)
> 01:00.0 PCI bridge [0604]: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch [10b5:8605] (rev ab)
> 02:01.0 PCI bridge [0604]: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch [10b5:8605] (rev ab)
> 02:02.0 PCI bridge [0604]: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch [10b5:8605] (rev ab)
> 02:03.0 PCI bridge [0604]: PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch [10b5:8605] (rev ab)
> 03:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)
> 04:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)
> 
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCHv5 4/5] ARM: dts: imx6q-b650v3: Add switch port configuration
  2018-01-23 15:03 ` [PATCHv5 4/5] ARM: dts: imx6q-b650v3: " Sebastian Reichel
@ 2018-01-23 15:34   ` Florian Fainelli
  0 siblings, 0 replies; 12+ messages in thread
From: Florian Fainelli @ 2018-01-23 15:34 UTC (permalink / raw)
  To: Sebastian Reichel, Andrew Lunn, Vivien Didelot, Shawn Guo,
	Sascha Hauer, Fabio Estevam
  Cc: Ian Ray, Nandor Han, Rob Herring, David S. Miller, netdev,
	devicetree, linux-kernel, kernel



On 01/23/2018 07:03 AM, Sebastian Reichel wrote:
> This adds support for the Marvell switch and names the network
> ports according to the labels, that can be found next to the
> connectors. The switch is connected to the host system using a
> PCI based network card.
> 
> The PCI bus configuration has been written using the following
> information:
> 
> root@b650v3# lspci -tv
> -[0000:00]---00.0-[01]----00.0  Intel Corporation I210 Gigabit Network Connection
> root@b650v3# lspci -nn
> 00:00.0 PCI bridge [0604]: Synopsys, Inc. Device [16c3:abcd] (rev 01)
> 01:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)
> 
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCHv5 5/5] ARM: dts: imx6q-b450v3: Add switch port configuration
  2018-01-23 15:03 ` [PATCHv5 5/5] ARM: dts: imx6q-b450v3: " Sebastian Reichel
@ 2018-01-23 15:34   ` Florian Fainelli
  0 siblings, 0 replies; 12+ messages in thread
From: Florian Fainelli @ 2018-01-23 15:34 UTC (permalink / raw)
  To: Sebastian Reichel, Andrew Lunn, Vivien Didelot, Shawn Guo,
	Sascha Hauer, Fabio Estevam
  Cc: Ian Ray, Nandor Han, Rob Herring, David S. Miller, netdev,
	devicetree, linux-kernel, kernel



On 01/23/2018 07:03 AM, Sebastian Reichel wrote:
> This adds support for the Marvell switch and names the network
> ports according to the labels, that can be found next to the
> connectors. The switch is connected to the host system using a
> PCI based network card.
> 
> The PCI bus configuration has been written using the following
> information:
> 
> root@b450v3# lspci -tv
> -[0000:00]---00.0-[01]----00.0  Intel Corporation I210 Gigabit Network Connection
> root@b450v3# lspci -nn
> 00:00.0 PCI bridge [0604]: Synopsys, Inc. Device [16c3:abcd] (rev 01)
> 01:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)
> 
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCHv5 0/5] GEHC Bx50 Switch Support
       [not found] ` <20180123150350.11031-1-sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
@ 2018-01-24  0:23   ` David Miller
  0 siblings, 0 replies; 12+ messages in thread
From: David Miller @ 2018-01-24  0:23 UTC (permalink / raw)
  To: sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ
  Cc: andrew-g2DYL2Zd6BY,
	vivien.didelot-4ysUXcep3aM1wj+D4I0NRVaTQe2KTcn/,
	f.fainelli-Re5JQEeQqe8AvxtiuMwx3w,
	shawnguo-DgEjT+Ai2ygdnm+yROfE0A, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	fabio.estevam-3arQi8VN3Tc, ian.ray-JJi787mZWgc,
	nandor.han-JJi787mZWgc, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
	netdev-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	kernel-81qHHgoATdEGFh7si24rbyp2UmYkHbXO

From: Sebastian Reichel <sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
Date: Tue, 23 Jan 2018 16:03:45 +0100

> This adds support for the internal switch found in GE Healthcare
> B450v3, B650v3 and B850v3. All devices use a GPIO bitbanged MDIO
> bus to communicate with the switch and a PCIe based network card
> for exchanging network data. The cpu network data link requires,
> that the switch's internal phy interface is enabled, so support
> for that is added by the first patch in this series.
> 
> The patch series is based on v4.15-rc8.

Series applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2018-01-24  0:23 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-23 15:03 [PATCHv5 0/5] GEHC Bx50 Switch Support Sebastian Reichel
2018-01-23 15:03 ` [PATCHv5 1/5] net: dsa: Support internal phy on 'cpu' port Sebastian Reichel
     [not found]   ` <20180123150350.11031-2-sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
2018-01-23 15:29     ` Florian Fainelli
2018-01-23 15:03 ` [PATCHv5 2/5] ARM: dts: imx6q-bx50v3: Add internal switch Sebastian Reichel
2018-01-23 15:34   ` Florian Fainelli
2018-01-23 15:03 ` [PATCHv5 3/5] ARM: dts: imx6q-b850v3: Add switch port configuration Sebastian Reichel
2018-01-23 15:34   ` Florian Fainelli
2018-01-23 15:03 ` [PATCHv5 4/5] ARM: dts: imx6q-b650v3: " Sebastian Reichel
2018-01-23 15:34   ` Florian Fainelli
2018-01-23 15:03 ` [PATCHv5 5/5] ARM: dts: imx6q-b450v3: " Sebastian Reichel
2018-01-23 15:34   ` Florian Fainelli
     [not found] ` <20180123150350.11031-1-sebastian.reichel-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
2018-01-24  0:23   ` [PATCHv5 0/5] GEHC Bx50 Switch Support David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).