patches/uboot: Sync with u-boot-2023.07.y-kkit for multi-chip fixes

- Add upstream patch that fixes multi-chip management in the mv88e6xxx
  driver

- Fix detection of 6393X in multi-chip configuration
This commit is contained in:
Tobias Waldekranz
2024-03-13 11:01:15 +01:00
parent 592f89e1f7
commit d602e48d0f
6 changed files with 80 additions and 19 deletions
@@ -0,0 +1,51 @@
From e4213fc62d3d6a6733e3026b63dd6314a6f09ee2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Moj=C3=ADk?= <marek.mojik@nic.cz>
Date: Wed, 6 Dec 2023 15:35:56 +0100
Subject: [PATCH 1/6] net: mv88e6xxx: fix missing SMI address initialization
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Organization: Addiva Elektronik
The mv88e6xxx driver does not currently initialize the smi_addr field, but
instead keeps the default zero value. This leads to driver being unusable
on devices where the switch is not on address zero of the mdio bus. Fix
this problem by reading the SMI address from device tree.
Signed-off-by: Marek Mojík <marek.mojik@nic.cz>
Reviewed-by: Marek Behún <kabel@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
---
drivers/net/mv88e6xxx.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/net/mv88e6xxx.c b/drivers/net/mv88e6xxx.c
index 64e860e324..9be8e3273c 100644
--- a/drivers/net/mv88e6xxx.c
+++ b/drivers/net/mv88e6xxx.c
@@ -679,6 +679,7 @@ static int mv88e6xxx_probe(struct udevice *dev)
{
struct dsa_pdata *dsa_pdata = dev_get_uclass_plat(dev);
struct mv88e6xxx_priv *priv = dev_get_priv(dev);
+ fdt_addr_t smi_addr;
int val, ret;
if (ofnode_valid(dev_ofnode(dev)) &&
@@ -687,6 +688,13 @@ static int mv88e6xxx_probe(struct udevice *dev)
return -ENODEV;
}
+ smi_addr = dev_read_addr(dev);
+ if (smi_addr == FDT_ADDR_T_NONE) {
+ dev_err(dev, "Missing SMI address\n");
+ return -EINVAL;
+ }
+ priv->smi_addr = smi_addr;
+
/* probe internal mdio bus */
ret = mv88e6xxx_probe_mdio(dev);
if (ret)
--
2.34.1
@@ -1,7 +1,8 @@
From 4348261902b60f93c217f07069a2b5613a933c17 Mon Sep 17 00:00:00 2001
From 80ddeb093f24cf1d8a99e92564e07a7180791f8c Mon Sep 17 00:00:00 2001
From: Tobias Waldekranz <tobias@waldekranz.com>
Date: Tue, 17 Oct 2023 13:15:58 +0200
Subject: [PATCH 1/5] net: mv88e6xxx: Add reset-gpios support
Subject: [PATCH 2/6] net: mv88e6xxx: Add reset-gpios support
Organization: Addiva Elektronik
If the switch's RESETn signal is under the CPUs control, release it
before starting the probe.
@@ -12,7 +13,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
1 file changed, 61 insertions(+), 7 deletions(-)
diff --git a/drivers/net/mv88e6xxx.c b/drivers/net/mv88e6xxx.c
index 64e860e324..1bf7cfd6a6 100644
index 9be8e3273c..e70e45ae92 100644
--- a/drivers/net/mv88e6xxx.c
+++ b/drivers/net/mv88e6xxx.c
@@ -33,6 +33,8 @@
@@ -71,7 +72,7 @@ index 64e860e324..1bf7cfd6a6 100644
static int mv88e6xxx_probe(struct udevice *dev)
{
struct dsa_pdata *dsa_pdata = dev_get_uclass_plat(dev);
@@ -684,17 +719,22 @@ static int mv88e6xxx_probe(struct udevice *dev)
@@ -685,7 +720,8 @@ static int mv88e6xxx_probe(struct udevice *dev)
if (ofnode_valid(dev_ofnode(dev)) &&
!ofnode_is_enabled(dev_ofnode(dev))) {
dev_dbg(dev, "switch disabled\n");
@@ -80,6 +81,11 @@ index 64e860e324..1bf7cfd6a6 100644
+ goto err;
}
smi_addr = dev_read_addr(dev);
@@ -695,14 +731,18 @@ static int mv88e6xxx_probe(struct udevice *dev)
}
priv->smi_addr = smi_addr;
+ ret = mv88e6xxx_probe_reset(dev);
+ if (ret)
+ goto err;
@@ -97,7 +103,7 @@ index 64e860e324..1bf7cfd6a6 100644
dev_dbg(dev, "ID=0x%x PORT_BASE=0x%02x GLOBAL1=0x%02x GLOBAL2=0x%02x\n",
priv->id, priv->port_reg_base, priv->global1, priv->global2);
@@ -716,28 +756,40 @@ static int mv88e6xxx_probe(struct udevice *dev)
@@ -724,28 +764,40 @@ static int mv88e6xxx_probe(struct udevice *dev)
priv->port_count = 7;
break;
default:
@@ -142,7 +148,7 @@ index 64e860e324..1bf7cfd6a6 100644
}
static const struct udevice_id mv88e6xxx_ids[] = {
@@ -750,6 +802,8 @@ U_BOOT_DRIVER(mv88e6xxx) = {
@@ -758,6 +810,8 @@ U_BOOT_DRIVER(mv88e6xxx) = {
.id = UCLASS_DSA,
.of_match = mv88e6xxx_ids,
.probe = mv88e6xxx_probe,
@@ -1,8 +1,9 @@
From d87aea2f0d0acfa0d54adb20a980256c0ba95023 Mon Sep 17 00:00:00 2001
From c31794d78337da82cf41ffbcb9e696e42759aa12 Mon Sep 17 00:00:00 2001
From: Tobias Waldekranz <tobias@waldekranz.com>
Date: Tue, 17 Oct 2023 13:20:19 +0200
Subject: [PATCH 2/5] net: mv88e6xxx: Support clause 45 addressing on internal
Subject: [PATCH 3/6] net: mv88e6xxx: Support clause 45 addressing on internal
MDIO bus
Organization: Addiva Elektronik
This is needed to access SERDES registers on newer chips, like the
6393X.
@@ -13,7 +14,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
1 file changed, 106 insertions(+), 7 deletions(-)
diff --git a/drivers/net/mv88e6xxx.c b/drivers/net/mv88e6xxx.c
index 1bf7cfd6a6..eddac332e0 100644
index e70e45ae92..99f234ae87 100644
--- a/drivers/net/mv88e6xxx.c
+++ b/drivers/net/mv88e6xxx.c
@@ -114,6 +114,9 @@
@@ -1,7 +1,8 @@
From c801299f06f0e5c95bd597fe0ce4ad6c3df9a444 Mon Sep 17 00:00:00 2001
From c94723526672f1e5555b7545c13256edb7bd7557 Mon Sep 17 00:00:00 2001
From: Tobias Waldekranz <tobias@waldekranz.com>
Date: Tue, 17 Oct 2023 13:22:00 +0200
Subject: [PATCH 3/5] net: mv88e6xxx: Add support for 6393X
Subject: [PATCH 4/6] net: mv88e6xxx: Add support for 6393X
Organization: Addiva Elektronik
Only built-in copper PHYs are supported as access ports. Support
10GBASE-R SERDES connection to CPU.
@@ -12,7 +13,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
1 file changed, 130 insertions(+), 4 deletions(-)
diff --git a/drivers/net/mv88e6xxx.c b/drivers/net/mv88e6xxx.c
index eddac332e0..4a4a3ae0b1 100644
index 99f234ae87..6f5cfe0155 100644
--- a/drivers/net/mv88e6xxx.c
+++ b/drivers/net/mv88e6xxx.c
@@ -74,6 +74,7 @@
@@ -170,7 +171,7 @@ index eddac332e0..4a4a3ae0b1 100644
*/
priv->port_reg_base = 0x10;
priv->id = mv88e6xxx_get_switch_id(dev);
+ if (priv->id == 0xfff0) {
+ if (priv->id == 0xfff0 || priv->id == PORT_SWITCH_ID_6393) {
+ /*
+ * Look for a newer device in which ports start at
+ * offset 0 (6390/6393 and compatible switches).
@@ -182,7 +183,7 @@ index eddac332e0..4a4a3ae0b1 100644
if (priv->id != 0xfff0) {
priv->global1 = 0x1B;
priv->global2 = 0x1C;
@@ -844,6 +967,7 @@ static int mv88e6xxx_probe(struct udevice *dev)
@@ -852,6 +975,7 @@ static int mv88e6xxx_probe(struct udevice *dev)
case PORT_SWITCH_ID_6176:
case PORT_SWITCH_ID_6240:
case PORT_SWITCH_ID_6352:
@@ -190,7 +191,7 @@ index eddac332e0..4a4a3ae0b1 100644
priv->port_count = 11;
break;
case PORT_SWITCH_ID_6020:
@@ -863,15 +987,17 @@ static int mv88e6xxx_probe(struct udevice *dev)
@@ -871,15 +995,17 @@ static int mv88e6xxx_probe(struct udevice *dev)
if (ret < 0)
goto err_remove_reset;
@@ -1,7 +1,8 @@
From 5013dadfd3ba92eba930f8ea0f88c0f34b8c55a5 Mon Sep 17 00:00:00 2001
From c39245a2d92d6f851dfcb8f573af873a05d4a5b8 Mon Sep 17 00:00:00 2001
From: Tobias Waldekranz <tobias@waldekranz.com>
Date: Fri, 20 Oct 2023 13:19:41 +0200
Subject: [PATCH 4/5] i2c: pcf8575: Properly address chip
Subject: [PATCH 5/6] i2c: pcf8575: Properly address chip
Organization: Addiva Elektronik
These devices hold a simple shift register that is accessed without
any "register" setup.
@@ -1,7 +1,8 @@
From c0495a607652aef38a4d4480ebdb6dd45e3dd9b9 Mon Sep 17 00:00:00 2001
From 967f7f88c88e1a72d7cf389b5b3b6f184788006f Mon Sep 17 00:00:00 2001
From: Tobias Waldekranz <tobias@waldekranz.com>
Date: Tue, 24 Oct 2023 22:23:44 +0200
Subject: [PATCH 5/5] arm64: mvebu: a8k: Add eFuse support
Subject: [PATCH 6/6] arm64: mvebu: a8k: Add eFuse support
Organization: Addiva Elektronik
Add support for reading and burning LD and HD fuses. Use a specialized
commandline implementation over the standard "fuse" command because: