[openwrt/openwrt] uboot-mvebu: update to version 2024.04

LEDE Commits lede-commits at lists.infradead.org
Fri Apr 19 01:55:16 PDT 2024


robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/040af127e72d47d69c28b1e15f55e1467d705225

commit 040af127e72d47d69c28b1e15f55e1467d705225
Author: Robert Marko <robert.marko at sartura.hr>
AuthorDate: Mon Apr 8 10:57:58 2024 +0200

    uboot-mvebu: update to version 2024.04
    
    Lets update to 2024.04 in order to drop all of the patches as they have
    been merged upstream.
    
    Tested on Methode eDPU.
    
    Signed-off-by: Robert Marko <robert.marko at sartura.hr>
---
 package/boot/uboot-mvebu/Makefile                  |   4 +-
 ...spressobin-move-FDT-fixup-into-a-separate.patch |  54 ----
 ...spressobin-move-network-setup-into-a-sepa.patch |  53 ----
 ...arm-mvebu-eDPU-support-new-board-revision.patch | 297 ---------------------
 ...learfog-read-number-of-ddr-channels-from-.patch |  85 ------
 ...learfog-support-512MB-memory-size-from-tl.patch |  31 ---
 6 files changed, 2 insertions(+), 522 deletions(-)

diff --git a/package/boot/uboot-mvebu/Makefile b/package/boot/uboot-mvebu/Makefile
index e6120959f6..c92e7f4f19 100644
--- a/package/boot/uboot-mvebu/Makefile
+++ b/package/boot/uboot-mvebu/Makefile
@@ -8,10 +8,10 @@
 include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
-PKG_VERSION:=2023.07.02
+PKG_VERSION:=2024.04
 PKG_RELEASE:=1
 
-PKG_HASH:=6b6a48581c14abb0f95bd87c1af4d740922406d7b801002a9f94727fdde021d5
+PKG_HASH:=18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a
 
 include $(INCLUDE_DIR)/u-boot.mk
 include $(INCLUDE_DIR)/package.mk
