--- /dev/null
+From b64d814257b027e29a474bcd660f6372490138c7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
+Date: Mon, 7 Sep 2020 13:27:17 +0200
+Subject: arm64: dts: marvell: espressobin: Add ethernet switch aliases
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Pali Rohár <pali@kernel.org>
+
+commit b64d814257b027e29a474bcd660f6372490138c7 upstream.
+
+Espressobin boards have 3 ethernet ports and some of them got assigned more
+then one MAC address. MAC addresses are stored in U-Boot environment.
+
+Since commit a2c7023f7075c ("net: dsa: read mac address from DT for slave
+device") kernel can use MAC addresses from DT for particular DSA port.
+
+Currently Espressobin DTS file contains alias just for ethernet0.
+
+This patch defines additional ethernet aliases in Espressobin DTS files, so
+bootloader can fill correct MAC address for DSA switch ports if more MAC
+addresses were specified.
+
+DT alias ethernet1 is used for wan port, DT aliases ethernet2 and ethernet3
+are used for lan ports for both Espressobin revisions (V5 and V7).
+
+Fixes: 5253cb8c00a6f ("arm64: dts: marvell: espressobin: add ethernet alias")
+Cc: <stable@vger.kernel.org> # a2c7023f7075c: dsa: read mac address
+Signed-off-by: Pali Rohár <pali@kernel.org>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Reviewed-by: Andre Heider <a.heider@gmail.com>
+Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
+[pali: Backported Espressobin rev V5 changes to 5.4 and 4.19 versions]
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+--- a/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts
++++ b/arch/arm64/boot/dts/marvell/armada-3720-espressobin.dts
+@@ -21,6 +21,10 @@
+
+ aliases {
+ ethernet0 = ð0;
++ /* for dsa slave device */
++ ethernet1 = &switch0port1;
++ ethernet2 = &switch0port2;
++ ethernet3 = &switch0port3;
+ serial0 = &uart0;
+ serial1 = &uart1;
+ };
+@@ -136,25 +140,25 @@
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+- port@0 {
++ switch0port0: port@0 {
+ reg = <0>;
+ label = "cpu";
+ ethernet = <ð0>;
+ };
+
+- port@1 {
++ switch0port1: port@1 {
+ reg = <1>;
+ label = "wan";
+ phy-handle = <&switch0phy0>;
+ };
+
+- port@2 {
++ switch0port2: port@2 {
+ reg = <2>;
+ label = "lan0";
+ phy-handle = <&switch0phy1>;
+ };
+
+- port@3 {
++ switch0port3: port@3 {
+ reg = <3>;
+ label = "lan1";
+ phy-handle = <&switch0phy2>;
--- /dev/null
+From a2c7023f7075ca9b80f944d3f20f60e6574538e2 Mon Sep 17 00:00:00 2001
+From: Xiaofei Shen <xiaofeis@codeaurora.org>
+Date: Fri, 29 Mar 2019 11:04:58 +0530
+Subject: net: dsa: read mac address from DT for slave device
+
+From: Xiaofei Shen <xiaofeis@codeaurora.org>
+
+commit a2c7023f7075ca9b80f944d3f20f60e6574538e2 upstream.
+
+Before creating a slave netdevice, get the mac address from DTS and
+apply in case it is valid.
+
+Signed-off-by: Xiaofei Shen <xiaofeis@codeaurora.org>
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: Pali Rohár <pali@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ include/net/dsa.h | 1 +
+ net/dsa/dsa2.c | 1 +
+ net/dsa/slave.c | 5 ++++-
+ 3 files changed, 6 insertions(+), 1 deletion(-)
+
+--- a/include/net/dsa.h
++++ b/include/net/dsa.h
+@@ -196,6 +196,7 @@ struct dsa_port {
+ unsigned int index;
+ const char *name;
+ const struct dsa_port *cpu_dp;
++ const char *mac;
+ struct device_node *dn;
+ unsigned int ageing_time;
+ u8 stp_state;
+--- a/net/dsa/dsa2.c
++++ b/net/dsa/dsa2.c
+@@ -261,6 +261,7 @@ static int dsa_port_setup(struct dsa_por
+ int err = 0;
+
+ memset(&dp->devlink_port, 0, sizeof(dp->devlink_port));
++ dp->mac = of_get_mac_address(dp->dn);
+
+ if (dp->type != DSA_PORT_TYPE_UNUSED)
+ err = devlink_port_register(ds->devlink, &dp->devlink_port,
+--- a/net/dsa/slave.c
++++ b/net/dsa/slave.c
+@@ -1313,7 +1313,10 @@ int dsa_slave_create(struct dsa_port *po
+ slave_dev->features = master->vlan_features | NETIF_F_HW_TC;
+ slave_dev->hw_features |= NETIF_F_HW_TC;
+ slave_dev->ethtool_ops = &dsa_slave_ethtool_ops;
+- eth_hw_addr_inherit(slave_dev, master);
++ if (port->mac && is_valid_ether_addr(port->mac))
++ ether_addr_copy(slave_dev->dev_addr, port->mac);
++ else
++ eth_hw_addr_inherit(slave_dev, master);
+ slave_dev->priv_flags |= IFF_NO_QUEUE;
+ slave_dev->netdev_ops = &dsa_slave_netdev_ops;
+ slave_dev->switchdev_ops = &dsa_slave_switchdev_ops;
pm-runtime-resume-the-device-earlier-in-__device_release_driver.patch
perf-core-fix-a-memory-leak-in-perf_event_parse_addr_filter.patch
tools-perf-fix-build-error-in-v4.19.y.patch
+net-dsa-read-mac-address-from-dt-for-slave-device.patch
+arm64-dts-marvell-espressobin-add-ethernet-switch-aliases.patch