From 040af127e72d47d69c28b1e15f55e1467d705225 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Mon, 8 Apr 2024 10:57:58 +0200 Subject: [PATCH] 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 --- package/boot/uboot-mvebu/Makefile | 4 +- ...sobin-move-FDT-fixup-into-a-separate.patch | 54 ---- ...sobin-move-network-setup-into-a-sepa.patch | 53 ---- ...vebu-eDPU-support-new-board-revision.patch | 297 ------------------ ...og-read-number-of-ddr-channels-from-.patch | 85 ----- ...og-support-512MB-memory-size-from-tl.patch | 31 -- 6 files changed, 2 insertions(+), 522 deletions(-) delete mode 100644 package/boot/uboot-mvebu/patches/0001-arm-mvebu-Espressobin-move-FDT-fixup-into-a-separate.patch delete mode 100644 package/boot/uboot-mvebu/patches/0002-arm-mvebu-Espressobin-move-network-setup-into-a-sepa.patch delete mode 100644 package/boot/uboot-mvebu/patches/0003-arm-mvebu-eDPU-support-new-board-revision.patch delete mode 100644 package/boot/uboot-mvebu/patches/0004-arm-mvebu-clearfog-read-number-of-ddr-channels-from-.patch delete mode 100644 package/boot/uboot-mvebu/patches/0005-arm-mvebu-clearfog-support-512MB-memory-size-from-tl.patch 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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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; - }; - --ð0 { -- /* G.hn does not work without additional configuration */ -- status = "disabled"; --}; -- - ð1 { - 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 @@ - ð0 { - 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@0 { -+ compatible = "marvell,mv88e6190"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ reg = <0>; -+ status = "disabled"; -+ -+ ports { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ port@0 { -+ reg = <0>; -+ label = "cpu"; -+ phy-mode = "2500base-x"; -+ managed = "in-band-status"; -+ ethernet = <ð0>; -+ }; -+ -+ port@9 { -+ reg = <9>; -+ label = "downlink"; -+ phy-mode = "2500base-x"; -+ managed = "in-band-status"; -+ }; -+ -+ port@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 - #include - #include -+#include - #include - #include - #include -@@ -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@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@30000", -+ &dev); -+ if (!ret) { -+ device_remove(dev, DM_REMOVE_NORMAL); -+ device_unbind(dev); -+ } -+ } else { -+ ret = uclass_get_device_by_name(UCLASS_ETH, -+ "ethernet@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 -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 ---- - 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 -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 ---- - 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 - -- 2.30.2