diff --git a/package/boot/uboot-mvebu/patches/0001-arm-mvebu-Espressobin-move-FDT-fixup-into-a-separate.patch b/package/boot/uboot-mvebu/patches/0001-arm-mvebu-Espressobin-move-FDT-fixup-into-a-separate.patch
deleted file mode 100644
index 59bdc38add..0000000000
--- a/package/boot/uboot-mvebu/patches/0001-arm-mvebu-Espressobin-move-FDT-fixup-into-a-separate.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 8621f6d22a9589651c6f25742294dd19a26db430 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robert.marko at sartura.hr>
-Date: Thu, 3 Aug 2023 13:34:13 +0200
-Subject: [PATCH 1/3] arm: mvebu: Espressobin: move FDT fixup into a separate
- function
-
-Currently, Esspresobin FDT is being fixed up directly in ft_board_setup()
-which makes it hard to add support for any other board to be fixed up.
-
-So, lets just move the FDT fixup code to a separate function and call it
-if compatible matches, there should be no functional change.
-
-Signed-off-by: Robert Marko <robert.marko at sartura.hr>
----
- board/Marvell/mvebu_armada-37xx/board.c | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
---- a/board/Marvell/mvebu_armada-37xx/board.c
-+++ b/board/Marvell/mvebu_armada-37xx/board.c
-@@ -359,18 +359,14 @@ int last_stage_init(void)
- #endif
- 
- #ifdef CONFIG_OF_BOARD_SETUP
--int ft_board_setup(void *blob, struct bd_info *bd)
-+static int espressobin_fdt_setup(void *blob)
- {
--#ifdef CONFIG_ENV_IS_IN_SPI_FLASH
- 	int ret;
- 	int spi_off;
- 	int parts_off;
- 	int part_off;
- 
- 	/* Fill SPI MTD partitions for Linux kernel on Espressobin */
--	if (!of_machine_is_compatible("globalscale,espressobin"))
--		return 0;
--
- 	spi_off = fdt_node_offset_by_compatible(blob, -1, "jedec,spi-nor");
- 	if (spi_off < 0)
- 		return 0;
-@@ -455,6 +451,14 @@ int ft_board_setup(void *blob, struct bd
- 		return 0;
- 	}
- 
-+	return 0;
-+}
-+
-+int ft_board_setup(void *blob, struct bd_info *bd)
-+{
-+#ifdef CONFIG_ENV_IS_IN_SPI_FLASH
-+	if (of_machine_is_compatible("globalscale,espressobin"))
-+		return espressobin_fdt_setup(blob);
- #endif
- 	return 0;
- }
diff --git a/package/boot/uboot-mvebu/patches/0002-arm-mvebu-Espressobin-move-network-setup-into-a-sepa.patch b/package/boot/uboot-mvebu/patches/0002-arm-mvebu-Espressobin-move-network-setup-into-a-sepa.patch
deleted file mode 100644
index 175deb397f..0000000000
--- a/package/boot/uboot-mvebu/patches/0002-arm-mvebu-Espressobin-move-network-setup-into-a-sepa.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 3f8c18894a50fd45b81a807f217893f289500bc6 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robert.marko at sartura.hr>
-Date: Thu, 3 Aug 2023 14:24:31 +0200
-Subject: [PATCH 2/3] arm: mvebu: Espressobin: move network setup into a
- separate function
-
-Currently, Esspresobin switch is being setup directly in last_stage_init()
-which makes it hard to add support for any other board to be setup.
-
-So, lets just move the switch setup code to a separate function and call it
-if compatible matches, there should be no functional change.
-
-Signed-off-by: Robert Marko <robert.marko at sartura.hr>
----
- board/Marvell/mvebu_armada-37xx/board.c | 16 +++++++++++-----
- 1 file changed, 11 insertions(+), 5 deletions(-)
-
---- a/board/Marvell/mvebu_armada-37xx/board.c
-+++ b/board/Marvell/mvebu_armada-37xx/board.c
-@@ -300,15 +300,11 @@ static int mii_multi_chip_mode_write(str
- 	return 0;
- }
- 
--/* Bring-up board-specific network stuff */
--int last_stage_init(void)
-+static int espressobin_last_stage_init(void)
- {
- 	struct udevice *bus;
- 	ofnode node;
- 
--	if (!of_machine_is_compatible("globalscale,espressobin"))
--		return 0;
--
- 	node = ofnode_by_compatible(ofnode_null(), "marvell,orion-mdio");
- 	if (!ofnode_valid(node) ||
- 	    uclass_get_device_by_ofnode(UCLASS_MDIO, node, &bus) ||
-@@ -356,6 +352,16 @@ int last_stage_init(void)
- 
- 	return 0;
- }
-+
-+/* Bring-up board-specific network stuff */
-+int last_stage_init(void)
-+{
-+
-+	if (of_machine_is_compatible("globalscale,espressobin"))
-+		return espressobin_last_stage_init();
-+
-+	return 0;
-+}
- #endif
- 
- #ifdef CONFIG_OF_BOARD_SETUP
diff --git a/package/boot/uboot-mvebu/patches/0003-arm-mvebu-eDPU-support-new-board-revision.patch b/package/boot/uboot-mvebu/patches/0003-arm-mvebu-eDPU-support-new-board-revision.patch
deleted file mode 100644
index c27549e4d4..0000000000
--- a/package/boot/uboot-mvebu/patches/0003-arm-mvebu-eDPU-support-new-board-revision.patch
+++ /dev/null
@@ -1,297 +0,0 @@
-From 83c00ee665b8dde813458b2b07cf97ce8409248d Mon Sep 17 00:00:00 2001
-From: Robert Marko <robert.marko at sartura.hr>
-Date: Fri, 4 Aug 2023 22:39:06 +0200
-Subject: [PATCH 3/3] arm: mvebu: eDPU: support new board revision
-
-There is a new eDPU revision that uses Marvell 88E6361 switch onboard.
-We can rely on detecting the switch to enable and fixup the Linux DTS
-so a single DTS can be used.
-
-There is currently no support for the 88E6361 switch and thus no working
-networking in U-Boot, so we disable both ports.
-
-Signed-off-by: Robert Marko <robert.marko at sartura.hr>
----
- arch/arm/dts/armada-3720-eDPU-u-boot.dtsi |  13 ++-
- arch/arm/dts/armada-3720-eDPU.dts         |  47 ++++++++
- board/Marvell/mvebu_armada-37xx/board.c   | 125 ++++++++++++++++++++++
- configs/eDPU_defconfig                    |   2 +
- 4 files changed, 182 insertions(+), 5 deletions(-)
-
---- a/arch/arm/dts/armada-3720-eDPU-u-boot.dtsi
-+++ b/arch/arm/dts/armada-3720-eDPU-u-boot.dtsi
-@@ -32,14 +32,17 @@
- 	bootph-all;
- };
- 
--&eth0 {
--	/* G.hn does not work without additional configuration */
--	status = "disabled";
--};
--
- &eth1 {
- 	fixed-link {
- 		speed = <1000>;
- 		full-duplex;
- 	};
- };
-+
-+/*
-+ * eDPU v2 has a MV88E6361 switch on the MDIO bus and U-boot is used
-+ * to patch the Linux DTS if its found so enable MDIO by default.
-+ */
-+&mdio {
-+	status = "okay";
-+};
---- a/arch/arm/dts/armada-3720-eDPU.dts
-+++ b/arch/arm/dts/armada-3720-eDPU.dts
-@@ -12,3 +12,50 @@
- &eth0 {
- 	phy-mode = "2500base-x";
- };
-+
-+/*
-+ * External MV88E6361 switch is only available on v2 of the board.
-+ * U-Boot will enable the MDIO bus and switch nodes.
-+ */
-+&mdio {
-+	status = "disabled";
-+	pinctrl-names = "default";
-+	pinctrl-0 = <&smi_pins>;
-+
-+	/* Actual device is MV88E6361 */
-+	switch: switch at 0 {
-+		compatible = "marvell,mv88e6190";
-+		#address-cells = <1>;
-+		#size-cells = <0>;
-+		reg = <0>;
-+		status = "disabled";
-+
-+		ports {
-+			#address-cells = <1>;
-+			#size-cells = <0>;
-+
-+			port at 0 {
-+				reg = <0>;
-+				label = "cpu";
-+				phy-mode = "2500base-x";
-+				managed = "in-band-status";
-+				ethernet = <&eth0>;
-+			};
-+
-+			port at 9 {
-+				reg = <9>;
-+				label = "downlink";
-+				phy-mode = "2500base-x";
-+				managed = "in-band-status";
-+			};
-+
-+			port at a {
-+				reg = <10>;
-+				label = "uplink";
-+				phy-mode = "2500base-x";
-+				managed = "in-band-status";
-+				sfp = <&sfp_eth1>;
-+			};
-+		};
-+	};
-+};
---- a/board/Marvell/mvebu_armada-37xx/board.c
-+++ b/board/Marvell/mvebu_armada-37xx/board.c
-@@ -13,6 +13,7 @@
- #include <mmc.h>
- #include <miiphy.h>
- #include <phy.h>
-+#include <fdt_support.h>
- #include <asm/global_data.h>
- #include <asm/io.h>
- #include <asm/arch/cpu.h>
-@@ -49,6 +50,7 @@ DECLARE_GLOBAL_DATA_PTR;
- /* Single-chip mode */
- /* Switch Port Registers */
- #define MVEBU_SW_LINK_CTRL_REG		(1)
-+#define MVEBU_SW_PORT_SWITCH_ID		(3)
- #define MVEBU_SW_PORT_CTRL_REG		(4)
- #define MVEBU_SW_PORT_BASE_VLAN		(6)
- 
-@@ -56,6 +58,8 @@ DECLARE_GLOBAL_DATA_PTR;
- #define MVEBU_G2_SMI_PHY_CMD_REG	(24)
- #define MVEBU_G2_SMI_PHY_DATA_REG	(25)
- 
-+#define SWITCH_88E6361_PRODUCT_NUMBER	0x2610
-+
- /*
-  * Memory Controller Registers
-  *
-@@ -72,6 +76,27 @@ DECLARE_GLOBAL_DATA_PTR;
- #define A3700_MC_CTRL2_SDRAM_TYPE_DDR3	2
- #define A3700_MC_CTRL2_SDRAM_TYPE_DDR4	3
- 
-+static bool is_edpu_plus(void)
-+{
-+	struct udevice *bus;
-+	ofnode node;
-+	int val;
-+
-+	node = ofnode_by_compatible(ofnode_null(), "marvell,orion-mdio");
-+	if (!ofnode_valid(node) ||
-+	    uclass_get_device_by_ofnode(UCLASS_MDIO, node, &bus) ||
-+	    device_probe(bus)) {
-+		printf("Cannot find MDIO bus\n");
-+		return -ENODEV;
-+	}
-+
-+	val = dm_mdio_read(bus, 0x0, MDIO_DEVAD_NONE, MVEBU_SW_PORT_SWITCH_ID);
-+	if (val == SWITCH_88E6361_PRODUCT_NUMBER)
-+		return true;
-+	else
-+		return false;
-+}
-+
- int board_early_init_f(void)
- {
- 	return 0;
-@@ -353,6 +378,41 @@ static int espressobin_last_stage_init(v
- 	return 0;
- }
- 
-+static int edpu_plus_last_stage_init(void)
-+{
-+	struct udevice *dev;
-+	int ret;
-+
-+	if (is_edpu_plus()) {
-+		ret = uclass_get_device_by_name(UCLASS_ETH,
-+						"ethernet at 40000",
-+						&dev);
-+		if (!ret) {
-+			device_remove(dev, DM_REMOVE_NORMAL);
-+			device_unbind(dev);
-+		}
-+
-+		/* Currently no networking support on the eDPU+ board */
-+		ret = uclass_get_device_by_name(UCLASS_ETH,
-+						"ethernet at 30000",
-+						&dev);
-+		if (!ret) {
-+			device_remove(dev, DM_REMOVE_NORMAL);
-+			device_unbind(dev);
-+		}
-+	} else {
-+		ret = uclass_get_device_by_name(UCLASS_ETH,
-+						"ethernet at 30000",
-+						&dev);
-+		if (!ret) {
-+			device_remove(dev, DM_REMOVE_NORMAL);
-+			device_unbind(dev);
-+		}
-+	}
-+
-+	return 0;
-+}
-+
- /* Bring-up board-specific network stuff */
- int last_stage_init(void)
- {
-@@ -360,6 +420,9 @@ int last_stage_init(void)
- 	if (of_machine_is_compatible("globalscale,espressobin"))
- 		return espressobin_last_stage_init();
- 
-+	if (of_machine_is_compatible("methode,edpu"))
-+		return edpu_plus_last_stage_init();
-+
- 	return 0;
- }
- #endif
-@@ -460,12 +523,74 @@ static int espressobin_fdt_setup(void *b
- 	return 0;
- }
- 
-+static int edpu_plus_fdt_setup(void *blob)
-+{
-+	const char *ports[] = { "downlink", "uplink" };
-+	uint8_t mac[ETH_ALEN];
-+	const char *path;
-+	int i, ret;
-+
-+	if (is_edpu_plus()) {
-+		ret = fdt_set_status_by_compatible(blob,
-+						   "marvell,orion-mdio",
-+						   FDT_STATUS_OKAY);
-+		if (ret)
-+			printf("Failed to enable MDIO!\n");
-+
-+		ret = fdt_set_status_by_alias(blob,
-+					      "ethernet1",
-+					      FDT_STATUS_DISABLED);
-+		if (ret)
-+			printf("Failed to disable ethernet1!\n");
-+
-+		path = fdt_get_alias(blob, "ethernet0");
-+		if (path)
-+			do_fixup_by_path_string(blob, path, "phy-mode", "2500base-x");
-+		else
-+			printf("Failed to update ethernet0 phy-mode to 2500base-x!\n");
-+
-+		ret = fdt_set_status_by_compatible(blob,
-+						   "marvell,mv88e6190",
-+						   FDT_STATUS_OKAY);
-+		if (ret)
-+			printf("Failed to enable MV88E6361!\n");
-+
-+		/*
-+		 * MAC-s for Uplink and Downlink ports are stored under
-+		 * non standard variable names, so lets manually fixup the
-+		 * switch port nodes to have the desired MAC-s.
-+		 */
-+		for (i = 0; i < 2; i++) {
-+			if (eth_env_get_enetaddr(ports[i], mac)) {
-+				do_fixup_by_prop(blob,
-+						 "label",
-+						 ports[i],
-+						 strlen(ports[i]) + 1,
-+						 "mac-address",
-+						 mac, ARP_HLEN, 1);
-+
-+				do_fixup_by_prop(blob,
-+						 "label",
-+						 ports[i],
-+						 strlen(ports[i]) + 1,
-+						 "local-mac-address",
-+						 mac, ARP_HLEN, 1);
-+			}
-+		}
-+	}
-+
-+	return 0;
-+}
-+
- int ft_board_setup(void *blob, struct bd_info *bd)
- {
- #ifdef CONFIG_ENV_IS_IN_SPI_FLASH
- 	if (of_machine_is_compatible("globalscale,espressobin"))
- 		return espressobin_fdt_setup(blob);
- #endif
-+	if (of_machine_is_compatible("methode,edpu"))
-+		return edpu_plus_fdt_setup(blob);
-+
- 	return 0;
- }
- #endif
---- a/configs/eDPU_defconfig
-+++ b/configs/eDPU_defconfig
-@@ -17,12 +17,14 @@ CONFIG_DEBUG_UART=y
- # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
- CONFIG_FIT=y
- CONFIG_FIT_VERBOSE=y
-+CONFIG_OF_BOARD_SETUP=y
- CONFIG_DISTRO_DEFAULTS=y
- CONFIG_USE_PREBOOT=y
- # CONFIG_DISPLAY_CPUINFO is not set
- # CONFIG_DISPLAY_BOARDINFO is not set
- CONFIG_DISPLAY_BOARDINFO_LATE=y
- CONFIG_BOARD_EARLY_INIT_F=y
-+CONFIG_LAST_STAGE_INIT=y
- CONFIG_SYS_MAXARGS=32
- CONFIG_SYS_PBSIZE=1048
- # CONFIG_CMD_ELF is not set
diff --git a/package/boot/uboot-mvebu/patches/0004-arm-mvebu-clearfog-read-number-of-ddr-channels-from-.patch b/package/boot/uboot-mvebu/patches/0004-arm-mvebu-clearfog-read-number-of-ddr-channels-from-.patch
deleted file mode 100644
index f4db702639..0000000000
--- a/package/boot/uboot-mvebu/patches/0004-arm-mvebu-clearfog-read-number-of-ddr-channels-from-.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 1dbc6d3739869af38e6157cd8b9bc4314ca3c9fe Mon Sep 17 00:00:00 2001
-From: Josua Mayer <josua at solid-run.com>
-Date: Mon, 18 Jul 2022 20:04:54 +0300
-Subject: [PATCH 1/2] arm: mvebu: clearfog: read number of ddr channels from
- tlv data
-
-Extend the existing tlv vendor extension used for ram size by one byte to
-also store the number of ddr channels.
-The length of the tlv entry can indicate whether the new information is
-present. If not default to single channel.
-
-Signed-off-by: Josua Mayer <josua at solid-run.com>
----
- board/solidrun/clearfog/clearfog.c | 14 +++++++++++++-
- board/solidrun/common/tlv_data.c   |  7 ++++++-
- board/solidrun/common/tlv_data.h   |  1 +
- 3 files changed, 20 insertions(+), 2 deletions(-)
-
-diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c
-index 6edb4221551..4f4532b537e 100644
---- a/board/solidrun/clearfog/clearfog.c
-+++ b/board/solidrun/clearfog/clearfog.c
-@@ -36,7 +36,7 @@ DECLARE_GLOBAL_DATA_PTR;
- #define BOARD_GPP_POL_LOW	0x0
- #define BOARD_GPP_POL_MID	0x0
- 
--static struct tlv_data cf_tlv_data;
-+static struct tlv_data cf_tlv_data = { 0 };
- 
- static void cf_read_tlv_data(void)
- {
-@@ -168,6 +168,18 @@ struct mv_ddr_topology_map *mv_ddr_topology_map_get(void)
- 		break;
- 	}
- 
-+	switch (cf_tlv_data.ram_channels) {
-+	default:
-+	case 1:
-+		for (uint8_t i = 0; i < 5; i++)
-+			ifp->as_bus_params[i].cs_bitmask = 0x1;
-+		break;
-+	case 2:
-+		for (uint8_t i = 0; i < 5; i++)
-+			ifp->as_bus_params[i].cs_bitmask = 0x3;
-+		break;
-+	}
-+
- 	/* Return the board topology as defined in the board code */
- 	return &board_topology_map;
- }
-diff --git a/board/solidrun/common/tlv_data.c b/board/solidrun/common/tlv_data.c
-index 11d6e4a1380..cf5824886c3 100644
---- a/board/solidrun/common/tlv_data.c
-+++ b/board/solidrun/common/tlv_data.c
-@@ -45,9 +45,14 @@ static void parse_tlv_vendor_ext(struct tlvinfo_tlv *tlv_entry,
- 
- 	if (val[4] != SR_TLV_CODE_RAM_SIZE)
- 		return;
--	if (tlv_entry->length != 6)
-+	if (tlv_entry->length < 6)
- 		return;
- 	td->ram_size = val[5];
-+
-+	/* extension with additional data field for number of ddr channels */
-+	if (tlv_entry->length >= 7) {
-+		td->ram_channels = val[6];
-+	}
- }
- 
- static void parse_tlv_data(u8 *eeprom, struct tlvinfo_header *hdr,
-diff --git a/board/solidrun/common/tlv_data.h b/board/solidrun/common/tlv_data.h
-index a1432e4b8e1..be3f782ac4a 100644
---- a/board/solidrun/common/tlv_data.h
-+++ b/board/solidrun/common/tlv_data.h
-@@ -10,6 +10,7 @@ struct tlv_data {
- 	/* Store product name of both SOM and carrier */
- 	char tlv_product_name[2][32];
- 	unsigned int ram_size;
-+	uint8_t ram_channels;
- };
- 
- void read_tlv_data(struct tlv_data *td);
--- 
-2.35.3
-
diff --git a/package/boot/uboot-mvebu/patches/0005-arm-mvebu-clearfog-support-512MB-memory-size-from-tl.patch b/package/boot/uboot-mvebu/patches/0005-arm-mvebu-clearfog-support-512MB-memory-size-from-tl.patch
deleted file mode 100644
index 05fb8fdbf1..0000000000
--- a/package/boot/uboot-mvebu/patches/0005-arm-mvebu-clearfog-support-512MB-memory-size-from-tl.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From b1b4941c2e3e16a21dc15604220725cf7f2de7c5 Mon Sep 17 00:00:00 2001
-From: Josua Mayer <josua at solid-run.com>
-Date: Wed, 20 Jul 2022 19:10:56 +0300
-Subject: [PATCH 2/2] arm: mvebu: clearfog: support 512MB memory size from tlv
- eeprom
-
-Handle 2GBit memory size value "2" from tlv eeprom on ddr
-initialisation, to support SoMs with 512MB ddr memory.
-
-Signed-off-by: Josua Mayer <josua at solid-run.com>
----
- board/solidrun/clearfog/clearfog.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c
-index 4f4532b537e..6fa2fe5fe3e 100644
---- a/board/solidrun/clearfog/clearfog.c
-+++ b/board/solidrun/clearfog/clearfog.c
-@@ -159,6 +159,9 @@ struct mv_ddr_topology_map *mv_ddr_topology_map_get(void)
- 	cf_read_tlv_data();
- 
- 	switch (cf_tlv_data.ram_size) {
-+	case 2:
-+		ifp->memory_size = MV_DDR_DIE_CAP_2GBIT;
-+		break;
- 	case 4:
- 	default:
- 		ifp->memory_size = MV_DDR_DIE_CAP_4GBIT;
--- 
-2.35.3
-




More information about the lede-commits mailing list