From: Zoltan HERPAI Date: Fri, 7 Aug 2026 07:59:30 +0000 (+0000) Subject: uboot-zynq: bump to 2026.04 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F24659%2Fhead;p=thirdparty%2Fopenwrt.git uboot-zynq: bump to 2026.04 While at it, replace the SPI MAC address read patch with a rebased series from the Digilent u-boot repository. It should be noted that this feature is still not upstreamed. Refresh patches as required. As most of the zynq boards are merged into xilinx_zynq_virt, add UBOOT_CONFIG to the respective boards in the Makefile. Compile-tested: all Zynq boards Runtime-tested: Antminer S9 Signed-off-by: Zoltan HERPAI --- diff --git a/package/boot/uboot-zynq/Makefile b/package/boot/uboot-zynq/Makefile index c376e93d516..1784537eac8 100644 --- a/package/boot/uboot-zynq/Makefile +++ b/package/boot/uboot-zynq/Makefile @@ -7,9 +7,8 @@ include $(TOPDIR)/rules.mk -PKG_VERSION:=2019.07 - -PKG_HASH:=bff4fa77e8da17521c030ca4c5b947a056c1b1be4d3e6ee8637020b8d50251d0 +PKG_VERSION:=2026.04 +PKG_HASH:=ac7c04b8b7004923b00a4e5d6699c5df4d21233bac9fda690d8cfbc209fff2fd include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/u-boot.mk @@ -28,6 +27,7 @@ endef define U-Boot/zc702 NAME:=Xilinx ZC702 Dev Board BUILD_DEVICES:=xlnx_zynq-zc702 + UBOOT_CONFIG:=xilinx_zynq_virt endef define U-Boot/antminer-s9 @@ -39,16 +39,19 @@ endef define U-Boot/zed NAME:=Avnet Digilent ZedBoard Dev Board BUILD_DEVICES:=avnet_zynq-zed + UBOOT_CONFIG:=xilinx_zynq_virt endef define U-Boot/zybo NAME:=Digilent Zybo Dev Board BUILD_DEVICES:=digilent_zynq-zybo + UBOOT_CONFIG:=xilinx_zynq_virt endef define U-Boot/zybo_z7 NAME:=Digilent Zybo Z7 board BUILD_DEVICES:=digilent_zynq-zybo-z7 + UBOOT_CONFIG:=xilinx_zynq_virt endef UBOOT_TARGETS := \ diff --git a/package/boot/uboot-zynq/patches/010-fix_dtc_compilation_on_host_gcc10.patch b/package/boot/uboot-zynq/patches/010-fix_dtc_compilation_on_host_gcc10.patch deleted file mode 100644 index 6abb1516081..00000000000 --- a/package/boot/uboot-zynq/patches/010-fix_dtc_compilation_on_host_gcc10.patch +++ /dev/null @@ -1,46 +0,0 @@ -From e33a814e772cdc36436c8c188d8c42d019fda639 Mon Sep 17 00:00:00 2001 -From: Dirk Mueller -Date: Tue, 14 Jan 2020 18:53:41 +0100 -Subject: [PATCH] scripts/dtc: Remove redundant YYLOC global declaration - -gcc 10 will default to -fno-common, which causes this error at link -time: - - (.text+0x0): multiple definition of `yylloc'; dtc-lexer.lex.o (symbol from plugin):(.text+0x0): first defined here - -This is because both dtc-lexer as well as dtc-parser define the same -global symbol yyloc. Before with -fcommon those were merged into one -defintion. The proper solution would be to to mark this as "extern", -however that leads to: - - dtc-lexer.l:26:16: error: redundant redeclaration of 'yylloc' [-Werror=redundant-decls] - 26 | extern YYLTYPE yylloc; - | ^~~~~~ -In file included from dtc-lexer.l:24: -dtc-parser.tab.h:127:16: note: previous declaration of 'yylloc' was here - 127 | extern YYLTYPE yylloc; - | ^~~~~~ -cc1: all warnings being treated as errors - -which means the declaration is completely redundant and can just be -dropped. - -Signed-off-by: Dirk Mueller -Signed-off-by: David Gibson -[robh: cherry-pick from upstream] -Cc: stable@vger.kernel.org -Signed-off-by: Rob Herring ---- - scripts/dtc/dtc-lexer.l | 1 - - 1 file changed, 1 deletion(-) - ---- a/scripts/dtc/dtc-lexer.l -+++ b/scripts/dtc/dtc-lexer.l -@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n - #include "srcpos.h" - #include "dtc-parser.tab.h" - --YYLTYPE yylloc; - extern bool treesource_error; - - /* CAUTION: this will stop working if we ever use yyless() or yyunput() */ diff --git a/package/boot/uboot-zynq/patches/110-digilent-net-Add-entry-point-for-setting-zynq_get-MA.patch b/package/boot/uboot-zynq/patches/110-digilent-net-Add-entry-point-for-setting-zynq_get-MA.patch new file mode 100644 index 00000000000..4e87562380d --- /dev/null +++ b/package/boot/uboot-zynq/patches/110-digilent-net-Add-entry-point-for-setting-zynq_get-MA.patch @@ -0,0 +1,50 @@ +From a054c5d9082ebcb7b4db2ece543b1e52473d3cd1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ionel=20B=C4=83di=C8=99or?= +Date: Tue, 27 Feb 2024 23:32:04 +0200 +Subject: [PATCH 110/115] digilent: net: Add entry point for setting zynq_get + MAC address from QSPI +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +To set zynq_gem mac address from qspi OTP or regular an entry +point is needed + +Signed-off-by: Ionel Bădișor +--- + drivers/net/zynq_gem.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +--- a/drivers/net/zynq_gem.c ++++ b/drivers/net/zynq_gem.c +@@ -316,6 +316,22 @@ static int phywrite(struct zynq_gem_priv + ZYNQ_GEM_PHYMNTNC_OP_W_MASK, &data); + } + ++__weak int zynq_board_read_rom_ethaddr(unsigned char *ethaddr) ++{ ++ return -ENOSYS; ++} ++ ++static int zynq_gem_read_rom_mac(struct udevice *dev) ++{ ++ struct eth_pdata *pdata = dev_get_plat(dev); ++ ++ if (!pdata) ++ return -ENOSYS; ++ ++ return zynq_board_read_rom_ethaddr(pdata->enetaddr); ++} ++ ++ + static int zynq_gem_setup_mac(struct udevice *dev) + { + u32 i, macaddrlow, macaddrhigh; +@@ -1036,6 +1052,7 @@ static const struct eth_ops zynq_gem_ops + .free_pkt = zynq_gem_free_pkt, + .stop = zynq_gem_halt, + .write_hwaddr = zynq_gem_setup_mac, ++ .read_rom_hwaddr = zynq_gem_read_rom_mac, + }; + + static int zynq_gem_of_to_plat(struct udevice *dev) diff --git a/package/boot/uboot-zynq/patches/110-zybo-z7-read-mac-address-from-SPI-flash-memory.patch b/package/boot/uboot-zynq/patches/110-zybo-z7-read-mac-address-from-SPI-flash-memory.patch deleted file mode 100644 index 00dce9a02e9..00000000000 --- a/package/boot/uboot-zynq/patches/110-zybo-z7-read-mac-address-from-SPI-flash-memory.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 67db0da72eb7ed87ebaaeb8a26891cb2cf916500 Mon Sep 17 00:00:00 2001 -From: Luis Araneda -Date: Sun, 21 Jul 2019 23:24:12 -0400 -Subject: [U-Boot] [PATCH] arm: zynq: read mac address from SPI flash memory - -Implement a method for reading the MAC address from an -SPI flash memory. -In particular, this method is used by the Zybo Z7 board -to read the MAC address from the OTP region in the SPI NOR -memory - -Signed-off-by: Luis Araneda ---- -As of 2019-08-18, this patch has not been accepted by upstream U-Boot. -Keep this patch until an alternative is accepted by upstream. ---- - board/xilinx/common/board.c | 28 ++++++++++++++++++++++++++++ - configs/zynq_zybo_z7_defconfig | 3 +++ - drivers/misc/Kconfig | 17 +++++++++++++++++ - 3 files changed, 48 insertions(+) - ---- a/board/xilinx/common/board.c -+++ b/board/xilinx/common/board.c -@@ -6,7 +6,10 @@ - - #include - #include -+#include -+#include - #include -+#include - - int zynq_board_read_rom_ethaddr(unsigned char *ethaddr) - { -@@ -34,5 +37,30 @@ int zynq_board_read_rom_ethaddr(unsigned - debug("%s: I2C EEPROM MAC %pM\n", __func__, ethaddr); - #endif - -+#if defined(CONFIG_MAC_ADDR_IN_SPI_FLASH) -+ struct spi_flash *flash; -+ struct udevice *dev; -+ -+ ret = spi_flash_probe_bus_cs(CONFIG_SF_DEFAULT_BUS, -+ CONFIG_SF_DEFAULT_CS, -+ 0, 0, &dev); -+ if (ret) { -+ printf("SPI(bus:%u cs:%u) probe failed\n", -+ CONFIG_SF_DEFAULT_BUS, -+ CONFIG_SF_DEFAULT_CS); -+ return 0; -+ } -+ -+ flash = dev_get_uclass_priv(dev); -+ flash->read_opcode = CONFIG_MAC_ADDR_SPI_FLASH_READ_CMD; -+ -+ if (spi_flash_read_dm(dev, -+ CONFIG_MAC_ADDR_SPI_FLASH_DATA_OFFSET, -+ 6, ethaddr)) -+ printf("SPI MAC address read failed\n"); -+ -+ device_remove(dev, DM_REMOVE_NORMAL); -+#endif -+ - return ret; - } ---- a/configs/zynq_zybo_z7_defconfig -+++ b/configs/zynq_zybo_z7_defconfig -@@ -42,6 +42,9 @@ CONFIG_DFU_RAM=y - CONFIG_FPGA_XILINX=y - CONFIG_FPGA_ZYNQPL=y - CONFIG_DM_GPIO=y -+CONFIG_MAC_ADDR_IN_SPI_FLASH=y -+CONFIG_MAC_ADDR_SPI_FLASH_READ_CMD=0x4b -+CONFIG_MAC_ADDR_SPI_FLASH_DATA_OFFSET=0x20 - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_ZYNQ=y - CONFIG_SPI_FLASH=y ---- a/drivers/misc/Kconfig -+++ b/drivers/misc/Kconfig -@@ -366,6 +366,23 @@ config SYS_I2C_EEPROM_ADDR_OVERFLOW - - endif - -+config MAC_ADDR_IN_SPI_FLASH -+ bool "MAC address in SPI flash" -+ help -+ Read MAC address from an SPI flash memory -+ -+if MAC_ADDR_IN_SPI_FLASH -+ -+config MAC_ADDR_SPI_FLASH_READ_CMD -+ hex "Read command for the SPI flash memory" -+ default 0 -+ -+config MAC_ADDR_SPI_FLASH_DATA_OFFSET -+ hex "Offset of MAC data in SPI flash memory" -+ default 0 -+ -+endif -+ - config GDSYS_RXAUI_CTRL - bool "Enable gdsys RXAUI control driver" - depends on MISC diff --git a/package/boot/uboot-zynq/patches/111-digilent-net-Set-QSPI-read-settings-via-Kconfig.patch b/package/boot/uboot-zynq/patches/111-digilent-net-Set-QSPI-read-settings-via-Kconfig.patch new file mode 100644 index 00000000000..685509fc0bc --- /dev/null +++ b/package/boot/uboot-zynq/patches/111-digilent-net-Set-QSPI-read-settings-via-Kconfig.patch @@ -0,0 +1,97 @@ +From 7c3fc243b9eb1ff5bea421b6d7923007f323b194 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ionel=20B=C4=83di=C8=99or?= +Date: Thu, 29 Feb 2024 00:29:38 +0200 +Subject: [PATCH 111/115] digilent: net: Set QSPI read settings via Kconfig + +ZYNQ_GEM_MAC_FROM_QSPI: + Enable reading MAC address form QSPI flash + +ZYNQ_GEM_MAC_IN_OTP: + Read MAC address QSPI flash region to OTP if not set read + form regular region + + QSPI_IS_SM: + Set SPI read operation code for Spansion Micron QSPI flash + + QSPI_IS_WB: + Set SPI read operation code for Winbond QSPI flash + +ZYNQ_GEM_ETH_MAC_QSPI_OFFSET: + Offset in QSPI flash (form bosh regular or OTP region) +--- + arch/arm/mach-zynq/Kconfig | 1 + + arch/arm/mach-zynqmp/Kconfig | 1 + + board/digilent/Kconfig | 48 ++++++++++++++++++++++++++++++++++++ + 3 files changed, 50 insertions(+) + create mode 100644 board/digilent/Kconfig + +--- a/arch/arm/mach-zynq/Kconfig ++++ b/arch/arm/mach-zynq/Kconfig +@@ -57,6 +57,7 @@ config ZYNQ_SDHCI_MAX_FREQ + default 52000000 + + source "board/xilinx/Kconfig" ++source "board/digilent/Kconfig" + source "board/xilinx/zynq/Kconfig" + source "board/BuR/zynq/Kconfig" + +--- a/arch/arm/mach-zynqmp/Kconfig ++++ b/arch/arm/mach-zynqmp/Kconfig +@@ -213,5 +213,6 @@ config CMD_ZYNQMP + BOOT.BIN using Xilinx bootgen tool. + + source "board/xilinx/Kconfig" ++source "board/digilent/Kconfig" + + endif +--- /dev/null ++++ b/board/digilent/Kconfig +@@ -0,0 +1,48 @@ ++# SPDX-License-Identifier: GPL-2.0 ++# ++# Copyright (c) 2023, Ionel Bădișor ++ ++ ++if ARCH_ZYNQ || ARCH_ZYNQMP ++ ++config ZYNQ_GEM_MAC_FROM_QSPI ++ bool "Read MAC address form QSPI" ++ help ++ Enable to read MAC address from mac ++ ++ if ZYNQ_GEM_MAC_FROM_QSPI ++ ++ config ZYNQ_GEM_MAC_IN_OTP ++ bool "Read MAC address form QSPI OTP section" ++ help ++ Specify OTP section of QPSI for reading ++ This requires custom read operation code to be set ++ according to used IC. ++ ++ if ZYNQ_GEM_MAC_IN_OTP ++ ++ config QSPI_IS_SM ++ bool "Read MAC address form Spansion Micron QSPI flash " ++ help ++ QSPI IC is Spanssion ++ ++ config QSPI_IS_WB ++ bool "Read MAC address form Winbond QSPI flash" ++ depends on !QPSI_IS_SM ++ help ++ QSPI IC is Winbond ++ ++ endif ++ ++ config ZYNQ_GEM_ETH_MAC_QSPI_OFFSET ++ hex "Ethernet mac offset in QSPI" ++ #default 0x20 if QSPI_IS_SM ++ #default 0x1000 if QSPI_IS_WB ++ #default 0x1fff000 if genesyszu ++ depends on DM_SPI ++ help ++ Set MAC offset for QSPI (regular or OTP address space) ++ ++ endif ++ ++endif diff --git a/package/boot/uboot-zynq/patches/112-digilent-net-Set-MAC-address-from-QPSI-flash.patch b/package/boot/uboot-zynq/patches/112-digilent-net-Set-MAC-address-from-QPSI-flash.patch new file mode 100644 index 00000000000..14a4ab9da55 --- /dev/null +++ b/package/boot/uboot-zynq/patches/112-digilent-net-Set-MAC-address-from-QPSI-flash.patch @@ -0,0 +1,142 @@ +From 91a2231d2d2de6f721918d6c336683c1ce9bd698 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ionel=20B=C4=83di=C8=99or?= +Date: Thu, 29 Feb 2024 13:12:34 +0200 +Subject: [PATCH 112/115] digilent: net: Set MAC address from QPSI flash + +--- + board/digilent/common/eth_mac_from_qspi.c | 113 ++++++++++++++++++++++ + board/xilinx/common/Makefile | 3 + + 2 files changed, 116 insertions(+) + create mode 100644 board/digilent/common/eth_mac_from_qspi.c + +--- /dev/null ++++ b/board/digilent/common/eth_mac_from_qspi.c +@@ -0,0 +1,112 @@ ++ ++#define LOG_CATEGORY UCLASS_ETH ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++int zynq_board_read_rom_ethaddr(unsigned char *ethaddr) ++{ ++ int ret = -EINVAL; ++ u32 offset; ++ struct spi_flash *flash; ++ flash = spi_flash_probe(CONFIG_SF_DEFAULT_BUS, CONFIG_SF_DEFAULT_CS, ++ CONFIG_SF_DEFAULT_SPEED, CONFIG_SF_DEFAULT_MODE); ++ ++ if (!flash) { ++ printf("no flash\n"); ++ printf("SPI(bus:%u cs:%u) probe failed\n", CONFIG_SF_DEFAULT_BUS, ++ CONFIG_SF_DEFAULT_CS); ++ return 0; ++ } ++ ++#if defined(ZYNQ_GEM_MAC_IN_OTP) ++ ++ NOT VERIFIED ++ // use #include "../../../drivers/mtd/spi/sf_internal.h" to access ++ // flash->id ++ ++ // or try to match flash->name instead of flash->info-> id?? ++ printf("%s: Flash Device name: %s\n", __func__, flash->name); ++ ++ printf("%s: Flash Device ID: %02Xh %02Xh %02Xh\n", __func__, ++ flash->info->id[0], flash->info->id[1], flash->info->id[2]); ++ ++#define ID_S25FL128S 0x012018 ++#define ID_MT25QL128ABA_N25Q128A 0x20BA18 ++#define ID_W25Q128JV 0xEF7018 ++ ++#define CMD_OTP_SPANSION_MICRON_READ_ARRAY_FAST 0x4b ++#define CMD_OTP_WINBOND_READ_ARRAY_FAST 0x48 ++ ++#define SPI_OTP_OFFSET_SPANSION_MICRON 0x20 ++#define SPI_OTP_OFFSET_WINBOND 0x1000 ++ ++ u32 id = ((u32)flash->info->id[0] << 16) | ((u32)flash->info->id[1] << 8) | ++ (u32)flash->info->id[2]; ++ if (id == ID_S25FL128S) { ++ debug("%s: SPI Flash Spansion identified. Reading SPI MAC address from " ++ "OTP area\n", ++ __func__); ++ /* ++ * Set the SPI MAC offset ++ */ ++ offset = ++ SPI_OTP_OFFSET_SPANSION_MICRON + CONFIG_ZYNQ_GEM_SPI_MAC_OFFSET; ++ /* ++ * Set the cmd to otp read ++ */ ++ flash->read_opcode = CMD_OTP_SPANSION_MICRON_READ_ARRAY_FAST; ++ } else if (id == ID_MT25QL128ABA_N25Q128A) { ++ debug("%s: SPI Flash Micron identified. Reading SPI MAC address from " ++ "OTP area\n", ++ __func__); ++ /* ++ * Set the SPI MAC offset ++ */ ++ offset = ++ SPI_OTP_OFFSET_SPANSION_MICRON + CONFIG_ZYNQ_GEM_SPI_MAC_OFFSET; ++ /* ++ * Set the cmd to otp read ++ */ ++ flash->read_opcode = CMD_OTP_SPANSION_MICRON_READ_ARRAY_FAST; ++ } else if (id == ID_W25Q128JV) { ++ debug("%s: SPI Flash Winbond identified. Reading SPI MAC address from " ++ "OTP area\n", ++ __func__); ++ /* ++ * Set the SPI MAC offset ++ */ ++ offset = SPI_OTP_OFFSET_WINBOND + CONFIG_ZYNQ_GEM_SPI_MAC_OFFSET; ++ /* ++ * Set the cmd to otp read ++ */ ++ flash->read_opcode = CMD_OTP_WINBOND_READ_ARRAY_FAST; ++ } else { ++ printf("%s: Reading SPI MAC address from OTP area is not supported on " ++ "this flash\n", ++ __func__); ++ return -EINVAL; ++ } ++#else ++ printf("%s: Reading SPI MAC address from offset %08lxh\n", __func__, ++ CONFIG_ZYNQ_GEM_ETH_MAC_QSPI_OFFSET); ++ /* ++ * Set the SPI MAC offset ++ */ ++ offset = CONFIG_ZYNQ_GEM_ETH_MAC_QSPI_OFFSET; ++#endif ++ ++ if ((ret = spi_flash_read(flash, offset, 6, ethaddr))) ++ printf("%s:SPI MAC address read failed\n", __func__); ++ else ++ printf("%s: SPI ethaddr: %pM\n", __func__, ethaddr); ++ ++ return ret; ++} +--- a/board/xilinx/common/Makefile ++++ b/board/xilinx/common/Makefile +@@ -4,6 +4,7 @@ + # Michal Simek + # + ++ + obj-y += board.o + ifndef CONFIG_ARCH_ZYNQ + obj-$(CONFIG_DISPLAY_CPUINFO) += cpu-info.o +@@ -11,3 +12,5 @@ endif + ifndef CONFIG_XPL_BUILD + obj-$(CONFIG_CMD_FRU) += fru.o fru_ops.o + endif ++ ++obj-$(CONFIG_ZYNQ_GEM_MAC_FROM_QSPI) += ../../digilent/common/eth_mac_from_qspi.o diff --git a/package/boot/uboot-zynq/patches/113-digilent-net-Set-Kconfig-defaults-for-ZYNQ_GEM_MAC_Q.patch b/package/boot/uboot-zynq/patches/113-digilent-net-Set-Kconfig-defaults-for-ZYNQ_GEM_MAC_Q.patch new file mode 100644 index 00000000000..fb2c3d51729 --- /dev/null +++ b/package/boot/uboot-zynq/patches/113-digilent-net-Set-Kconfig-defaults-for-ZYNQ_GEM_MAC_Q.patch @@ -0,0 +1,54 @@ +From b679bae8cee44b076260d5f89b76f1f6b080d030 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ionel=20B=C4=83di=C8=99or?= +Date: Tue, 5 Mar 2024 16:10:01 +0200 +Subject: [PATCH 113/115] digilent: net: Set Kconfig defaults for + ZYNQ_GEM_MAC_QSPI_OFFSET + +--- + board/digilent/Kconfig | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +--- a/board/digilent/Kconfig ++++ b/board/digilent/Kconfig +@@ -7,6 +7,7 @@ if ARCH_ZYNQ || ARCH_ZYNQMP + + config ZYNQ_GEM_MAC_FROM_QSPI + bool "Read MAC address form QSPI" ++ depends on DM_SPI + help + Enable to read MAC address from mac + +@@ -15,7 +16,7 @@ config ZYNQ_GEM_MAC_FROM_QSPI + config ZYNQ_GEM_MAC_IN_OTP + bool "Read MAC address form QSPI OTP section" + help +- Specify OTP section of QPSI for reading ++ Specify OTP section of QSPI for reading + This requires custom read operation code to be set + according to used IC. + +@@ -28,18 +29,18 @@ config ZYNQ_GEM_MAC_FROM_QSPI + + config QSPI_IS_WB + bool "Read MAC address form Winbond QSPI flash" +- depends on !QPSI_IS_SM ++ depends on !QSPI_IS_SM + help + QSPI IC is Winbond + + endif + +- config ZYNQ_GEM_ETH_MAC_QSPI_OFFSET ++ config ZYNQ_GEM_MAC_QSPI_OFFSET + hex "Ethernet mac offset in QSPI" +- #default 0x20 if QSPI_IS_SM +- #default 0x1000 if QSPI_IS_WB +- #default 0x1fff000 if genesyszu +- depends on DM_SPI ++ depends on ZYNQ_GEM_MAC_FROM_QSPI || ZYNQ_GEM_MAC_IN_OTP || QSPI_IS_SM || QSPI_IS_WB ++ default 0x20 if ZYNQ_GEM_MAC_IN_OTP && QSPI_IS_SM && !QSPI_IS_WB ++ default 0x1000 if ZYNQ_GEM_MAC_IN_OTP && !QSPI_IS_SM && QSPI_IS_WB ++ default 0x0 if ZYNQ_GEM_MAC_FROM_QSPI && !ZYNQ_GEM_MAC_IN_OTP + help + Set MAC offset for QSPI (regular or OTP address space) + diff --git a/package/boot/uboot-zynq/patches/114-digilent-net-Read-MAC-address-from-OTP-section-of-QS.patch b/package/boot/uboot-zynq/patches/114-digilent-net-Read-MAC-address-from-OTP-section-of-QS.patch new file mode 100644 index 00000000000..d6acbd3da41 --- /dev/null +++ b/package/boot/uboot-zynq/patches/114-digilent-net-Read-MAC-address-from-OTP-section-of-QS.patch @@ -0,0 +1,114 @@ +From b5462bb0714194d34e5395ad690ba7a91636cf11 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ionel=20B=C4=83di=C8=99or?= +Date: Tue, 5 Mar 2024 17:14:22 +0200 +Subject: [PATCH 114/115] digilent: net: Read MAC address from OTP section of + QSPI flash + +--- + board/digilent/common/eth_mac_from_qspi.c | 86 ++++------------------- + 1 file changed, 15 insertions(+), 71 deletions(-) + +--- a/board/digilent/common/eth_mac_from_qspi.c ++++ b/board/digilent/common/eth_mac_from_qspi.c +@@ -26,83 +26,27 @@ int zynq_board_read_rom_ethaddr(unsigned + return 0; + } + +-#if defined(ZYNQ_GEM_MAC_IN_OTP) ++ printf("%s: Flash Device name: %s\n", __func__, flash->name); + +- NOT VERIFIED +- // use #include "../../../drivers/mtd/spi/sf_internal.h" to access +- // flash->id +- +- // or try to match flash->name instead of flash->info-> id?? +- printf("%s: Flash Device name: %s\n", __func__, flash->name); +- +- printf("%s: Flash Device ID: %02Xh %02Xh %02Xh\n", __func__, +- flash->info->id[0], flash->info->id[1], flash->info->id[2]); +- +-#define ID_S25FL128S 0x012018 +-#define ID_MT25QL128ABA_N25Q128A 0x20BA18 +-#define ID_W25Q128JV 0xEF7018 +- +-#define CMD_OTP_SPANSION_MICRON_READ_ARRAY_FAST 0x4b +-#define CMD_OTP_WINBOND_READ_ARRAY_FAST 0x48 +- +-#define SPI_OTP_OFFSET_SPANSION_MICRON 0x20 +-#define SPI_OTP_OFFSET_WINBOND 0x1000 +- +- u32 id = ((u32)flash->info->id[0] << 16) | ((u32)flash->info->id[1] << 8) | +- (u32)flash->info->id[2]; +- if (id == ID_S25FL128S) { +- debug("%s: SPI Flash Spansion identified. Reading SPI MAC address from " +- "OTP area\n", +- __func__); +- /* +- * Set the SPI MAC offset +- */ +- offset = +- SPI_OTP_OFFSET_SPANSION_MICRON + CONFIG_ZYNQ_GEM_SPI_MAC_OFFSET; +- /* +- * Set the cmd to otp read +- */ +- flash->read_opcode = CMD_OTP_SPANSION_MICRON_READ_ARRAY_FAST; +- } else if (id == ID_MT25QL128ABA_N25Q128A) { +- debug("%s: SPI Flash Micron identified. Reading SPI MAC address from " +- "OTP area\n", +- __func__); +- /* +- * Set the SPI MAC offset +- */ +- offset = +- SPI_OTP_OFFSET_SPANSION_MICRON + CONFIG_ZYNQ_GEM_SPI_MAC_OFFSET; +- /* +- * Set the cmd to otp read +- */ +- flash->read_opcode = CMD_OTP_SPANSION_MICRON_READ_ARRAY_FAST; +- } else if (id == ID_W25Q128JV) { +- debug("%s: SPI Flash Winbond identified. Reading SPI MAC address from " +- "OTP area\n", +- __func__); +- /* +- * Set the SPI MAC offset +- */ +- offset = SPI_OTP_OFFSET_WINBOND + CONFIG_ZYNQ_GEM_SPI_MAC_OFFSET; +- /* +- * Set the cmd to otp read +- */ +- flash->read_opcode = CMD_OTP_WINBOND_READ_ARRAY_FAST; +- } else { +- printf("%s: Reading SPI MAC address from OTP area is not supported on " +- "this flash\n", +- __func__); +- return -EINVAL; +- } +-#else +- printf("%s: Reading SPI MAC address from offset %08lxh\n", __func__, +- CONFIG_ZYNQ_GEM_ETH_MAC_QSPI_OFFSET); +- /* +- * Set the SPI MAC offset +- */ +- offset = CONFIG_ZYNQ_GEM_ETH_MAC_QSPI_OFFSET; ++#if defined (CONFIG_ZYNQ_GEM_MAC_IN_OTP) ++ ++ #if defined (CONFIG_QSPI_IS_SM) // For Spansion and Micron OPCODE ++ #define CMD_OTP_READ_ARRAY_FAST 0x4b ++ #elif defined (CONFIG_QSPI_IS_WB) // For Winbond OPCODE ++ #define CMD_OTP_READ_ARRAY_FAST 0x48 ++ #else ++ #define CMD_OTP_READ_ARRAY_FAST "NOT IMPLEMENTED" ++ #endif ++ ++ //change read opcode only when OTP is used ++ flash->read_opcode = CMD_OTP_READ_ARRAY_FAST; + #endif + ++ printf("%s: Reading SPI MAC address from offset %08lxh\n", __func__, ++ CONFIG_ZYNQ_GEM_MAC_QSPI_OFFSET); ++ ++ offset = CONFIG_ZYNQ_GEM_MAC_QSPI_OFFSET; ++ + if ((ret = spi_flash_read(flash, offset, 6, ethaddr))) + printf("%s:SPI MAC address read failed\n", __func__); + else diff --git a/package/boot/uboot-zynq/patches/115-enable-read-mac-from-qspi.patch b/package/boot/uboot-zynq/patches/115-enable-read-mac-from-qspi.patch new file mode 100644 index 00000000000..94686b750cf --- /dev/null +++ b/package/boot/uboot-zynq/patches/115-enable-read-mac-from-qspi.patch @@ -0,0 +1,7 @@ +--- a/configs/xilinx_zynq_virt_defconfig ++++ b/configs/xilinx_zynq_virt_defconfig +@@ -156,3 +156,4 @@ CONFIG_USB_GADGET_DOWNLOAD=y + CONFIG_SYS_TIMER_COUNTS_DOWN=y + CONFIG_MBEDTLS_LIB=y + CONFIG_SPL_GZIP=y ++CONFIG_ZYNQ_GEM_MAC_FROM_QSPI=y diff --git a/package/boot/uboot-zynq/patches/120-antminer-s9-restore-sdboot-capability.patch b/package/boot/uboot-zynq/patches/120-antminer-s9-restore-sdboot-capability.patch index cd90fd22c9c..d21eef80f4a 100644 --- a/package/boot/uboot-zynq/patches/120-antminer-s9-restore-sdboot-capability.patch +++ b/package/boot/uboot-zynq/patches/120-antminer-s9-restore-sdboot-capability.patch @@ -1,6 +1,6 @@ --- a/include/configs/bitmain_antminer_s9.h +++ b/include/configs/bitmain_antminer_s9.h -@@ -20,6 +20,34 @@ +@@ -17,6 +17,34 @@ "initrd_high=0xefff000\0" \ "devnum=0\0" \ "wdstop=mw f8005000 ABC000\0" \