diff --git a/patches/uboot/2023.07.02/0001-net-mv88e6xxx-fix-missing-SMI-address-initialization.patch b/patches/uboot/2023.07.02/0001-net-mv88e6xxx-fix-missing-SMI-address-initialization.patch new file mode 100644 index 00000000..e052001f --- /dev/null +++ b/patches/uboot/2023.07.02/0001-net-mv88e6xxx-fix-missing-SMI-address-initialization.patch @@ -0,0 +1,51 @@ +From e4213fc62d3d6a6733e3026b63dd6314a6f09ee2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marek=20Moj=C3=ADk?= +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 +Reviewed-by: Marek Behún +Reviewed-by: Stefan Roese +Signed-off-by: Tobias Waldekranz +--- + 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 + diff --git a/patches/uboot/2023.07.02/0001-net-mv88e6xxx-Add-reset-gpios-support.patch b/patches/uboot/2023.07.02/0002-net-mv88e6xxx-Add-reset-gpios-support.patch similarity index 87% rename from patches/uboot/2023.07.02/0001-net-mv88e6xxx-Add-reset-gpios-support.patch rename to patches/uboot/2023.07.02/0002-net-mv88e6xxx-Add-reset-gpios-support.patch index 2cd90250..4fa5c89d 100644 --- a/patches/uboot/2023.07.02/0001-net-mv88e6xxx-Add-reset-gpios-support.patch +++ b/patches/uboot/2023.07.02/0002-net-mv88e6xxx-Add-reset-gpios-support.patch @@ -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 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 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, diff --git a/patches/uboot/2023.07.02/0002-net-mv88e6xxx-Support-clause-45-addressing-on-intern.patch b/patches/uboot/2023.07.02/0003-net-mv88e6xxx-Support-clause-45-addressing-on-intern.patch similarity index 96% rename from patches/uboot/2023.07.02/0002-net-mv88e6xxx-Support-clause-45-addressing-on-intern.patch rename to patches/uboot/2023.07.02/0003-net-mv88e6xxx-Support-clause-45-addressing-on-intern.patch index d6c3d692..90830187 100644 --- a/patches/uboot/2023.07.02/0002-net-mv88e6xxx-Support-clause-45-addressing-on-intern.patch +++ b/patches/uboot/2023.07.02/0003-net-mv88e6xxx-Support-clause-45-addressing-on-intern.patch @@ -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 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 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 @@ diff --git a/patches/uboot/2023.07.02/0003-net-mv88e6xxx-Add-support-for-6393X.patch b/patches/uboot/2023.07.02/0004-net-mv88e6xxx-Add-support-for-6393X.patch similarity index 93% rename from patches/uboot/2023.07.02/0003-net-mv88e6xxx-Add-support-for-6393X.patch rename to patches/uboot/2023.07.02/0004-net-mv88e6xxx-Add-support-for-6393X.patch index fd589454..e03b4b59 100644 --- a/patches/uboot/2023.07.02/0003-net-mv88e6xxx-Add-support-for-6393X.patch +++ b/patches/uboot/2023.07.02/0004-net-mv88e6xxx-Add-support-for-6393X.patch @@ -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 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 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; diff --git a/patches/uboot/2023.07.02/0004-i2c-pcf8575-Properly-address-chip.patch b/patches/uboot/2023.07.02/0005-i2c-pcf8575-Properly-address-chip.patch similarity index 91% rename from patches/uboot/2023.07.02/0004-i2c-pcf8575-Properly-address-chip.patch rename to patches/uboot/2023.07.02/0005-i2c-pcf8575-Properly-address-chip.patch index af84a1c7..fee82725 100644 --- a/patches/uboot/2023.07.02/0004-i2c-pcf8575-Properly-address-chip.patch +++ b/patches/uboot/2023.07.02/0005-i2c-pcf8575-Properly-address-chip.patch @@ -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 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. diff --git a/patches/uboot/2023.07.02/0005-arm64-mvebu-a8k-Add-eFuse-support.patch b/patches/uboot/2023.07.02/0006-arm64-mvebu-a8k-Add-eFuse-support.patch similarity index 98% rename from patches/uboot/2023.07.02/0005-arm64-mvebu-a8k-Add-eFuse-support.patch rename to patches/uboot/2023.07.02/0006-arm64-mvebu-a8k-Add-eFuse-support.patch index 295d4a15..e398f4fe 100644 --- a/patches/uboot/2023.07.02/0005-arm64-mvebu-a8k-Add-eFuse-support.patch +++ b/patches/uboot/2023.07.02/0006-arm64-mvebu-a8k-Add-eFuse-support.patch @@ -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 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: