From b6c2422448927e292e4725c796bb62061f22dafa Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sat, 26 Oct 2024 15:18:50 +0100 Subject: [PATCH 01/72] generic: mtk_wed: fix path of MT7988 WO firmware commit eee3c695f3 ("linux-firmware: add offloading firmware for MT7988") added mt7988_wo_{0,1}.bin in the 'mediatek/mt7988' directory while driver currently expects the files in the 'mediatek' directory. Import pending patch which changes the path in the driver header now that the firmware has been added. Signed-off-by: Daniel Golle --- ...k_wed-fix-path-of-MT7988-WO-firmware.patch | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 target/linux/generic/pending-6.6/736-net-ethernet-mtk_wed-fix-path-of-MT7988-WO-firmware.patch diff --git a/target/linux/generic/pending-6.6/736-net-ethernet-mtk_wed-fix-path-of-MT7988-WO-firmware.patch b/target/linux/generic/pending-6.6/736-net-ethernet-mtk_wed-fix-path-of-MT7988-WO-firmware.patch new file mode 100644 index 0000000000..c82f3512c6 --- /dev/null +++ b/target/linux/generic/pending-6.6/736-net-ethernet-mtk_wed-fix-path-of-MT7988-WO-firmware.patch @@ -0,0 +1,59 @@ +From patchwork Sat Oct 26 13:52:25 2024 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +X-Patchwork-Submitter: Daniel Golle +X-Patchwork-Id: 13852245 +X-Patchwork-Delegate: kuba@kernel.org +Date: Sat, 26 Oct 2024 14:52:25 +0100 +From: Daniel Golle +To: linux-mediatek@lists.infradead.org, + linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, + netdev@vger.kernel.org, Sujuan Chen , + AngeloGioacchino Del Regno , + Matthias Brugger , + Paolo Abeni , Jakub Kicinski , + Eric Dumazet , + "David S. Miller" , + Andrew Lunn , + Lorenzo Bianconi , + Mark Lee , + Sean Wang , Felix Fietkau , + John Crispin +Subject: [PATCH net] net: ethernet: mtk_wed: fix path of MT7988 WO firmware +Message-ID: +Precedence: bulk +X-Mailing-List: netdev@vger.kernel.org +List-Id: +List-Subscribe: +List-Unsubscribe: +MIME-Version: 1.0 +Content-Disposition: inline +X-Patchwork-Delegate: kuba@kernel.org + +linux-firmware commit 808cba84 ("mtk_wed: add firmware for mt7988 +Wireless Ethernet Dispatcher") added mt7988_wo_{0,1}.bin in the +'mediatek/mt7988' directory while driver current expects the files in +the 'mediatek' directory. + +Change path in the driver header now that the firmware has been added. + +Fixes: e2f64db13aa1 ("net: ethernet: mtk_wed: introduce WED support for MT7988") +Signed-off-by: Daniel Golle +--- + drivers/net/ethernet/mediatek/mtk_wed_wo.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/net/ethernet/mediatek/mtk_wed_wo.h ++++ b/drivers/net/ethernet/mediatek/mtk_wed_wo.h +@@ -91,8 +91,8 @@ enum mtk_wed_dummy_cr_idx { + #define MT7981_FIRMWARE_WO "mediatek/mt7981_wo.bin" + #define MT7986_FIRMWARE_WO0 "mediatek/mt7986_wo_0.bin" + #define MT7986_FIRMWARE_WO1 "mediatek/mt7986_wo_1.bin" +-#define MT7988_FIRMWARE_WO0 "mediatek/mt7988_wo_0.bin" +-#define MT7988_FIRMWARE_WO1 "mediatek/mt7988_wo_1.bin" ++#define MT7988_FIRMWARE_WO0 "mediatek/mt7988/mt7988_wo_0.bin" ++#define MT7988_FIRMWARE_WO1 "mediatek/mt7988/mt7988_wo_1.bin" + + #define MTK_WO_MCU_CFG_LS_BASE 0 + #define MTK_WO_MCU_CFG_LS_HW_VER_ADDR (MTK_WO_MCU_CFG_LS_BASE + 0x000) From c8d5abd62b70137c70bf12e83b6d0708b980abb3 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Fri, 25 Oct 2024 18:15:41 +0100 Subject: [PATCH 02/72] kernel: enable Multi-Path TCP for !SMALL_FLASH targets Expose Kernel's CONFIG_MPTCP option and enable it by default for !SMALL_FLASH targets. The idea behind enabling it by default is to allow users of the binary distribution to make use of MPTCP tunneling for link aggregation. Using MPTCP for link aggregation is an often discussed topic in the forum and there is even a whole OpenWrt fork (MPTCPRouter) just for that. Enabling the kernel-side of the story by default will allow using MPTCP on vanilla OpenWrt without having to build anything from source. See also https://openwrt.org/docs/guide-user/network/mptcp Signed-off-by: Daniel Golle --- config/Config-kernel.in | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/config/Config-kernel.in b/config/Config-kernel.in index 4bd2cde135..43ed9eaf36 100644 --- a/config/Config-kernel.in +++ b/config/Config-kernel.in @@ -1204,6 +1204,20 @@ config KERNEL_PAGE_POOL_STATS bool "Page pool stats support" depends on KERNEL_PAGE_POOL +config KERNEL_MPTCP + bool "Multi-Path TCP support" + default y if !SMALL_FLASH + help + Select this option to enable support for Multi-Path TCP. + Increases the compressed kernel size by ~214kB (as of Linux 6.6). + +if KERNEL_IPV6 +config KERNEL_MPTCP_IPV6 + bool "IPv6 support for Multipath TCP" + depends on KERNEL_MPTCP + default KERNEL_MPTCP +endif + # # NFS related symbols # From a2aabc9a7a4ec8a66477fbdde84a73b5942b460e Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sat, 26 Oct 2024 01:35:29 +0100 Subject: [PATCH 03/72] kernel: add MultiPath TCP diag kernel module Add INET diag socket monitoring interface module for MultiPath TCP. It allows using native Linux socket diagnostic tools such as 'ss' for Multipath TCP connections. Co-authored-by: Rodrigo B. de Sousa Martins Signed-off-by: sKy King <29267720+sKyissKy@users.noreply.github.com> Link: https://github.com/openwrt/openwrt/pull/12884 Signed-off-by: Hauke Mehrtens Signed-off-by: Daniel Golle --- package/kernel/linux/modules/netsupport.mk | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk index 02d8329720..9f349d34ee 100644 --- a/package/kernel/linux/modules/netsupport.mk +++ b/package/kernel/linux/modules/netsupport.mk @@ -1494,6 +1494,23 @@ endef $(eval $(call KernelPackage,inet-diag)) +define KernelPackage/inet-mptcp-diag + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=INET diag support for MultiPath TCP + DEPENDS:=@KERNEL_MPTCP +kmod-inet-diag + KCONFIG:=CONFIG_INET_MPTCP_DIAG + FILES:=$(LINUX_DIR)/net/mptcp/mptcp_diag.ko + AUTOLOAD:=$(call AutoProbe,mptcp_diag) +endef + +define KernelPackage/inet-mptcp-diag/description +Support for INET (MultiPath TCP) socket monitoring interface used by +native Linux tools such as ss. +endef + +$(eval $(call KernelPackage,inet-mptcp-diag)) + + define KernelPackage/xdp-sockets-diag SUBMENU:=$(NETWORK_SUPPORT_MENU) TITLE:=PF_XDP sockets monitoring interface support for ss utility From 63ea5710d94c67ce2d8a39ee504b3a3896eded73 Mon Sep 17 00:00:00 2001 From: Marius Dinu Date: Sat, 26 Oct 2024 20:10:55 +0300 Subject: [PATCH 04/72] kernel: add missing CONFIG_DM_AUDIT The option shows up when kmod-dm and CONFIG_KERNEL_AUDIT are selected. Signed-off-by: Marius Dinu Link: https://github.com/openwrt/openwrt/pull/16793 Signed-off-by: Hauke Mehrtens --- target/linux/generic/config-6.6 | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6 index efe8d11279..8b22cc4035 100644 --- a/target/linux/generic/config-6.6 +++ b/target/linux/generic/config-6.6 @@ -1393,6 +1393,7 @@ CONFIG_DMA_DECLARE_COHERENT=y CONFIG_DMA_NONCOHERENT_MMAP=y # CONFIG_DMA_RESTRICTED_POOL is not set # CONFIG_DMA_SHARED_BUFFER is not set +# CONFIG_DM_AUDIT is not set # CONFIG_DM_CACHE is not set # CONFIG_DM_CLONE is not set # CONFIG_DM_DEBUG is not set From 5fdd18243eecf405737939bde553e14b6eec0043 Mon Sep 17 00:00:00 2001 From: Til Kaiser Date: Sun, 27 Oct 2024 14:05:50 +0100 Subject: [PATCH 05/72] xdp-tools: re-add vlan_hdr struct Drop the patch to re-add the vlan_hdr struct because it is required now to build xdp-filter. Signed-off-by: Til Kaiser Link: https://github.com/openwrt/openwrt/pull/16798 Signed-off-by: Christian Marangi --- ...xdp-drop-vlan_hdr-as-already-defined.patch | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 package/network/utils/xdp-tools/patches/021-headers-xdp-drop-vlan_hdr-as-already-defined.patch diff --git a/package/network/utils/xdp-tools/patches/021-headers-xdp-drop-vlan_hdr-as-already-defined.patch b/package/network/utils/xdp-tools/patches/021-headers-xdp-drop-vlan_hdr-as-already-defined.patch deleted file mode 100644 index d508e489ea..0000000000 --- a/package/network/utils/xdp-tools/patches/021-headers-xdp-drop-vlan_hdr-as-already-defined.patch +++ /dev/null @@ -1,31 +0,0 @@ -From bc2a11227b5bed29d33926d5ff7e707228db9e87 Mon Sep 17 00:00:00 2001 -From: Christian Marangi -Date: Wed, 18 Jan 2023 20:07:58 +0100 -Subject: [PATCH] headers: xdp: drop vlan_hdr as already defined - -Drop vlan_hdr as already defined by bpf headers. - -Signed-off-by: Christian Marangi ---- - headers/xdp/parsing_helpers.h | 10 ---------- - 1 file changed, 10 deletions(-) - ---- a/headers/xdp/parsing_helpers.h -+++ b/headers/xdp/parsing_helpers.h -@@ -33,16 +33,6 @@ struct hdr_cursor { - }; - - /* -- * struct vlan_hdr - vlan header -- * @h_vlan_TCI: priority and VLAN ID -- * @h_vlan_encapsulated_proto: packet type ID or len -- */ --struct vlan_hdr { -- __be16 h_vlan_TCI; -- __be16 h_vlan_encapsulated_proto; --}; -- --/* - * Struct icmphdr_common represents the common part of the icmphdr and icmp6hdr - * structures. - */ From 65560de58de7a3cde8f960849e3c7c640b9456d8 Mon Sep 17 00:00:00 2001 From: Matteo Croce Date: Sun, 29 Sep 2024 01:01:01 +0200 Subject: [PATCH 06/72] scripts/download.pl: read file natively Read files natively instead of execing /bin/cat. Signed-off-by: Matteo Croce Link: https://github.com/openwrt/openwrt/pull/16784 Signed-off-by: Christian Marangi --- scripts/download.pl | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/scripts/download.pl b/scripts/download.pl index c6c9b8e56c..9966f9f1e6 100755 --- a/scripts/download.pl +++ b/scripts/download.pl @@ -32,6 +32,12 @@ my $download_tool; $url_filename or $url_filename = $filename; +sub cat { + open my $fh, '<', $1 or die "Can't open file $!"; + read $fh, my $file_content, -s $fh; + return $file_content; +} + sub localmirrors { my @mlist; open LM, "$scriptdir/localmirrors" and do { @@ -203,7 +209,7 @@ sub download copy($link, "$target/$filename.dl"); $hash_cmd and do { - if (system("cat '$target/$filename.dl' | $hash_cmd > '$target/$filename.hash'")) { + if (system("$hash_cmd '$target/$filename.dl' > '$target/$filename.hash'")) { print("Failed to generate hash for $filename\n"); return; } @@ -233,7 +239,7 @@ sub download } $hash_cmd and do { - my $sum = `cat "$target/$filename.hash"`; + my $sum = cat("$target/$filename.hash"); $sum =~ /^(\w+)\s*/ or die "Could not generate file hash\n"; $sum = $1; @@ -299,11 +305,11 @@ projectsmirrors '@OPENWRT'; if (-f "$target/$filename") { $hash_cmd and do { - if (system("cat '$target/$filename' | $hash_cmd > '$target/$filename.hash'")) { + if (system("$hash_cmd '$target/$filename' > '$target/$filename.hash'")) { die "Failed to generate hash for $filename\n"; } - my $sum = `cat "$target/$filename.hash"`; + my $sum = cat("$target/$filename.hash"); $sum =~ /^(\w+)\s*/ or die "Could not generate file hash\n"; $sum = $1; From 3cdab2ad447415c4d69c7e7e67c04eb5046915a6 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Tue, 22 Oct 2024 16:21:46 -0700 Subject: [PATCH 07/72] ramips: use platform_get_irq No need for irq_of_parse_and_map since this is in _probe. Signed-off-by: Rosen Penev Link: https://github.com/openwrt/openwrt/pull/16771 Signed-off-by: Christian Marangi --- .../linux/ramips/files/drivers/net/ethernet/ralink/esw_rt3050.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/esw_rt3050.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/esw_rt3050.c index c744c13773..cafa28e7a4 100644 --- a/target/linux/ramips/files/drivers/net/ethernet/ralink/esw_rt3050.c +++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/esw_rt3050.c @@ -1396,7 +1396,7 @@ static int esw_probe(struct platform_device *pdev) return -ENOMEM; esw->dev = &pdev->dev; - esw->irq = irq_of_parse_and_map(np, 0); + esw->irq = platform_get_irq(pdev, 0); esw->base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(esw->base)) return PTR_ERR(esw->base); From e35f0493b1dd3cce1754d3ff93f88ac62f2ab390 Mon Sep 17 00:00:00 2001 From: Kevin Zhang Date: Sun, 27 Oct 2024 01:12:01 -0400 Subject: [PATCH 08/72] uboot-rockchip: add support for NanoPi R3S This commit adds u-boot support for the NanoPi R3S. Signed-off-by: Kevin Zhang Link: https://github.com/openwrt/openwrt/pull/16738 Signed-off-by: Hauke Mehrtens --- package/boot/uboot-rockchip/Makefile | 8 + ...rockchip-add-FriendlyElec-NanoPi-R3S.patch | 661 ++++++++++++++++++ 2 files changed, 669 insertions(+) create mode 100644 package/boot/uboot-rockchip/patches/100-rockchip-add-FriendlyElec-NanoPi-R3S.patch diff --git a/package/boot/uboot-rockchip/Makefile b/package/boot/uboot-rockchip/Makefile index dd22ac390e..7070ca973d 100644 --- a/package/boot/uboot-rockchip/Makefile +++ b/package/boot/uboot-rockchip/Makefile @@ -160,6 +160,13 @@ define U-Boot/rk3566/Default TPL:=rk3566_ddr_1056MHz_v1.21.bin endef +define U-Boot/nanopi-r3s-rk3566 + $(U-Boot/rk3566/Default) + NAME:=NanoPi R3S + BUILD_DEVICES:= \ + friendlyarm_nanopi-r3s +endef + define U-Boot/radxa-cm3-io-rk3566 $(U-Boot/rk3566/Default) NAME:=CM3 IO @@ -305,6 +312,7 @@ UBOOT_TARGETS := \ rock64-rk3328 \ rock-pi-e-rk3328 \ rock-pi-e-v3-rk3328 \ + nanopi-r3s-rk3566 \ radxa-cm3-io-rk3566 \ radxa-zero-3-rk3566 \ rock-3c-rk3566 \ diff --git a/package/boot/uboot-rockchip/patches/100-rockchip-add-FriendlyElec-NanoPi-R3S.patch b/package/boot/uboot-rockchip/patches/100-rockchip-add-FriendlyElec-NanoPi-R3S.patch new file mode 100644 index 0000000000..65d4b0416e --- /dev/null +++ b/package/boot/uboot-rockchip/patches/100-rockchip-add-FriendlyElec-NanoPi-R3S.patch @@ -0,0 +1,661 @@ +--- /dev/null ++++ b/arch/arm/dts/rk3566-nanopi-r3s-u-boot.dtsi +@@ -0,0 +1,25 @@ ++// SPDX-License-Identifier: GPL-2.0-or-later OR MIT ++/* ++ * Copyright (c) 2022 FriendlyElec Computer Tech. Co., Ltd. ++ * (http://www.friendlyelec.com) ++ * ++ * Copyright (c) 2023 Tianling Shen ++ * ++ * Copyright (c) 2024 Kevin Zhang ++ */ ++ ++#include "rk356x-u-boot.dtsi" ++ ++&sdhci { ++ cap-mmc-highspeed; ++ mmc-hs200-1_8v; ++ mmc-hs400-1_8v; ++ mmc-hs400-enhanced-strobe; ++ pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>; ++}; ++ ++&vcc5v0_usb { ++ /delete-property/ regulator-always-on; ++ /delete-property/ regulator-boot-on; ++}; ++ +--- /dev/null ++++ b/configs/nanopi-r3s-rk3566_defconfig +@@ -0,0 +1,73 @@ ++CONFIG_ARM=y ++CONFIG_SKIP_LOWLEVEL_INIT=y ++CONFIG_SYS_HAS_NONCACHED_MEMORY=y ++CONFIG_COUNTER_FREQUENCY=24000000 ++CONFIG_ARCH_ROCKCHIP=y ++CONFIG_DEFAULT_DEVICE_TREE="rk3566-nanopi-r3s" ++CONFIG_ROCKCHIP_RK3568=y ++CONFIG_TARGET_NANOPI_R3S_RK3566=y ++# CONFIG_OF_UPSTREAM is not set ++CONFIG_SPL_SERIAL=y ++CONFIG_DEBUG_UART_BASE=0xFE660000 ++CONFIG_DEBUG_UART_CLOCK=24000000 ++CONFIG_SYS_LOAD_ADDR=0xc00800 ++CONFIG_PCI=y ++CONFIG_DEBUG_UART=y ++CONFIG_FIT=y ++CONFIG_FIT_VERBOSE=y ++CONFIG_SPL_FIT_SIGNATURE=y ++CONFIG_SPL_LOAD_FIT=y ++CONFIG_LEGACY_IMAGE_FORMAT=y ++CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-nanopi-r3s.dtb" ++# CONFIG_DISPLAY_CPUINFO is not set ++CONFIG_DISPLAY_BOARDINFO_LATE=y ++CONFIG_SPL_MAX_SIZE=0x40000 ++CONFIG_SPL_PAD_TO=0x7f8000 ++# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++CONFIG_SPL_ATF=y ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_I2C=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y ++CONFIG_CMD_PMIC=y ++CONFIG_CMD_REGULATOR=y ++# CONFIG_SPL_DOS_PARTITION is not set ++CONFIG_SPL_OF_CONTROL=y ++CONFIG_OF_LIVE=y ++CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" ++CONFIG_SPL_DM_SEQ_ALIAS=y ++CONFIG_SPL_REGMAP=y ++CONFIG_SPL_SYSCON=y ++CONFIG_SPL_CLK=y ++CONFIG_ROCKCHIP_GPIO=y ++CONFIG_SYS_I2C_ROCKCHIP=y ++CONFIG_MISC=y ++CONFIG_SUPPORT_EMMC_RPMB=y ++CONFIG_MMC_DW=y ++CONFIG_MMC_DW_ROCKCHIP=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_SDMA=y ++CONFIG_MMC_SDHCI_ROCKCHIP=y ++CONFIG_PHY_REALTEK=y ++CONFIG_DWC_ETH_QOS=y ++CONFIG_DWC_ETH_QOS_ROCKCHIP=y ++CONFIG_RTL8169=y ++CONFIG_PCIE_DW_ROCKCHIP=y ++CONFIG_PHY_ROCKCHIP_INNO_USB2=y ++CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y ++CONFIG_SPL_PINCTRL=y ++CONFIG_DM_PMIC=y ++CONFIG_PMIC_RK8XX=y ++CONFIG_REGULATOR_RK8XX=y ++CONFIG_PWM_ROCKCHIP=y ++CONFIG_SPL_RAM=y ++CONFIG_BAUDRATE=1500000 ++CONFIG_DEBUG_UART_SHIFT=2 ++CONFIG_SYS_NS16550_MEM32=y ++CONFIG_SYSRESET=y ++CONFIG_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_DWC3=y ++CONFIG_USB_DWC3_GENERIC=y +--- /dev/null ++++ b/arch/arm/dts/rk3566-nanopi-r3s.dts +@@ -0,0 +1,554 @@ ++// SPDX-License-Identifier: GPL-2.0-or-later OR MIT ++/* ++ * Copyright (c) 2020 Rockchip Electronics Co., Ltd. ++ * ++ * Copyright (c) 2024 FriendlyElec Computer Tech. Co., Ltd. ++ * (http://www.friendlyelec.com) ++ * ++ * Copyright (c) 2024 Tianling Shen ++ */ ++ ++/dts-v1/; ++#include ++#include ++#include ++#include ++#include ++#include "rk3566.dtsi" ++ ++/ { ++ model = "FriendlyElec NanoPi R3S"; ++ compatible = "friendlyarm,nanopi-r3s", "rockchip,rk3566"; ++ ++ aliases { ++ ethernet0 = &gmac1; ++ mmc0 = &sdhci; ++ mmc1 = &sdmmc0; ++ }; ++ ++ chosen: chosen { ++ stdout-path = "serial2:1500000n8"; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&reset_button_pin>; ++ ++ button-reset { ++ label = "reset"; ++ gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ debounce-interval = <50>; ++ }; ++ }; ++ ++ gpio-leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&power_led_pin>, <&lan_led_pin>, <&wan_led_pin>; ++ ++ power_led: led-0 { ++ color = ; ++ function = LED_FUNCTION_POWER; ++ gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>; ++ default-state = "on"; ++ }; ++ ++ lan_led: led-1 { ++ color = ; ++ function = LED_FUNCTION_LAN; ++ gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ wan_led: led-2 { ++ color = ; ++ function = LED_FUNCTION_WAN; ++ gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_HIGH>; ++ }; ++ }; ++ ++ vcc3v3_sys: regulator-vcc3v3-sys { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3_sys"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ vin-supply = <&vcc5v0_sys>; ++ }; ++ ++ vcc5v0_sys: regulator-vcc5v0-sys { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc5v0_sys"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ vin-supply = <&vdd_usbc>; ++ }; ++ ++ vcc5v0_usb: regulator-vcc5v0_usb { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&vcc5v0_usb_host_en>; ++ regulator-name = "vcc5v0_usb"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ vin-supply = <&vcc5v0_sys>; ++ }; ++ ++ vdd_usbc: regulator-vdd-usbc { ++ compatible = "regulator-fixed"; ++ regulator-name = "vdd_usbc"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ }; ++}; ++ ++&combphy1 { ++ status = "okay"; ++}; ++ ++&combphy2 { ++ status = "okay"; ++}; ++ ++&cpu0 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu2 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu3 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&gmac1 { ++ assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; ++ assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru CLK_MAC1_2TOP>; ++ assigned-clock-rates = <0>, <125000000>; ++ clock_in_out = "output"; ++ phy-mode = "rgmii-id"; ++ phy-handle = <&rgmii_phy1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&gmac1m0_miim ++ &gmac1m0_tx_bus2_level3 ++ &gmac1m0_rx_bus2 ++ &gmac1m0_rgmii_clk_level2 ++ &gmac1m0_rgmii_bus_level3>; ++ status = "okay"; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ vdd_cpu: regulator@1c { ++ compatible = "tcs,tcs4525"; ++ reg = <0x1c>; ++ fcs,suspend-voltage-selector = <1>; ++ regulator-name = "vdd_cpu"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <1150000>; ++ regulator-ramp-delay = <2300>; ++ vin-supply = <&vcc5v0_sys>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ rk809: pmic@20 { ++ compatible = "rockchip,rk809"; ++ reg = <0x20>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ #clock-cells = <1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pmic_int>; ++ system-power-controller; ++ vcc1-supply = <&vcc3v3_sys>; ++ vcc2-supply = <&vcc3v3_sys>; ++ vcc3-supply = <&vcc3v3_sys>; ++ vcc4-supply = <&vcc3v3_sys>; ++ vcc5-supply = <&vcc3v3_sys>; ++ vcc6-supply = <&vcc3v3_sys>; ++ vcc7-supply = <&vcc3v3_sys>; ++ vcc8-supply = <&vcc3v3_sys>; ++ vcc9-supply = <&vcc3v3_sys>; ++ wakeup-source; ++ ++ regulators { ++ vdd_logic: DCDC_REG1 { ++ regulator-name = "vdd_logic"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-initial-mode = <0x2>; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdd_gpu: DCDC_REG2 { ++ regulator-name = "vdd_gpu"; ++ regulator-always-on; ++ regulator-initial-mode = <0x2>; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-name = "vcc_ddr"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-initial-mode = <0x2>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vdd_npu: DCDC_REG4 { ++ regulator-name = "vdd_npu"; ++ regulator-initial-mode = <0x2>; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_1v8: DCDC_REG5 { ++ regulator-name = "vcc_1v8"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda0v9_image: LDO_REG1 { ++ regulator-name = "vdda0v9_image"; ++ regulator-min-microvolt = <950000>; ++ regulator-max-microvolt = <950000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda_0v9: LDO_REG2 { ++ regulator-name = "vdda_0v9"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda0v9_pmu: LDO_REG3 { ++ regulator-name = "vdda0v9_pmu"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vccio_acodec: LDO_REG4 { ++ regulator-name = "vccio_acodec"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vccio_sd: LDO_REG5 { ++ regulator-name = "vccio_sd"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_pmu: LDO_REG6 { ++ regulator-name = "vcc3v3_pmu"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcca_1v8: LDO_REG7 { ++ regulator-name = "vcca_1v8"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcca1v8_pmu: LDO_REG8 { ++ regulator-name = "vcca1v8_pmu"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vcca1v8_image: LDO_REG9 { ++ regulator-name = "vcca1v8_image"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_3v3: SWITCH_REG1 { ++ regulator-name = "vcc_3v3"; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_sd: SWITCH_REG2 { ++ regulator-name = "vcc3v3_sd"; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ }; ++ }; ++}; ++ ++&i2c1 { ++ status = "okay"; ++ ++ hym8563: rtc@51 { ++ compatible = "haoyu,hym8563"; ++ reg = <0x51>; ++ #clock-cells = <0>; ++ clock-output-names = "hym8563"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&hym8563_int>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ wakeup-source; ++ }; ++}; ++ ++&mdio1 { ++ rgmii_phy1: ethernet-phy@1 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <1>; ++ interrupt-parent = <&gpio4>; ++ interrupts = ; ++ pinctrl-names = "default"; ++ pinctrl-0 = <ð_phy_reset_pin>; ++ reset-assert-us = <20000>; ++ reset-deassert-us = <100000>; ++ reset-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>; ++ }; ++}; ++ ++&pcie2x1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pcie_reset_h>; ++ reset-gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ gpio-leds { ++ lan_led_pin: lan-led-pin { ++ rockchip,pins = <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ power_led_pin: power-led-pin { ++ rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ wan_led_pin: wan-led-pin { ++ rockchip,pins = <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ gmac { ++ eth_phy_reset_pin: eth-phy-reset-pin { ++ rockchip,pins = <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ pcie { ++ pcie_reset_h: pcie-reset-h { ++ rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ }; ++ ++ pmic { ++ pmic_int: pmic-int { ++ rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ rockchip-key { ++ reset_button_pin: reset-button-pin { ++ rockchip,pins = <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ rtc { ++ hym8563_int: hym8563-int { ++ rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ usb { ++ vcc5v0_usb_host_en: vcc5v0-usb-host-en { ++ rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&pmu_io_domains { ++ pmuio1-supply = <&vcc3v3_pmu>; ++ pmuio2-supply = <&vcc3v3_pmu>; ++ vccio1-supply = <&vccio_acodec>; ++ vccio2-supply = <&vcc_1v8>; ++ vccio3-supply = <&vccio_sd>; ++ vccio4-supply = <&vcc_3v3>; ++ vccio5-supply = <&vcc_1v8>; ++ vccio6-supply = <&vcc_3v3>; ++ vccio7-supply = <&vcc_3v3>; ++ status = "okay"; ++}; ++ ++&sdhci { ++ bus-width = <8>; ++ max-frequency = <200000000>; ++ mmc-hs200-1_8v; ++ non-removable; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>; ++ status = "okay"; ++}; ++ ++&sdmmc0 { ++ bus-width = <4>; ++ cap-mmc-highspeed; ++ cap-sd-highspeed; ++ disable-wp; ++ no-sdio; ++ no-mmc; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; ++ sd-uhs-sdr50; ++ vmmc-supply = <&vcc3v3_sd>; ++ vqmmc-supply = <&vccio_sd>; ++ status = "okay"; ++}; ++ ++&tsadc { ++ status = "okay"; ++}; ++ ++&uart2 { ++ status = "okay"; ++}; ++ ++&usb2phy0 { ++ status = "okay"; ++}; ++ ++&usb2phy0_host { ++ phy-supply = <&vcc5v0_usb>; ++ status = "okay"; ++}; ++ ++&usb2phy0_otg { ++ status = "okay"; ++}; ++ ++&usb_host0_xhci { ++ extcon = <&usb2phy0>; ++ status = "okay"; ++}; ++ ++&usb_host1_xhci { ++ status = "okay"; ++}; ++ ++&vop { ++ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; ++ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; ++ status = "okay"; ++}; ++ ++&vop_mmu { ++ status = "okay"; ++}; From 2902b0a6fb98a79a1c54f447579095f64604332d Mon Sep 17 00:00:00 2001 From: Kevin Zhang Date: Sun, 27 Oct 2024 01:13:05 -0400 Subject: [PATCH 09/72] rockchip: Add support for RK3566 FriendlyElec NanoPi R3S This commit adds support for the FriendlyElec NanoPi R3S. CPU: Rockchip RK3566, Quad-core Cortex-A55 RAM: 2GB LPDDR4X Ethernet: GMAC RTL8211F GbE, PCIe R8111H GbE USB3.0 Host: Type-A x1 Storage: MicroSD Slot x 1, and optional on-board 32GB eMMC Debug Serial Port: 3.3V TTL, 3-pin 2.54mm pitch connector, 1500000 bauds LED: LED x 3 RTC: One low-power RTC, supports backup battery input Both GbE controllers are working (WAN eth0, LAN eth1). Appropriate LAN/WAN interface assignments and MAC address generation. All three LEDs are working. USB appears to be working and has been tested with mass storage. Installation - microSD: -Uncompress the OpenWRT sysupgrade.img.gz -Write image to microSD card using dd or similar tool Installation - eMMC: -Boot from microSD -Uncompress the OpenWRT sysupgrade.img.gz -Flash to eMMC : dd if=x.img of=/dev/mmcblk0 -sync -Remove microSD card -Reboot Signed-off-by: Kevin Zhang Link: https://github.com/openwrt/openwrt/pull/16738 Signed-off-by: Hauke Mehrtens --- .../armv8/base-files/etc/board.d/01_leds | 1 + .../armv8/base-files/etc/board.d/02_network | 10 +- .../etc/hotplug.d/net/40-net-smp-affinity | 1 + target/linux/rockchip/image/armv8.mk | 8 + ...4-dts-rockchip-rk3566-Add-Nanopi-R3S.patch | 567 ++++++++++++++++++ 5 files changed, 583 insertions(+), 4 deletions(-) create mode 100644 target/linux/rockchip/patches-6.6/127-arm64-dts-rockchip-rk3566-Add-Nanopi-R3S.patch diff --git a/target/linux/rockchip/armv8/base-files/etc/board.d/01_leds b/target/linux/rockchip/armv8/base-files/etc/board.d/01_leds index e28069cf7b..6e2c95ada7 100644 --- a/target/linux/rockchip/armv8/base-files/etc/board.d/01_leds +++ b/target/linux/rockchip/armv8/base-files/etc/board.d/01_leds @@ -11,6 +11,7 @@ case $board in friendlyarm,nanopi-r2c|\ friendlyarm,nanopi-r2c-plus|\ friendlyarm,nanopi-r2s|\ +friendlyarm,nanopi-r3s|\ friendlyarm,nanopi-r4s|\ friendlyarm,nanopi-r4s-enterprise|\ friendlyarm,nanopi-r6c|\ diff --git a/target/linux/rockchip/armv8/base-files/etc/board.d/02_network b/target/linux/rockchip/armv8/base-files/etc/board.d/02_network index 192b825244..9a6e479323 100644 --- a/target/linux/rockchip/armv8/base-files/etc/board.d/02_network +++ b/target/linux/rockchip/armv8/base-files/etc/board.d/02_network @@ -11,6 +11,7 @@ rockchip_setup_interfaces() friendlyarm,nanopi-r2c|\ friendlyarm,nanopi-r2c-plus|\ friendlyarm,nanopi-r2s|\ + friendlyarm,nanopi-r3s|\ friendlyarm,nanopi-r4s|\ friendlyarm,nanopi-r4s-enterprise|\ friendlyarm,nanopi-r6c|\ @@ -62,16 +63,17 @@ rockchip_setup_macs() wan_mac=$(macaddr_generate_from_mmc_cid mmcblk1) lan_mac=$(macaddr_add "$wan_mac" 1) ;; - friendlyarm,nanopi-r4s-enterprise) - wan_mac=$(get_mac_binary "/sys/bus/i2c/devices/2-0051/eeprom" 0xfa) - lan_mac=$(macaddr_setbit_la "$wan_mac") - ;; + friendlyarm,nanopi-r3s|\ friendlyarm,nanopi-r5c|\ friendlyarm,nanopi-r6c|\ friendlyarm,nanopi-r6s) wan_mac=$(macaddr_generate_from_mmc_cid mmcblk*) lan_mac=$(macaddr_add "$wan_mac" 1) ;; + friendlyarm,nanopi-r4s-enterprise) + wan_mac=$(get_mac_binary "/sys/bus/i2c/devices/2-0051/eeprom" 0xfa) + lan_mac=$(macaddr_setbit_la "$wan_mac") + ;; xunlong,orangepi-r1-plus|\ xunlong,orangepi-r1-plus-lts) wan_mac=$(macaddr_add "$(cat /sys/class/net/eth1/address)" -1) diff --git a/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity b/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity index f65d008ef4..27d469bb47 100644 --- a/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity +++ b/target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity @@ -31,6 +31,7 @@ set_interface_core() { case "$(board_name)" in armsom,sige7|\ friendlyarm,nanopc-t6|\ +friendlyarm,nanopi-r3s|\ friendlyarm,nanopi-r5c|\ friendlyarm,nanopi-r6c|\ radxa,e25|\ diff --git a/target/linux/rockchip/image/armv8.mk b/target/linux/rockchip/image/armv8.mk index 39eb3bb034..1c81005f8e 100644 --- a/target/linux/rockchip/image/armv8.mk +++ b/target/linux/rockchip/image/armv8.mk @@ -65,6 +65,14 @@ define Device/friendlyarm_nanopi-r2s endef TARGET_DEVICES += friendlyarm_nanopi-r2s +define Device/friendlyarm_nanopi-r3s + DEVICE_VENDOR := FriendlyARM + DEVICE_MODEL := NanoPi R3S + SOC := rk3566 + DEVICE_PACKAGES := kmod-r8169 +endef +TARGET_DEVICES += friendlyarm_nanopi-r3s + define Device/friendlyarm_nanopi-r4s DEVICE_VENDOR := FriendlyARM DEVICE_MODEL := NanoPi R4S diff --git a/target/linux/rockchip/patches-6.6/127-arm64-dts-rockchip-rk3566-Add-Nanopi-R3S.patch b/target/linux/rockchip/patches-6.6/127-arm64-dts-rockchip-rk3566-Add-Nanopi-R3S.patch new file mode 100644 index 0000000000..ff2ad5bb9a --- /dev/null +++ b/target/linux/rockchip/patches-6.6/127-arm64-dts-rockchip-rk3566-Add-Nanopi-R3S.patch @@ -0,0 +1,567 @@ +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3566-nanopi-r3s.dts +@@ -0,0 +1,554 @@ ++// SPDX-License-Identifier: GPL-2.0-or-later OR MIT ++/* ++ * Copyright (c) 2020 Rockchip Electronics Co., Ltd. ++ * ++ * Copyright (c) 2024 FriendlyElec Computer Tech. Co., Ltd. ++ * (http://www.friendlyelec.com) ++ * ++ * Copyright (c) 2024 Tianling Shen ++ */ ++ ++/dts-v1/; ++#include ++#include ++#include ++#include ++#include ++#include "rk3566.dtsi" ++ ++/ { ++ model = "FriendlyElec NanoPi R3S"; ++ compatible = "friendlyarm,nanopi-r3s", "rockchip,rk3566"; ++ ++ aliases { ++ ethernet0 = &gmac1; ++ mmc0 = &sdhci; ++ mmc1 = &sdmmc0; ++ }; ++ ++ chosen: chosen { ++ stdout-path = "serial2:1500000n8"; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&reset_button_pin>; ++ ++ button-reset { ++ label = "reset"; ++ gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ debounce-interval = <50>; ++ }; ++ }; ++ ++ gpio-leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&power_led_pin>, <&lan_led_pin>, <&wan_led_pin>; ++ ++ power_led: led-0 { ++ color = ; ++ function = LED_FUNCTION_POWER; ++ gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>; ++ default-state = "on"; ++ }; ++ ++ lan_led: led-1 { ++ color = ; ++ function = LED_FUNCTION_LAN; ++ gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ wan_led: led-2 { ++ color = ; ++ function = LED_FUNCTION_WAN; ++ gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_HIGH>; ++ }; ++ }; ++ ++ vcc3v3_sys: regulator-vcc3v3-sys { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3_sys"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ vin-supply = <&vcc5v0_sys>; ++ }; ++ ++ vcc5v0_sys: regulator-vcc5v0-sys { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc5v0_sys"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ vin-supply = <&vdd_usbc>; ++ }; ++ ++ vcc5v0_usb: regulator-vcc5v0_usb { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&vcc5v0_usb_host_en>; ++ regulator-name = "vcc5v0_usb"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ vin-supply = <&vcc5v0_sys>; ++ }; ++ ++ vdd_usbc: regulator-vdd-usbc { ++ compatible = "regulator-fixed"; ++ regulator-name = "vdd_usbc"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ }; ++}; ++ ++&combphy1 { ++ status = "okay"; ++}; ++ ++&combphy2 { ++ status = "okay"; ++}; ++ ++&cpu0 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu1 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu2 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&cpu3 { ++ cpu-supply = <&vdd_cpu>; ++}; ++ ++&gmac1 { ++ assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; ++ assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru CLK_MAC1_2TOP>; ++ assigned-clock-rates = <0>, <125000000>; ++ clock_in_out = "output"; ++ phy-mode = "rgmii-id"; ++ phy-handle = <&rgmii_phy1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&gmac1m0_miim ++ &gmac1m0_tx_bus2_level3 ++ &gmac1m0_rx_bus2 ++ &gmac1m0_rgmii_clk_level2 ++ &gmac1m0_rgmii_bus_level3>; ++ status = "okay"; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; ++ ++&i2c0 { ++ status = "okay"; ++ ++ vdd_cpu: regulator@1c { ++ compatible = "tcs,tcs4525"; ++ reg = <0x1c>; ++ fcs,suspend-voltage-selector = <1>; ++ regulator-name = "vdd_cpu"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <1150000>; ++ regulator-ramp-delay = <2300>; ++ vin-supply = <&vcc5v0_sys>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ rk809: pmic@20 { ++ compatible = "rockchip,rk809"; ++ reg = <0x20>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ #clock-cells = <1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pmic_int>; ++ system-power-controller; ++ vcc1-supply = <&vcc3v3_sys>; ++ vcc2-supply = <&vcc3v3_sys>; ++ vcc3-supply = <&vcc3v3_sys>; ++ vcc4-supply = <&vcc3v3_sys>; ++ vcc5-supply = <&vcc3v3_sys>; ++ vcc6-supply = <&vcc3v3_sys>; ++ vcc7-supply = <&vcc3v3_sys>; ++ vcc8-supply = <&vcc3v3_sys>; ++ vcc9-supply = <&vcc3v3_sys>; ++ wakeup-source; ++ ++ regulators { ++ vdd_logic: DCDC_REG1 { ++ regulator-name = "vdd_logic"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-initial-mode = <0x2>; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdd_gpu: DCDC_REG2 { ++ regulator-name = "vdd_gpu"; ++ regulator-always-on; ++ regulator-initial-mode = <0x2>; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-name = "vcc_ddr"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-initial-mode = <0x2>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vdd_npu: DCDC_REG4 { ++ regulator-name = "vdd_npu"; ++ regulator-initial-mode = <0x2>; ++ regulator-min-microvolt = <500000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_1v8: DCDC_REG5 { ++ regulator-name = "vcc_1v8"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda0v9_image: LDO_REG1 { ++ regulator-name = "vdda0v9_image"; ++ regulator-min-microvolt = <950000>; ++ regulator-max-microvolt = <950000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda_0v9: LDO_REG2 { ++ regulator-name = "vdda_0v9"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdda0v9_pmu: LDO_REG3 { ++ regulator-name = "vdda0v9_pmu"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <900000>; ++ }; ++ }; ++ ++ vccio_acodec: LDO_REG4 { ++ regulator-name = "vccio_acodec"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vccio_sd: LDO_REG5 { ++ regulator-name = "vccio_sd"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_pmu: LDO_REG6 { ++ regulator-name = "vcc3v3_pmu"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ ++ vcca_1v8: LDO_REG7 { ++ regulator-name = "vcca_1v8"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcca1v8_pmu: LDO_REG8 { ++ regulator-name = "vcca1v8_pmu"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vcca1v8_image: LDO_REG9 { ++ regulator-name = "vcca1v8_image"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_3v3: SWITCH_REG1 { ++ regulator-name = "vcc_3v3"; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_sd: SWITCH_REG2 { ++ regulator-name = "vcc3v3_sd"; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ }; ++ }; ++}; ++ ++&i2c1 { ++ status = "okay"; ++ ++ hym8563: rtc@51 { ++ compatible = "haoyu,hym8563"; ++ reg = <0x51>; ++ #clock-cells = <0>; ++ clock-output-names = "hym8563"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&hym8563_int>; ++ interrupt-parent = <&gpio0>; ++ interrupts = ; ++ wakeup-source; ++ }; ++}; ++ ++&mdio1 { ++ rgmii_phy1: ethernet-phy@1 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <1>; ++ interrupt-parent = <&gpio4>; ++ interrupts = ; ++ pinctrl-names = "default"; ++ pinctrl-0 = <ð_phy_reset_pin>; ++ reset-assert-us = <20000>; ++ reset-deassert-us = <100000>; ++ reset-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>; ++ }; ++}; ++ ++&pcie2x1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pcie_reset_h>; ++ reset-gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ gpio-leds { ++ lan_led_pin: lan-led-pin { ++ rockchip,pins = <3 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ power_led_pin: power-led-pin { ++ rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ wan_led_pin: wan-led-pin { ++ rockchip,pins = <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ gmac { ++ eth_phy_reset_pin: eth-phy-reset-pin { ++ rockchip,pins = <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ pcie { ++ pcie_reset_h: pcie-reset-h { ++ rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ }; ++ ++ pmic { ++ pmic_int: pmic-int { ++ rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ rockchip-key { ++ reset_button_pin: reset-button-pin { ++ rockchip,pins = <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ rtc { ++ hym8563_int: hym8563-int { ++ rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ usb { ++ vcc5v0_usb_host_en: vcc5v0-usb-host-en { ++ rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&pmu_io_domains { ++ pmuio1-supply = <&vcc3v3_pmu>; ++ pmuio2-supply = <&vcc3v3_pmu>; ++ vccio1-supply = <&vccio_acodec>; ++ vccio2-supply = <&vcc_1v8>; ++ vccio3-supply = <&vccio_sd>; ++ vccio4-supply = <&vcc_3v3>; ++ vccio5-supply = <&vcc_1v8>; ++ vccio6-supply = <&vcc_3v3>; ++ vccio7-supply = <&vcc_3v3>; ++ status = "okay"; ++}; ++ ++&sdhci { ++ bus-width = <8>; ++ max-frequency = <200000000>; ++ mmc-hs200-1_8v; ++ non-removable; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>; ++ status = "okay"; ++}; ++ ++&sdmmc0 { ++ bus-width = <4>; ++ cap-mmc-highspeed; ++ cap-sd-highspeed; ++ disable-wp; ++ no-sdio; ++ no-mmc; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>; ++ sd-uhs-sdr50; ++ vmmc-supply = <&vcc3v3_sd>; ++ vqmmc-supply = <&vccio_sd>; ++ status = "okay"; ++}; ++ ++&tsadc { ++ status = "okay"; ++}; ++ ++&uart2 { ++ status = "okay"; ++}; ++ ++&usb2phy0 { ++ status = "okay"; ++}; ++ ++&usb2phy0_host { ++ phy-supply = <&vcc5v0_usb>; ++ status = "okay"; ++}; ++ ++&usb2phy0_otg { ++ status = "okay"; ++}; ++ ++&usb_host0_xhci { ++ extcon = <&usb2phy0>; ++ status = "okay"; ++}; ++ ++&usb_host1_xhci { ++ status = "okay"; ++}; ++ ++&vop { ++ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; ++ assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; ++ status = "okay"; ++}; ++ ++&vop_mmu { ++ status = "okay"; ++}; +--- a/arch/arm64/boot/dts/rockchip/Makefile ++++ b/arch/arm64/boot/dts/rockchip/Makefile +@@ -75,6 +75,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-an + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg353v.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg353vs.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg503.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-nanopi-r3s.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb From b5c7c67b8f10203253138ec35bb6aef213faae30 Mon Sep 17 00:00:00 2001 From: Kevin Zhang Date: Sun, 27 Oct 2024 01:13:47 -0400 Subject: [PATCH 10/72] rockchip: Add LED aliases for FriendlyElec NanoPi R3S This commit adds OpenWRT's LED aliases to the board DTS for showing system status on the NanoPi R3S. Signed-off-by: Kevin Zhang Link: https://github.com/openwrt/openwrt/pull/16738 Signed-off-by: Hauke Mehrtens --- ...dts-rockchip-rk3566-Nanopi-R3S-update-LED.patch | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 target/linux/rockchip/patches-6.6/128-arm64-dts-rockchip-rk3566-Nanopi-R3S-update-LED.patch diff --git a/target/linux/rockchip/patches-6.6/128-arm64-dts-rockchip-rk3566-Nanopi-R3S-update-LED.patch b/target/linux/rockchip/patches-6.6/128-arm64-dts-rockchip-rk3566-Nanopi-R3S-update-LED.patch new file mode 100644 index 0000000000..a7e95291de --- /dev/null +++ b/target/linux/rockchip/patches-6.6/128-arm64-dts-rockchip-rk3566-Nanopi-R3S-update-LED.patch @@ -0,0 +1,14 @@ +--- a/arch/arm64/boot/dts/rockchip/rk3566-nanopi-r3s.dts ++++ b/arch/arm64/boot/dts/rockchip/rk3566-nanopi-r3s.dts +@@ -24,6 +24,11 @@ + ethernet0 = &gmac1; + mmc0 = &sdhci; + mmc1 = &sdmmc0; ++ ++ led-boot = &power_led; ++ led-failsafe = &power_led; ++ led-running = &power_led; ++ led-upgrade = &power_led; + }; + + chosen: chosen { From 0f5e5dee1d1d1283a6a11fc8a37b3b6be44225a4 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Wed, 9 Oct 2024 13:44:56 -0700 Subject: [PATCH 11/72] ramips: modernize pwm driver Add more devm usage. Signed-off-by: Rosen Penev Link: https://github.com/openwrt/openwrt/pull/16649 Signed-off-by: Hauke Mehrtens --- .../845-pwm-add-mediatek-support.patch | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/target/linux/ramips/patches-6.6/845-pwm-add-mediatek-support.patch b/target/linux/ramips/patches-6.6/845-pwm-add-mediatek-support.patch index 67cc389fd5..e7d11a0429 100644 --- a/target/linux/ramips/patches-6.6/845-pwm-add-mediatek-support.patch +++ b/target/linux/ramips/patches-6.6/845-pwm-add-mediatek-support.patch @@ -41,7 +41,7 @@ Signed-off-by: John Crispin obj-$(CONFIG_PWM_MXS) += pwm-mxs.o --- /dev/null +++ b/drivers/pwm/pwm-mediatek-ramips.c -@@ -0,0 +1,197 @@ +@@ -0,0 +1,187 @@ +/* + * Mediatek Pulse Width Modulator driver + * @@ -178,30 +178,23 @@ Signed-off-by: John Crispin +static int mtk_pwm_probe(struct platform_device *pdev) +{ + struct mtk_pwm_chip *pc; -+ struct resource *r; -+ int ret; + + pc = devm_kzalloc(&pdev->dev, sizeof(*pc), GFP_KERNEL); + if (!pc) + return -ENOMEM; + -+ r = platform_get_resource(pdev, IORESOURCE_MEM, 0); -+ pc->mmio_base = devm_ioremap_resource(&pdev->dev, r); ++ pc->mmio_base = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(pc->mmio_base)) + return PTR_ERR(pc->mmio_base); + -+ platform_set_drvdata(pdev, pc); -+ + pc->chip.dev = &pdev->dev; + pc->chip.ops = &mtk_pwm_ops; + pc->chip.base = -1; + pc->chip.npwm = NUM_PWM; + -+ ret = pwmchip_add(&pc->chip); -+ if (ret < 0) -+ dev_err(&pdev->dev, "pwmchip_add() failed: %d\n", ret); ++ platform_set_drvdata(pdev, pc); + -+ return ret; ++ return devm_pwmchip_add(&pdev->dev, &pc->chip); +} + +static int mtk_pwm_remove(struct platform_device *pdev) @@ -212,8 +205,6 @@ Signed-off-by: John Crispin + for (i = 0; i < NUM_PWM; i++) + pwm_disable(&pc->chip.pwms[i]); + -+ pwmchip_remove(&pc->chip); -+ + return 0; +} + @@ -227,7 +218,6 @@ Signed-off-by: John Crispin +static struct platform_driver mtk_pwm_driver = { + .driver = { + .name = "mtk-pwm", -+ .owner = THIS_MODULE, + .of_match_table = mtk_pwm_of_match, + }, + .probe = mtk_pwm_probe, From 388de64d9fe9919a577f826eab5947e67e5ef34a Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sun, 27 Oct 2024 14:24:47 +0000 Subject: [PATCH 12/72] mediatek: mt7988: add DT entries for WED Add memory regions and devices used for wireless offloading to the device tree for MT7988. This allows using WED on devices with MT7988 SoC and MT7995E, MT7996E or MT7992E wireless controllers. Devices with 4 GiB of RAM (or more) will still need ajustments to avoid running out of swiotlb entries. Signed-off-by: Daniel Golle --- .../arch/arm64/boot/dts/mediatek/mt7988a.dtsi | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a.dtsi b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a.dtsi index 6a15dcff3d..c894253fed 100644 --- a/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a.dtsi +++ b/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a.dtsi @@ -195,6 +195,32 @@ reg = <0 0x43000000 0 0x50000>; no-map; }; + + wmcpu_emi: wmcpu-reserved@47cc0000 { + reg = <0 0x47cc0000 0 0x00100000>; + no-map; + }; + + wo_emi0: wo-emi@4f600000 { + reg = <0 0x4f600000 0 0x40000>; + no-map; + }; + + wo_emi1: wo-emi@4f640000 { + reg = <0 0x4f640000 0 0x40000>; + no-map; + }; + + wo_emi2: wo-emi@4f680000 { + reg = <0 0x4f680000 0 0x40000>; + no-map; + }; + + wo_data: wo-data@4f700000 { + reg = <0 0x4f700000 0 0x800000>; + no-map; + shared = <1>; + }; }; soc { @@ -1218,6 +1244,48 @@ #size-cells = <1>; }; + wed0: wed@15010000 { + compatible = "mediatek,mt7988-wed", + "syscon"; + reg = <0 0x15010000 0 0x2000>; + interrupt-parent = <&gic>; + interrupts = ; + memory-region = <&wo_emi0>, <&wo_data>; + memory-region-names = "wo-emi", "wo-data"; + mediatek,wo-ccif = <&wo_ccif0>; + mediatek,wo-ilm = <&wo_ilm0>; + mediatek,wo-dlm = <&wo_dlm0>; + mediatek,wo-cpuboot = <&wo_cpuboot0>; + }; + + wed1: wed@15012000 { + compatible = "mediatek,mt7988-wed", + "syscon"; + reg = <0 0x15012000 0 0x2000>; + interrupt-parent = <&gic>; + interrupts = ; + memory-region = <&wo_emi1>, <&wo_data>; + memory-region-names = "wo-emi", "wo-data"; + mediatek,wo-ccif = <&wo_ccif1>; + mediatek,wo-ilm = <&wo_ilm1>; + mediatek,wo-dlm = <&wo_dlm1>; + mediatek,wo-cpuboot = <&wo_cpuboot1>; + }; + + wed2: wed@15014000 { + compatible = "mediatek,mt7988-wed", + "syscon"; + reg = <0 0x15014000 0 0x2000>; + interrupt-parent = <&gic>; + interrupts = ; + memory-region = <&wo_emi2>, <&wo_data>; + memory-region-names = "wo-emi", "wo-data"; + mediatek,wo-ccif = <&wo_ccif2>; + mediatek,wo-ilm = <&wo_ilm2>; + mediatek,wo-dlm = <&wo_dlm2>; + mediatek,wo-cpuboot = <&wo_cpuboot2>; + }; + switch: switch@15020000 { compatible = "mediatek,mt7988-switch"; reg = <0 0x15020000 0 0x8000>; @@ -1449,6 +1517,7 @@ <&apmixedsys CLK_APMIXED_SGMPLL>; mediatek,ethsys = <ðsys>; mediatek,infracfg = <&topmisc>; + mediatek,wed = <&wed0>, <&wed1>, <&wed2>; #address-cells = <1>; #size-cells = <0>; @@ -1511,6 +1580,72 @@ }; }; + wo_ccif0: syscon@151a5000 { + compatible = "mediatek,mt7988-wo-ccif", "syscon"; + reg = <0 0x151a5000 0 0x1000>; + interrupt-parent = <&gic>; + interrupts = ; + }; + + wo_ccif1: syscon@152a5000 { + compatible = "mediatek,mt7988-wo-ccif", "syscon"; + reg = <0 0x152a5000 0 0x1000>; + interrupt-parent = <&gic>; + interrupts = ; + }; + + wo_ccif2: syscon@153a5000 { + compatible = "mediatek,mt7988-wo-ccif", "syscon"; + reg = <0 0x153a5000 0 0x1000>; + interrupt-parent = <&gic>; + interrupts = ; + }; + + wo_ilm0: syscon@151e0000 { + compatible = "mediatek,mt7988-wo-ilm", "syscon"; + reg = <0 0x151e0000 0 0x8000>; + }; + + wo_ilm1: syscon@152e0000 { + compatible = "mediatek,mt7988-wo-ilm", "syscon"; + reg = <0 0x152e0000 0 0x8000>; + }; + + wo_ilm2: syscon@153e0000 { + compatible = "mediatek,mt7988-wo-ilm", "syscon"; + reg = <0 0x153e0000 0 0x8000>; + }; + + wo_dlm0: syscon@151e8000 { + compatible = "mediatek,mt7988-wo-dlm", "syscon"; + reg = <0 0x151e8000 0 0x2000>; + }; + + wo_dlm1: syscon@152e8000 { + compatible = "mediatek,mt7988-wo-dlm", "syscon"; + reg = <0 0x152e8000 0 0x2000>; + }; + + wo_dlm2: syscon@153e8000 { + compatible = "mediatek,mt7988-wo-dlm", "syscon"; + reg = <0 0x153e8000 0 0x2000>; + }; + + wo_cpuboot0: syscon@15194000 { + compatible = "mediatek,mt7988-wo-cpuboot", "syscon"; + reg = <0 0x15194000 0 0x1000>; + }; + + wo_cpuboot1: syscon@15294000 { + compatible = "mediatek,mt7988-wo-cpuboot", "syscon"; + reg = <0 0x15294000 0 0x1000>; + }; + + wo_cpuboot2: syscon@15394000 { + compatible = "mediatek,mt7988-wo-cpuboot", "syscon"; + reg = <0 0x15394000 0 0x1000>; + }; + crypto: crypto@15600000 { compatible = "inside-secure,safexcel-eip197b"; reg = <0 0x15600000 0 0x180000>; From 07159cc25a5b5934e6eeb48409d8e846d797b0fa Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Sun, 27 Oct 2024 15:58:16 +0100 Subject: [PATCH 13/72] Revert "scripts/download.pl: read file natively" This reverts commit 65560de58de7a3cde8f960849e3c7c640b9456d8. Seems to broke CI and require more testing. Signed-off-by: Christian Marangi --- scripts/download.pl | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/scripts/download.pl b/scripts/download.pl index 9966f9f1e6..c6c9b8e56c 100755 --- a/scripts/download.pl +++ b/scripts/download.pl @@ -32,12 +32,6 @@ my $download_tool; $url_filename or $url_filename = $filename; -sub cat { - open my $fh, '<', $1 or die "Can't open file $!"; - read $fh, my $file_content, -s $fh; - return $file_content; -} - sub localmirrors { my @mlist; open LM, "$scriptdir/localmirrors" and do { @@ -209,7 +203,7 @@ sub download copy($link, "$target/$filename.dl"); $hash_cmd and do { - if (system("$hash_cmd '$target/$filename.dl' > '$target/$filename.hash'")) { + if (system("cat '$target/$filename.dl' | $hash_cmd > '$target/$filename.hash'")) { print("Failed to generate hash for $filename\n"); return; } @@ -239,7 +233,7 @@ sub download } $hash_cmd and do { - my $sum = cat("$target/$filename.hash"); + my $sum = `cat "$target/$filename.hash"`; $sum =~ /^(\w+)\s*/ or die "Could not generate file hash\n"; $sum = $1; @@ -305,11 +299,11 @@ projectsmirrors '@OPENWRT'; if (-f "$target/$filename") { $hash_cmd and do { - if (system("$hash_cmd '$target/$filename' > '$target/$filename.hash'")) { + if (system("cat '$target/$filename' | $hash_cmd > '$target/$filename.hash'")) { die "Failed to generate hash for $filename\n"; } - my $sum = cat("$target/$filename.hash"); + my $sum = `cat "$target/$filename.hash"`; $sum =~ /^(\w+)\s*/ or die "Could not generate file hash\n"; $sum = $1; From a200f0cee747890dbb322236acbb63002e95854b Mon Sep 17 00:00:00 2001 From: Markus Stockhausen Date: Fri, 18 Oct 2024 02:14:02 -0400 Subject: [PATCH 14/72] realtek: dsa: allow USXGMII mode RTL930x devices need the USXGMII mode. This is a final leftover from the 6.6 conversion. Signed-off-by: Markus Stockhausen Link: https://github.com/openwrt/openwrt/pull/16457 Signed-off-by: Robert Marko --- target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/dsa.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/dsa.c b/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/dsa.c index d61122e330..f9d37fb3bd 100644 --- a/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/dsa.c +++ b/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/dsa.c @@ -684,6 +684,7 @@ static void rtl83xx_phylink_get_caps(struct dsa_switch *ds, int port, __set_bit(PHY_INTERFACE_MODE_QSGMII, config->supported_interfaces); __set_bit(PHY_INTERFACE_MODE_SGMII, config->supported_interfaces); __set_bit(PHY_INTERFACE_MODE_XGMII, config->supported_interfaces); + __set_bit(PHY_INTERFACE_MODE_USXGMII, config->supported_interfaces); __set_bit(PHY_INTERFACE_MODE_1000BASEX, config->supported_interfaces); } From 8e4597297d95ac6948ee04c48f6c30f6d2022595 Mon Sep 17 00:00:00 2001 From: Markus Stockhausen Date: Sun, 22 Sep 2024 12:03:43 -0400 Subject: [PATCH 15/72] realtek: dsa: increase RTL839x max phy page to 8191 According to the specs the RTL839x provides up to 8192 phy pages. Especially the "raw" page 8191 is used for different initialization tasks. Increase the limit. Signed-off-by: Markus Stockhausen Link: https://github.com/openwrt/openwrt/pull/16457 Signed-off-by: Robert Marko --- .../linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/rtl839x.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/rtl839x.c b/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/rtl839x.c index 5889cea6d6..ecf291f866 100644 --- a/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/rtl839x.c +++ b/target/linux/realtek/files-6.6/drivers/net/dsa/rtl83xx/rtl839x.c @@ -662,7 +662,7 @@ int rtl839x_read_phy(u32 port, u32 page, u32 reg, u32 *val) u32 v; int err = 0; - if (port > 63 || page > 4095 || reg > 31) + if (port > 63 || page > 8191 || reg > 31) return -ENOTSUPP; /* Take bug on RTL839x Rev <= C into account */ @@ -698,7 +698,7 @@ int rtl839x_write_phy(u32 port, u32 page, u32 reg, u32 val) int err = 0; val &= 0xffff; - if (port > 63 || page > 4095 || reg > 31) + if (port > 63 || page > 8191 || reg > 31) return -ENOTSUPP; /* Take bug on RTL839x Rev <= C into account */ From d607dc2a06fbadfd7e3d21c872a3f290dc704211 Mon Sep 17 00:00:00 2001 From: Markus Stockhausen Date: Sun, 22 Sep 2024 12:46:18 -0400 Subject: [PATCH 16/72] realtek: phy: adapt raw page for RTL839X The number of phy pages differ between RTL838X and RTL839X. Make that clear and adapt the existing defines. Signed-off-by: Markus Stockhausen Link: https://github.com/openwrt/openwrt/pull/16457 Signed-off-by: Robert Marko --- .../files-6.6/drivers/net/phy/rtl83xx-phy.c | 89 ++++++++++--------- 1 file changed, 45 insertions(+), 44 deletions(-) diff --git a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c index df5e2e4440..dcb7f1570b 100644 --- a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c +++ b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c @@ -45,7 +45,8 @@ extern int phy_port_read_paged(struct phy_device *phydev, int port, int page, u3 * RealTek SoCs allows to access the PHY in RAW mode, ie. bypassing * the cache and paging engine of the MDIO controller. */ -#define RTL83XX_PAGE_RAW 0x0fff +#define RTL838X_PAGE_RAW 0x0fff +#define RTL839X_PAGE_RAW 0x1fff /* internal RTL821X PHY uses register 0x1d to select media page */ #define RTL821XINT_MEDIA_PAGE_SELECT 0x1d @@ -154,11 +155,11 @@ static void rtl8380_int_phy_on_off(struct phy_device *phydev, bool on) static void rtl8380_rtl8214fc_on_off(struct phy_device *phydev, bool on) { /* fiber ports */ - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XEXT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_FIBRE); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XEXT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_FIBRE); phy_modify(phydev, 0x10, BMCR_PDOWN, on ? 0 : BMCR_PDOWN); /* copper ports */ - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XEXT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_COPPER); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XEXT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_COPPER); phy_modify_paged(phydev, RTL821X_PAGE_POWER, 0x10, BMCR_PDOWN, on ? 0 : BMCR_PDOWN); } @@ -693,17 +694,17 @@ static void rtl821x_phy_setup_package_broadcast(struct phy_device *phydev, bool int mac = phydev->mdio.addr; /* select main page 0 */ - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); /* write to 0x8 to register 0x1d on main page 0 */ - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_INTERNAL); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_INTERNAL); /* select page 0x266 */ - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL821X_PAGE_PORT); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL821X_PAGE_PORT); /* set phy id and target broadcast bitmap in register 0x16 on page 0x266 */ - phy_write_paged(phydev, RTL83XX_PAGE_RAW, 0x16, (enable?0xff00:0x00) | mac); + phy_write_paged(phydev, RTL838X_PAGE_RAW, 0x16, (enable?0xff00:0x00) | mac); /* return to main page 0 */ - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); /* write to 0x0 to register 0x1d on main page 0 */ - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_AUTO); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_AUTO); mdelay(1); } @@ -779,8 +780,8 @@ static int rtl8380_configure_int_rtl8218b(struct phy_device *phydev) /* Ready PHY for patch */ for (int p = 0; p < 8; p++) { - phy_package_port_write_paged(phydev, p, RTL83XX_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL821X_PAGE_PATCH); - phy_package_port_write_paged(phydev, p, RTL83XX_PAGE_RAW, 0x10, 0x0010); + phy_package_port_write_paged(phydev, p, RTL838X_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL821X_PAGE_PATCH); + phy_package_port_write_paged(phydev, p, RTL838X_PAGE_RAW, 0x10, 0x0010); } msleep(500); for (int p = 0; p < 8; p++) { @@ -803,14 +804,14 @@ static int rtl8380_configure_int_rtl8218b(struct phy_device *phydev) i = 0; while (rtl838x_6275B_intPhy_perport[i * 2]) { - phy_package_port_write_paged(phydev, p, RTL83XX_PAGE_RAW, + phy_package_port_write_paged(phydev, p, RTL838X_PAGE_RAW, rtl838x_6275B_intPhy_perport[i * 2], rtl838x_6275B_intPhy_perport[i * 2 + 1]); i++; } i = 0; while (rtl8218b_6276B_hwEsd_perport[i * 2]) { - phy_package_port_write_paged(phydev, p, RTL83XX_PAGE_RAW, + phy_package_port_write_paged(phydev, p, RTL838X_PAGE_RAW, rtl8218b_6276B_hwEsd_perport[i * 2], rtl8218b_6276B_hwEsd_perport[i * 2 + 1]); i++; @@ -870,30 +871,30 @@ static int rtl8380_configure_ext_rtl8218b(struct phy_device *phydev) msleep(100); /* Get Chip revision */ - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); - phy_write_paged(phydev, RTL83XX_PAGE_RAW, 0x1b, 0x4); - val = phy_read_paged(phydev, RTL83XX_PAGE_RAW, 0x1c); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); + phy_write_paged(phydev, RTL838X_PAGE_RAW, 0x1b, 0x4); + val = phy_read_paged(phydev, RTL838X_PAGE_RAW, 0x1c); phydev_info(phydev, "Detected chip revision %04x\n", val); for (int i = 0; rtl8380_rtl8218b_perchip[i * 3] && rtl8380_rtl8218b_perchip[i * 3 + 1]; i++) { phy_package_port_write_paged(phydev, rtl8380_rtl8218b_perchip[i * 3], - RTL83XX_PAGE_RAW, rtl8380_rtl8218b_perchip[i * 3 + 1], + RTL838X_PAGE_RAW, rtl8380_rtl8218b_perchip[i * 3 + 1], rtl8380_rtl8218b_perchip[i * 3 + 2]); } /* Enable PHY */ for (int i = 0; i < 8; i++) { - phy_package_port_write_paged(phydev, i, RTL83XX_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); - phy_package_port_write_paged(phydev, i, RTL83XX_PAGE_RAW, 0x00, 0x1140); + phy_package_port_write_paged(phydev, i, RTL838X_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); + phy_package_port_write_paged(phydev, i, RTL838X_PAGE_RAW, 0x00, 0x1140); } mdelay(100); /* Request patch */ for (int i = 0; i < 8; i++) { - phy_package_port_write_paged(phydev, i, RTL83XX_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL821X_PAGE_PATCH); - phy_package_port_write_paged(phydev, i, RTL83XX_PAGE_RAW, 0x10, 0x0010); + phy_package_port_write_paged(phydev, i, RTL838X_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL821X_PAGE_PATCH); + phy_package_port_write_paged(phydev, i, RTL838X_PAGE_RAW, 0x10, 0x0010); } mdelay(300); @@ -916,7 +917,7 @@ static int rtl8380_configure_ext_rtl8218b(struct phy_device *phydev) /* Use Broadcast ID method for patching */ rtl821x_phy_setup_package_broadcast(phydev, true); - phy_write_paged(phydev, RTL83XX_PAGE_RAW, 30, 8); + phy_write_paged(phydev, RTL838X_PAGE_RAW, 30, 8); phy_write_paged(phydev, 0x26e, 17, 0xb); phy_write_paged(phydev, 0x26e, 16, 0x2); mdelay(1); @@ -925,7 +926,7 @@ static int rtl8380_configure_ext_rtl8218b(struct phy_device *phydev) ipd = (ipd >> 4) & 0xf; /* unused ? */ for (int i = 0; rtl8218B_6276B_rtl8380_perport[i * 2]; i++) { - phy_write_paged(phydev, RTL83XX_PAGE_RAW, rtl8218B_6276B_rtl8380_perport[i * 2], + phy_write_paged(phydev, RTL838X_PAGE_RAW, rtl8218B_6276B_rtl8380_perport[i * 2], rtl8218B_6276B_rtl8380_perport[i * 2 + 1]); } @@ -957,9 +958,9 @@ static bool rtl8214fc_media_is_fibre(struct phy_device *phydev) static int reg[] = {16, 19, 20, 21}; u32 val; - phy_package_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_INTERNAL); + phy_package_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_INTERNAL); val = phy_package_read_paged(phydev, RTL821X_PAGE_PORT, reg[mac % 4]); - phy_package_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_AUTO); + phy_package_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_AUTO); if (val & BMCR_PDOWN) return false; @@ -973,10 +974,10 @@ static void rtl8214fc_power_set(struct phy_device *phydev, int port, bool on) if (port == PORT_FIBRE) { pr_info("%s: Powering %s FIBRE (port %d)\n", __func__, state, phydev->mdio.addr); - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_FIBRE); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_FIBRE); } else { pr_info("%s: Powering %s COPPER (port %d)\n", __func__, state, phydev->mdio.addr); - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_COPPER); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_COPPER); } if (on) { @@ -985,7 +986,7 @@ static void rtl8214fc_power_set(struct phy_device *phydev, int port, bool on) phy_modify_paged(phydev, RTL821X_PAGE_POWER, 0x10, 0, BMCR_PDOWN); } - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_AUTO); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_AUTO); } static int rtl8214fc_suspend(struct phy_device *phydev) @@ -1017,7 +1018,7 @@ static void rtl8214fc_media_set(struct phy_device *phydev, bool set_fibre) int val; pr_info("%s: port %d, set_fibre: %d\n", __func__, mac, set_fibre); - phy_package_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_INTERNAL); + phy_package_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_INTERNAL); val = phy_package_read_paged(phydev, RTL821X_PAGE_PORT, reg[mac % 4]); val |= BIT(10); @@ -1027,9 +1028,9 @@ static void rtl8214fc_media_set(struct phy_device *phydev, bool set_fibre) val |= BMCR_PDOWN; } - phy_package_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_INTERNAL); + phy_package_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_INTERNAL); phy_package_write_paged(phydev, RTL821X_PAGE_PORT, reg[mac % 4], val); - phy_package_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_AUTO); + phy_package_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XINT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_AUTO); if (!phydev->suspended) { if (set_fibre) { @@ -1359,8 +1360,8 @@ static int rtl8380_configure_rtl8214fc(struct phy_device *phydev) rtl8380_rtl8214fc_perport = (void *)h + sizeof(struct fw_header) + h->parts[1].start; /* detect phy version */ - phy_write_paged(phydev, RTL83XX_PAGE_RAW, 27, 0x0004); - val = phy_read_paged(phydev, RTL83XX_PAGE_RAW, 28); + phy_write_paged(phydev, RTL838X_PAGE_RAW, 27, 0x0004); + val = phy_read_paged(phydev, RTL838X_PAGE_RAW, 28); val = phy_read(phydev, 16); if (val & BMCR_PDOWN) @@ -1380,10 +1381,10 @@ static int rtl8380_configure_rtl8214fc(struct phy_device *phydev) if (rtl8380_rtl8214fc_perchip[i * 3 + 1] == 0x13 && page == 0x260) { val = phy_read_paged(phydev, 0x260, 13); val = (val & 0x1f00) | (rtl8380_rtl8214fc_perchip[i * 3 + 2] & 0xe0ff); - phy_write_paged(phydev, RTL83XX_PAGE_RAW, + phy_write_paged(phydev, RTL838X_PAGE_RAW, rtl8380_rtl8214fc_perchip[i * 3 + 1], val); } else { - phy_write_paged(phydev, RTL83XX_PAGE_RAW, + phy_write_paged(phydev, RTL838X_PAGE_RAW, rtl8380_rtl8214fc_perchip[i * 3 + 1], rtl8380_rtl8214fc_perchip[i * 3 + 2]); } @@ -1391,14 +1392,14 @@ static int rtl8380_configure_rtl8214fc(struct phy_device *phydev) /* Force copper medium */ for (int i = 0; i < 4; i++) { - phy_package_port_write_paged(phydev, i, RTL83XX_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); - phy_package_port_write_paged(phydev, i, RTL83XX_PAGE_RAW, RTL821XEXT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_COPPER); + phy_package_port_write_paged(phydev, i, RTL838X_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); + phy_package_port_write_paged(phydev, i, RTL838X_PAGE_RAW, RTL821XEXT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_COPPER); } /* Enable PHY */ for (int i = 0; i < 4; i++) { - phy_package_port_write_paged(phydev, i, RTL83XX_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); - phy_package_port_write_paged(phydev, i, RTL83XX_PAGE_RAW, 0x00, 0x1140); + phy_package_port_write_paged(phydev, i, RTL838X_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); + phy_package_port_write_paged(phydev, i, RTL838X_PAGE_RAW, 0x00, 0x1140); } mdelay(100); @@ -1419,8 +1420,8 @@ static int rtl8380_configure_rtl8214fc(struct phy_device *phydev) /* Request patch */ for (int i = 0; i < 4; i++) { - phy_package_port_write_paged(phydev, i, RTL83XX_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL821X_PAGE_PATCH); - phy_package_port_write_paged(phydev, i, RTL83XX_PAGE_RAW, 0x10, 0x0010); + phy_package_port_write_paged(phydev, i, RTL838X_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL821X_PAGE_PATCH); + phy_package_port_write_paged(phydev, i, RTL838X_PAGE_RAW, 0x10, 0x0010); } mdelay(300); @@ -1442,7 +1443,7 @@ static int rtl8380_configure_rtl8214fc(struct phy_device *phydev) rtl821x_phy_setup_package_broadcast(phydev, true); for (int i = 0; rtl8380_rtl8214fc_perport[i * 2]; i++) { - phy_write_paged(phydev, RTL83XX_PAGE_RAW, rtl8380_rtl8214fc_perport[i * 2], + phy_write_paged(phydev, RTL838X_PAGE_RAW, rtl8380_rtl8214fc_perport[i * 2], rtl8380_rtl8214fc_perport[i * 2 + 1]); } @@ -1451,8 +1452,8 @@ static int rtl8380_configure_rtl8214fc(struct phy_device *phydev) /* Auto medium selection */ for (int i = 0; i < 4; i++) { - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); - phy_write_paged(phydev, RTL83XX_PAGE_RAW, RTL821XEXT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_AUTO); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL8XXX_PAGE_SELECT, RTL8XXX_PAGE_MAIN); + phy_write_paged(phydev, RTL838X_PAGE_RAW, RTL821XEXT_MEDIA_PAGE_SELECT, RTL821X_MEDIA_PAGE_AUTO); } return 0; From 597f87ebf5872a92d6b6a3b5e79537a641d2995c Mon Sep 17 00:00:00 2001 From: Markus Stockhausen Date: Sun, 22 Sep 2024 13:19:22 -0400 Subject: [PATCH 17/72] realtek: phy: proper RTL8218B, RTL8214FC, RTL8214FB detection Three PHYs share the same identifier. Until now we simply assume the type depending of the bus address it is attached to. Make it better and check the chip mode register instead. The kernel will either detect by id/mask or by match_phy_device(). Remove the unneeded settings. Signed-off-by: Markus Stockhausen Link: https://github.com/openwrt/openwrt/pull/16457 Signed-off-by: Robert Marko --- .../files-6.6/drivers/net/phy/rtl83xx-phy.c | 103 +++++++++++++----- .../files-6.6/drivers/net/phy/rtl83xx-phy.h | 33 +++--- 2 files changed, 95 insertions(+), 41 deletions(-) diff --git a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c index dcb7f1570b..2e52924f80 100644 --- a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c +++ b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c @@ -147,6 +147,79 @@ static int resume_polling(u64 saved_state) return 0; } +int rtl821x_match_phy_device(struct phy_device *phydev) +{ + u64 poll_state; + int rawpage, port = phydev->mdio.addr & ~3; + int oldpage, chip_mode, chip_cfg_mode; + + if (phydev->phy_id == PHY_ID_RTL8218B_E) + return PHY_IS_RTL8218B_E; + + if (phydev->phy_id != PHY_ID_RTL8214_OR_8218) + return PHY_IS_NOT_RTL821X; + + if (soc_info.family == RTL8380_FAMILY_ID) + rawpage = RTL838X_PAGE_RAW; + else if (soc_info.family == RTL8390_FAMILY_ID) + rawpage = RTL839X_PAGE_RAW; + else + return PHY_IS_NOT_RTL821X; + + poll_state = disable_polling(port); + /* + * At this stage the write_page()/read_page() PHY functions are not yet + * registered and normal paged access is not possible. The following + * detection routine works because our MDIO bus has all the Realtek + * PHY page handling (register 31) integrated into the port functions. + */ + oldpage = phy_port_read_paged(phydev, port, rawpage, 31); + phy_port_write_paged(phydev, port, rawpage, 31, 0xa42); + phy_port_write_paged(phydev, port, rawpage, 29, 0x008); + phy_port_write_paged(phydev, port, rawpage, 31, 0x278); + phy_port_write_paged(phydev, port, rawpage, 18, 0x455); + phy_port_write_paged(phydev, port, rawpage, 31, 0x260); + chip_mode = phy_port_read_paged(phydev, port, rawpage, 18); + phy_port_write_paged(phydev, port, rawpage, 31, 0xa42); + phy_port_write_paged(phydev, port, rawpage, 29, 0x000); + phy_port_write_paged(phydev, port, rawpage, 31, oldpage); + + resume_polling(poll_state); + + pr_debug("%s(%d): got chip mode %x\n", __func__, phydev->mdio.addr, chip_mode); + + /* we checked the 4th port of a RTL8218B and got no config values */ + if (!chip_mode) + return PHY_IS_RTL8218B_E; + + chip_cfg_mode = (chip_mode >> 4) & 0xf; + chip_mode &= 0xf; + + if (chip_mode == 0xd || chip_mode == 0xf) + return PHY_IS_RTL8218B_E; + + if (chip_mode == 0x4 || chip_mode == 0x6) + return PHY_IS_RTL8214FC; + + if (chip_mode != 0xc && chip_mode != 0xe) + return PHY_IS_NOT_RTL821X; + + if (chip_cfg_mode == 0x4 || chip_cfg_mode == 0x6) + return PHY_IS_RTL8214FC; + + return PHY_IS_RTL8214FB; +} + +static int rtl8218b_ext_match_phy_device(struct phy_device *phydev) +{ + return rtl821x_match_phy_device(phydev) == PHY_IS_RTL8218B_E; +} + +static int rtl8214fc_match_phy_device(struct phy_device *phydev) +{ + return rtl821x_match_phy_device(phydev) == PHY_IS_RTL8214FC; +} + static void rtl8380_int_phy_on_off(struct phy_device *phydev, bool on) { phy_modify(phydev, 0, BMCR_PDOWN, on ? 0 : BMCR_PDOWN); @@ -936,21 +1009,6 @@ static int rtl8380_configure_ext_rtl8218b(struct phy_device *phydev) return 0; } -static int rtl8218b_ext_match_phy_device(struct phy_device *phydev) -{ - int addr = phydev->mdio.addr; - - /* Both the RTL8214FC and the external RTL8218B have the same - * PHY ID. On the RTL838x, the RTL8218B can only be attached_dev - * at PHY IDs 0-7, while the RTL8214FC must be attached via - * the pair of SGMII/1000Base-X with higher PHY-IDs - */ - if (soc_info.family == RTL8380_FAMILY_ID) - return phydev->phy_id == PHY_ID_RTL8218B_E && addr < 8; - else - return phydev->phy_id == PHY_ID_RTL8218B_E; -} - static bool rtl8214fc_media_is_fibre(struct phy_device *phydev) { int mac = phydev->mdio.addr; @@ -1459,13 +1517,6 @@ static int rtl8380_configure_rtl8214fc(struct phy_device *phydev) return 0; } -static int rtl8214fc_match_phy_device(struct phy_device *phydev) -{ - int addr = phydev->mdio.addr; - - return phydev->phy_id == PHY_ID_RTL8214FC && addr >= 24; -} - static int rtl8380_configure_serdes(struct phy_device *phydev) { u32 v; @@ -3856,10 +3907,9 @@ static struct phy_driver rtl83xx_phy_driver[] = { .set_loopback = genphy_loopback, }, { - PHY_ID_MATCH_MODEL(PHY_ID_RTL8214FC), + .match_phy_device = rtl8214fc_match_phy_device, .name = "Realtek RTL8214FC", .features = PHY_GBIT_FIBRE_FEATURES, - .match_phy_device = rtl8214fc_match_phy_device, .probe = rtl8214fc_phy_probe, .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, @@ -3872,10 +3922,9 @@ static struct phy_driver rtl83xx_phy_driver[] = { .get_eee = rtl8214fc_get_eee, }, { - PHY_ID_MATCH_MODEL(PHY_ID_RTL8218B_E), + .match_phy_device = rtl8218b_ext_match_phy_device, .name = "Realtek RTL8218B (external)", .features = PHY_GBIT_FEATURES, - .match_phy_device = rtl8218b_ext_match_phy_device, .probe = rtl8218b_ext_phy_probe, .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, @@ -3991,7 +4040,7 @@ static struct phy_driver rtl83xx_phy_driver[] = { module_phy_driver(rtl83xx_phy_driver); static struct mdio_device_id __maybe_unused rtl83xx_tbl[] = { - { PHY_ID_MATCH_MODEL(PHY_ID_RTL8214FC) }, + { PHY_ID_MATCH_MODEL(PHY_ID_RTL8214_OR_8218) }, { } }; diff --git a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.h b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.h index fb79560e6b..781ecb3c7c 100644 --- a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.h +++ b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.h @@ -19,21 +19,26 @@ struct __attribute__ ((__packed__)) fw_header { }; /* TODO: fixed path? */ -#define FIRMWARE_838X_8380_1 "rtl838x_phy/rtl838x_8380.fw" -#define FIRMWARE_838X_8214FC_1 "rtl838x_phy/rtl838x_8214fc.fw" -#define FIRMWARE_838X_8218b_1 "rtl838x_phy/rtl838x_8218b.fw" +#define FIRMWARE_838X_8380_1 "rtl838x_phy/rtl838x_8380.fw" +#define FIRMWARE_838X_8214FC_1 "rtl838x_phy/rtl838x_8214fc.fw" +#define FIRMWARE_838X_8218b_1 "rtl838x_phy/rtl838x_8218b.fw" -/* External RTL8218B and RTL8214FC IDs are identical */ -#define PHY_ID_RTL8214C 0x001cc942 -#define PHY_ID_RTL8214FC 0x001cc981 -#define PHY_ID_RTL8218B_E 0x001cc981 -#define PHY_ID_RTL8218D 0x001cc983 -#define PHY_ID_RTL8218B_I 0x001cca40 -#define PHY_ID_RTL8221B 0x001cc849 -#define PHY_ID_RTL8226 0x001cc838 -#define PHY_ID_RTL8390_GENERIC 0x001ccab0 -#define PHY_ID_RTL8393_I 0x001c8393 -#define PHY_ID_RTL9300_I 0x70d03106 +#define PHY_ID_RTL8214C 0x001cc942 +#define PHY_ID_RTL8218B_E 0x001cc980 +#define PHY_ID_RTL8214_OR_8218 0x001cc981 +#define PHY_ID_RTL8218D 0x001cc983 +#define PHY_ID_RTL8218B_I 0x001cca40 +#define PHY_ID_RTL8221B 0x001cc849 +#define PHY_ID_RTL8226 0x001cc838 +#define PHY_ID_RTL8390_GENERIC 0x001ccab0 +#define PHY_ID_RTL8393_I 0x001c8393 +#define PHY_ID_RTL9300_I 0x70d03106 + +/* These PHYs share the same id (0x001cc981) */ +#define PHY_IS_NOT_RTL821X 0 +#define PHY_IS_RTL8214FC 1 +#define PHY_IS_RTL8214FB 2 +#define PHY_IS_RTL8218B_E 3 /* Registers of the internal Serdes of the 8380 */ #define RTL838X_SDS_MODE_SEL (0x0028) From 0ed688a4d9c72e2bc1b2197f13e44d10caa9841e Mon Sep 17 00:00:00 2001 From: Markus Stockhausen Date: Fri, 18 Oct 2024 03:00:18 -0400 Subject: [PATCH 18/72] realtek: phy: simplify RTL8214C detection The detection of the RTL8214C is a little complicated. Make it easier. Signed-off-by: Markus Stockhausen Link: https://github.com/openwrt/openwrt/pull/16457 Signed-off-by: Robert Marko --- .../linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c index 2e52924f80..f9c656b659 100644 --- a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c +++ b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c @@ -1355,11 +1355,6 @@ static int rtl8218d_set_eee(struct phy_device *phydev, struct ethtool_eee *e) return 0; } -static int rtl8214c_match_phy_device(struct phy_device *phydev) -{ - return phydev->phy_id == PHY_ID_RTL8214C; -} - static int rtl8380_configure_rtl8214c(struct phy_device *phydev) { u32 phy_id, val; @@ -3895,10 +3890,9 @@ static int rtl9300_serdes_probe(struct phy_device *phydev) static struct phy_driver rtl83xx_phy_driver[] = { { - PHY_ID_MATCH_MODEL(PHY_ID_RTL8214C), + PHY_ID_MATCH_EXACT(PHY_ID_RTL8214C), .name = "Realtek RTL8214C", .features = PHY_GBIT_FEATURES, - .match_phy_device = rtl8214c_match_phy_device, .probe = rtl8214c_phy_probe, .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, From 8f68e1abe591db4db5542466761b815d06775d21 Mon Sep 17 00:00:00 2001 From: Markus Stockhausen Date: Sun, 22 Sep 2024 13:36:14 -0400 Subject: [PATCH 19/72] realtek: phy: fix RTL8218D detection Currently RTL8218D detection works for a range of devices. That can lead to false positives. E.g. RTL8218B or RTL8214FC are covered by the detection mask as well. That is wrong. Nail detection down to the real RTL8218D phy id. Signed-off-by: Markus Stockhausen Link: https://github.com/openwrt/openwrt/pull/16457 Signed-off-by: Robert Marko --- target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c index f9c656b659..09c6ca3b2c 100644 --- a/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c +++ b/target/linux/realtek/files-6.6/drivers/net/phy/rtl83xx-phy.c @@ -3929,7 +3929,7 @@ static struct phy_driver rtl83xx_phy_driver[] = { .get_eee = rtl8218b_get_eee, }, { - PHY_ID_MATCH_MODEL(PHY_ID_RTL8218D), + PHY_ID_MATCH_EXACT(PHY_ID_RTL8218D), .name = "REALTEK RTL8218D", .features = PHY_GBIT_FEATURES, .probe = rtl8218d_phy_probe, From 74509c0e7d4ae95fb6960a3f8c57c94c3d22e9fb Mon Sep 17 00:00:00 2001 From: Markus Stockhausen Date: Fri, 18 Oct 2024 02:20:20 -0400 Subject: [PATCH 20/72] realtek: remove wrong SMI bus from XGS1250 The RTL930x have only 4 SMI busses (0-3) and the XGS1250 SFP port ist directly managed. Remove the wrong configuration in the dts. Signed-off-by: Markus Stockhausen Link: https://github.com/openwrt/openwrt/pull/16457 Signed-off-by: Robert Marko --- target/linux/realtek/dts/rtl9302_zyxel_xgs1250-12.dts | 1 - 1 file changed, 1 deletion(-) diff --git a/target/linux/realtek/dts/rtl9302_zyxel_xgs1250-12.dts b/target/linux/realtek/dts/rtl9302_zyxel_xgs1250-12.dts index 0c35d7b004..d7252c9984 100644 --- a/target/linux/realtek/dts/rtl9302_zyxel_xgs1250-12.dts +++ b/target/linux/realtek/dts/rtl9302_zyxel_xgs1250-12.dts @@ -310,7 +310,6 @@ compatible = "ethernet-phy-ieee802.3-c22"; phy-is-integrated; reg = <27>; - rtl9300,smi-address = <4 0>; sds = < 9 >; }; From 945a335f662086145969816297a233d1a280ba95 Mon Sep 17 00:00:00 2001 From: Markus Stockhausen Date: Sun, 15 Sep 2024 13:01:41 -0400 Subject: [PATCH 21/72] realtek: ethernet: Improve SMI polling configuration based on DTS Although Zyxel XGS1210 devices are not yet officially supported there are several patches floating around to enable them. This is a very imporant one because it fixes a SMI misconfiguration. In the known DTS the SFP+ port settings are set as follows. phy26: ethernet-phy@26 { compatible = "ethernet-phy-ieee802.3-c45"; phy-is-integrated; reg = <26>; sds = < 8 >; }; phy27: ethernet-phy@27 { compatible = "ethernet-phy-ieee802.3-c45"; phy-is-integrated; reg = <27>; sds = < 9 >; }; So these are PHYs linked to an internal SerDes. During initialization rtl838x_mdio_init() generates smi_bus=0 & smi_addr=27/28 for these ports. Although this seems like a valid configuration integrated PHYs attached to an SerDes do not have an SMI bus. Later on the mdio reset wrongly feeds the SMI registers and as a result the PHYs on SMI bus 0 do not work. Without patch (loaded with rtk network on & initramfs): ... mdio_bus mdio-bus: MDIO device at address 0 is missing. mdio_bus mdio-bus: MDIO device at address 1 is missing. mdio_bus mdio-bus: MDIO device at address 2 is missing. mdio_bus mdio-bus: MDIO device at address 3 is missing. mdio_bus mdio-bus: MDIO device at address 4 is missing. mdio_bus mdio-bus: MDIO device at address 5 is missing. mdio_bus mdio-bus: MDIO device at address 6 is missing. mdio_bus mdio-bus: MDIO device at address 7 is missing. ... rtl83xx-switch ... : no phy at 0 rtl83xx-switch ... : failed to connect to PHY: -ENODEV rtl83xx-switch ... : error -19 setting up PHY for tree 0, switch 0, port 0 rtl83xx-switch ... : no phy at 1 rtl83xx-switch ... : failed to connect to PHY: -ENODEV rtl83xx-switch ... : error -19 setting up PHY for tree 0, switch 0, port 1 ... With patch (loaded with rtk network on & initramfs): ... rtl83xx-switch ... : PHY [mdio-bus:00] driver [REALTEK RTL8218D] (irq=POLL) rtl83xx-switch ... : PHY [mdio-bus:01] driver [REALTEK RTL8218D] (irq=POLL) ... Signed-off-by: Birger Koblitz Signed-off-by: Markus Stockhausen Link: https://github.com/openwrt/openwrt/pull/16457 Signed-off-by: Robert Marko --- .../drivers/net/ethernet/rtl838x_eth.c | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/target/linux/realtek/files-6.6/drivers/net/ethernet/rtl838x_eth.c b/target/linux/realtek/files-6.6/drivers/net/ethernet/rtl838x_eth.c index 710c65bc11..4b79090696 100644 --- a/target/linux/realtek/files-6.6/drivers/net/ethernet/rtl838x_eth.c +++ b/target/linux/realtek/files-6.6/drivers/net/ethernet/rtl838x_eth.c @@ -195,7 +195,7 @@ struct rtl838x_eth_priv { u32 lastEvent; u16 rxrings; u16 rxringlen; - u8 smi_bus[MAX_PORTS]; + int smi_bus[MAX_PORTS]; u8 smi_addr[MAX_PORTS]; u32 sds_id[MAX_PORTS]; bool smi_bus_isc45[MAX_SMI_BUSSES]; @@ -2008,8 +2008,9 @@ static int rtmdio_930x_reset(struct mii_bus *bus) for (int i = 0; i < RTL930X_CPU_PORT; i++) { int pos; - if (priv->smi_bus[i] > 3) + if (priv->smi_bus[i] < 0) continue; + pos = (i % 6) * 5; sw_w32_mask(0x1f << pos, priv->smi_addr[i] << pos, RTL930X_SMI_PORT0_5_ADDR + (i / 6) * 4); @@ -2114,9 +2115,12 @@ static int rtmdio_931x_reset(struct mii_bus *bus) mdc_on[0] = mdc_on[1] = mdc_on[2] = mdc_on[3] = false; /* Mapping of port to phy-addresses on an SMI bus */ poll_sel[0] = poll_sel[1] = poll_sel[2] = poll_sel[3] = 0; - for (int i = 0; i < 56; i++) { + for (int i = 0; i < RTL931X_CPU_PORT; i++) { u32 pos; + if (priv->smi_bus[i] < 0) + continue; + pos = (i % 6) * 5; sw_w32_mask(0x1f << pos, priv->smi_addr[i] << pos, RTL931X_SMI_PORT_ADDR + (i / 6) * 4); pos = (i * 2) % 32; @@ -2282,30 +2286,35 @@ static int rtl838x_mdio_init(struct rtl838x_eth_priv *priv) if (of_property_read_u32(dn, "reg", &pn)) continue; - if (of_property_read_u32_array(dn, "rtl9300,smi-address", &smi_addr[0], 2)) { - smi_addr[0] = 0; - smi_addr[1] = pn; + if (pn >= MAX_PORTS) { + pr_err("%s: illegal port number %d\n", __func__, pn); + return -ENODEV; } if (of_property_read_u32(dn, "sds", &priv->sds_id[pn])) priv->sds_id[pn] = -1; - else { + else pr_info("set sds port %d to %d\n", pn, priv->sds_id[pn]); - } - if (pn < MAX_PORTS) { + if (of_property_read_u32_array(dn, "rtl9300,smi-address", &smi_addr[0], 2)) { + priv->smi_bus[pn] = 0; + priv->smi_addr[pn] = pn; + } else { priv->smi_bus[pn] = smi_addr[0]; priv->smi_addr[pn] = smi_addr[1]; - } else { - pr_err("%s: illegal port number %d\n", __func__, pn); } - if (of_device_is_compatible(dn, "ethernet-phy-ieee802.3-c45")) - priv->smi_bus_isc45[smi_addr[0]] = true; - - if (of_property_read_bool(dn, "phy-is-integrated")) { - priv->phy_is_internal[pn] = true; + if (priv->smi_bus[pn] >= MAX_SMI_BUSSES) { + pr_err("%s: illegal SMI bus number %d\n", __func__, priv->smi_bus[pn]); + return -ENODEV; } + + priv->phy_is_internal[pn] = of_property_read_bool(dn, "phy-is-integrated"); + + if (priv->phy_is_internal[pn] && priv->sds_id[pn] >= 0) + priv->smi_bus[pn]= -1; + else if (of_device_is_compatible(dn, "ethernet-phy-ieee802.3-c45")) + priv->smi_bus_isc45[priv->smi_bus[pn]] = true; } dn = of_find_compatible_node(NULL, NULL, "realtek,rtl83xx-switch"); From e934e67f9c233b0a458771ed8938d295e33d7de0 Mon Sep 17 00:00:00 2001 From: Zoltan HERPAI Date: Sun, 27 Oct 2024 17:35:11 +0000 Subject: [PATCH 22/72] kirkwood: dns320l: export mcu_power GPIO This GPIO is pulled down by the onboard MCU when the power button is pressed for 5 seconds, indicating a user-initiated shutdown. Refresh patches at the same time. Signed-off-by: Zoltan HERPAI --- .../arch/arm/boot/dts/marvell/kirkwood-dns320l.dts | 11 +++++++++++ target/linux/kirkwood/patches-6.6/118-dns-320l.patch | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/target/linux/kirkwood/files-6.6/arch/arm/boot/dts/marvell/kirkwood-dns320l.dts b/target/linux/kirkwood/files-6.6/arch/arm/boot/dts/marvell/kirkwood-dns320l.dts index afeb76d5ff..883224316d 100644 --- a/target/linux/kirkwood/files-6.6/arch/arm/boot/dts/marvell/kirkwood-dns320l.dts +++ b/target/linux/kirkwood/files-6.6/arch/arm/boot/dts/marvell/kirkwood-dns320l.dts @@ -37,6 +37,17 @@ stdout-path = &uart0; }; + gpio-export { + compatible = "gpio-export"; + #size-cells = <0>; + + mcu_power { + gpio-export,name = "mcu_power"; + gpio-export,input = <0>; + gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>; + }; + }; + gpio-keys { compatible = "gpio-keys"; #address-cells = <1>; diff --git a/target/linux/kirkwood/patches-6.6/118-dns-320l.patch b/target/linux/kirkwood/patches-6.6/118-dns-320l.patch index 8f19441bbe..3fa0d94c66 100644 --- a/target/linux/kirkwood/patches-6.6/118-dns-320l.patch +++ b/target/linux/kirkwood/patches-6.6/118-dns-320l.patch @@ -24,7 +24,7 @@ chosen { bootargs = "console=ttyS0,115200n8 earlyprintk"; stdout-path = &uart0; -@@ -68,7 +75,7 @@ +@@ -79,7 +86,7 @@ linux,default-trigger = "usbport"; }; From 7ac3f0e96cabb634aaaa779e9f948f5766f288d7 Mon Sep 17 00:00:00 2001 From: Zoltan HERPAI Date: Sun, 27 Oct 2024 17:36:12 +0000 Subject: [PATCH 23/72] dns320l-mcu: bump to 2024-10-27 Improve support for power button handling. d9a2878 - Use /sys/class/gpio/mcu_power for monitoring the MCU power line 02b6005 - Use "halt" instead of "shutdown" Signed-off-by: Zoltan HERPAI --- package/utils/dns320l-mcu/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/utils/dns320l-mcu/Makefile b/package/utils/dns320l-mcu/Makefile index 5124f5323d..9488096a16 100644 --- a/package/utils/dns320l-mcu/Makefile +++ b/package/utils/dns320l-mcu/Makefile @@ -5,9 +5,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=https://github.com/wigyori/dns320l-daemon.git -PKG_SOURCE_DATE:=2024-05-11 -PKG_SOURCE_VERSION:=c74941880e0a8d2bc0344b3256b984397512e8c3 -PKG_MIRROR_HASH:=e0f186a0c139ccfac3d311f49e2fecdbd02fa3f9fe6ced4b1ce0baa603d49fc3 +PKG_SOURCE_DATE:=2024-10-27 +PKG_SOURCE_VERSION:=d9a2878a525f61fe9070a9f03eb67e5113a69a4f +PKG_MIRROR_HASH:=5f769253d63f8da1cc0cefd86159bafb4e4f8a54c26a0cbf254ee4d1c53f79bf PKG_MAINTAINER:=Zoltan HERPAI PKG_LICENSE:=GPL-3.0+ From ff18576f845e9b422748efcafe1332e206626604 Mon Sep 17 00:00:00 2001 From: Til Kaiser Date: Sun, 27 Oct 2024 14:02:14 +0100 Subject: [PATCH 24/72] xdp-tools: fix compilation when bpftool is installed Currently, xdp-tools doesn't compile on build systems where bpftool is installed because additional tools and BPF programs will be compiled then, which results in build errors. This commit disables the compilation of those bpftool-dependent tools. Signed-off-by: Til Kaiser Link: https://github.com/openwrt/openwrt/pull/16787 Signed-off-by: Robert Marko --- package/network/utils/xdp-tools/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/network/utils/xdp-tools/Makefile b/package/network/utils/xdp-tools/Makefile index 8c4071991f..8bce10f634 100644 --- a/package/network/utils/xdp-tools/Makefile +++ b/package/network/utils/xdp-tools/Makefile @@ -87,7 +87,8 @@ CONFIGURE_VARS += \ CLANG="$(CLANG)" \ BPF_TARGET="$(BPF_ARCH)-linux-gnu" \ LLC="$(LLVM_LLC)" \ - BPF_LDFLAGS="-march=$(BPF_TARGET) -mcpu=v3" + BPF_LDFLAGS="-march=$(BPF_TARGET) -mcpu=v3" \ + BPFTOOL="" ifneq ($(findstring s,$(OPENWRT_VERBOSE)),) MAKE_FLAGS+=V=1 From bcd95cb9c43aeb706ee03cb30f104ec8d171c91b Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Mon, 28 Oct 2024 14:01:52 +0100 Subject: [PATCH 25/72] airoha: an7581: replace TRNG patch with upstream version Replace TRNG patch with upstream version. Signed-off-by: Christian Marangi --- ...oha-add-support-for-Airoha-EN7581-TRNG.patch} | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) rename target/linux/airoha/patches-6.6/{102-hwrng-add-support-for-Airoha-EN7581-TRNG.patch => 030-v6.13-hwrng-airoha-add-support-for-Airoha-EN7581-TRNG.patch} (96%) diff --git a/target/linux/airoha/patches-6.6/102-hwrng-add-support-for-Airoha-EN7581-TRNG.patch b/target/linux/airoha/patches-6.6/030-v6.13-hwrng-airoha-add-support-for-Airoha-EN7581-TRNG.patch similarity index 96% rename from target/linux/airoha/patches-6.6/102-hwrng-add-support-for-Airoha-EN7581-TRNG.patch rename to target/linux/airoha/patches-6.6/030-v6.13-hwrng-airoha-add-support-for-Airoha-EN7581-TRNG.patch index 1c99369fcb..e21fb5649e 100644 --- a/target/linux/airoha/patches-6.6/102-hwrng-add-support-for-Airoha-EN7581-TRNG.patch +++ b/target/linux/airoha/patches-6.6/030-v6.13-hwrng-airoha-add-support-for-Airoha-EN7581-TRNG.patch @@ -1,7 +1,7 @@ -From 9dbd16ac89e00bd8640ecac3971b0943410b5cec Mon Sep 17 00:00:00 2001 +From 5c5db81bff81a0fcd9ad998543d4241cbfe4742f Mon Sep 17 00:00:00 2001 From: Christian Marangi -Date: Sat, 6 Jul 2024 01:15:24 +0200 -Subject: [PATCH 2/2] hwrng: add support for Airoha EN7581 TRNG +Date: Thu, 17 Oct 2024 14:44:38 +0200 +Subject: [PATCH 2/2] hwrng: airoha - add support for Airoha EN7581 TRNG Add support for Airoha TRNG. The Airoha SoC provide a True RNG module that can output 4 bytes of raw data at times. @@ -17,6 +17,8 @@ mutually exclusive, running as TRNG doesn't permit to also run it as DRBG. Signed-off-by: Christian Marangi +Reviewed-by: Martin Kaiser +Signed-off-by: Herbert Xu --- drivers/char/hw_random/Kconfig | 13 ++ drivers/char/hw_random/Makefile | 1 + @@ -65,13 +67,13 @@ Signed-off-by: Christian Marangi +#include +#include +#include -+#include ++#include ++#include ++#include ++#include +#include +#include -+#include -+#include +#include -+#include + +#define TRNG_IP_RDY 0x800 +#define CNT_TRANS GENMASK(15, 8) From f72879dd60b908fcca2ab016e30fe22c347a279d Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Tue, 29 Oct 2024 00:03:39 +0100 Subject: [PATCH 26/72] apk: bump to latest HEAD 2024-10-28 Bump APK to latest HEAD 2024-10-28. - Minor fixed to index inherit - Fixup to adb_w_copy Signed-off-by: Christian Marangi --- package/system/apk/Makefile | 6 +++--- .../patches/0001-openwrt-move-layer-db-to-temp-folder.patch | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/system/apk/Makefile b/package/system/apk/Makefile index b8fdc05104..3fc3aedc49 100644 --- a/package/system/apk/Makefile +++ b/package/system/apk/Makefile @@ -5,9 +5,9 @@ PKG_RELEASE:=1 PKG_SOURCE_URL=https://gitlab.alpinelinux.org/alpine/apk-tools.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2024-08-06 -PKG_SOURCE_VERSION:=54caa31be633efc5f655700b77af290124f71689 -PKG_MIRROR_HASH:=f3be762deac4f1469a4a2839691175e78019cb44295089befafa279a3390067c +PKG_SOURCE_DATE:=2024-10-28 +PKG_SOURCE_VERSION:=a1ad8568a1378d71c1f6354c428ebb1baa46fa05 +PKG_MIRROR_HASH:=68747e1253776dc00286c01e408f4c4e1eb61acf56009b7ecb3de4d49b34e567 PKG_VERSION=3.0.0_pre$(subst -,,$(PKG_SOURCE_DATE)) diff --git a/package/system/apk/patches/0001-openwrt-move-layer-db-to-temp-folder.patch b/package/system/apk/patches/0001-openwrt-move-layer-db-to-temp-folder.patch index 092ab1d726..dbc4945d9e 100644 --- a/package/system/apk/patches/0001-openwrt-move-layer-db-to-temp-folder.patch +++ b/package/system/apk/patches/0001-openwrt-move-layer-db-to-temp-folder.patch @@ -10,7 +10,7 @@ Signed-off-by: Paul Spooren --- a/src/database.c +++ b/src/database.c -@@ -1643,7 +1643,7 @@ const char *apk_db_layer_name(int layer) +@@ -1626,7 +1626,7 @@ const char *apk_db_layer_name(int layer) { switch (layer) { case APK_DB_LAYER_ROOT: return "lib/apk/db"; From 221f81a330999583da7ba05fa8d6445c41608852 Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Fri, 23 Aug 2024 23:46:52 +0200 Subject: [PATCH 27/72] cypress-firmware: fix version for APK Refactor version for cypress-firmware for APK. Signed-off-by: Paul Spooren Signed-off-by: Christian Marangi --- package/firmware/cypress-firmware/Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package/firmware/cypress-firmware/Makefile b/package/firmware/cypress-firmware/Makefile index 4d83617605..2b354b9eae 100644 --- a/package/firmware/cypress-firmware/Makefile +++ b/package/firmware/cypress-firmware/Makefile @@ -3,13 +3,14 @@ include $(TOPDIR)/rules.mk PKG_NAME:=cypress-firmware -PKG_VERSION:=5.10.9-2022_0909 +PKG_VERSION_REAL:=5.10.9-2022_0909 +PKG_VERSION:=$(subst _,.,$(subst -,.,$(PKG_VERSION_REAL))) PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/Infineon/ifx-linux-firmware/ -PKG_MIRROR_HASH:=3e48063f0ee621d938cbfea24f9e5632751b6eac9fe09b0d1289181eed1ee95e -PKG_SOURCE_VERSION:=release-v$(PKG_VERSION) +PKG_MIRROR_HASH:=cbdd862fbaad08f5905482038e8a97fafea9bab5673d65370d90ef248c4172d1 +PKG_SOURCE_VERSION:=release-v$(PKG_VERSION_REAL) PKG_MAINTAINER:=Álvaro Fernández Rojas PKG_LICENSE_FILES:=LICENCE From 5667b380cd30eeaeb39f0445bcb62b704f2c3223 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 24 Oct 2024 20:13:07 +0200 Subject: [PATCH 28/72] build: permit overwrite PACKAGE_DIR and PACKAGE_DIR_ALL Permit to overwrite PACKAGE_DIR and PACKAGE_DIR_ALL variables in rules.mk. This is to handle a special case with the ImageBuilder where these variable are overwrite. The main problem is that any include calling rules.mk again (example image.mk) will set these variables again dropping the modified value. To keep the modified value, set the PACKAGE_DIR and PACKAGE_DIR_ALL only if not already set. This permits the ImageBuilder to use custom directory instead of the default one defined in rules.mk. Signed-off-by: Christian Marangi --- rules.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rules.mk b/rules.mk index ae20742bd7..973fd1cbb9 100644 --- a/rules.mk +++ b/rules.mk @@ -141,8 +141,8 @@ ifeq ($(or $(CONFIG_EXTERNAL_TOOLCHAIN),$(CONFIG_TARGET_uml)),) iremap = -f$(if $(CONFIG_REPRODUCIBLE_DEBUG_INFO),file,macro)-prefix-map=$(1)=$(2) endif -PACKAGE_DIR:=$(BIN_DIR)/packages -PACKAGE_DIR_ALL:=$(TOPDIR)/staging_dir/packages/$(BOARD) +PACKAGE_DIR?=$(BIN_DIR)/packages +PACKAGE_DIR_ALL?=$(TOPDIR)/staging_dir/packages/$(BOARD) BUILD_DIR:=$(BUILD_DIR_BASE)/$(TARGET_DIR_NAME) STAGING_DIR:=$(TOPDIR)/staging_dir/$(TARGET_DIR_NAME) BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/$(TOOLCHAIN_DIR_NAME) From 23e27d21d532ffd3535810a6c8da2c70354bf78b Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 24 Oct 2024 20:25:06 +0200 Subject: [PATCH 29/72] build: detach apk repository handling from rootfs.mk To better support imagebuilder declaring --repositories-file on calling apk macro, detach this and --repository from rootfs.mk macro and move it to package Makefile and image.mk where they are used to permit a more generic usage. Signed-off-by: Christian Marangi --- include/image.mk | 7 +++++-- include/rootfs.mk | 4 +--- package/Makefile | 4 +++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/include/image.mk b/include/image.mk index fdd2ee9ef2..4c53247eda 100644 --- a/include/image.mk +++ b/include/image.mk @@ -280,7 +280,8 @@ endef define Image/Manifest $(if $(CONFIG_USE_APK), \ - $(call apk,$(TARGET_DIR_ORIG)) list --quiet --manifest --no-network | sort | sed 's/ / - /' > \ + $(call apk,$(TARGET_DIR_ORIG)) list --quiet --manifest --no-network \ + --repositories-file /dev/zero | sort | sed 's/ / - /' > \ $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest, \ $(call opkg,$(TARGET_DIR_ORIG)) list-installed > \ $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest \ @@ -333,7 +334,9 @@ opkg_target = \ $(call opkg,$(mkfs_cur_target_dir)) \ -f $(mkfs_cur_target_dir).conf -apk_target = $(call apk,$(mkfs_cur_target_dir)) --no-scripts +apk_target = \ + $(call apk,$(mkfs_cur_target_dir)) --no-scripts \ + --repositories-file /dev/zero --repository file://$(PACKAGE_DIR_ALL)/packages.adb target-dir-%: FORCE diff --git a/include/rootfs.mk b/include/rootfs.mk index 554dd48460..c409e442b5 100644 --- a/include/rootfs.mk +++ b/include/rootfs.mk @@ -47,12 +47,10 @@ apk = \ IPKG_INSTROOT=$(1) \ $(FAKEROOT) $(STAGING_DIR_HOST)/bin/apk \ --root $(1) \ - --repositories-file /dev/zero \ --keys-dir $(TOPDIR) \ --no-cache \ --no-logfile \ - --preserve-env \ - --repository file://$(PACKAGE_DIR_ALL)/packages.adb + --preserve-env TARGET_DIR_ORIG := $(TARGET_ROOTFS_DIR)/root.orig-$(BOARD) diff --git a/package/Makefile b/package/Makefile index 9de36b13c9..70897271ac 100644 --- a/package/Makefile +++ b/package/Makefile @@ -98,7 +98,9 @@ $(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(curdir)/merge-index ifneq ($(CONFIG_USE_APK),) $(file >$(TMP_DIR)/apk_install_list,\ $(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(pkg)$(call GetABISuffix,$(pkg)))) - $(call apk,$(TARGET_DIR)) add --initdb --no-scripts --arch $(ARCH_PACKAGES) $$(cat $(TMP_DIR)/apk_install_list) + $(call apk,$(TARGET_DIR)) add --initdb --no-scripts --arch $(ARCH_PACKAGES) \ + --repositories-file /dev/zero --repository file://$(PACKAGE_DIR_ALL)/packages.adb \ + $$(cat $(TMP_DIR)/apk_install_list) else $(file >$(TMP_DIR)/opkg_install_list,\ $(call opkg_package_files,\ From 27c76121d8cf6d78bbe8ce163cb02fb60baaa61e Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 24 Oct 2024 20:29:52 +0200 Subject: [PATCH 30/72] imagebuilder: copy apk keys with CONFIG_SIGNATURE_CHECK With CONFIG_SIGNATURE_CHECK enabled, copy keys following OPKG pattern. Signed-off-by: Christian Marangi --- target/imagebuilder/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/target/imagebuilder/Makefile b/target/imagebuilder/Makefile index ecc791b8e9..d2c125ccf2 100644 --- a/target/imagebuilder/Makefile +++ b/target/imagebuilder/Makefile @@ -82,13 +82,16 @@ else -exec $(CP) -t $(IB_LDIR)/ {} + endif -ifneq ($(CONFIG_USE_APK),y) ifneq ($(CONFIG_SIGNATURE_CHECK),) +ifneq ($(CONFIG_USE_APK),y) echo '' >> $(PKG_BUILD_DIR)/repositories.conf echo 'option check_signature' >> $(PKG_BUILD_DIR)/repositories.conf $(INSTALL_DIR) $(PKG_BUILD_DIR)/keys $(CP) -L $(STAGING_DIR_ROOT)/etc/opkg/keys/ $(PKG_BUILD_DIR)/ $(CP) -L $(STAGING_DIR_ROOT)/usr/sbin/opkg-key $(PKG_BUILD_DIR)/scripts/ +else + $(INSTALL_DIR) $(PKG_BUILD_DIR)/keys + $(CP) -L $(STAGING_DIR_ROOT)/etc/apk/keys/ $(PKG_BUILD_DIR)/ endif endif From 1c211e778180068b348cffaa668b37156bb8e5fd Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 24 Oct 2024 20:32:42 +0200 Subject: [PATCH 31/72] imagebuilder: correctly export PACKAGE_DIR and PACKAGE_DIR_ALL Correctly export PACKAGE_DIR and PACKAGE_DIR_ALL so that they won't be reset on internal call of rules.mk Signed-off-by: Christian Marangi --- target/imagebuilder/files/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/imagebuilder/files/Makefile b/target/imagebuilder/files/Makefile index 7d01bc0e42..024002666a 100644 --- a/target/imagebuilder/files/Makefile +++ b/target/imagebuilder/files/Makefile @@ -83,9 +83,9 @@ help: FORCE # override variables from rules.mk -PACKAGE_DIR:=$(TOPDIR)/packages +export PACKAGE_DIR:=$(TOPDIR)/packages LISTS_DIR:=$(subst $(space),/,$(patsubst %,..,$(subst /,$(space),$(TARGET_DIR))))$(DL_DIR) -PACKAGE_DIR_ALL:=$(TOPDIR)/packages +export PACKAGE_DIR_ALL:=$(TOPDIR)/packages export OPKG_KEYS:=$(TOPDIR)/keys OPKG:=$(call opkg,$(TARGET_DIR)) \ From a8d17c21e4e8f089f229361c43f1b219cb8f2a96 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 24 Oct 2024 20:36:43 +0200 Subject: [PATCH 32/72] imagebuilder: actually support IB from buildbot ImageBuilder compiled by buildbot doesn't have any package in the packages directory. Package needs to be downloaded instead. This works by calling update to the package manage to download the remove index and download the file. Fix missing support for this with APK, by configuring the --repositories-file option and calling the APK update. Also move the apk add --initdb to package_index. If CONFIG_SIGNATURE_CHECK is not enabled, the signature is not checked. Signed-off-by: Christian Marangi --- target/imagebuilder/files/Makefile | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/target/imagebuilder/files/Makefile b/target/imagebuilder/files/Makefile index 024002666a..3b1502cf57 100644 --- a/target/imagebuilder/files/Makefile +++ b/target/imagebuilder/files/Makefile @@ -95,8 +95,9 @@ OPKG:=$(call opkg,$(TARGET_DIR)) \ --lists-dir $(LISTS_DIR) APK:=$(call apk,$(TARGET_DIR)) \ - --cache-dir $(DL_DIR) \ - --allow-untrusted + --repositories-file $(TOPDIR)/repositories \ + $(if $(CONFIG_SIGNATURE_CHECK),,--allow-untrusted) \ + --cache-dir $(DL_DIR) include $(INCLUDE_DIR)/target.mk @@ -177,7 +178,10 @@ ifeq ($(CONFIG_USE_APK),) ) >/dev/null 2>/dev/null $(OPKG) update >&2 || true else - (cd $(PACKAGE_DIR); $(APK) mkndx --output packages.adb *.apk) >&2 + $(APK) add --initdb + (cd $(PACKAGE_DIR); $(APK) mkndx \ + --allow-untrusted --output packages.adb *.apk) >/dev/null 2>/dev/null || true + $(APK) update >&2 || true endif package_reload: @@ -220,7 +224,7 @@ ifeq ($(CONFIG_USE_APK),) $(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/kernel_*.ipk $(PACKAGE_DIR)/kernel_*.ipk)) $(OPKG) install $(BUILD_PACKAGES) else - $(APK) add --initdb --no-scripts $(firstword $(wildcard $(LINUX_DIR)/libc-*.apk $(PACKAGE_DIR)/libc_*.apk)) + $(APK) add --no-scripts $(firstword $(wildcard $(LINUX_DIR)/libc-*.apk $(PACKAGE_DIR)/libc_*.apk)) $(APK) add --no-scripts $(firstword $(wildcard $(LINUX_DIR)/kernel-*.apk $(PACKAGE_DIR)/kernel_*.apk)) $(APK) add --no-scripts $(BUILD_PACKAGES) endif From 578f266ad7236d9d88fa955e63c5e4967e41c3b6 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 24 Oct 2024 20:45:01 +0200 Subject: [PATCH 33/72] imagebuilder: complete support for local signing keys Complete support for local signing keys for APK. A local key will be always generated, mkndx is always called with --allow-untrusted as it needs to replace the sign key with the new local one. With CONFIG_SIGNATURE_CHECK the local index is signed with the local key. Local public key is added with the ADD_LOCAL_KEY option. Signed-off-by: Christian Marangi --- include/rootfs.mk | 2 +- target/imagebuilder/files/Makefile | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/include/rootfs.mk b/include/rootfs.mk index c409e442b5..e6cadc531d 100644 --- a/include/rootfs.mk +++ b/include/rootfs.mk @@ -47,7 +47,7 @@ apk = \ IPKG_INSTROOT=$(1) \ $(FAKEROOT) $(STAGING_DIR_HOST)/bin/apk \ --root $(1) \ - --keys-dir $(TOPDIR) \ + --keys-dir $(if $(APK_KEYS),$(APK_KEYS),$(TOPDIR)) \ --no-cache \ --no-logfile \ --preserve-env diff --git a/target/imagebuilder/files/Makefile b/target/imagebuilder/files/Makefile index 3b1502cf57..24de26c771 100644 --- a/target/imagebuilder/files/Makefile +++ b/target/imagebuilder/files/Makefile @@ -83,6 +83,8 @@ help: FORCE # override variables from rules.mk +BUILD_KEY_APK_SEC=$(TOPDIR)/keys/local-private-key.pem +BUILD_KEY_APK_PUB=$(TOPDIR)/keys/local-public-key.pem export PACKAGE_DIR:=$(TOPDIR)/packages LISTS_DIR:=$(subst $(space),/,$(patsubst %,..,$(subst /,$(space),$(TARGET_DIR))))$(DL_DIR) export PACKAGE_DIR_ALL:=$(TOPDIR)/packages @@ -94,6 +96,7 @@ OPKG:=$(call opkg,$(TARGET_DIR)) \ --cache $(DL_DIR) \ --lists-dir $(LISTS_DIR) +export APK_KEYS:=$(TOPDIR)/keys APK:=$(call apk,$(TARGET_DIR)) \ --repositories-file $(TOPDIR)/repositories \ $(if $(CONFIG_SIGNATURE_CHECK),,--allow-untrusted) \ @@ -180,6 +183,7 @@ ifeq ($(CONFIG_USE_APK),) else $(APK) add --initdb (cd $(PACKAGE_DIR); $(APK) mkndx \ + $(if $(CONFIG_SIGNATURE_CHECK), --keys-dir $(APK_KEYS) --sign $(BUILD_KEY_APK_SEC)) \ --allow-untrusted --output packages.adb *.apk) >/dev/null 2>/dev/null || true $(APK) update >&2 || true endif @@ -241,6 +245,13 @@ ifeq ($(CONFIG_USE_APK),) $(SCRIPT_DIR)/opkg-key add $(BUILD_KEY).pub \ ) \ ) +else + $(if $(CONFIG_SIGNATURE_CHECK), \ + $(if $(ADD_LOCAL_KEY), \ + mkdir -p $(TARGET_DIR)/etc/opkg/keys/; \ + cp $(BUILD_KEY_APK_PUB) $(TARGET_DIR)/etc/apk/keys/; \ + ) \ + ) endif $(call prepare_rootfs,$(TARGET_DIR),$(USER_FILES),$(DISABLED_SERVICES)) @@ -288,8 +299,8 @@ ifneq ($(PROFILE),) endif _check_keys: FORCE -ifeq ($(CONFIG_USE_APK),) ifneq ($(CONFIG_SIGNATURE_CHECK),) +ifeq ($(CONFIG_USE_APK),) @if [ ! -s $(BUILD_KEY) -o ! -s $(BUILD_KEY).pub ]; then \ echo Generate local signing keys... >&2; \ $(STAGING_DIR_HOST)/bin/usign -G \ @@ -303,9 +314,15 @@ ifneq ($(CONFIG_SIGNATURE_CHECK),) -p $(BUILD_KEY).pub \ -s $(BUILD_KEY); \ fi -endif else - # TODO + @if [ ! -s $(BUILD_KEY_APK_SEC) -o ! -s $(BUILD_KEY_APK_PUB) ]; then \ + echo Generate local signing keys... >&2; \ + $(STAGING_DIR_HOST)/bin/openssl ecparam -name prime256v1 -genkey -noout -out $(BUILD_KEY_APK_SEC); \ + sed -i '1s/^/untrusted comment: Local build key\n/' $(BUILD_KEY_APK_SEC); \ + $(STAGING_DIR_HOST)/bin/openssl ec -in $(BUILD_KEY_APK_SEC) -pubout > $(BUILD_KEY_APK_PUB); \ + sed -i '1s/^/untrusted comment: Local build key\n/' $(BUILD_KEY_APK_PUB); \ + fi +endif endif image: From 4b2f0beaf83a7dc6ee36b6e38cba361b6dc0f0c1 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 24 Oct 2024 23:23:03 +0200 Subject: [PATCH 34/72] bcm27xx-gpu-fw: fix version for APK Refactor version of bcm27xx-gpu-fw for APK. Signed-off-by: Christian Marangi --- package/kernel/bcm27xx-gpu-fw/Makefile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/package/kernel/bcm27xx-gpu-fw/Makefile b/package/kernel/bcm27xx-gpu-fw/Makefile index 878574ea5c..c6d53de7c7 100644 --- a/package/kernel/bcm27xx-gpu-fw/Makefile +++ b/package/kernel/bcm27xx-gpu-fw/Makefile @@ -2,17 +2,18 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=bcm27xx-gpu-fw -PKG_VERSION:=2024-04-24 -PKG_RELEASE:=969420b4121b522ab33c5001074cc4c2547dafaf +PKG_RELEASE_HASH:=969420b4121b522ab33c5001074cc4c2547dafaf +PKG_VERSION:=2024.04.24~$(PKG_RELEASE_HASH) +PKG_RELEASE:=1 -PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)/rpi-firmware-$(PKG_RELEASE) +PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)/rpi-firmware-$(PKG_RELEASE_HASH) PKG_FLAGS:=nonshared include $(INCLUDE_DIR)/package.mk -RPI_FIRMWARE_URL:=@GITHUB/raspberrypi/firmware/$(PKG_RELEASE)/boot/ -RPI_FIRMWARE_FILE:=rpi-firmware-$(PKG_RELEASE) +RPI_FIRMWARE_URL:=@GITHUB/raspberrypi/firmware/$(PKG_RELEASE_HASH)/boot/ +RPI_FIRMWARE_FILE:=rpi-firmware-$(PKG_RELEASE_HASH) define Download/LICENCE_broadcom FILE:=$(RPI_FIRMWARE_FILE)-LICENCE.broadcom From c73e231b5ce19c60560d8fb5a682cc264dd11b3f Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 24 Oct 2024 23:37:24 +0200 Subject: [PATCH 35/72] ath79: replace ancient kmod-ledtrig-usbdev with kmod-usb-ledtrig-usbport Replace ancient kmod-ledtrig-usbdev dropped from 2016 with kmod-usb-ledtrig-usbport upstream. Signed-off-by: Christian Marangi --- target/linux/ath79/image/generic-tp-link.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk index ec433e5b64..643de76f7c 100644 --- a/target/linux/ath79/image/generic-tp-link.mk +++ b/target/linux/ath79/image/generic-tp-link.mk @@ -683,7 +683,7 @@ define Device/tplink_tl-wdr6500-v2 SOC := qca9561 DEVICE_MODEL := TL-WDR6500 DEVICE_VARIANT := v2 - DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ledtrig-usbdev \ + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport \ kmod-ath9k kmod-ath10k-ct ath10k-firmware-qca988x-ct IMAGE_SIZE := 8000k KERNEL := kernel-bin | append-dtb | lzma | uImage lzma From 7e85c30938fd9ba73632222e86403ab6c75d88e5 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 24 Oct 2024 23:46:44 +0200 Subject: [PATCH 36/72] bcm53xx: drop kmod-ledtrig-default-on and kmod-ledtrig-netdev Drop kmod-ledtrig-default-on and kmod-ledtrig-netdev as the kmod were dropped and are now enabled by default. Signed-off-by: Christian Marangi --- target/linux/bcm53xx/image/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/target/linux/bcm53xx/image/Makefile b/target/linux/bcm53xx/image/Makefile index ce61ffa468..5a0b2c07a7 100644 --- a/target/linux/bcm53xx/image/Makefile +++ b/target/linux/bcm53xx/image/Makefile @@ -424,8 +424,7 @@ define Device/meraki_mx6x KERNEL_IN_UBI := 1 KERNEL_LOADADDR := 0x60008000 DEVICE_PACKAGES := -oseama kmod-leds-pwm kmod-usb-ehci \ - kmod-usb-ohci kmod-usb2 \ - kmod-ledtrig-default-on kmod-ledtrig-netdev + kmod-usb-ohci kmod-usb2 DEVICE_VENDOR := Cisco Meraki KERNEL = kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb From 4f1b7f58291e42993922455937c49400e5e43751 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 25 Oct 2024 00:12:05 +0200 Subject: [PATCH 37/72] mac80211: reintroduce rt61/rt73 support Reintroduce rt61/rt73 support as they looks to be pretty standard and currently required by Gemini or Xway-legacy targets. Notice that they are b/g card. Signed-off-by: Christian Marangi --- package/kernel/mac80211/ralink.mk | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/package/kernel/mac80211/ralink.mk b/package/kernel/mac80211/ralink.mk index 83d208ee1a..6925d9c549 100644 --- a/package/kernel/mac80211/ralink.mk +++ b/package/kernel/mac80211/ralink.mk @@ -1,6 +1,7 @@ PKG_DRIVERS += \ rt2x00-lib rt2x00-pci rt2x00-usb rt2x00-mmio \ - rt2800-lib rt2800-mmio rt2800-pci rt2800-soc rt2800-usb + rt2800-lib rt2800-mmio rt2800-pci rt2800-soc rt2800-usb \ + rt61-pci rt73-usb PKG_CONFIG_DEPENDS += \ CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS \ @@ -128,4 +129,18 @@ $(call KernelPackage/rt2x00/Default) AUTOLOAD:=$(call AutoProbe,rt2800usb) endef +define KernelPackage/rt61-pci +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci +kmod-eeprom-93cx6 +kmod-lib-crc-itu-t +rt61-pci-firmware + TITLE+= (RT2x61 PCI) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt61pci.ko + AUTOLOAD:=$(call AutoProbe,rt61pci) +endef +define KernelPackage/rt73-usb + $(call KernelPackage/rt2x00/Default) + DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb +kmod-lib-crc-itu-t +rt73-usb-firmware + TITLE+= (RT73 USB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt73usb.ko + AUTOLOAD:=$(call AutoProbe,rt73usb) +endef From 1ce7e9403b5b492deaca792774d0279c3f9c7055 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 25 Oct 2024 00:47:07 +0200 Subject: [PATCH 38/72] ipq40xx: drop ipq-wifi-teltonika_rutx from Teltonika RUTX50 Drop ipq-wifi-teltonika_rutx from Teltonika RUTX50, the board file was merged upstream but the ipq package was never dropped from DEVICE_PACKAGES list. Signed-off-by: Christian Marangi --- target/linux/ipq40xx/image/generic.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk index 478e399d0c..d92d0824f9 100644 --- a/target/linux/ipq40xx/image/generic.mk +++ b/target/linux/ipq40xx/image/generic.mk @@ -1146,7 +1146,7 @@ define Device/teltonika_rutx50 PAGESIZE := 2048 FILESYSTEMS := squashfs IMAGE/factory.ubi := append-ubi - DEVICE_PACKAGES := ipq-wifi-teltonika_rutx kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi + DEVICE_PACKAGES := kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi endef TARGET_DEVICES += teltonika_rutx50 From f59cbe55d18aad490e9893e45fe1bfaef440574c Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 25 Oct 2024 01:12:35 +0200 Subject: [PATCH 39/72] apk: add patch adding support for ARM Big-Endian arch Add patch adding support for ARM Big-Endian arch like Intel XScale IXP4xx SoC. Signed-off-by: Christian Marangi --- ...-add-default-arch-for-ARM-Big-Endian.patch | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 package/system/apk/patches/0010-apk_defines-add-default-arch-for-ARM-Big-Endian.patch diff --git a/package/system/apk/patches/0010-apk_defines-add-default-arch-for-ARM-Big-Endian.patch b/package/system/apk/patches/0010-apk_defines-add-default-arch-for-ARM-Big-Endian.patch new file mode 100644 index 0000000000..1d031e7783 --- /dev/null +++ b/package/system/apk/patches/0010-apk_defines-add-default-arch-for-ARM-Big-Endian.patch @@ -0,0 +1,29 @@ +From ffcda7769279e75993110766555eea6d3c6baae7 Mon Sep 17 00:00:00 2001 +From: Christian Marangi +Date: Fri, 25 Oct 2024 01:09:41 +0200 +Subject: [PATCH] apk_defines: add default arch for ARM Big-Endian + +Add default arch for ARM Big-Endiang named armeb. One example of such +target are devices based on the Intel XScale IXP4xx SoC. + +Signed-off-by: Christian Marangi +--- + src/apk_defines.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/apk_defines.h b/src/apk_defines.h +index c92dacd..06351df 100644 +--- a/src/apk_defines.h ++++ b/src/apk_defines.h +@@ -126,6 +126,8 @@ static inline int IS_ERR(const void *ptr) { return (unsigned long)ptr >= (unsign + #define APK_DEFAULT_BASE_ARCH "armhf" + #elif defined(__arm__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + #define APK_DEFAULT_BASE_ARCH "armel" ++#elif defined(__arm__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ++#define APK_DEFAULT_BASE_ARCH "armeb" + #elif defined(__aarch64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + #define APK_DEFAULT_BASE_ARCH "aarch64" + #elif defined(__s390x__) +-- +2.45.2 + From c8955268bc59488362eebc48e800e455c533473e Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 25 Oct 2024 10:25:10 +0200 Subject: [PATCH 40/72] adb-enablemodem: fix version for APK Refactor version of adb-enablemodem for APK. Signed-off-by: Christian Marangi --- package/network/utils/adb-enablemodem/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/network/utils/adb-enablemodem/Makefile b/package/network/utils/adb-enablemodem/Makefile index 3ffc64af0a..05479e3f8a 100644 --- a/package/network/utils/adb-enablemodem/Makefile +++ b/package/network/utils/adb-enablemodem/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=adb-enablemodem -PKG_VERSION:=2017-03-05 +PKG_VERSION:=2017.03.05 PKG_RELEASE:=1 include $(INCLUDE_DIR)/package.mk From 088b83c8453b30c122c8deeef41a9a0c5f7f085e Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 25 Oct 2024 11:56:45 +0200 Subject: [PATCH 41/72] msx: fix wrong device package list for I2SE Duckbill Fix wrong package device list that is trying to remove deprecated packages. Replace with new variant where possible. Signed-off-by: Christian Marangi --- target/linux/mxs/image/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/linux/mxs/image/Makefile b/target/linux/mxs/image/Makefile index fff7e7ca33..e5ba0a221a 100644 --- a/target/linux/mxs/image/Makefile +++ b/target/linux/mxs/image/Makefile @@ -46,8 +46,8 @@ endef define Device/i2se_duckbill DEVICE_VENDOR := I2SE DEVICE_MODEL := Duckbill - DEVICE_PACKAGES := -dnsmasq -firewall -ppp -ip6tables -iptables -6relayd -mtd \ - uboot-envtools kmod-leds-gpio -kmod-ipt-nathelper + DEVICE_PACKAGES := -dnsmasq -firewall4 -ppp -ip6tables -iptables -mtd \ + uboot-envtools kmod-leds-gpio -kmod-nf-nathelper SUPPORTED_DEVICES:=i2se,duckbill SOC:=imx28 DEVICE_DTS:=imx28-duckbill From 8009342f43c51ce06a51170d9d0594a344de004f Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 25 Oct 2024 12:27:28 +0200 Subject: [PATCH 42/72] bcm27xx-utils: fix version for APK Refactor version of bcm27xx-utils for APK. Signed-off-by: Christian Marangi --- package/utils/bcm27xx-utils/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/utils/bcm27xx-utils/Makefile b/package/utils/bcm27xx-utils/Makefile index 04dd6b8d62..e6d8c27e34 100644 --- a/package/utils/bcm27xx-utils/Makefile +++ b/package/utils/bcm27xx-utils/Makefile @@ -3,7 +3,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=bcm27xx-utils -PKG_VERSION:=2024-04-24 +PKG_VERSION:=2024.04.24 PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git From 285e200e5ed672798583a6645ee0afccbb2177dd Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 25 Oct 2024 14:56:20 +0200 Subject: [PATCH 43/72] ramips: mt7621: drop kmod-i2c-ralink from ASUS RP-AC56 Drop kmod-i2c-ralink from ASUS RP-AC56 as it was wrongly added. Such kmod is not supported on mt7621 as i2c is handled by the mediatek driver and not bay the ralink downstream one. Signed-off-by: Christian Marangi --- target/linux/ramips/image/mt7621.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 753e637adb..34ed9a4d54 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -404,7 +404,7 @@ define Device/asus_rp-ac56 DEVICE_MODEL := RP-AC56 IMAGE_SIZE := 16000k DEVICE_PACKAGES := kmod-mt7603 kmod-mt76x2 \ - kmod-i2c-ralink kmod-sound-mt7620 -uboot-envtools + kmod-sound-mt7620 -uboot-envtools IMAGES += factory.bin IMAGE/factory.bin := append-kernel | append-rootfs | pad-rootfs | check-size IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | \ From 0d96ed1894e004f516b54e73493d989998f63887 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 25 Oct 2024 22:35:02 +0200 Subject: [PATCH 44/72] apk: switch to wget url backend for HOST tool Switch APK to wget url backend for HOST tool to handle a problem with libressl. Signed-off-by: Christian Marangi --- package/system/apk/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/package/system/apk/Makefile b/package/system/apk/Makefile index 3fc3aedc49..3e2066e269 100644 --- a/package/system/apk/Makefile +++ b/package/system/apk/Makefile @@ -54,6 +54,7 @@ MESON_VARS+=VERSION=$(PKG_VERSION) MESON_HOST_ARGS += \ -Dcompressed-help=false \ -Ddocs=disabled \ + -Durl_backend=wget \ -Dcrypto_backend=openssl \ -Dzstd=false From cd2e5fbefc2548bb9b59275abd2d9db54f38f50b Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Sat, 26 Oct 2024 11:50:21 +0200 Subject: [PATCH 45/72] adb: fix version for APK Refactor version of adb for APK. Use HASH instead of rc tag. Signed-off-by: Christian Marangi --- package/utils/adb/Makefile | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/package/utils/adb/Makefile b/package/utils/adb/Makefile index c207c333b2..f0f137c781 100644 --- a/package/utils/adb/Makefile +++ b/package/utils/adb/Makefile @@ -2,16 +2,14 @@ include $(TOPDIR)/rules.mk #Based on adb package from AUR https://aur.archlinux.org/packages/adb/ , reused Makefile PKG_NAME:=adb -PKG_VERSION:=android.5.0.2_r1 +PKG_SOURCE_VERSION:=6fe92d1a3fb17545d82d020a3c995f32e6b71f9d +PKG_VERSION:=5.0.2~$(call version_abbrev,$(PKG_SOURCE_VERSION)) PKG_RELEASE:=3 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://android.googlesource.com/platform/system/core -PKG_SOURCE_VERSION:=6fe92d1a3fb17545d82d020a3c995f32e6b71f9d -PKG_MIRROR_HASH:=a9b4b86602dfc0d4fc9e1d0f78dc83e648a931fb04f5a4be9b1f0054a8cebf7e -PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION) -PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.xz -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) +PKG_MIRROR_HASH:=2ff96b4342cd05f475083207a4927635548c6693771c12a24cfa99f175fdb10a + PKG_MAINTAINER:=Henryk Heisig PKG_CPE_ID:=cpe:/a:google:android_debug_bridge From fb56a46246a6ef2b1dcfc42b0edc136bba0ed9d3 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Sat, 26 Oct 2024 12:29:32 +0200 Subject: [PATCH 46/72] omnia-mcutool: fix version for APK Refactor version of omnia-mcutool for APK. Switch to git clone and use hash instead of converting 0.3-rc3 to 0.3.3. Signed-off-by: Christian Marangi --- package/utils/omnia-mcutool/Makefile | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/package/utils/omnia-mcutool/Makefile b/package/utils/omnia-mcutool/Makefile index 493649b961..2eca0cf190 100644 --- a/package/utils/omnia-mcutool/Makefile +++ b/package/utils/omnia-mcutool/Makefile @@ -8,12 +8,14 @@ include $(TOPDIR)/rules.mk PKG_NAME:=omnia-mcutool -PKG_VERSION:=0.3-rc3 +PKG_VERSION_REAL:=0.3-rc3 PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=https://gitlab.nic.cz/turris/$(PKG_NAME)/-/archive/$(PKG_VERSION)/ -PKG_HASH:=80bc6a01ab86d51ebfdbddf77d74eead999a9bf7dbd08ca1fd4e8e1910eaf192 +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL=https://gitlab.nic.cz/turris/$(PKG_NAME) +PKG_SOURCE_DATE:=2024-08-05 +PKG_SOURCE_VERSION:=3833ade1377076a5c8e394d7afe7679716af0107 +PKG_MIRROR_HASH:=63cfaa388cffc8a5a7d08c14d6428d1bb33ae7aebf62a1764fd57f8bc94f9144 PKG_MAINTAINER:=Marek Mojik PKG_LICENSE:=GPL-2.0-or-later @@ -41,7 +43,7 @@ define Build/Compile CC="$(TARGET_CC)" \ CFLAGS="$(TARGET_CFLAGS) -Wall" \ LDFLAGS="$(TARGET_LDFLAGS)" \ - MCUTOOL_VERSION="$(PKG_VERSION)" + MCUTOOL_VERSION="$(PKG_VERSION_REAL)" endef define Package/omnia-mcutool/install From 377b66990b9718ea2a508f86b5c9f520ea31639f Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Sat, 26 Oct 2024 22:57:46 +0200 Subject: [PATCH 47/72] build: introduce support to declare skip package It seems some target started declaring package in DEVICE_PACKAGES just to call InstallDev and generate binary for the image firmware. This is very much used by layerscape target where trusted-firmware-a and dependency are called for final image generation. This is problematic for APK since it's more sensible to non exisiting package. To handle this, introduce a prefix '~' for a package that will signal to build the package but not install it in the final image. Signed-off-by: Christian Marangi --- include/image.mk | 2 +- scripts/target-metadata.pl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/image.mk b/include/image.mk index 4c53247eda..c476f6674f 100644 --- a/include/image.mk +++ b/include/image.mk @@ -326,7 +326,7 @@ ifdef CONFIG_TARGET_ROOTFS_CPIOGZ endif mkfs_packages = $(filter-out @%,$(PACKAGES_$(call param_get,pkg,pkg=$(target_params)))) -mkfs_packages_add = $(foreach pkg,$(filter-out -%,$(mkfs_packages)),$(pkg)$(call GetABISuffix,$(pkg))) +mkfs_packages_add = $(foreach pkg,$(filter-out -% ~%,$(mkfs_packages)),$(pkg)$(call GetABISuffix,$(pkg))) mkfs_packages_remove = $(foreach pkg,$(patsubst -%,%,$(filter -%,$(mkfs_packages))),$(pkg)$(call GetABISuffix,$(pkg))) mkfs_cur_target_dir = $(call mkfs_target_dir,pkg=$(target_params)) diff --git a/scripts/target-metadata.pl b/scripts/target-metadata.pl index e1d4ef242b..0c17e2e327 100755 --- a/scripts/target-metadata.pl +++ b/scripts/target-metadata.pl @@ -146,7 +146,7 @@ sub merge_package_lists($$) { my %pkgs; foreach my $pkg (@$list1, @$list2) { - $pkgs{$pkg} = 1; + $pkgs{$pkg =~ s/^~//r} = 1; } foreach my $pkg (keys %pkgs) { push @l, $pkg unless ($pkg =~ /^-/ or $pkgs{"-$pkg"}); From 1cb776481221680af4c0e7944a136ddebfa1694a Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Sat, 26 Oct 2024 23:16:21 +0200 Subject: [PATCH 48/72] layerscape: set firmware package to skip installation Add the '~' prefix to package that needs to skip installation as they are meta-package just to download and compile firmware package for the final firmware. Signed-off-by: Christian Marangi --- target/linux/layerscape/image/armv7.mk | 2 +- target/linux/layerscape/image/armv8_64b.mk | 68 +++++++++++----------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/target/linux/layerscape/image/armv7.mk b/target/linux/layerscape/image/armv7.mk index 6812d94e1f..fd617a5e8d 100644 --- a/target/linux/layerscape/image/armv7.mk +++ b/target/linux/layerscape/image/armv7.mk @@ -31,7 +31,7 @@ define Device/fsl_ls1021a-twr DEVICE_VENDOR := NXP DEVICE_MODEL := TWR-LS1021A DEVICE_VARIANT := Default - DEVICE_PACKAGES += layerscape-rcw + DEVICE_PACKAGES += ~layerscape-rcw IMAGE/firmware.bin := \ ls-clean | \ ls-append $(1)-rcw.bin | pad-to 1M | \ diff --git a/target/linux/layerscape/image/armv8_64b.mk b/target/linux/layerscape/image/armv8_64b.mk index 4bce779984..40452f3868 100644 --- a/target/linux/layerscape/image/armv8_64b.mk +++ b/target/linux/layerscape/image/armv8_64b.mk @@ -30,7 +30,7 @@ define Device/fsl_ls1012a-frdm DEVICE_MODEL := FRDM-LS1012A DEVICE_PACKAGES += \ layerscape-ppfe \ - trusted-firmware-a-ls1012a-frdm \ + ~trusted-firmware-a-ls1012a-frdm \ kmod-ppfe BLOCKSIZE := 256KiB IMAGE/firmware.bin := \ @@ -56,7 +56,7 @@ define Device/fsl_ls1012a-rdb DEVICE_MODEL := LS1012A-RDB DEVICE_PACKAGES += \ layerscape-ppfe \ - trusted-firmware-a-ls1012a-rdb \ + ~trusted-firmware-a-ls1012a-rdb \ kmod-hwmon-ina2xx \ kmod-iio-fxas21002c-i2c \ kmod-iio-fxos8700-i2c \ @@ -80,7 +80,7 @@ define Device/fsl_ls1012a-frwy-sdboot DEVICE_MODEL := FRWY-LS1012A DEVICE_PACKAGES += \ layerscape-ppfe \ - trusted-firmware-a-ls1012a-frwy-sdboot \ + ~trusted-firmware-a-ls1012a-frwy-sdboot \ kmod-ppfe DEVICE_DTS := fsl-ls1012a-frwy IMAGES += firmware.bin @@ -105,7 +105,7 @@ define Device/fsl_ls1028a-rdb DEVICE_VARIANT := Default KERNEL = kernel-bin | gzip | fit gzip $$(DEVICE_DTS_DIR)/$$(DEVICE_DTS).dtb DEVICE_PACKAGES += \ - trusted-firmware-a-ls1028a-rdb \ + ~trusted-firmware-a-ls1028a-rdb \ kmod-hwmon-ina2xx \ kmod-hwmon-lm90 \ kmod-rtc-pcf2127 @@ -130,7 +130,7 @@ define Device/fsl_ls1028a-rdb-sdboot DEVICE_VARIANT := SD Card Boot DEVICE_DTS := fsl-ls1028a-rdb DEVICE_PACKAGES += \ - trusted-firmware-a-ls1028a-rdb-sdboot \ + ~trusted-firmware-a-ls1028a-rdb-sdboot \ kmod-hwmon-ina2xx \ kmod-hwmon-lm90 \ kmod-rtc-pcf2127 @@ -151,8 +151,8 @@ define Device/fsl_ls1043a-rdb DEVICE_MODEL := LS1043A-RDB DEVICE_VARIANT := Default DEVICE_PACKAGES += \ - layerscape-fman \ - trusted-firmware-a-ls1043a-rdb \ + ~layerscape-fman \ + ~trusted-firmware-a-ls1043a-rdb \ fmc fmc-eth-config \ kmod-ahci-qoriq \ kmod-hwmon-ina2xx \ @@ -176,8 +176,8 @@ define Device/fsl_ls1043a-rdb-sdboot DEVICE_MODEL := LS1043A-RDB DEVICE_VARIANT := SD Card Boot DEVICE_PACKAGES += \ - layerscape-fman \ - trusted-firmware-a-ls1043a-rdb-sdboot \ + ~layerscape-fman \ + ~trusted-firmware-a-ls1043a-rdb-sdboot \ fmc fmc-eth-config \ kmod-ahci-qoriq \ kmod-hwmon-ina2xx \ @@ -200,8 +200,8 @@ define Device/fsl_ls1046a-frwy DEVICE_MODEL := FRWY-LS1046A DEVICE_VARIANT := Default DEVICE_PACKAGES += \ - layerscape-fman \ - trusted-firmware-a-ls1046a-frwy + ~layerscape-fman \ + ~trusted-firmware-a-ls1046a-frwy IMAGE/firmware.bin := \ ls-clean | \ ls-append $(1)-bl2.pbl | pad-to 1M | \ @@ -220,8 +220,8 @@ define Device/fsl_ls1046a-frwy-sdboot DEVICE_MODEL := FRWY-LS1046A DEVICE_VARIANT := SD Card Boot DEVICE_PACKAGES += \ - layerscape-fman \ - trusted-firmware-a-ls1046a-frwy-sdboot + ~layerscape-fman \ + ~trusted-firmware-a-ls1046a-frwy-sdboot DEVICE_DTS := fsl-ls1046a-frwy IMAGE/sdcard.img.gz := \ ls-clean | \ @@ -241,8 +241,8 @@ define Device/fsl_ls1046a-rdb DEVICE_MODEL := LS1046A-RDB DEVICE_VARIANT := Default DEVICE_PACKAGES += \ - layerscape-fman \ - trusted-firmware-a-ls1046a-rdb \ + ~layerscape-fman \ + ~trusted-firmware-a-ls1046a-rdb \ fmc fmc-eth-config \ kmod-ahci-qoriq \ kmod-hwmon-ina2xx \ @@ -266,8 +266,8 @@ define Device/fsl_ls1046a-rdb-sdboot DEVICE_MODEL := LS1046A-RDB DEVICE_VARIANT := SD Card Boot DEVICE_PACKAGES += \ - layerscape-fman \ - trusted-firmware-a-ls1046a-rdb-sdboot \ + ~layerscape-fman \ + ~trusted-firmware-a-ls1046a-rdb-sdboot \ fmc fmc-eth-config \ kmod-ahci-qoriq \ kmod-hwmon-ina2xx \ @@ -291,9 +291,9 @@ define Device/fsl_ls1088a-rdb DEVICE_MODEL := LS1088A-RDB DEVICE_VARIANT := Default DEVICE_PACKAGES += \ - layerscape-mc \ - layerscape-dpl \ - trusted-firmware-a-ls1088a-rdb \ + ~layerscape-mc \ + ~layerscape-dpl \ + ~trusted-firmware-a-ls1088a-rdb \ restool \ kmod-ahci-qoriq \ kmod-hwmon-ina2xx \ @@ -319,9 +319,9 @@ define Device/fsl_ls1088a-rdb-sdboot DEVICE_MODEL := LS1088A-RDB DEVICE_VARIANT := SD Card Boot DEVICE_PACKAGES += \ - layerscape-mc \ - layerscape-dpl \ - trusted-firmware-a-ls1088a-rdb-sdboot \ + ~layerscape-mc \ + ~layerscape-dpl \ + ~trusted-firmware-a-ls1088a-rdb-sdboot \ restool \ kmod-ahci-qoriq \ kmod-hwmon-ina2xx \ @@ -346,9 +346,9 @@ define Device/fsl_ls2088a-rdb DEVICE_VENDOR := NXP DEVICE_MODEL := LS2088ARDB DEVICE_PACKAGES += \ - layerscape-mc \ - layerscape-dpl \ - trusted-firmware-a-ls2088a-rdb \ + ~layerscape-mc \ + ~layerscape-dpl \ + ~trusted-firmware-a-ls2088a-rdb \ restool \ kmod-ahci-qoriq IMAGE/firmware.bin := \ @@ -370,10 +370,10 @@ define Device/fsl_lx2160a-rdb DEVICE_MODEL := LX2160A-RDB DEVICE_VARIANT := Rev2.0 silicon DEVICE_PACKAGES += \ - layerscape-mc \ - layerscape-dpl \ - layerscape-ddr-phy \ - trusted-firmware-a-lx2160a-rdb \ + ~layerscape-mc \ + ~layerscape-dpl \ + ~layerscape-ddr-phy \ + ~trusted-firmware-a-lx2160a-rdb \ restool IMAGE/firmware.bin := \ ls-clean | \ @@ -396,10 +396,10 @@ define Device/fsl_lx2160a-rdb-sdboot DEVICE_MODEL := LX2160A-RDB DEVICE_VARIANT := Rev2.0 silicon SD Card Boot DEVICE_PACKAGES += \ - layerscape-mc \ - layerscape-dpl \ - layerscape-ddr-phy \ - trusted-firmware-a-lx2160a-rdb-sdboot \ + ~layerscape-mc \ + ~layerscape-dpl \ + ~layerscape-ddr-phy \ + ~trusted-firmware-a-lx2160a-rdb-sdboot \ restool DEVICE_DTS := fsl-lx2160a-rdb IMAGE/sdcard.img.gz := \ From d42a8b25fa4986f1593a6d9dd257853326553d0f Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Sat, 26 Oct 2024 23:17:46 +0200 Subject: [PATCH 49/72] layerscape: drop fmc and fmc-eth-config package Drop fmc and fmc-eth-config package as they were never actually submitted to openwrt mainline and they don't exist around. They are probably part of NXP SDK and were added due to copy-paste errors. Signed-off-by: Christian Marangi --- target/linux/layerscape/image/armv8_64b.mk | 4 ---- 1 file changed, 4 deletions(-) diff --git a/target/linux/layerscape/image/armv8_64b.mk b/target/linux/layerscape/image/armv8_64b.mk index 40452f3868..c048a81bc4 100644 --- a/target/linux/layerscape/image/armv8_64b.mk +++ b/target/linux/layerscape/image/armv8_64b.mk @@ -153,7 +153,6 @@ define Device/fsl_ls1043a-rdb DEVICE_PACKAGES += \ ~layerscape-fman \ ~trusted-firmware-a-ls1043a-rdb \ - fmc fmc-eth-config \ kmod-ahci-qoriq \ kmod-hwmon-ina2xx \ kmod-hwmon-lm90 @@ -178,7 +177,6 @@ define Device/fsl_ls1043a-rdb-sdboot DEVICE_PACKAGES += \ ~layerscape-fman \ ~trusted-firmware-a-ls1043a-rdb-sdboot \ - fmc fmc-eth-config \ kmod-ahci-qoriq \ kmod-hwmon-ina2xx \ kmod-hwmon-lm90 @@ -243,7 +241,6 @@ define Device/fsl_ls1046a-rdb DEVICE_PACKAGES += \ ~layerscape-fman \ ~trusted-firmware-a-ls1046a-rdb \ - fmc fmc-eth-config \ kmod-ahci-qoriq \ kmod-hwmon-ina2xx \ kmod-hwmon-lm90 @@ -268,7 +265,6 @@ define Device/fsl_ls1046a-rdb-sdboot DEVICE_PACKAGES += \ ~layerscape-fman \ ~trusted-firmware-a-ls1046a-rdb-sdboot \ - fmc fmc-eth-config \ kmod-ahci-qoriq \ kmod-hwmon-ina2xx \ kmod-hwmon-lm90 From 81ed181a51e1786129a0c26c631991c41ee951a4 Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Fri, 12 Apr 2024 19:01:57 +0200 Subject: [PATCH 50/72] dsl-vrx200-firmware-xdsl: fix PKG_VERSION for APK The version was a mix of strings, hex numbers and semantic numbers. Switch the PKG_VERSION to something digestible by APK and introduce PKG_SOURCE_VERSION to handle the actual filename. While at it, drop the redundant PKG_B_NAME which was the same as PKG_NAME anyway. Signed-off-by: Paul Spooren --- .../lantiq/dsl-vrx200-firmware-xdsl/Makefile | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/package/firmware/lantiq/dsl-vrx200-firmware-xdsl/Makefile b/package/firmware/lantiq/dsl-vrx200-firmware-xdsl/Makefile index 649325601c..37db950bea 100644 --- a/package/firmware/lantiq/dsl-vrx200-firmware-xdsl/Makefile +++ b/package/firmware/lantiq/dsl-vrx200-firmware-xdsl/Makefile @@ -7,9 +7,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dsl_vr9_firmware_xdsl -PKG_VERSION:=05.08.01.08.01.06_05.08.00.0B.01.01_osc +PKG_VERSION:=05.08.01.08.01.06.05.08.00.11.01.01 +PKG_SOURCE_VERSION:=05.08.01.08.01.06_05.08.00.0B.01.01_osc PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz PKG_SOURCE_URL:=@OPENWRT PKG_HASH:=44cd94130571fe42dfa8f0f9d44597d104e9e77962617fe38646b7a0b4184a2b PKG_BUILD_DEPENDS:=bsdiff/host @@ -18,9 +20,9 @@ PKG_FLAGS:=nonshared include $(INCLUDE_DIR)/package.mk -PKG_B_NAME:=dsl_vr9_firmware_xdsl -PKG_B_VERSION:=05.07.09.09.00.06_05.07.04.04.00.02_osc -PKG_B_SOURCE:=$(PKG_B_NAME)-$(PKG_B_VERSION).tar.gz +PKG_B_VERSION:=05.07.09.09.00.06.05.07.04.04.00.02 +PKG_B_SOURCE_VERSION:=05.07.09.09.00.06_05.07.04.04.00.02_osc +PKG_B_SOURCE:=$(PKG_NAME)-$(PKG_B_SOURCE_VERSION).tar.gz ANNEX_A_VER:=581816_580B11 ANNEX_B_VER:=579906_574402 From 0357372896b784b6eb4010b479a9714413ec44e0 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Sun, 27 Oct 2024 10:02:55 +0100 Subject: [PATCH 51/72] armsr: don't limit kmods to armsr armv8 subtarget Drop limitation on depending on only armv8 for armsr target as those module should support both 32 and 64 bits systems. Only thunderx-net actually require 64 bit systems. Signed-off-by: Christian Marangi --- package/kernel/linux/modules/netdevices.mk | 6 ++-- target/linux/armsr/image/Makefile | 4 +-- target/linux/armsr/modules.mk | 34 +++++++++++----------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/package/kernel/linux/modules/netdevices.mk b/package/kernel/linux/modules/netdevices.mk index eb0d55e252..cd24fb3ecb 100644 --- a/package/kernel/linux/modules/netdevices.mk +++ b/package/kernel/linux/modules/netdevices.mk @@ -1765,7 +1765,7 @@ $(eval $(call KernelPackage,sfp)) define KernelPackage/pcs-xpcs SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Synopsis DesignWare PCS driver - DEPENDS:=@(TARGET_x86_64||TARGET_armsr_armv8) +kmod-phylink + DEPENDS:=@(TARGET_x86_64||TARGET_armsr) +kmod-phylink KCONFIG:=CONFIG_PCS_XPCS FILES:=$(LINUX_DIR)/drivers/net/pcs/pcs_xpcs.ko AUTOLOAD:=$(call AutoLoad,20,pcs_xpcs) @@ -1777,7 +1777,7 @@ $(eval $(call KernelPackage,pcs-xpcs)) define KernelPackage/stmmac-core SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Synopsis Ethernet Controller core (NXP,STMMicro,others) - DEPENDS:=@TARGET_x86_64||TARGET_armsr_armv8 +kmod-pcs-xpcs +kmod-ptp + DEPENDS:=@TARGET_x86_64||TARGET_armsr +kmod-pcs-xpcs +kmod-ptp KCONFIG:=CONFIG_STMMAC_ETH \ CONFIG_STMMAC_SELFTESTS=n \ CONFIG_STMMAC_PLATFORM \ @@ -1961,7 +1961,7 @@ $(eval $(call KernelPackage,lan743x)) define KernelPackage/amazon-ena SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Elastic Network Adapter (for Amazon AWS) - DEPENDS:=@TARGET_x86_64||TARGET_armsr_armv8 + DEPENDS:=@TARGET_x86_64||TARGET_armsr KCONFIG:=CONFIG_ENA_ETHERNET FILES:=$(LINUX_DIR)/drivers/net/ethernet/amazon/ena/ena.ko AUTOLOAD:=$(call AutoLoad,12,ena) diff --git a/target/linux/armsr/image/Makefile b/target/linux/armsr/image/Makefile index 66f027c732..09c37beeec 100644 --- a/target/linux/armsr/image/Makefile +++ b/target/linux/armsr/image/Makefile @@ -106,11 +106,11 @@ define Device/generic DEVICE_PACKAGES += kmod-amazon-ena kmod-e1000e kmod-vmxnet3 kmod-rtc-rx8025 \ kmod-i2c-mux-pca954x kmod-gpio-pca953x partx-utils kmod-wdt-sp805 \ kmod-mvneta kmod-mvpp2 kmod-fsl-dpaa1-net kmod-fsl-dpaa2-net \ - kmod-fsl-enetc-net kmod-dwmac-imx kmod-fsl-fec kmod-thunderx-net \ + kmod-fsl-enetc-net kmod-dwmac-imx kmod-fsl-fec \ kmod-dwmac-rockchip kmod-dwmac-sun8i kmod-phy-aquantia kmod-phy-broadcom \ kmod-phy-marvell kmod-phy-marvell-10g kmod-sfp kmod-atlantic \ kmod-bcmgenet kmod-octeontx2-net kmod-renesas-net-avb \ - kmod-phy-realtek kmod-phy-smsc + kmod-phy-realtek kmod-phy-smsc $(if $(CONFIG_aarch64),kmod-thunderx-net) endef TARGET_DEVICES += generic diff --git a/target/linux/armsr/modules.mk b/target/linux/armsr/modules.mk index 15acfd9e48..692fb9fa68 100644 --- a/target/linux/armsr/modules.mk +++ b/target/linux/armsr/modules.mk @@ -1,7 +1,7 @@ define KernelPackage/acpi-mdio SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=ACPI MDIO support - DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-mdio-devres + DEPENDS:=@TARGET_armsr +kmod-libphy +kmod-mdio-devres KCONFIG:=CONFIG_ACPI_MDIO FILES:=$(LINUX_DIR)/drivers/net/mdio/acpi_mdio.ko AUTOLOAD:=$(call AutoLoad,11,acpi_mdio) @@ -15,7 +15,7 @@ $(eval $(call KernelPackage,acpi-mdio)) define KernelPackage/bcmgenet SUBMENU=$(NETWORK_DEVICES_MENU) - DEPENDS:=@(TARGET_armsr_armv8) +kmod-mdio-bcm-unimac + DEPENDS:=@TARGET_armsr +kmod-mdio-bcm-unimac TITLE:=Broadcom GENET internal MAC (Raspberry Pi 4) KCONFIG:=CONFIG_BCMGENET FILES=$(LINUX_DIR)/drivers/net/ethernet/broadcom/genet/genet.ko @@ -26,7 +26,7 @@ $(eval $(call KernelPackage,bcmgenet)) define KernelPackage/mdio-bcm-unimac SUBMENU=$(NETWORK_DEVICES_MENU) - DEPENDS:=@(TARGET_armsr_armv8) +kmod-of-mdio + DEPENDS:=@TARGET_armsr +kmod-of-mdio TITLE:=Broadcom UniMAC MDIO bus controller KCONFIG:=CONFIG_MDIO_BCM_UNIMAC FILES=$(LINUX_DIR)/drivers/net/mdio/mdio-bcm-unimac.ko @@ -37,7 +37,7 @@ $(eval $(call KernelPackage,mdio-bcm-unimac)) define KernelPackage/fsl-pcs-lynx SUBMENU=$(NETWORK_DEVICES_MENU) - DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-of-mdio +kmod-phylink + DEPENDS:=@TARGET_armsr +kmod-libphy +kmod-of-mdio +kmod-phylink TITLE:=NXP (Freescale) Lynx PCS HIDDEN:=1 KCONFIG:=CONFIG_PCS_LYNX @@ -49,7 +49,7 @@ $(eval $(call KernelPackage,fsl-pcs-lynx)) define KernelPackage/fsl-fec SUBMENU:=$(NETWORK_DEVICES_MENU) - DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-of-mdio \ + DEPENDS:=@TARGET_armsr +kmod-libphy +kmod-of-mdio \ +kmod-ptp +kmod-net-selftests TITLE:=NXP (Freescale) FEC Ethernet controller (i.MX) KCONFIG:=CONFIG_FEC @@ -61,7 +61,7 @@ $(eval $(call KernelPackage,fsl-fec)) define KernelPackage/fsl-xgmac-mdio SUBMENU=$(NETWORK_DEVICES_MENU) - DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-of-mdio +kmod-acpi-mdio + DEPENDS:=@TARGET_armsr +kmod-libphy +kmod-of-mdio +kmod-acpi-mdio TITLE:=NXP (Freescale) MDIO bus KCONFIG:=CONFIG_FSL_XGMAC_MDIO FILES=$(LINUX_DIR)/drivers/net/ethernet/freescale/xgmac_mdio.ko @@ -85,7 +85,7 @@ $(eval $(call KernelPackage,fsl-mc-dpio)) define KernelPackage/fsl-enetc-net SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=:NXP ENETC (LS1028A) Ethernet - DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-fsl-pcs-lynx + DEPENDS:=@TARGET_armsr +kmod-phylink +kmod-fsl-pcs-lynx KCONFIG:= \ CONFIG_FSL_ENETC \ CONFIG_FSL_ENETC_VF \ @@ -104,7 +104,7 @@ $(eval $(call KernelPackage,fsl-enetc-net)) define KernelPackage/fsl-dpaa1-net SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=NXP DPAA1 (LS1043/LS1046) Ethernet - DEPENDS:=@(TARGET_armsr_armv8) +kmod-fsl-xgmac-mdio +kmod-libphy +kmod-crypto-crc32 + DEPENDS:=@TARGET_armsr +kmod-fsl-xgmac-mdio +kmod-libphy +kmod-crypto-crc32 KCONFIG:= \ CONFIG_FSL_DPAA=y \ CONFIG_FSL_DPAA_ETH \ @@ -124,7 +124,7 @@ $(eval $(call KernelPackage,fsl-dpaa1-net)) define KernelPackage/fsl-dpaa2-net SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=NXP DPAA2 Ethernet - DEPENDS:=@(TARGET_armsr_armv8) +kmod-fsl-xgmac-mdio +kmod-phylink \ + DEPENDS:=@TARGET_armsr +kmod-fsl-xgmac-mdio +kmod-phylink \ +kmod-fsl-pcs-lynx +kmod-fsl-mc-dpio KCONFIG:= \ CONFIG_FSL_MC_UAPI_SUPPORT=y \ @@ -139,7 +139,7 @@ $(eval $(call KernelPackage,fsl-dpaa2-net)) define KernelPackage/fsl-dpaa2-console SUBMENU:=$(OTHER_MENU) TITLE:=NXP DPAA2 Debug console - DEPENDS:=@(TARGET_armsr_armv8) + DEPENDS:=@TARGET_armsr KCONFIG:=CONFIG_DPAA2_CONSOLE FILES=$(LINUX_DIR)/drivers/soc/fsl/dpaa2-console.ko AUTOLOAD=$(call AutoLoad,40,dpaa2-console) @@ -155,7 +155,7 @@ $(eval $(call KernelPackage,fsl-dpaa2-console)) define KernelPackage/marvell-mdio SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Marvell Armada platform MDIO driver - DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-of-mdio +kmod-acpi-mdio + DEPENDS:=@TARGET_armsr +kmod-libphy +kmod-of-mdio +kmod-acpi-mdio KCONFIG:=CONFIG_MVMDIO FILES=$(LINUX_DIR)/drivers/net/ethernet/marvell/mvmdio.ko AUTOLOAD=$(call AutoLoad,30,marvell-mdio) @@ -166,7 +166,7 @@ $(eval $(call KernelPackage,marvell-mdio)) define KernelPackage/mvneta SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Marvell Armada 370/38x/XP/37xx network driver - DEPENDS:=@(TARGET_armsr_armv8) +kmod-marvell-mdio +kmod-phylink + DEPENDS:=@TARGET_armsr +kmod-marvell-mdio +kmod-phylink KCONFIG:=CONFIG_MVNETA FILES:=$(LINUX_DIR)/drivers/net/ethernet/marvell/mvneta.ko AUTOLOAD=$(call AutoLoad,30,mvneta) @@ -177,7 +177,7 @@ $(eval $(call KernelPackage,mvneta)) define KernelPackage/mvpp2 SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Marvell Armada 375/7K/8K network driver - DEPENDS:=@(TARGET_armsr_armv8) +kmod-marvell-mdio +kmod-phylink + DEPENDS:=@TARGET_armsr +kmod-marvell-mdio +kmod-phylink KCONFIG:=CONFIG_MVPP2 \ CONFIG_MVPP2_PTP=n FILES=$(LINUX_DIR)/drivers/net/ethernet/marvell/mvpp2/mvpp2.ko @@ -242,7 +242,7 @@ $(eval $(call KernelPackage,dwmac-rockchip)) define KernelPackage/mdio-thunder SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Marvell (Cavium) Thunder MDIO controller - DEPENDS:=@(TARGET_armsr_armv8) +kmod-of-mdio + DEPENDS:=@TARGET_armsr +kmod-of-mdio KCONFIG:=CONFIG_MDIO_THUNDER FILES=$(LINUX_DIR)/drivers/net/mdio/mdio-cavium.ko \ $(LINUX_DIR)/drivers/net/mdio/mdio-thunder.ko @@ -254,7 +254,7 @@ $(eval $(call KernelPackage,mdio-thunder)) define KernelPackage/thunderx-net SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Marvell (Cavium) Thunder network drivers - DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-mdio-thunder + DEPENDS:=@TARGET_armsr_armv8 +kmod-phylink +kmod-mdio-thunder KCONFIG:=CONFIG_NET_VENDOR_CAVIUM \ CONFIG_THUNDER_NIC_PF \ CONFIG_THUNDER_NIC_VF \ @@ -272,7 +272,7 @@ $(eval $(call KernelPackage,thunderx-net)) define KernelPackage/octeontx2-net SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Marvell (Cavium) ThunderX2 network drivers - DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-of-mdio +kmod-macsec \ + DEPENDS:=@TARGET_armsr +kmod-phylink +kmod-of-mdio +kmod-macsec \ +kmod-ptp KCONFIG:=CONFIG_OCTEONTX2_MBOX \ CONFIG_OCTEONTX2_AF \ @@ -291,7 +291,7 @@ $(eval $(call KernelPackage,octeontx2-net)) define KernelPackage/renesas-net-avb SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Renesas network drivers - DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-mii +kmod-ptp +kmod-libphy +kmod-mdio-gpio + DEPENDS:=@TARGET_armsr +kmod-phylink +kmod-mii +kmod-ptp +kmod-libphy +kmod-mdio-gpio KCONFIG:=CONFIG_RAVB FILES=$(LINUX_DIR)/drivers/net/ethernet/renesas/ravb.ko AUTOLOAD:=$(call AutoProbe,ravb) From 03e05253259cbdf5696d81f458dbfddb4530c758 Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Sun, 27 Oct 2024 16:36:33 +0100 Subject: [PATCH 52/72] include/package-pack: drop version from provides Adding a version to the provides causes it to conflict with other packages that provides the same package, further details are available here: https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/master/doc/apk-package.5.scd#L199 This was intitally done, if I remember correctly, to support depending on the specific kernel modules. Due to patches to APK, versions containing hashes work now, too, so this is no longer required. Only add the version to packages that define an ABI version since other packages depend against the package name plus ABI version. While at it, format the now rather complex call. Fixes: https://github.com/openwrt/openwrt/issues/16795 Signed-off-by: Paul Spooren --- include/package-pack.mk | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/include/package-pack.mk b/include/package-pack.mk index 9991050c14..a677318ca2 100644 --- a/include/package-pack.mk +++ b/include/package-pack.mk @@ -345,8 +345,16 @@ else --info "origin:$(SOURCE)" \ --info "url:$(URL)" \ --info "maintainer:$(MAINTAINER)" \ - --info "provides:$$(foreach prov,$$(filter-out $(1)$$(ABIV_$(1)),$(PROVIDES)$$(if $$(ABIV_$(1)), \ - $(1) $(foreach provide,$(PROVIDES),$(provide)$$(ABIV_$(1))))),$$(prov)=$(VERSION) )" \ + --info "provides:$$(foreach prov,\ + $$(filter-out $(1)$$(ABIV_$(1)), \ + $(PROVIDES)$$(if $$(ABIV_$(1)), \ + $(1)=$(VERSION) $(foreach provide, \ + $(PROVIDES), \ + $(provide)$$(ABIV_$(1))=$(VERSION) \ + ) \ + ) \ + ), \ + $$(prov) )" \ --script "post-install:$$(ADIR_$(1))/post-install" \ --script "pre-deinstall:$$(ADIR_$(1))/pre-deinstall" \ --info "depends:$$(foreach depends,$$(subst $$(comma),$$(space),$$(subst $$(space),,$$(subst $$(paren_right),,$$(subst $$(paren_left),,$$(Package/$(1)/DEPENDS))))),$$(depends))" \ From 408eab55ee0abddd972e3fa7341869dff0794000 Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Mon, 28 Oct 2024 22:33:48 +0100 Subject: [PATCH 53/72] package: fix key creation for SDK Prior to this commit keys would only be generated if `make` is called alone, but not for something like `make package/busybox/compile`. The exact reasons are in the depth of make magic, so this is sheer luck! Signed-off-by: Paul Spooren --- package/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/Makefile b/package/Makefile index 70897271ac..9ae94e9a4e 100644 --- a/package/Makefile +++ b/package/Makefile @@ -87,7 +87,7 @@ else endif else ifneq ($(CONFIG_USE_APK),) - $(curdir)/compile: $(BUILD_KEY_APK_SEC) $(BUILD_KEY_APK_PUB) + $(curdir)//compile += $(BUILD_KEY_APK_SEC) $(BUILD_KEY_APK_PUB) endif endif From a0eafc3c77a4e488e3461d70710563748953d7e2 Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Mon, 28 Oct 2024 23:20:57 +0100 Subject: [PATCH 54/72] imagebuilder: always add local packages.adb It doesn't matter if `IB_STANDALONE` is enabled or not, local packages must always be considered. Signed-off-by: Paul Spooren --- target/imagebuilder/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/target/imagebuilder/Makefile b/target/imagebuilder/Makefile index d2c125ccf2..1e58fad8e9 100644 --- a/target/imagebuilder/Makefile +++ b/target/imagebuilder/Makefile @@ -48,6 +48,7 @@ ifneq ($(CONFIG_USE_APK),) $(call FeedSourcesAppendAPK,$(PKG_BUILD_DIR)/repositories) $(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories endif + echo "packages/packages.adb" >> $(PKG_BUILD_DIR)/repositories $(INSTALL_DATA) ./files/README.apk.md $(PKG_BUILD_DIR)/packages/README.md else From 57572de43ad396e2c3dbe4398a179dcdf0a9dd1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Tue, 29 Oct 2024 09:58:57 +0100 Subject: [PATCH 55/72] generic: backport upstream r8169 irq patch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit backports an additional patch from linux v6.12 release. Signed-off-by: Álvaro Fernández Rojas --- ...r8169-add-support-for-RTL8126A-rev.b.patch | 2 +- ...-MODULE_FIRMWARE-entry-for-RTL8126A.patch} | 3 +- ...2-r8169-avoid-unsolicited-interrupts.patch | 39 +++++++++++++++++++ 3 files changed, 41 insertions(+), 3 deletions(-) rename target/linux/generic/backport-6.6/{780-26-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch => 780-23-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch} (91%) create mode 100644 target/linux/generic/backport-6.6/780-24-v6.12-r8169-avoid-unsolicited-interrupts.patch diff --git a/target/linux/generic/backport-6.6/780-22-v6.12-r8169-add-support-for-RTL8126A-rev.b.patch b/target/linux/generic/backport-6.6/780-22-v6.12-r8169-add-support-for-RTL8126A-rev.b.patch index 0915cb729f..dd90fc1a65 100644 --- a/target/linux/generic/backport-6.6/780-22-v6.12-r8169-add-support-for-RTL8126A-rev.b.patch +++ b/target/linux/generic/backport-6.6/780-22-v6.12-r8169-add-support-for-RTL8126A-rev.b.patch @@ -1,7 +1,7 @@ From 69cb89981c7a181d857b634c0740e914d5df79ea Mon Sep 17 00:00:00 2001 From: ChunHao Lin Date: Fri, 30 Aug 2024 10:18:10 +0800 -Subject: [PATCH 43/47] r8169: add support for RTL8126A rev.b +Subject: [PATCH] r8169: add support for RTL8126A rev.b Add support for RTL8126A rev.b. Its XID is 0x64a. It is basically based on the one with XID 0x649, but with different firmware file. diff --git a/target/linux/generic/backport-6.6/780-26-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch b/target/linux/generic/backport-6.6/780-23-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch similarity index 91% rename from target/linux/generic/backport-6.6/780-26-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch rename to target/linux/generic/backport-6.6/780-23-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch index 13bbc2ab11..14234814ef 100644 --- a/target/linux/generic/backport-6.6/780-26-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch +++ b/target/linux/generic/backport-6.6/780-23-v6.12-r8169-add-missing-MODULE_FIRMWARE-entry-for-RTL8126A.patch @@ -1,8 +1,7 @@ From 3b067536daa4842adbf685accf47c899a26367d3 Mon Sep 17 00:00:00 2001 From: Heiner Kallweit Date: Wed, 18 Sep 2024 20:45:15 +0200 -Subject: [PATCH 47/47] r8169: add missing MODULE_FIRMWARE entry for RTL8126A - rev.b +Subject: [PATCH] r8169: add missing MODULE_FIRMWARE entry for RTL8126A rev.b Add a missing MODULE_FIRMWARE entry. diff --git a/target/linux/generic/backport-6.6/780-24-v6.12-r8169-avoid-unsolicited-interrupts.patch b/target/linux/generic/backport-6.6/780-24-v6.12-r8169-avoid-unsolicited-interrupts.patch new file mode 100644 index 0000000000..8332a285f9 --- /dev/null +++ b/target/linux/generic/backport-6.6/780-24-v6.12-r8169-avoid-unsolicited-interrupts.patch @@ -0,0 +1,39 @@ +From 10ce0db787004875f4dba068ea952207d1d8abeb Mon Sep 17 00:00:00 2001 +From: Heiner Kallweit +Date: Fri, 18 Oct 2024 11:08:16 +0200 +Subject: [PATCH] r8169: avoid unsolicited interrupts + +It was reported that after resume from suspend a PCI error is logged +and connectivity is broken. Error message is: +PCI error (cmd = 0x0407, status_errs = 0x0000) +The message seems to be a red herring as none of the error bits is set, +and the PCI command register value also is normal. Exception handling +for a PCI error includes a chip reset what apparently brakes connectivity +here. The interrupt status bit triggering the PCI error handling isn't +actually used on PCIe chip versions, so it's not clear why this bit is +set by the chip. Fix this by ignoring this bit on PCIe chip versions. + +Fixes: 0e4851502f84 ("r8169: merge with version 8.001.00 of Realtek's r8168 driver") +Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219388 +Tested-by: Atlas Yu +Signed-off-by: Heiner Kallweit +Reviewed-by: Simon Horman +Link: https://patch.msgid.link/78e2f535-438f-4212-ad94-a77637ac6c9c@gmail.com +Signed-off-by: Paolo Abeni +--- + drivers/net/ethernet/realtek/r8169_main.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/net/ethernet/realtek/r8169_main.c ++++ b/drivers/net/ethernet/realtek/r8169_main.c +@@ -4683,7 +4683,9 @@ static irqreturn_t rtl8169_interrupt(int + if ((status & 0xffff) == 0xffff || !(status & tp->irq_mask)) + return IRQ_NONE; + +- if (unlikely(status & SYSErr)) { ++ /* At least RTL8168fp may unexpectedly set the SYSErr bit */ ++ if (unlikely(status & SYSErr && ++ tp->mac_version <= RTL_GIGA_MAC_VER_06)) { + rtl8169_pcierr_interrupt(tp->dev); + goto out; + } From 4929bafb0b9c48ac8c032afeabb4b2e98e507238 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Tue, 29 Oct 2024 15:30:09 +0100 Subject: [PATCH 56/72] bcm27xx-utils: fix PKG_MIRROR_HASH MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The mirror hash has changed after 8009342. Fixes: 8009342f43c5 ("bcm27xx-utils: fix version for APK") Signed-off-by: Álvaro Fernández Rojas --- package/utils/bcm27xx-utils/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/utils/bcm27xx-utils/Makefile b/package/utils/bcm27xx-utils/Makefile index e6d8c27e34..17618b7ef7 100644 --- a/package/utils/bcm27xx-utils/Makefile +++ b/package/utils/bcm27xx-utils/Makefile @@ -9,7 +9,7 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/raspberrypi/utils.git PKG_SOURCE_VERSION:=451b9881b72cb994c102724b5a7d9b93f97dc315 -PKG_MIRROR_HASH:=b453976171187e0ffe7cacfdcab36cec6b5d02db8b6d978cb9afbbcafcfcff9d +PKG_MIRROR_HASH:=595ad8eadd9756132dee4b7d1b2466cb9fb8efa2015e6fbd4ab983e1a00afcf4 PKG_FLAGS:=nonshared PKG_BUILD_FLAGS:=no-lto From cbefc64cb33cc693fb551111021e95eb976b51bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20B=C3=B6hler?= Date: Mon, 28 Oct 2024 18:52:02 +0100 Subject: [PATCH 57/72] ramips: Fix WiFi on Sercomm NA502 and NA502s MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The WiFi chips are actually on PCIe1 and PCIe2, PCIe0 is empty. Fix the assignment so that WiFi works properly again. Signed-off-by: Andreas Böhler Link: https://github.com/openwrt/openwrt/pull/16807 Signed-off-by: Hauke Mehrtens --- target/linux/ramips/dts/mt7621_sercomm_na502.dts | 4 ++-- target/linux/ramips/dts/mt7621_sercomm_na502s.dts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/target/linux/ramips/dts/mt7621_sercomm_na502.dts b/target/linux/ramips/dts/mt7621_sercomm_na502.dts index 049dd35fa7..a8a7f5e389 100644 --- a/target/linux/ramips/dts/mt7621_sercomm_na502.dts +++ b/target/linux/ramips/dts/mt7621_sercomm_na502.dts @@ -193,7 +193,7 @@ status = "okay"; }; -&pcie0 { +&pcie1 { wifi@0,0 { compatible = "mediatek,mt76"; reg = <0x0000 0 0 0 0>; @@ -203,7 +203,7 @@ }; }; -&pcie1 { +&pcie2 { wifi@0,0 { compatible = "mediatek,mt76"; reg = <0x0 0 0 0 0>; diff --git a/target/linux/ramips/dts/mt7621_sercomm_na502s.dts b/target/linux/ramips/dts/mt7621_sercomm_na502s.dts index e794ef8875..9d16449148 100644 --- a/target/linux/ramips/dts/mt7621_sercomm_na502s.dts +++ b/target/linux/ramips/dts/mt7621_sercomm_na502s.dts @@ -297,7 +297,7 @@ status = "okay"; }; -&pcie0 { +&pcie1 { wifi@0,0 { compatible = "mediatek,mt76"; reg = <0x0000 0 0 0 0>; @@ -307,7 +307,7 @@ }; }; -&pcie1 { +&pcie2 { wifi@0,0 { compatible = "mediatek,mt76"; reg = <0x0 0 0 0 0>; From a6a44f94bf8ccae8c7843ac3db2d606b961976c2 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Mon, 21 Oct 2024 17:14:41 -0700 Subject: [PATCH 58/72] ramips: linkit: replace driver with gpio-hog It does the same thing minus a few dmesg prints. Signed-off-by: Rosen Penev Link: https://github.com/openwrt/openwrt/pull/16788 Signed-off-by: Robert Marko --- .../mt7628an_mediatek_linkit-smart-7688.dts | 15 +-- .../patches-6.6/855-linkit_bootstrap.patch | 97 ------------------- 2 files changed, 9 insertions(+), 103 deletions(-) delete mode 100644 target/linux/ramips/patches-6.6/855-linkit_bootstrap.patch diff --git a/target/linux/ramips/dts/mt7628an_mediatek_linkit-smart-7688.dts b/target/linux/ramips/dts/mt7628an_mediatek_linkit-smart-7688.dts index fdce5cbec5..34ef15eca0 100644 --- a/target/linux/ramips/dts/mt7628an_mediatek_linkit-smart-7688.dts +++ b/target/linux/ramips/dts/mt7628an_mediatek_linkit-smart-7688.dts @@ -22,12 +22,6 @@ serial0 = &uart2; }; - bootstrap { - compatible = "mediatek,linkit"; - - status = "okay"; - }; - leds { compatible = "gpio-leds"; @@ -144,6 +138,15 @@ }; }; +&gpio { + bootstrap { + gpio-hog; + line-name = "bootstrap"; + output-low; + gpios = <11 GPIO_ACTIVE_LOW>; + }; +}; + &i2c { status = "okay"; }; diff --git a/target/linux/ramips/patches-6.6/855-linkit_bootstrap.patch b/target/linux/ramips/patches-6.6/855-linkit_bootstrap.patch deleted file mode 100644 index 16eaf619a0..0000000000 --- a/target/linux/ramips/patches-6.6/855-linkit_bootstrap.patch +++ /dev/null @@ -1,97 +0,0 @@ ---- a/drivers/misc/Makefile -+++ b/drivers/misc/Makefile -@@ -52,6 +52,7 @@ obj-$(CONFIG_ECHO) += echo/ - obj-$(CONFIG_CXL_BASE) += cxl/ - obj-$(CONFIG_DW_XDATA_PCIE) += dw-xdata-pcie.o - obj-$(CONFIG_PCI_ENDPOINT_TEST) += pci_endpoint_test.o -+obj-$(CONFIG_SOC_MT7620) += linkit.o - obj-$(CONFIG_OCXL) += ocxl/ - obj-$(CONFIG_BCM_VK) += bcm-vk/ - obj-y += cardreader/ ---- /dev/null -+++ b/drivers/misc/linkit.c -@@ -0,0 +1,84 @@ -+/* -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * publishhed by the Free Software Foundation. -+ * -+ * Copyright (C) 2015 John Crispin -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#define LINKIT_LATCH_GPIO 11 -+ -+struct linkit_hw_data { -+ char board[16]; -+ char rev[16]; -+}; -+ -+static void sanify_string(char *s) -+{ -+ int i; -+ -+ for (i = 0; i < 15; i++) -+ if (s[i] <= 0x20) -+ s[i] = '\0'; -+ s[15] = '\0'; -+} -+ -+static int linkit_probe(struct platform_device *pdev) -+{ -+ struct linkit_hw_data hw; -+ struct mtd_info *mtd; -+ size_t retlen; -+ int ret; -+ -+ mtd = get_mtd_device_nm("factory"); -+ if (IS_ERR(mtd)) -+ return PTR_ERR(mtd); -+ -+ ret = mtd_read(mtd, 0x400, sizeof(hw), &retlen, (u_char *) &hw); -+ put_mtd_device(mtd); -+ -+ sanify_string(hw.board); -+ sanify_string(hw.rev); -+ -+ dev_info(&pdev->dev, "Version : %s\n", hw.board); -+ dev_info(&pdev->dev, "Revision : %s\n", hw.rev); -+ -+ if (!strcmp(hw.board, "LINKITS7688")) { -+ dev_info(&pdev->dev, "setting up bootstrap latch\n"); -+ -+ if (devm_gpio_request(&pdev->dev, LINKIT_LATCH_GPIO, "bootstrap")) { -+ dev_err(&pdev->dev, "failed to setup bootstrap gpio\n"); -+ return -1; -+ } -+ gpio_direction_output(LINKIT_LATCH_GPIO, 0); -+ } -+ -+ return 0; -+} -+ -+static const struct of_device_id linkit_match[] = { -+ { .compatible = "mediatek,linkit" }, -+ {}, -+}; -+MODULE_DEVICE_TABLE(of, linkit_match); -+ -+static struct platform_driver linkit_driver = { -+ .probe = linkit_probe, -+ .driver = { -+ .name = "mtk-linkit", -+ .owner = THIS_MODULE, -+ .of_match_table = linkit_match, -+ }, -+}; -+ -+int __init linkit_init(void) -+{ -+ return platform_driver_register(&linkit_driver); -+} -+late_initcall_sync(linkit_init); From ade045084bd3f86969eaf0b35234aaa01e430fe1 Mon Sep 17 00:00:00 2001 From: John Thomson Date: Wed, 16 Oct 2024 07:13:25 +1000 Subject: [PATCH 59/72] kernel: mtdsplit_minor: return 0 if not fatal Introduced with Linux 6.7, in commit: 5c2f7727d437 ("mtd: mtdpart: check for subpartitions parsing result"), when a parser returns an error, this will be passed up, and consequently, all parent mtd partitions get torn down. Adjust the MiNOR mtdsplit driver to only return an error if there is a critical problem in reading from the mtd device or allocating memory. Otherwise return 0 to indicate that no partitions were found. Also add logging to indicate what went wrong. This mtdsplit parser makes a very limited check of the first YAFFS header. For example, this will not match expectations when initially booting an initramfs image with OEM on MTD. Signed-off-by: John Thomson Acked-by: Thibaut VARENE Link: https://github.com/openwrt/openwrt/pull/16780 Signed-off-by: Robert Marko --- .../drivers/mtd/mtdsplit/mtdsplit_minor.c | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c index af6822e11a..be69de5798 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c @@ -61,29 +61,43 @@ static int mtdsplit_parse_minor(struct mtd_info *master, hdr_len = sizeof(hdr); err = mtd_read(master, 0, hdr_len, &retlen, (void *) &hdr); - if (err) + if (err) { + pr_err("MiNOR mtd_read error: %d\n", err); return err; + } - if (retlen != hdr_len) + if (retlen != hdr_len) { + pr_err("MiNOR mtd_read too short\n"); return -EIO; + } /* match header */ - if (hdr.yaffs_type != YAFFS_OBJECT_TYPE_FILE) - return -EINVAL; + if (hdr.yaffs_type != YAFFS_OBJECT_TYPE_FILE) { + pr_info("MiNOR YAFFS first type not matched\n"); + return 0; + } - if (hdr.yaffs_obj_id != YAFFS_OBJECTID_ROOT) - return -EINVAL; + if (hdr.yaffs_obj_id != YAFFS_OBJECTID_ROOT) { + pr_info("MiNOR YAFFS first objectid not matched\n"); + return 0; + } - if (hdr.yaffs_sum_unused != YAFFS_SUM_UNUSED) - return -EINVAL; + if (hdr.yaffs_sum_unused != YAFFS_SUM_UNUSED) { + pr_info("MiNOR YAFFS first sum not matched\n"); + return 0; + } - if (memcmp(hdr.yaffs_name, YAFFS_NAME, sizeof(YAFFS_NAME))) - return -EINVAL; + if (memcmp(hdr.yaffs_name, YAFFS_NAME, sizeof(YAFFS_NAME))) { + pr_info("MiNOR YAFFS first name not matched\n"); + return 0; + } err = mtd_find_rootfs_from(master, master->erasesize, master->size, &rootfs_offset, NULL); - if (err) - return err; + if (err) { + pr_info("MiNOR mtd_find_rootfs_from error: %d\n", err); + return 0; + } parts = kzalloc(MINOR_NR_PARTS * sizeof(*parts), GFP_KERNEL); if (!parts) From 36834ea3403d05b6beab3a2efc3f00f097e58c81 Mon Sep 17 00:00:00 2001 From: John Thomson Date: Wed, 16 Oct 2024 12:51:22 +1000 Subject: [PATCH 60/72] kernel: mtdsplit_minor: accept bootimage filename RouterBOOT v7 on NOR devices no longer accepts the YAFFS kernel ELF method of booting. It will accept an NPK image named bootimage. Adjust mtdsplit_minor to accept this second possible boot file name. Use the conservative value of 127 for YAFFS max name length (used when YAFFS compiled with unicode support) vs 255. Signed-off-by: John Thomson Acked-by: Thibaut VARENE Link: https://github.com/openwrt/openwrt/pull/16780 Signed-off-by: Robert Marko --- .../generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c index be69de5798..053cba6272 100644 --- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c +++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c @@ -34,7 +34,9 @@ #define YAFFS_OBJECT_TYPE_FILE 0x1 #define YAFFS_OBJECTID_ROOT 0x1 #define YAFFS_SUM_UNUSED 0xFFFF -#define YAFFS_NAME "kernel" +#define YAFFS_MAX_NAME_LENGTH 127 +#define YAFFS_NAME_KERNEL "kernel" +#define YAFFS_NAME_BOOTIMAGE "bootimage" #define MINOR_NR_PARTS 2 @@ -46,7 +48,7 @@ struct minor_header { int yaffs_type; int yaffs_obj_id; u16 yaffs_sum_unused; - char yaffs_name[sizeof(YAFFS_NAME)]; + char yaffs_name[YAFFS_MAX_NAME_LENGTH]; }; static int mtdsplit_parse_minor(struct mtd_info *master, @@ -87,7 +89,8 @@ static int mtdsplit_parse_minor(struct mtd_info *master, return 0; } - if (memcmp(hdr.yaffs_name, YAFFS_NAME, sizeof(YAFFS_NAME))) { + if ((memcmp(hdr.yaffs_name, YAFFS_NAME_KERNEL, sizeof(YAFFS_NAME_KERNEL))) && + (memcmp(hdr.yaffs_name, YAFFS_NAME_BOOTIMAGE, sizeof(YAFFS_NAME_BOOTIMAGE)))) { pr_info("MiNOR YAFFS first name not matched\n"); return 0; } From 07b845b1f2e7417c39f3585d971b05f7ab3ce08b Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Tue, 29 Oct 2024 11:09:24 +0100 Subject: [PATCH 61/72] build: don't include kernel/libc in package index The same that is done in `ipkg-make-index.sh` should happen with APK. If the pseudo packages, only added to add dependency constraints, are added to the index, APK happily "upgrades" them and installs updated kmods, too. However, the Kernel itself is never installed via a regular package. Fixes: https://github.com/openwrt/openwrt/issues/16808 Signed-off-by: Paul Spooren --- package/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/Makefile b/package/Makefile index 9ae94e9a4e..abe76a619f 100644 --- a/package/Makefile +++ b/package/Makefile @@ -130,7 +130,7 @@ ifneq ($(CONFIG_USE_APK),) --keys-dir $(TOPDIR) \ --sign $(BUILD_KEY_APK_SEC) \ --output packages.adb \ - *.apk; \ + $$(ls *.apk | grep -v 'kernel\|libc'); \ done else @for d in $(PACKAGE_SUBDIRS); do ( \ From 559df6cb99c38be124ebe1b2211aaf368451a8b3 Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Wed, 30 Oct 2024 09:28:30 +0100 Subject: [PATCH 62/72] build: Honor DEFAULT_VARIANT for APK packages Previously APK would complain as it wasn't sure which package to install by default when multiple packages would provide the same name. Now, give the package a higher provider priority to make APK automatically select the "default" package. Signed-off-by: Paul Spooren --- include/package-pack.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/include/package-pack.mk b/include/package-pack.mk index a677318ca2..9d06c8b647 100644 --- a/include/package-pack.mk +++ b/include/package-pack.mk @@ -355,6 +355,7 @@ else ) \ ), \ $$(prov) )" \ + $(if $(DEFAULT_VARIANT),--info "provider-priority:100") \ --script "post-install:$$(ADIR_$(1))/post-install" \ --script "pre-deinstall:$$(ADIR_$(1))/pre-deinstall" \ --info "depends:$$(foreach depends,$$(subst $$(comma),$$(space),$$(subst $$(space),,$$(subst $$(paren_right),,$$(subst $$(paren_left),,$$(Package/$(1)/DEPENDS))))),$$(depends))" \ From d6c6e4f722be253cf3e46c2fd1629f5312a6514f Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Wed, 30 Oct 2024 10:23:10 +0100 Subject: [PATCH 63/72] mvebu: cortexa9: drop removal of firewall4 package Drop removal of firewall4 package for Synology DS213j device. With OPKG the firewall4 package was installed anyway as it's a dependency of luci-app-firewall and was silently installed again later in such condition. Drop it to fix support for APK. Signed-off-by: Christian Marangi --- target/linux/mvebu/image/cortexa9.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/mvebu/image/cortexa9.mk b/target/linux/mvebu/image/cortexa9.mk index a396b48675..6e49045f68 100644 --- a/target/linux/mvebu/image/cortexa9.mk +++ b/target/linux/mvebu/image/cortexa9.mk @@ -444,6 +444,6 @@ define Device/synology_ds213j DEVICE_PACKAGES := \ kmod-rtc-s35390a kmod-hwmon-gpiofan kmod-hwmon-drivetemp \ kmod-md-raid0 kmod-md-raid1 kmod-md-mod e2fsprogs mdadm \ - -ppp -kmod-nft-offload -firewall4 -dnsmasq -odhcpd-ipv6only + -ppp -kmod-nft-offload -dnsmasq -odhcpd-ipv6only endef TARGET_DEVICES += synology_ds213j From f9afff8b280d98103de5da12de46ef9580e130d3 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Wed, 30 Oct 2024 10:25:25 +0100 Subject: [PATCH 64/72] mxs: drop removal of firewall4 package Drop removal of firewall4 package for I2SE Duckbill device. With OPKG the firewall4 package was installed anyway as it's a dependency of luci-app-firewall and was silently installed again later in such condition. Drop it to fix support for APK. Signed-off-by: Christian Marangi --- target/linux/mxs/image/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/mxs/image/Makefile b/target/linux/mxs/image/Makefile index e5ba0a221a..b95409741a 100644 --- a/target/linux/mxs/image/Makefile +++ b/target/linux/mxs/image/Makefile @@ -46,7 +46,7 @@ endef define Device/i2se_duckbill DEVICE_VENDOR := I2SE DEVICE_MODEL := Duckbill - DEVICE_PACKAGES := -dnsmasq -firewall4 -ppp -ip6tables -iptables -mtd \ + DEVICE_PACKAGES := -dnsmasq -ppp -ip6tables -iptables -mtd \ uboot-envtools kmod-leds-gpio -kmod-nf-nathelper SUPPORTED_DEVICES:=i2se,duckbill SOC:=imx28 From 618f079f5d03edfd82fe7949f16c61acef9408a2 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Wed, 30 Oct 2024 11:19:33 +0100 Subject: [PATCH 65/72] build: correctly ignore Initramfs image on error Correctly ignore Initramfs image copy on error. This follows the pattern with sysupgrade image where an image might fail as it's too big or the generation command fails and there is nothing to copy to the bin directory. Signed-off-by: Christian Marangi --- include/image.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/image.mk b/include/image.mk index c476f6674f..a4ac1b49cf 100644 --- a/include/image.mk +++ b/include/image.mk @@ -542,6 +542,9 @@ define Device/Build/initramfs $(call Kernel/CompileImage/Initramfs,$(KDIR)/target-dir-$$(ROOTFS_ID/$(1)),.$$(ROOTFS_ID/$(1))) endif $(1)-initramfs-images: $$(if $$(KERNEL_INITRAMFS),$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE)) + + .IGNORE: $(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE) + $(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE) cp $$^ $$@ From 5ba701fe1916c32dd00a1f9dbd93ae362740ab52 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Wed, 30 Oct 2024 11:21:58 +0100 Subject: [PATCH 66/72] image: ignore errors from mktplinkfw command Rework tplink-v2-header and tplink-v2-image Build define to ignore error if mktplinkfw2 errors out. This is to handle situation when the image is too big and can't be generated or prev check-image calls deleted the source file as it's too big. This aligns to the pattern used by tplink-v1-image. Signed-off-by: Christian Marangi --- include/image-commands.mk | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/include/image-commands.mk b/include/image-commands.mk index d2974f4e01..702cbd8c98 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -666,23 +666,22 @@ define Build/tplink-v1-image endef define Build/tplink-v2-header - $(STAGING_DIR_HOST)/bin/mktplinkfw2 \ + -$(STAGING_DIR_HOST)/bin/mktplinkfw2 \ -c -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -L $(KERNEL_LOADADDR) \ -E $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ -w $(TPLINK_HWREVADD) -F "$(TPLINK_FLASHLAYOUT)" \ -T $(TPLINK_HVERSION) -V "ver. 2.0" \ - -k $@ -o $@.new $(1) - @mv $@.new $@ + -k $@ -o $@.new $(1) \ + && mv $@.new $@ || rm -f $@ endef define Build/tplink-v2-image - $(STAGING_DIR_HOST)/bin/mktplinkfw2 \ + -$(STAGING_DIR_HOST)/bin/mktplinkfw2 \ -H $(TPLINK_HWID) -W $(TPLINK_HWREV) \ -w $(TPLINK_HWREVADD) -F "$(TPLINK_FLASHLAYOUT)" \ -T $(TPLINK_HVERSION) -V "ver. 2.0" -a 0x4 -j \ - -k $(IMAGE_KERNEL) -r $(IMAGE_ROOTFS) -o $@.new $(1) - cat $@.new >> $@ - rm -rf $@.new + -k $(IMAGE_KERNEL) -r $(IMAGE_ROOTFS) -o $@.new $(1) \ + && cat $@.new >> $@ && rm -rf $@.new || rm -f $@ endef define Build/uImage From f303471ae9048ddeb068a64df7aeaab782fb1cb0 Mon Sep 17 00:00:00 2001 From: Paul Spooren Date: Wed, 30 Oct 2024 13:41:23 +0100 Subject: [PATCH 67/72] imagebuilder: fix copying of missing kernel/libc Those packages were not copied due to OPKG using an underscore while APK uses dashes. Remove that char to copy kernel/libc for either APK/OPKG. Signed-off-by: Paul Spooren --- target/imagebuilder/Makefile | 4 ++-- target/imagebuilder/files/Makefile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/target/imagebuilder/Makefile b/target/imagebuilder/Makefile index 1e58fad8e9..bdbbb45cb1 100644 --- a/target/imagebuilder/Makefile +++ b/target/imagebuilder/Makefile @@ -71,7 +71,7 @@ endif ifeq ($(CONFIG_BUILDBOT),) ifeq ($(CONFIG_IB_STANDALONE),) $(FIND) $(call FeedPackageDir,libc) -type f \ - \( -name 'libc_*.$(PACKAGE_SUFFIX)' -or -name 'kernel_*.$(PACKAGE_SUFFIX)' -or -name 'kmod-*.$(PACKAGE_SUFFIX)' \) \ + \( -name 'libc*.$(PACKAGE_SUFFIX)' -or -name 'kernel*.$(PACKAGE_SUFFIX)' -or -name 'kmod-*.$(PACKAGE_SUFFIX)' \) \ -exec $(CP) -t $(PKG_BUILD_DIR)/packages {} + else $(FIND) $(wildcard $(PACKAGE_SUBDIRS)) -type f -name '*.$(PACKAGE_SUFFIX)' \ @@ -79,7 +79,7 @@ ifeq ($(CONFIG_BUILDBOT),) endif else $(FIND) $(call FeedPackageDir,libc) -type f \ - \( -name 'libc_*.$(PACKAGE_SUFFIX)' -or -name 'kernel_*.$(PACKAGE_SUFFIX)' \) \ + \( -name 'libc*.$(PACKAGE_SUFFIX)' -or -name 'kernel*.$(PACKAGE_SUFFIX)' \) \ -exec $(CP) -t $(IB_LDIR)/ {} + endif diff --git a/target/imagebuilder/files/Makefile b/target/imagebuilder/files/Makefile index 24de26c771..f46b61b787 100644 --- a/target/imagebuilder/files/Makefile +++ b/target/imagebuilder/files/Makefile @@ -228,8 +228,8 @@ ifeq ($(CONFIG_USE_APK),) $(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/kernel_*.ipk $(PACKAGE_DIR)/kernel_*.ipk)) $(OPKG) install $(BUILD_PACKAGES) else - $(APK) add --no-scripts $(firstword $(wildcard $(LINUX_DIR)/libc-*.apk $(PACKAGE_DIR)/libc_*.apk)) - $(APK) add --no-scripts $(firstword $(wildcard $(LINUX_DIR)/kernel-*.apk $(PACKAGE_DIR)/kernel_*.apk)) + $(APK) add --no-scripts $(firstword $(wildcard $(LINUX_DIR)/libc-*.apk $(PACKAGE_DIR)/libc-*.apk)) + $(APK) add --no-scripts $(firstword $(wildcard $(LINUX_DIR)/kernel-*.apk $(PACKAGE_DIR)/kernel-*.apk)) $(APK) add --no-scripts $(BUILD_PACKAGES) endif From def70fa85b242465ee14c69dc6f57cd42f860a5e Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Wed, 30 Oct 2024 14:05:10 +0100 Subject: [PATCH 68/72] image: ignore errors from more commands Ignore errors in more image commands to handle case where the image is too big and check-image validation fails. Signed-off-by: Christian Marangi --- include/image-commands.mk | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/include/image-commands.mk b/include/image-commands.mk index 702cbd8c98..2568fb3ade 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -316,12 +316,12 @@ define Build/elecom-product-header $(eval product=$(word 1,$(1))) $(eval fw=$(if $(word 2,$(1)),$(word 2,$(1)),$@)) - ( \ + -( \ echo -n -e "ELECOM\x00\x00$(product)" | dd bs=40 count=1 conv=sync; \ echo -n "0.00" | dd bs=16 count=1 conv=sync; \ dd if=$(fw); \ - ) > $(fw).new - mv $(fw).new $(fw) + ) > $(fw).new \ + && mv $(fw).new $(fw) || rm -f $(fw) endef define Build/elecom-wrc-gs-factory @@ -351,10 +351,10 @@ define Build/elx-header echo -ne "$$($(MKHASH) md5 $@ | fold -s2 | xargs -I {} echo \\x{} | tr -d '\n')" | \ dd bs=58 count=1 conv=sync; \ ) > $(KDIR)/tmp/$(DEVICE_NAME).header - $(call Build/xor-image,-p $(xor_pattern) -x) - cat $(KDIR)/tmp/$(DEVICE_NAME).header $@ > $@.new - mv $@.new $@ - rm -rf $(KDIR)/tmp/$(DEVICE_NAME).header + -$(call Build/xor-image,-p $(xor_pattern) -x) \ + && cat $(KDIR)/tmp/$(DEVICE_NAME).header $@ > $@.new \ + && mv $@.new $@ \ + && rm -rf $(KDIR)/tmp/$(DEVICE_NAME).header endef define Build/eva-image @@ -614,8 +614,8 @@ define Build/seama-seal endef define Build/senao-header - $(STAGING_DIR_HOST)/bin/mksenaofw $(1) -e $@ -o $@.new - mv $@.new $@ + -$(STAGING_DIR_HOST)/bin/mksenaofw $(1) -e $@ -o $@.new \ + && mv $@.new $@ || rm -f $@ endef define Build/sysupgrade-tar @@ -718,8 +718,8 @@ define Build/multiImage endef define Build/xor-image - $(STAGING_DIR_HOST)/bin/xorimage -i $@ -o $@.xor $(1) - mv $@.xor $@ + -$(STAGING_DIR_HOST)/bin/xorimage -i $@ -o $@.xor $(1) \ + && mv $@.xor $@ || rm -f $@ endef define Build/zip From 73edd3a41e3fb0bbb0c255554fd5c0b99d701e24 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Wed, 30 Oct 2024 14:07:22 +0100 Subject: [PATCH 69/72] ramips: ignore errors from trx utility Ignore errors from trx utility to handle case with image too big. Signed-off-by: Christian Marangi --- target/linux/ramips/image/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile index fdc15aa1ef..5697176943 100644 --- a/target/linux/ramips/image/Makefile +++ b/target/linux/ramips/image/Makefile @@ -140,7 +140,7 @@ define Build/sign-dlink-ru endef define Build/trx - $(STAGING_DIR_HOST)/bin/trx $(1) \ + -$(STAGING_DIR_HOST)/bin/trx $(1) \ -o $@ \ -m $$(($(call exp_units,$(IMAGE_SIZE)))) \ -f $(IMAGE_KERNEL) \ From b5e1544f4d45795ab8750b1054c54c8880b7b96b Mon Sep 17 00:00:00 2001 From: Rafal Boni Date: Thu, 24 Oct 2024 03:06:22 -0400 Subject: [PATCH 70/72] ipq806x: Revert "ipq806x: swap lan leds for Meraki MR52" This reverts commit ec8f647d168fa8f3b1eedd9b5fe665f793f3a659, as with the current kernel version, the change actually causes the same bug it once may have fixed -- that is, the leds are now again reversed. I suspect this was due to a switch to a newer kernel version between when the patch was submitted and now reversing the order of the interfaces, so that eth0 / the LAN interface is also the interface used for PoE, and eth1 / the WAN interface is the non-PoE interface. Signed-off-by: Rafal Boni Link: https://github.com/openwrt/openwrt/pull/16779 Signed-off-by: Robert Marko --- .../arch/arm/boot/dts/qcom/qcom-ipq8068-mr52.dts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/linux/ipq806x/files-6.6/arch/arm/boot/dts/qcom/qcom-ipq8068-mr52.dts b/target/linux/ipq806x/files-6.6/arch/arm/boot/dts/qcom/qcom-ipq8068-mr52.dts index 0d3230e6de..97b280e201 100644 --- a/target/linux/ipq806x/files-6.6/arch/arm/boot/dts/qcom/qcom-ipq8068-mr52.dts +++ b/target/linux/ipq806x/files-6.6/arch/arm/boot/dts/qcom/qcom-ipq8068-mr52.dts @@ -48,12 +48,12 @@ lan1_green { label = "green:lan1"; - gpios = <&qcom_pinmux 23 GPIO_ACTIVE_HIGH>; + gpios = <&qcom_pinmux 24 GPIO_ACTIVE_HIGH>; }; lan2_green { label = "green:lan2"; - gpios = <&qcom_pinmux 24 GPIO_ACTIVE_HIGH>; + gpios = <&qcom_pinmux 23 GPIO_ACTIVE_HIGH>; }; led_active: active { @@ -63,12 +63,12 @@ lan1_orange { label = "orange:lan1"; - gpios = <&qcom_pinmux 60 GPIO_ACTIVE_HIGH>; + gpios = <&qcom_pinmux 62 GPIO_ACTIVE_HIGH>; }; lan2_orange { label = "orange:lan2"; - gpios = <&qcom_pinmux 62 GPIO_ACTIVE_HIGH>; + gpios = <&qcom_pinmux 60 GPIO_ACTIVE_HIGH>; }; }; }; From cdc607d535b8ccd0f7072eaf8f9990cb98cd03cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Wed, 30 Oct 2024 13:49:02 +0100 Subject: [PATCH 71/72] bcm27xx-utils: update to latest version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes build with GCC 14. Full changelog: https://github.com/raspberrypi/utils/compare/451b9881b72cb994c102724b5a7d9b93f97dc315...6a2a6becebbc38fde34a94386457ac8210f9119b Signed-off-by: Álvaro Fernández Rojas --- package/utils/bcm27xx-utils/Makefile | 8 +++++--- .../patches/0001-raspinfo-adapt-to-OpenWrt.patch | 9 +++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/package/utils/bcm27xx-utils/Makefile b/package/utils/bcm27xx-utils/Makefile index 17618b7ef7..8f5d91da8f 100644 --- a/package/utils/bcm27xx-utils/Makefile +++ b/package/utils/bcm27xx-utils/Makefile @@ -3,13 +3,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=bcm27xx-utils -PKG_VERSION:=2024.04.24 +PKG_VERSION:=2024.10.25 PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/raspberrypi/utils.git -PKG_SOURCE_VERSION:=451b9881b72cb994c102724b5a7d9b93f97dc315 -PKG_MIRROR_HASH:=595ad8eadd9756132dee4b7d1b2466cb9fb8efa2015e6fbd4ab983e1a00afcf4 +PKG_SOURCE_VERSION:=6a2a6becebbc38fde34a94386457ac8210f9119b +PKG_MIRROR_HASH:=a775c7ffb9fac2d798ec8e0a4c7707eb7133cbc9c4418a1cf9434f87c42c01bb PKG_FLAGS:=nonshared PKG_BUILD_FLAGS:=no-lto @@ -46,6 +46,8 @@ define Package/bcm27xx-utils/install $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/eepflash.sh $(1)/usr/bin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/eepmake $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/kdtc $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/otpset $(1)/usr/bin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/overlaycheck $(1)/usr/bin diff --git a/package/utils/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch b/package/utils/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch index 9dd6d99626..26f8f6e4e3 100644 --- a/package/utils/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch +++ b/package/utils/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch @@ -242,6 +242,15 @@ Signed-off-by: Álvaro Fernández Rojas else echo "vcdbg not found" fi +@@ -275,7 +111,7 @@ echo "dmesg log" + echo "---------" + echo + +-sudo dmesg | sed -e "s/\([0-9a-fA-F]\{1,4\}:\)\{7,7\}[0-9a-fA-F]\{1,4\}/y.y.y.y.y.y.y.y/g" | sed -e "s/[0-9a-fA-F]\{1,4\}:\(:[0-9a-fA-F]\{1,4\}\)\{1,4\}/y::y.y.y.y/g" | sed -e "s/\([0-9a-fA-F]\{2,2\}\:\)\{5,5\}[0-9a-fA-F]\{2,2\}/m.m.m.m/g" ++dmesg | sed -e "s/\([0-9a-fA-F]\{1,4\}:\)\{7,7\}[0-9a-fA-F]\{1,4\}/y.y.y.y.y.y.y.y/g" | sed -e "s/[0-9a-fA-F]\{1,4\}:\(:[0-9a-fA-F]\{1,4\}\)\{1,4\}/y::y.y.y.y/g" | sed -e "s/\([0-9a-fA-F]\{2,2\}\:\)\{5,5\}[0-9a-fA-F]\{2,2\}/m.m.m.m/g" + + + if grep -q "^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]1[13457][0-9a-fA-F]$" /proc/cpuinfo @@ -284,5 +120,9 @@ echo echo "EEPROM" echo "------" From 67b0cd8976bb95092f5dcebc9cba93eb8e14798e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Thu, 31 Oct 2024 08:52:16 +0100 Subject: [PATCH 72/72] CI: labeler: add bcm27xx-utils MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bcm27xx-utils can only be built for bcm27xx target. Signed-off-by: Álvaro Fernández Rojas --- .github/labeler.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/labeler.yml b/.github/labeler.yml index 99a7c665df..ede4bb5a02 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -30,6 +30,7 @@ - any-glob-to-any-file: - "target/linux/bcm27xx/**" - "package/kernel/bcm27xx-gpu-fw/**" + - "package/utils/bcm27xx-utils/**" "target/bcm47xx": - changed-files: - any-glob-to-any-file: