diff --git a/package/boot/uboot-envtools/Makefile b/package/boot/uboot-envtools/Makefile index f4063ed362..9647b38385 100644 --- a/package/boot/uboot-envtools/Makefile +++ b/package/boot/uboot-envtools/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=uboot-envtools PKG_DISTNAME:=u-boot PKG_VERSION:=2023.07.02 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_DISTNAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:= \ diff --git a/package/boot/uboot-envtools/patches/010-fw_env-fix-reading-NVMEM-device-s-compatible-value.patch b/package/boot/uboot-envtools/patches/010-fw_env-fix-reading-NVMEM-device-s-compatible-value.patch new file mode 100644 index 0000000000..5af8a1aa0e --- /dev/null +++ b/package/boot/uboot-envtools/patches/010-fw_env-fix-reading-NVMEM-device-s-compatible-value.patch @@ -0,0 +1,70 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Tue, 12 Dec 2023 18:23:45 +0100 +Subject: [PATCH] fw_env: fix reading NVMEM device's "compatible" value +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Call to fread() was changed to check for return value. The problem is it +can't be checked for returning 1 (as it is) to determine success. + +We call fread() with buffer size as "size" argument. Reading any +"compatible" value shorter than buffer size will result in returning 0 +even on success. + +Modify code to use fstat() to determine expected read length. + +This fixes regression that broke using fw_env with NVMEM devices. + +Fixes: c059a22b7776 ("tools: env: fw_env: Fix unused-result warning") +Cc: Jaehoon Chung +Signed-off-by: Rafał Miłecki +--- + tools/env/fw_env.c | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +--- a/tools/env/fw_env.c ++++ b/tools/env/fw_env.c +@@ -1732,6 +1732,7 @@ static int find_nvmem_device(void) + } + + while (!nvmem && (dent = readdir(dir))) { ++ struct stat s; + FILE *fp; + size_t size; + +@@ -1749,14 +1750,22 @@ static int find_nvmem_device(void) + continue; + } + +- size = fread(buf, sizeof(buf), 1, fp); ++ if (fstat(fileno(fp), &s)) { ++ fprintf(stderr, "Failed to fstat %s\n", comp); ++ goto next; ++ } ++ ++ if (s.st_size >= sizeof(buf)) { ++ goto next; ++ } ++ ++ size = fread(buf, s.st_size, 1, fp); + if (size != 1) { + fprintf(stderr, + "read failed about %s\n", comp); +- fclose(fp); +- return -EIO; ++ goto next; + } +- ++ buf[s.st_size] = '\0'; + + if (!strcmp(buf, "u-boot,env")) { + bytes = asprintf(&nvmem, "%s/%s/nvmem", path, dent->d_name); +@@ -1765,6 +1774,7 @@ static int find_nvmem_device(void) + } + } + ++next: + fclose(fp); + } + diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index 07302e420e..ef1a456403 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -28,6 +28,7 @@ endef # ALLWIFIBOARDS:= \ + arcadyan_aw1000 \ buffalo_wxr-5950ax12 \ compex_wpq873 \ dynalink_dl-wrx36 \ @@ -137,6 +138,7 @@ endef # Board files should follow this name structure: # board-. +$(eval $(call generate-ipq-wifi-package,arcadyan_aw1000,Arcadyan AW1000)) $(eval $(call generate-ipq-wifi-package,buffalo_wxr-5950ax12,Buffalo WXR-5950AX12)) $(eval $(call generate-ipq-wifi-package,compex_wpq873,Compex WPQ-873)) $(eval $(call generate-ipq-wifi-package,dynalink_dl-wrx36,Dynalink DL-WRX36)) diff --git a/package/kernel/linux/modules/netdevices.mk b/package/kernel/linux/modules/netdevices.mk index 69ddb77aac..64dd128237 100644 --- a/package/kernel/linux/modules/netdevices.mk +++ b/package/kernel/linux/modules/netdevices.mk @@ -1607,11 +1607,22 @@ endef $(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 + KCONFIG:=CONFIG_PCS_XPCS + FILES:=$(LINUX_DIR)/drivers/net/pcs/pcs_xpcs.ko + AUTOLOAD:=$(call AutoLoad,20,pcs_xpcs) +endef + +$(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 \ - +kmod-of-mdio + DEPENDS:=@TARGET_x86_64||TARGET_armsr_armv8 +kmod-pcs-xpcs +kmod-ptp KCONFIG:=CONFIG_STMMAC_ETH \ CONFIG_STMMAC_SELFTESTS=n \ CONFIG_STMMAC_PLATFORM \ diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile index c9e2a37f6d..17e0d9451e 100644 --- a/package/kernel/mac80211/Makefile +++ b/package/kernel/mac80211/Makefile @@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 PKG_VERSION:=6.5 -PKG_RELEASE:=1 +PKG_RELEASE:=2 # PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.58/ PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/ PKG_HASH:=908c22dceba185eab83caa5a1e58ce6b3ebdc58f099c3fd3e11c7352ebfab2d7 diff --git a/package/kernel/mac80211/patches/build/220-list-don-t-backport-list_count_nodes.patch b/package/kernel/mac80211/patches/build/220-list-don-t-backport-list_count_nodes.patch new file mode 100644 index 0000000000..6d3000278b --- /dev/null +++ b/package/kernel/mac80211/patches/build/220-list-don-t-backport-list_count_nodes.patch @@ -0,0 +1,26 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Fri, 15 Dec 2023 10:17:21 +0100 +Subject: [PATCH] list: don't backport list_count_nodes() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It's redundant in OpenWrt as it backports it on its own. This fixes: +backport-include/linux/list.h:11:22: error: redefinition of 'list_count_nodes' + +Signed-off-by: Rafał Miłecki +--- + backport-include/linux/list.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/backport-include/linux/list.h ++++ b/backport-include/linux/list.h +@@ -3,7 +3,7 @@ + #include_next + #include + +-#if LINUX_VERSION_IS_LESS(6,3,0) ++#if 0 /* OpenWrt backports list_count_nodes() on its own */ + /** + * list_count_nodes - count nodes in the list + * @head: the head for your list. diff --git a/target/linux/armsr/modules.mk b/target/linux/armsr/modules.mk index 521a52fec1..7dd3739ffa 100644 --- a/target/linux/armsr/modules.mk +++ b/target/linux/armsr/modules.mk @@ -47,17 +47,6 @@ endef $(eval $(call KernelPackage,fsl-pcs-lynx)) -define KernelPackage/pcs-xpcs - SUBMENU:=$(NETWORK_DEVICES_MENU) - TITLE:=Synopsis DesignWare PCS driver - DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink - KCONFIG:=CONFIG_PCS_XPCS - FILES:=$(LINUX_DIR)/drivers/net/pcs/pcs_xpcs.ko - AUTOLOAD:=$(call AutoLoad,20,pcs_xpcs) -endef - -$(eval $(call KernelPackage,pcs-xpcs)) - define KernelPackage/fsl-fec SUBMENU:=$(NETWORK_DEVICES_MENU) DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-of-mdio \ @@ -219,7 +208,7 @@ $(eval $(call KernelPackage,imx7-ulp-wdt)) define KernelPackage/dwmac-imx SUBMENU=$(NETWORK_DEVICES_MENU) TITLE:=NXP i.MX8 Ethernet controller - DEPENDS:=+kmod-stmmac-core + DEPENDS:=+kmod-stmmac-core +kmod-of-mdio KCONFIG:=CONFIG_DWMAC_IMX8 FILES=$(LINUX_DIR)/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.ko AUTOLOAD=$(call AutoLoad,45,dwmac-imx) @@ -230,7 +219,7 @@ $(eval $(call KernelPackage,dwmac-imx)) define KernelPackage/dwmac-sun8i SUBMENU=$(NETWORK_DEVICES_MENU) TITLE:=Allwinner H3/A83T/A64 (sun8i) Ethernet - DEPENDS:=+kmod-stmmac-core +kmod-mdio-bus-mux + DEPENDS:=+kmod-stmmac-core +kmod-of-mdio +kmod-mdio-bus-mux KCONFIG:=CONFIG_DWMAC_SUN8I FILES=$(LINUX_DIR)/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.ko AUTOLOAD=$(call AutoLoad,45,dwmac-sun8i) @@ -241,7 +230,7 @@ $(eval $(call KernelPackage,dwmac-sun8i)) define KernelPackage/dwmac-rockchip SUBMENU=$(NETWORK_DEVICES_MENU) TITLE:=Rockchip RK3328/RK3399/RK3568 Ethernet - DEPENDS:=+kmod-stmmac-core +kmod-mdio-bus-mux + DEPENDS:=+kmod-stmmac-core +kmod-of-mdio +kmod-mdio-bus-mux KCONFIG:=CONFIG_DWMAC_ROCKCHIP FILES=$(LINUX_DIR)/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.ko AUTOLOAD=$(call AutoLoad,45,dwmac-rk) diff --git a/target/linux/generic/backport-5.15/829-v6.3-i915-Move-list_count-to-list.h-as-list_count_nodes-f.patch b/target/linux/generic/backport-5.15/829-v6.3-i915-Move-list_count-to-list.h-as-list_count_nodes-f.patch new file mode 100644 index 0000000000..1365834563 --- /dev/null +++ b/target/linux/generic/backport-5.15/829-v6.3-i915-Move-list_count-to-list.h-as-list_count_nodes-f.patch @@ -0,0 +1,75 @@ +From 4d70c74659d9746502b23d055dba03d1d28ec388 Mon Sep 17 00:00:00 2001 +From: Andy Shevchenko +Date: Wed, 30 Nov 2022 15:48:35 +0200 +Subject: [PATCH] i915: Move list_count() to list.h as list_count_nodes() for + broader use + +Some of the existing users, and definitely will be new ones, want to +count existing nodes in the list. Provide a generic API for that by +moving code from i915 to list.h. + +Reviewed-by: Lucas De Marchi +Acked-by: Jani Nikula +Signed-off-by: Andy Shevchenko +Link: https://lore.kernel.org/r/20221130134838.23805-1-andriy.shevchenko@linux.intel.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/gt/intel_engine_cs.c | 15 ++------------- + include/linux/list.h | 15 +++++++++++++++ + 2 files changed, 17 insertions(+), 13 deletions(-) + +--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c ++++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c +@@ -1639,17 +1639,6 @@ static void print_request_ring(struct dr + } + } + +-static unsigned long list_count(struct list_head *list) +-{ +- struct list_head *pos; +- unsigned long count = 0; +- +- list_for_each(pos, list) +- count++; +- +- return count; +-} +- + static unsigned long read_ul(void *p, size_t x) + { + return *(unsigned long *)(p + x); +@@ -1824,8 +1813,8 @@ void intel_engine_dump(struct intel_engi + spin_lock_irqsave(&engine->sched_engine->lock, flags); + engine_dump_active_requests(engine, m); + +- drm_printf(m, "\tOn hold?: %lu\n", +- list_count(&engine->sched_engine->hold)); ++ drm_printf(m, "\tOn hold?: %zu\n", ++ list_count_nodes(&engine->sched_engine->hold)); + spin_unlock_irqrestore(&engine->sched_engine->lock, flags); + + drm_printf(m, "\tMMIO base: 0x%08x\n", engine->mmio_base); +--- a/include/linux/list.h ++++ b/include/linux/list.h +@@ -628,6 +628,21 @@ static inline void list_splice_tail_init + pos = n, n = pos->prev) + + /** ++ * list_count_nodes - count nodes in the list ++ * @head: the head for your list. ++ */ ++static inline size_t list_count_nodes(struct list_head *head) ++{ ++ struct list_head *pos; ++ size_t count = 0; ++ ++ list_for_each(pos, head) ++ count++; ++ ++ return count; ++} ++ ++/** + * list_entry_is_head - test if the entry points to the head of the list + * @pos: the type * to cursor + * @head: the head for your list. diff --git a/target/linux/generic/backport-6.1/810-v6.3-i915-Move-list_count-to-list.h-as-list_count_nodes-f.patch b/target/linux/generic/backport-6.1/810-v6.3-i915-Move-list_count-to-list.h-as-list_count_nodes-f.patch new file mode 100644 index 0000000000..60a90136c9 --- /dev/null +++ b/target/linux/generic/backport-6.1/810-v6.3-i915-Move-list_count-to-list.h-as-list_count_nodes-f.patch @@ -0,0 +1,75 @@ +From 4d70c74659d9746502b23d055dba03d1d28ec388 Mon Sep 17 00:00:00 2001 +From: Andy Shevchenko +Date: Wed, 30 Nov 2022 15:48:35 +0200 +Subject: [PATCH] i915: Move list_count() to list.h as list_count_nodes() for + broader use + +Some of the existing users, and definitely will be new ones, want to +count existing nodes in the list. Provide a generic API for that by +moving code from i915 to list.h. + +Reviewed-by: Lucas De Marchi +Acked-by: Jani Nikula +Signed-off-by: Andy Shevchenko +Link: https://lore.kernel.org/r/20221130134838.23805-1-andriy.shevchenko@linux.intel.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/gt/intel_engine_cs.c | 15 ++------------- + include/linux/list.h | 15 +++++++++++++++ + 2 files changed, 17 insertions(+), 13 deletions(-) + +--- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c ++++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c +@@ -4154,17 +4154,6 @@ void intel_execlists_show_requests(struc + spin_unlock_irqrestore(&sched_engine->lock, flags); + } + +-static unsigned long list_count(struct list_head *list) +-{ +- struct list_head *pos; +- unsigned long count = 0; +- +- list_for_each(pos, list) +- count++; +- +- return count; +-} +- + void intel_execlists_dump_active_requests(struct intel_engine_cs *engine, + struct i915_request *hung_rq, + struct drm_printer *m) +@@ -4175,8 +4164,8 @@ void intel_execlists_dump_active_request + + intel_engine_dump_active_requests(&engine->sched_engine->requests, hung_rq, m); + +- drm_printf(m, "\tOn hold?: %lu\n", +- list_count(&engine->sched_engine->hold)); ++ drm_printf(m, "\tOn hold?: %zu\n", ++ list_count_nodes(&engine->sched_engine->hold)); + + spin_unlock_irqrestore(&engine->sched_engine->lock, flags); + } +--- a/include/linux/list.h ++++ b/include/linux/list.h +@@ -656,6 +656,21 @@ static inline void list_splice_tail_init + pos = n, n = pos->prev) + + /** ++ * list_count_nodes - count nodes in the list ++ * @head: the head for your list. ++ */ ++static inline size_t list_count_nodes(struct list_head *head) ++{ ++ struct list_head *pos; ++ size_t count = 0; ++ ++ list_for_each(pos, head) ++ count++; ++ ++ return count; ++} ++ ++/** + * list_entry_is_head - test if the entry points to the head of the list + * @pos: the type * to cursor + * @head: the head for your list. diff --git a/target/linux/kirkwood/patches-6.1/114-ctera-c-200-v1.patch b/target/linux/kirkwood/patches-6.1/114-ctera-c-200-v1.patch index 23922b8d88..eb62e1a5ed 100644 --- a/target/linux/kirkwood/patches-6.1/114-ctera-c-200-v1.patch +++ b/target/linux/kirkwood/patches-6.1/114-ctera-c-200-v1.patch @@ -31,13 +31,12 @@ }; led-3 { -@@ -94,13 +104,15 @@ +@@ -94,13 +104,13 @@ gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; }; - led-4 { + led_status_red: led-4 { -+ label = "red:status"; function = LED_FUNCTION_STATUS; color = ; gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; @@ -45,7 +44,15 @@ - led-5 { + led_status_green: led-5 { -+ label = "green:status"; function = LED_FUNCTION_STATUS; color = ; gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; +@@ -240,7 +250,7 @@ + }; + + partition@7a00000 { +- label = "rootfs"; ++ label = "ubi"; + reg = <0x7a00000 0x8600000>; + }; + }; diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600-stock.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600-stock.dts index 3739ba0450..a67a803f85 100644 --- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600-stock.dts +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600-stock.dts @@ -21,13 +21,9 @@ &qpic_nand { /delete-node/ partitions; - /delete-node/ nand@0; nand@0 { - reg = <0>; - nand-ecc-strength = <4>; - nand-ecc-step-size = <512>; - nand-bus-width = <8>; + /delete-node/ partitions; partitions { compatible = "qcom,smem-part"; diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax6-stock.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax6-stock.dts index fc63acf058..47e05a1aeb 100644 --- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax6-stock.dts +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-ax6-stock.dts @@ -21,13 +21,9 @@ &qpic_nand { /delete-node/ partitions; - /delete-node/ nand@0; nand@0 { - reg = <0>; - nand-ecc-strength = <4>; - nand-ecc-step-size = <512>; - nand-bus-width = <8>; + /delete-node/ partitions; partitions { compatible = "qcom,smem-part"; diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-eap102.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-eap102.dts index 7067f92968..d40b3f0d24 100644 --- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-eap102.dts +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-eap102.dts @@ -21,8 +21,8 @@ led-running = &led_system_green; led-upgrade = &led_system_green; /* Aliases as required by u-boot to patch MAC addresses */ - ethernet0 = &dp5; - ethernet1 = &dp6; + ethernet0 = &dp6; + ethernet1 = &dp5; label-mac-device = &dp5; }; @@ -343,8 +343,8 @@ &switch { status = "okay"; - switch_lan_bmp = ; /* lan port bitmap */ - switch_wan_bmp = ; /* wan port bitmap */ + switch_lan_bmp = ; /* lan port bitmap */ + switch_wan_bmp = ; /* wan port bitmap */ switch_mac_mode1 = ; /* mac mode for uniphy instance1*/ switch_mac_mode2 = ; /* mac mode for uniphy instance2*/ @@ -368,14 +368,14 @@ &dp5 { status = "okay"; - phy-handle = <&qca8081_28>; - label = "wan"; + phy-handle = <&qca8081_24>; + label = "lan"; }; &dp6 { status = "okay"; - phy-handle = <&qca8081_24>; - label = "lan"; + phy-handle = <&qca8081_28>; + label = "wan"; }; &wifi { diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-mf269-stock.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-mf269-stock.dts new file mode 100644 index 0000000000..a74587d883 --- /dev/null +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-mf269-stock.dts @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +/dts-v1/; +#include "ipq8071-mf269.dts" + +/ { + model = "ZTE MF269 (stock layout)"; + compatible = "zte,mf269-stock", "qcom,ipq8074"; + + aliases { + /delete-property/ label-mac-device; + }; + + chosen { + bootargs-append = " root=/dev/ubiblock0_1"; + }; +}; + +&blsp1_spi1 { + flash@0 { + /delete-node/ partitions; + }; +}; + +&qpic_nand { + /delete-node/ partitions; + + nand@0 { + /delete-node/ partitions; + + partitions { + compatible = "qcom,smem-part"; + }; + }; +}; + +&dp5_syn { + /delete-property/ nvmem-cell-names; + /delete-property/ nvmem-cells; +}; + +&dp6_syn { + /delete-property/ nvmem-cell-names; + /delete-property/ nvmem-cells; +}; diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-mf269.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-mf269.dts index 45fc448cd9..8b055800e1 100644 --- a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-mf269.dts +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8071-mf269.dts @@ -14,44 +14,63 @@ aliases { serial0 = &blsp1_uart5; - led-boot = &led_system_white; - led-failsafe = &led_system_white; - led-running = &led_system_white; - led-upgrade = &led_system_white; + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; + label-mac-device = &dp6_syn; }; chosen { stdout-path = "serial0:115200n8"; - bootargs-append = " root=/dev/ubiblock0_1"; + bootargs-append = " root=/dev/ubiblock0_0"; }; keys { compatible = "gpio-keys"; - - reset { - label = "reset"; - gpios = <&tlmm 46 GPIO_ACTIVE_LOW>; - linux,code = ; - }; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; wps { label = "wps"; - gpios = <&tlmm 37 GPIO_ACTIVE_LOW>; linux,code = ; + gpios = <&tlmm 37 GPIO_ACTIVE_LOW>; + }; + + reset { + label = "reset"; + linux,code = ; + gpios = <&tlmm 46 GPIO_ACTIVE_LOW>; }; }; leds { compatible = "gpio-leds"; - led_system_white: system-white { - label = "white:system"; + led_power: power { + label = "white:power"; gpio = <&tlmm 56 GPIO_ACTIVE_HIGH>; }; }; }; &tlmm { + button_pins: button_pins { + mux { + pins = "gpio37", "gpio46"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + i2c_pins: i2c-pins { + pins = "gpio21", "gpio22"; + function = "blsp4_i2c1"; + drive-strength = <8>; + bias-disable; + }; + mdio_pins: mdio-pins { mdc { pins = "gpio68"; @@ -60,7 +79,7 @@ bias-pull-up; }; - mido { + mdio { pins = "gpio69"; function = "mdio"; drive-strength = <8>; @@ -68,8 +87,8 @@ }; }; - usb_vbus_pins: usb-vbus-pins { - usb-pins { + usb_pwr_pins: usb_pwr_pins { + mux { pins = "gpio29"; function = "gpio"; drive-strength = <8>; @@ -91,6 +110,137 @@ #size-cells = <1>; reg = <0>; spi-max-frequency = <50000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "0:sbl1"; + reg = <0x0 0x50000>; + read-only; + }; + + partition@50000 { + label = "0:mibib"; + reg = <0x50000 0x10000>; + read-only; + }; + + partition@60000 { + label = "0:bootconfig"; + reg = <0x60000 0x20000>; + read-only; + }; + + partition@80000 { + label = "0:bootconfig1"; + reg = <0x80000 0x20000>; + read-only; + }; + + partition@a0000 { + label = "0:qsee"; + reg = <0xa0000 0x180000>; + read-only; + }; + + partition@220000 { + label = "0:qsee_1"; + reg = <0x220000 0x180000>; + read-only; + }; + + partition@3a0000 { + label = "0:devcfg"; + reg = <0x3a0000 0x10000>; + read-only; + }; + + partition@3b0000 { + label = "0:devcfg_1"; + reg = <0x3b0000 0x10000>; + read-only; + }; + + partition@3c0000 { + label = "0:apdp"; + reg = <0x3c0000 0x10000>; + read-only; + }; + + partition@3d0000 { + label = "0:apdp_1"; + reg = <0x3d0000 0x10000>; + read-only; + }; + + partition@3e0000 { + label = "0:rpm"; + reg = <0x3e0000 0x40000>; + read-only; + }; + + partition@420000 { + label = "0:rpm_1"; + reg = <0x420000 0x40000>; + read-only; + }; + + partition@460000 { + label = "0:cdt"; + reg = <0x460000 0x10000>; + read-only; + }; + + partition@470000 { + label = "0:cdt_1"; + reg = <0x470000 0x10000>; + read-only; + }; + + partition@480000 { + label = "0:appsblenv"; + reg = <0x480000 0x10000>; + }; + + partition@490000 { + label = "0:appsbl"; + reg = <0x490000 0xc0000>; + read-only; + }; + + partition@550000 { + label = "0:appsbl_1"; + reg = <0x550000 0xc0000>; + read-only; + }; + + partition@610000 { + label = "0:art"; + reg = <0x610000 0x40000>; + read-only; + }; + + partition@650000 { + label = "0:ethphyfw"; + reg = <0x650000 0x80000>; + read-only; + }; + }; + }; +}; + +&blsp1_i2c5 { + pinctrl-0 = <&i2c_pins>; + pinctrl-names = "default"; + status = "okay"; + + /* No driver exists */ + aw9106: gpio-expander@5b { + reg = <0x5b>; + reset-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>; }; }; @@ -98,10 +248,6 @@ status = "okay"; }; -&prng { - status = "okay"; -}; - &cryptobam { status = "okay"; }; @@ -110,6 +256,10 @@ status = "okay"; }; +&prng { + status = "okay"; +}; + &qpic_bam { status = "okay"; }; @@ -117,6 +267,20 @@ &qpic_nand { status = "okay"; + /* + * Bootloader will find the NAND DT node by the compatible and + * then "fixup" it by adding the partitions from the SMEM table + * using the legacy bindings thus making it impossible for us + * to change the partition table or utilize NVMEM for calibration. + * So add a dummy partitions node that bootloader will populate + * and set it as disabled so the kernel ignores it instead of + * printing warnings due to the broken way bootloader adds the + * partitions. + */ + partitions { + status = "disabled"; + }; + nand@0 { reg = <0>; nand-ecc-strength = <4>; @@ -124,7 +288,79 @@ nand-bus-width = <8>; partitions { - compatible = "qcom,smem-part"; + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "fota-flag"; + reg = <0x0000000 0x00a0000>; + read-only; + }; + + partition@a0000 { + label = "mac"; + reg = <0x00a0000 0x0080000>; + read-only; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_mac_0: macaddr@0 { + compatible = "mac-base"; + reg = <0x0 0x6>; + #nvmem-cell-cells = <1>; + }; + }; + }; + + partition@120000 { + label = "cfg-param"; + reg = <0x0120000 0x1400000>; + read-only; + }; + + partition@1520000 { + label = "log"; + reg = <0x1520000 0x0600000>; + read-only; + }; + + partition@1b20000 { + label = "oops"; + reg = <0x1b20000 0x00a0000>; + read-only; + }; + + partition@1bc0000 { + label = "web"; + reg = <0x1bc0000 0x0800000>; + read-only; + }; + + partition@23c0000 { + label = "ubi_kernel"; + reg = <0x23c0000 0x3400000>; + }; + + partition@57c0000 { + label = "0:wififw"; + reg = <0x57c0000 0x0800000>; + read-only; + }; + + /* rootfs partition is the result of squashing + * consecutive stock partitions: + * - openwrt_data (25 MiB) + * - data (30 MiB) + * - fota (99 MiB) + */ + partition@5fc0000 { + label = "rootfs"; + reg = <0x5fc0000 0x9a00000>; + }; }; }; }; @@ -138,7 +374,7 @@ }; &usb_0 { - pinctrl-0 = <&usb_vbus_pins>; + pinctrl-0 = <&usb_pwr_pins>; pinctrl-names = "default"; status = "okay"; }; @@ -149,14 +385,14 @@ pinctrl-0 = <&mdio_pins>; pinctrl-names = "default"; - qca8075_24: ethernet-phy@24 { - compatible = "ethernet-phy-ieee802.3-c22"; + qca8081_24: ethernet-phy@24 { + compatible = "ethernet-phy-id004d.d101"; reg = <24>; reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; }; - qca8075_28: ethernet-phy@28 { - compatible = "ethernet-phy-ieee802.3-c22"; + qca8081_28: ethernet-phy@28 { + compatible = "ethernet-phy-id004d.d101"; reg = <28>; reset-gpios = <&tlmm 44 GPIO_ACTIVE_LOW>; }; @@ -167,9 +403,8 @@ switch_lan_bmp = ; /* lan port bitmap */ switch_wan_bmp = ; /* wan port bitmap */ - switch_mac_mode = ; /* mac mode for uniphy instance0*/ - switch_mac_mode1 = ; /* mac mode for uniphy instance1*/ - switch_mac_mode2 = ; /* mac mode for uniphy instance2*/ + switch_mac_mode1 = ; /* mac mode for uniphy instance1*/ + switch_mac_mode2 = ; /* mac mode for uniphy instance2*/ qcom,port_phyinfo { port@5 { @@ -177,7 +412,6 @@ phy_address = <24>; port_mac_sel = "QGMAC_PORT"; }; - port@6 { port_id = <6>; phy_address = <28>; @@ -192,14 +426,18 @@ &dp5_syn { status = "okay"; - phy-handle = <&qca8075_24>; + phy-handle = <&qca8081_24>; label = "lan"; + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_mac_0 1>; }; &dp6_syn { status = "okay"; - phy-handle = <&qca8075_28>; + phy-handle = <&qca8081_28>; label = "wan"; + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_mac_0 0>; }; &wifi { diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-aw1000.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-aw1000.dts new file mode 100644 index 0000000000..495ebad17a --- /dev/null +++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8072-aw1000.dts @@ -0,0 +1,345 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* Copyright (c) 2023, Chukun Pan */ + +/dts-v1/; + +#include "ipq8074.dtsi" +#include "ipq8074-hk-cpu.dtsi" +#include "ipq8074-ess.dtsi" +#include +#include + +/ { + model = "Arcadyan AW1000"; + compatible = "arcadyan,aw1000", "qcom,ipq8074"; + + aliases { + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; + serial0 = &blsp1_uart5; + /* + * Aliases as required by u-boot + * to patch MAC addresses + */ + ethernet0 = &dp1; + ethernet1 = &dp2; + ethernet2 = &dp3; + ethernet3 = &dp4; + ethernet4 = &dp6_syn; + label-mac-device = &dp1; + }; + + chosen { + stdout-path = "serial0:115200n8"; + bootargs-append = " root=/dev/ubiblock0_1"; + }; + + gpio-export { + compatible = "gpio-export"; + + lte-pwrkey { + gpio-export,name = "lte_pwrkey"; + gpio-export,output = <1>; + gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>; + }; + + lte-power { + gpio-export,name = "lte_power"; + gpio-export,output = <1>; + gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; + }; + + lte-reset { + gpio-export,name = "lte_reset"; + gpio-export,output = <1>; + gpios = <&tlmm 63 GPIO_ACTIVE_HIGH>; + }; + + usb-vbus { + gpio-export,name = "usb_vbus"; + gpio-export,output = <0>; + gpios = <&tlmm 9 GPIO_ACTIVE_LOW>; + }; + }; + + keys { + compatible = "gpio-keys"; + + wlan { + label = "wlan"; + linux,code = ; + gpios = <&tlmm 2 GPIO_ACTIVE_LOW>; + }; + + wps { + label = "wps"; + linux,code = ; + gpios = <&tlmm 62 GPIO_ACTIVE_LOW>; + }; + + reset { + label = "reset"; + linux,code = ; + gpios = <&tlmm 67 GPIO_ACTIVE_LOW>; + }; + }; + + led-spi { + compatible = "spi-gpio"; + #address-cells = <1>; + #size-cells = <0>; + + sck-gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>; + mosi-gpios = <&tlmm 19 GPIO_ACTIVE_HIGH>; + + led_gpio: led-gpio@0 { + compatible = "fairchild,74hc595"; + reg = <0>; + gpio-controller; + #gpio-cells = <2>; + registers-number = <2>; + spi-max-frequency = <1000000>; + enable-gpios = <&tlmm 20 GPIO_ACTIVE_HIGH>; + }; + }; + + leds { + compatible = "gpio-leds"; + + led_power: power { + label = "green:power"; + gpios = <&led_gpio 0 GPIO_ACTIVE_HIGH>; + }; + + wifi { + label = "green:wifi"; + gpios = <&led_gpio 1 GPIO_ACTIVE_HIGH>; + }; + + internet { + label = "green:internet"; + gpios = <&led_gpio 2 GPIO_ACTIVE_HIGH>; + }; + + 5g-red { + label = "red:5g"; + gpios = <&led_gpio 3 GPIO_ACTIVE_LOW>; + }; + + 5g-green { + label = "green:5g"; + gpios = <&led_gpio 4 GPIO_ACTIVE_LOW>; + }; + + 5g-blue { + label = "blue:5g"; + gpios = <&led_gpio 5 GPIO_ACTIVE_LOW>; + }; + + signal-red { + label = "red:signal"; + gpios = <&led_gpio 6 GPIO_ACTIVE_LOW>; + }; + + signal-green { + label = "green:signal"; + gpios = <&led_gpio 8 GPIO_ACTIVE_LOW>; + }; + + signal-blue { + label = "blue:signal"; + gpios = <&led_gpio 9 GPIO_ACTIVE_LOW>; + }; + + phone { + label = "green:phone"; + gpios = <&led_gpio 11 GPIO_ACTIVE_HIGH>; + }; + }; +}; + +&tlmm { + mdio_pins: mdio-pins { + mdc { + pins = "gpio68"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mdio { + pins = "gpio69"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; +}; + +&blsp1_uart5 { + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&crypto { + status = "okay"; +}; + +&prng { + status = "okay"; +}; + +&qpic_bam { + status = "okay"; +}; + +&qpic_nand { + status = "okay"; + + nand@0 { + reg = <0>; + nand-ecc-strength = <8>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + + partitions { + compatible = "qcom,smem-part"; + }; + }; +}; + +&qusb_phy_0 { + status = "okay"; +}; + +&qusb_phy_1 { + status = "okay"; +}; + +&ssphy_0 { + status = "okay"; +}; + +&ssphy_1 { + status = "okay"; +}; + +&usb_0 { + status = "okay"; +}; + +&usb_1 { + status = "okay"; +}; + +&mdio { + status = "okay"; + + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + reset-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>; + + qca8075_0: ethernet-phy@0 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0>; + }; + + qca8075_1: ethernet-phy@1 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <1>; + }; + + qca8075_2: ethernet-phy@2 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <2>; + }; + + qca8075_3: ethernet-phy@3 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <3>; + }; + + qca8081: ethernet-phy@28 { + compatible = "ethernet-phy-id004d.d101"; + reg = <28>; + reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>; + }; +}; + +&switch { + status = "okay"; + + switch_lan_bmp = <(ESS_PORT1 | ESS_PORT2 | ESS_PORT3 | ESS_PORT4)>; /* lan port bitmap */ + switch_wan_bmp = ; /* wan port bitmap */ + switch_mac_mode = ; /* mac mode for uniphy instance0*/ + switch_mac_mode2 = ; /* mac mode for uniphy instance2*/ + + qcom,port_phyinfo { + port@1 { + port_id = <1>; + phy_address = <0>; + }; + port@2 { + port_id = <2>; + phy_address = <1>; + }; + port@3 { + port_id = <3>; + phy_address = <2>; + }; + port@4 { + port_id = <4>; + phy_address = <3>; + }; + port@6 { + port_id = <6>; + phy_address = <28>; + port_mac_sel = "QGMAC_PORT"; + }; + }; +}; + +&edma { + status = "okay"; +}; + +&dp1 { + status = "okay"; + phy-handle = <&qca8075_0>; + label = "lan1"; +}; + +&dp2 { + status = "okay"; + phy-handle = <&qca8075_1>; + label = "lan2"; +}; + +&dp3 { + status = "okay"; + phy-handle = <&qca8075_2>; + label = "lan3"; +}; + +&dp4 { + status = "okay"; + phy-handle = <&qca8075_3>; + label = "lan4"; +}; + +&dp6_syn { + status = "okay"; + phy-handle = <&qca8081>; + label = "wan"; +}; + +&wifi { + status = "okay"; + + qcom,ath11k-calibration-variant = "Arcadyan-AW1000"; +}; diff --git a/target/linux/qualcommax/image/ipq807x.mk b/target/linux/qualcommax/image/ipq807x.mk index fd9fd20ebf..5dca174301 100644 --- a/target/linux/qualcommax/image/ipq807x.mk +++ b/target/linux/qualcommax/image/ipq807x.mk @@ -33,6 +33,20 @@ define Build/wax6xx-netgear-tar rm -rf $@.tmp endef +define Device/arcadyan_aw1000 + $(call Device/FitImage) + $(call Device/UbiFit) + DEVICE_VENDOR := Arcadyan + DEVICE_MODEL := AW1000 + BLOCKSIZE := 256k + PAGESIZE := 4096 + DEVICE_DTS_CONFIG := config@hk09 + SOC := ipq8072 + DEVICE_PACKAGES := ipq-wifi-arcadyan_aw1000 kmod-spi-gpio \ + kmod-gpio-nxp-74hc164 kmod-usb-serial-option uqmi +endef +TARGET_DEVICES += arcadyan_aw1000 + define Device/buffalo_wxr-5950ax12 $(call Device/FitImage) DEVICE_VENDOR := Buffalo @@ -48,16 +62,16 @@ endef TARGET_DEVICES += buffalo_wxr-5950ax12 define Device/compex_wpq873 - $(call Device/FitImage) - $(call Device/UbiFit) - DEVICE_VENDOR := Compex - DEVICE_MODEL := WPQ873 - BLOCKSIZE := 128k - PAGESIZE := 2048 - DEVICE_DTS_CONFIG := config@hk09.wpq873 - SOC := ipq8072 - DEVICE_PACKAGES := ipq-wifi-compex_wpq873 - IMAGE/factory.ubi := append-ubi | qsdk-ipq-factory-nand + $(call Device/FitImage) + $(call Device/UbiFit) + DEVICE_VENDOR := Compex + DEVICE_MODEL := WPQ873 + BLOCKSIZE := 128k + PAGESIZE := 2048 + DEVICE_DTS_CONFIG := config@hk09.wpq873 + SOC := ipq8072 + DEVICE_PACKAGES := ipq-wifi-compex_wpq873 + IMAGE/factory.ubi := append-ubi | qsdk-ipq-factory-nand endef TARGET_DEVICES += compex_wpq873 @@ -267,31 +281,6 @@ endif endef TARGET_DEVICES += xiaomi_ax9000 -define Device/zte_mf269 - $(call Device/FitImage) - $(call Device/UbiFit) - DEVICE_VENDOR := ZTE - DEVICE_MODEL := MF269 - BLOCKSIZE := 128k - PAGESIZE := 2048 - DEVICE_DTS_CONFIG := config@ac04 - SOC := ipq8071 - DEVICE_PACKAGES := ipq-wifi-zte_mf269 -endef -TARGET_DEVICES += zte_mf269 - -define Device/zyxel_nbg7815 - $(call Device/FitImage) - $(call Device/EmmcImage) - DEVICE_VENDOR := ZYXEL - DEVICE_MODEL := NBG7815 - DEVICE_DTS_CONFIG := config@nbg7815 - SOC := ipq8074 - DEVICE_PACKAGES += ipq-wifi-zyxel_nbg7815 kmod-ath11k-pci kmod-hwmon-tmp103 \ - kmod-bluetooth -endef -TARGET_DEVICES += zyxel_nbg7815 - define Device/yuncore_ax880 $(call Device/FitImage) $(call Device/UbiFit) @@ -307,3 +296,41 @@ define Device/yuncore_ax880 endef TARGET_DEVICES += yuncore_ax880 +define Device/zte_mf269 + $(call Device/FitImage) + $(call Device/UbiFit) + DEVICE_VENDOR := ZTE + DEVICE_MODEL := MF269 + DEVICE_VARIANT := (OpenWrt expand layout) + BLOCKSIZE := 128k + PAGESIZE := 2048 + DEVICE_DTS_CONFIG := config@ac04 + SOC := ipq8071 + KERNEL_SIZE := 53248k + DEVICE_PACKAGES := ipq-wifi-zte_mf269 + DEVICE_COMPAT_VERSION := 1.1 + DEVICE_COMPAT_MESSAGE := Partition table has changed, please flash new stock layout firmware instead +endef +TARGET_DEVICES += zte_mf269 + +define Device/zte_mf269-stock + $(call Device/zte_mf269) + DEVICE_VARIANT := (stock layout) + DEVICE_ALT0_VENDOR := ZTE + DEVICE_ALT0_MODEL := MF269 + DEVICE_ALT0_VARIANT := (custom U-Boot layout) + KERNEL_SIZE := +endef +TARGET_DEVICES += zte_mf269-stock + +define Device/zyxel_nbg7815 + $(call Device/FitImage) + $(call Device/EmmcImage) + DEVICE_VENDOR := ZYXEL + DEVICE_MODEL := NBG7815 + DEVICE_DTS_CONFIG := config@nbg7815 + SOC := ipq8074 + DEVICE_PACKAGES += ipq-wifi-zyxel_nbg7815 kmod-ath11k-pci \ + kmod-bluetooth kmod-hwmon-tmp103 +endef +TARGET_DEVICES += zyxel_nbg7815 diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds index 168b017f5f..19b136b81a 100644 --- a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds +++ b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/01_leds @@ -6,6 +6,10 @@ board_config_update board=$(board_name) case "$board" in +arcadyan,aw1000) + ucidef_set_led_netdev "5g" "5G" "green:5g" "wwan0" + ucidef_set_led_netdev "wan" "WAN" "green:internet" "wan" + ;; edgecore,eap102) ucidef_set_led_netdev "wan" "WAN" "green:wanpoe" "wan" ;; diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network index 0039c37f98..2549e3e391 100644 --- a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network +++ b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network @@ -11,14 +11,23 @@ ipq807x_setup_interfaces() local board="$1" case "$board" in + arcadyan,aw1000|\ buffalo,wxr-5950ax12|\ dynalink,dl-wrx36|\ xiaomi,ax9000) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan" ;; + compex,wpq873|\ + redmi,ax6|\ + redmi,ax6-stock|\ + xiaomi,ax3600|\ + xiaomi,ax3600-stock) + ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "wan" + ;; edgecore,eap102|\ yuncore,ax880|\ - zte,mf269) + zte,mf269|\ + zte,mf269-stock) ucidef_set_interfaces_lan_wan "lan" "wan" ;; edimax,cax1800) @@ -40,13 +49,6 @@ ipq807x_setup_interfaces() qnap,301w) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 10g-2" "10g-1" ;; - compex,wpq873|\ - redmi,ax6|\ - redmi,ax6-stock|\ - xiaomi,ax3600|\ - xiaomi,ax3600-stock) - ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "wan" - ;; zyxel,nbg7815) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 10g" "wan" ;; diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/05_compat-version b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/05_compat-version new file mode 100644 index 0000000000..dbb3cb96fe --- /dev/null +++ b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/05_compat-version @@ -0,0 +1,18 @@ +# +# Copyright (C) 2020 OpenWrt.org +# + +. /lib/functions.sh +. /lib/functions/uci-defaults.sh + +board_config_update + +case "$(board_name)" in + zte,mf269) + ucidef_set_compat_version "1.1" + ;; +esac + +board_config_flush + +exit 0 diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata index f28b828c50..d13074eea4 100644 --- a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata +++ b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata @@ -9,11 +9,12 @@ board=$(board_name) case "$FIRMWARE" in "ath11k/IPQ8074/hw2.0/cal-ahb-c000000.wifi.bin") case "$board" in + arcadyan,aw1000|\ buffalo,wxr-5950ax12|\ compex,wpq873|\ + dynalink,dl-wrx36|\ edgecore,eap102|\ edimax,cax1800|\ - dynalink,dl-wrx36|\ netgear,rax120v2|\ netgear,wax218|\ netgear,wax620|\ @@ -30,7 +31,7 @@ case "$FIRMWARE" in caldata_extract "0:art" 0x1000 0x20000 ;; prpl,haze) - caldata_extract_mmc "0:ART" 0x1000 0x20000 + caldata_extract_mmc "0:ART" 0x1000 0x20000 ;; esac ;; @@ -38,7 +39,7 @@ case "$FIRMWARE" in "ath11k/QCN9074/hw1.0/cal-pci-0001:01:00.0.bin") case "$board" in prpl,haze) - caldata_extract_mmc "0:ART" 0x26800 0x20000 + caldata_extract_mmc "0:ART" 0x26800 0x20000 ;; xiaomi,ax9000) caldata_extract "0:art" 0x26800 0x20000 diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac index f2ad2653a0..404636e088 100644 --- a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac +++ b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac @@ -10,10 +10,18 @@ PHYNBR=${DEVPATH##*/phy} board=$(board_name) case "$board" in + arcadyan,aw1000) + [ "$PHYNBR" = "0" ] && macaddr_add $(get_mac_label) 1 > /sys${DEVPATH}/macaddress + [ "$PHYNBR" = "1" ] && macaddr_add $(get_mac_label) 2 > /sys${DEVPATH}/macaddress + ;; zte,mf269) + [ "$PHYNBR" = "0" ] && macaddr_add $(get_mac_label) 2 > /sys${DEVPATH}/macaddress + [ "$PHYNBR" = "1" ] && macaddr_add $(get_mac_label) 3 > /sys${DEVPATH}/macaddress + ;; + zte,mf269-stock) mac_addr="$(mtd_get_mac_binary mac 0x0)" [ "$mac_addr" != "00:00:00:00:00:00" ] || mac_addr="$(get_mac_binary "$(find_mtd_chardev mac)" 0x20000)" [ "$PHYNBR" = "0" ] && macaddr_add "$mac_addr" 2 > "/sys${DEVPATH}/macaddress" [ "$PHYNBR" = "1" ] && macaddr_add "$mac_addr" 3 > "/sys${DEVPATH}/macaddress" - ;; + ;; esac diff --git a/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/mmc.sh b/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/mmc.sh index dac9ddd568..21cd7928e3 100644 --- a/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/mmc.sh +++ b/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/mmc.sh @@ -18,11 +18,11 @@ mmc_do_upgrade() { local rootfs= local kernel= - [ -z "$kernel" ] && kernel=$(find_mmc_part ${kernelname}) - [ -z "$rootfs" ] && rootfs=$(find_mmc_part ${rootfsname}) + [ -z "$kernel" ] && kernel=$(find_mmc_part ${kernelname}) + [ -z "$rootfs" ] && rootfs=$(find_mmc_part ${rootfsname}) - [ -z "$kernel" ] && echo "Upgrade failed: kernel partition not found! Rebooting..." && reboot -f - [ -z "$rootfs" ] && echo "Upgrade failed: rootfs partition not found! Rebooting..." && reboot -f + [ -z "$kernel" ] && echo "Upgrade failed: kernel partition not found! Rebooting..." && reboot -f + [ -z "$rootfs" ] && echo "Upgrade failed: rootfs partition not found! Rebooting..." && reboot -f mmc_do_flash $tar_file $kernel $rootfs diff --git a/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh index 809619c47d..5f944d6d65 100644 --- a/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh +++ b/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh @@ -43,6 +43,16 @@ platform_pre_upgrade() { platform_do_upgrade() { case "$(board_name)" in + arcadyan,aw1000|\ + compex,wpq873|\ + dynalink,dl-wrx36|\ + edimax,cax1800|\ + netgear,rax120v2|\ + netgear,wax218|\ + netgear,wax620|\ + netgear,wax630) + nand_do_upgrade "$1" + ;; buffalo,wxr-5950ax12) CI_KERN_UBIPART="rootfs" CI_ROOT_UBIPART="user_property" @@ -51,9 +61,6 @@ platform_do_upgrade() { nand_do_restore_config || nand_do_upgrade_failed buffalo_upgrade_optvol ;; - dynalink,dl-wrx36) - nand_do_upgrade "$1" - ;; edgecore,eap102) active="$(fw_printenv -n active)" if [ "$active" -eq "1" ]; then @@ -66,34 +73,12 @@ platform_do_upgrade() { fw_setenv upgrade_available 1 nand_do_upgrade "$1" ;; - compex,wpq873|\ - edimax,cax1800|\ - netgear,rax120v2|\ - netgear,wax218|\ - netgear,wax620|\ - netgear,wax630) - nand_do_upgrade "$1" - ;; prpl,haze|\ qnap,301w) kernelname="0:HLOS" rootfsname="rootfs" mmc_do_upgrade "$1" ;; - zyxel,nbg7815) - local config_mtdnum="$(find_mtd_index 0:bootconfig)" - [ -z "$config_mtdnum" ] && reboot - part_num="$(hexdump -e '1/1 "%01x|"' -n 1 -s 168 -C /dev/mtd$config_mtdnum | cut -f 1 -d "|" | head -n1)" - if [ "$part_num" -eq "0" ]; then - kernelname="0:HLOS" - rootfsname="rootfs" - mmc_do_upgrade "$1" - else - kernelname="0:HLOS_1" - rootfsname="rootfs_1" - mmc_do_upgrade "$1" - fi - ;; redmi,ax6|\ xiaomi,ax3600|\ xiaomi,ax9000) @@ -153,9 +138,28 @@ platform_do_upgrade() { nand_do_upgrade "$1" ;; zte,mf269) + CI_KERN_UBIPART="ubi_kernel" + CI_ROOT_UBIPART="rootfs" + nand_do_upgrade "$1" + ;; + zte,mf269-stock) CI_UBIPART="rootfs" nand_do_upgrade "$1" ;; + zyxel,nbg7815) + local config_mtdnum="$(find_mtd_index 0:bootconfig)" + [ -z "$config_mtdnum" ] && reboot + part_num="$(hexdump -e '1/1 "%01x|"' -n 1 -s 168 -C /dev/mtd$config_mtdnum | cut -f 1 -d "|" | head -n1)" + if [ "$part_num" -eq "0" ]; then + kernelname="0:HLOS" + rootfsname="rootfs" + mmc_do_upgrade "$1" + else + kernelname="0:HLOS_1" + rootfsname="rootfs_1" + mmc_do_upgrade "$1" + fi + ;; *) default_do_upgrade "$1" ;; diff --git a/target/linux/qualcommax/patches-6.1/0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch b/target/linux/qualcommax/patches-6.1/0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch new file mode 100644 index 0000000000..c52681928b --- /dev/null +++ b/target/linux/qualcommax/patches-6.1/0400-mtd-rawnand-add-support-for-TH58NYG3S0HBAI4.patch @@ -0,0 +1,42 @@ +From 8d8b37d3af2bdccf0a37d2017d876bfc6ce42552 Mon Sep 17 00:00:00 2001 +From: Chukun Pan +Date: Fri, 20 Oct 2023 23:18:21 +0800 +Subject: [PATCH 1/1] mtd: rawnand: add support for TH58NYG3S0HBAI4 NAND flash + +The Toshiba TH58NYG3S0HBAI4 is detected with 128 byte OOB while the flash +has 256 bytes OOB. Since it is not an ONFI compliant NAND, the model name +cannot be read from anywhere, add a static NAND ID entry to correct this. + +However, the NAND ID of this flash is inconsistent with the datasheet. +The actual NAND ID is only 4 ID bytes, the last ID byte is missing. + +Datasheet available at (the ID table is on page 50): +https://europe.kioxia.com/content/dam/kioxia/newidr/productinfo/datasheet/201910/DST_TH58NYG3S0HBAI4-TDE_EN_31565.pdf + +Datasheet NAND ID: {0x98, 0xa3, 0x91, 0x26, 0x76} +Actual NAND ID: {0x98, 0xa3, 0x91, 0x26} + +It seems that this flash may be counterfeit, but another Toshiba flash +also has the same problem. Maybe the driver has a bug, or some Toshiba +nand flash is like this. Anyway, add a static NAND ID entry with only +4 ID bytes as a hack to make sure it works. + +Tested on Arcadyan AW1000 flashed with OpenWrt. + +Signed-off-by: Chukun Pan +--- + drivers/mtd/nand/raw/nand_ids.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/mtd/nand/raw/nand_ids.c ++++ b/drivers/mtd/nand/raw/nand_ids.c +@@ -55,6 +55,9 @@ struct nand_flash_dev nand_flash_ids[] = + { .id = {0xad, 0xde, 0x14, 0xa7, 0x42, 0x4a} }, + SZ_16K, SZ_8K, SZ_4M, NAND_NEED_SCRAMBLING, 6, 1664, + NAND_ECC_INFO(40, SZ_1K) }, ++ {"TH58NYG3S0HBAI4 8G 1.8V 8-bit", /* Last ID bytes missing */ ++ { .id = {0x98, 0xa3, 0x91, 0x26} }, ++ SZ_4K, SZ_1K, SZ_256K, 0, 4, 256, NAND_ECC_INFO(8, SZ_512) }, + {"TH58NVG2S3HBAI4 4G 3.3V 8-bit", + { .id = {0x98, 0xdc, 0x91, 0x15, 0x76} }, + SZ_2K, SZ_512, SZ_128K, 0, 5, 128, NAND_ECC_INFO(8, SZ_512) }, diff --git a/target/linux/realtek/base-files/etc/board.d/02_network b/target/linux/realtek/base-files/etc/board.d/02_network index a8579ea275..4a5fe7666c 100644 --- a/target/linux/realtek/base-files/etc/board.d/02_network +++ b/target/linux/realtek/base-files/etc/board.d/02_network @@ -69,6 +69,19 @@ done [ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac case $board in +d-link,dgs-1210-10mp-f) + ucidef_set_poe 130 "$lan_list" "lan9 lan10" + ;; +d-link,dgs-1210-10p) + ucidef_set_poe 65 "$lan_list" "lan9 lan10" + ;; +d-link,dgs-1210-28mp-f) + ucidef_set_poe 370 "lan8 lan7 lan6 lan5 lan4 lan3 lan2 lan1 lan16 lan15 lan14 lan13 lan12 lan11 lan10 lan9 lan24 lan23 + lan22 lan21 lan20 lan19 lan18 lan17" "lan25 lan26 lan27 lan28" + ;; +engenius,ews2910p) + ucidef_set_poe 60 "$lan_list" "lan9 lan10" + ;; hpe,1920-8g-poe-65w) ucidef_set_poe 65 "$lan_list_rev" "lan9 lan10" ;; diff --git a/target/linux/realtek/image/rtl838x.mk b/target/linux/realtek/image/rtl838x.mk index de98954284..9a9a310713 100644 --- a/target/linux/realtek/image/rtl838x.mk +++ b/target/linux/realtek/image/rtl838x.mk @@ -41,7 +41,7 @@ define Device/d-link_dgs-1210-10p $(Device/d-link_dgs-1210) SOC := rtl8382 DEVICE_MODEL := DGS-1210-10P - DEVICE_PACKAGES += lua-rs232 + DEVICE_PACKAGES += realtek-poe endef TARGET_DEVICES += d-link_dgs-1210-10p @@ -82,6 +82,7 @@ define Device/engenius_ews2910p IMAGE_SIZE := 8192k DEVICE_VENDOR := EnGenius DEVICE_MODEL := EWS2910P + DEVICE_PACKAGES += realtek-poe UIMAGE_MAGIC := 0x03802910 KERNEL_INITRAMFS := \ kernel-bin | \ @@ -112,6 +113,7 @@ define Device/hpe_1920-8g-poe-180w $(Device/hpe_1920) SOC := rtl8380 DEVICE_MODEL := 1920-8G-PoE+ 180W (JG922A) + DEVICE_PACKAGES += realtek-poe H3C_DEVICE_ID := 0x00010025 SUPPORTED_DEVICES += hpe_1920-8g-poe endef @@ -180,6 +182,7 @@ define Device/netgear_gs110tpp-v1 $(Device/netgear_nge) DEVICE_MODEL := GS110TPP DEVICE_VARIANT := v1 + DEVICE_PACKAGES += realtek-poe endef TARGET_DEVICES += netgear_gs110tpp-v1 @@ -196,7 +199,7 @@ define Device/netgear_gs310tp-v1 DEVICE_MODEL := GS310TP DEVICE_VARIANT := v1 UIMAGE_MAGIC := 0x4e474335 - DEVICE_PACKAGES += lua-rs232 + DEVICE_PACKAGES += realtek-poe endef TARGET_DEVICES += netgear_gs310tp-v1 @@ -267,6 +270,7 @@ define Device/zyxel_gs1900-10hp SOC := rtl8380 DEVICE_MODEL := GS1900-10HP ZYXEL_VERS := AAZI + DEVICE_PACKAGES += realtek-poe endef TARGET_DEVICES += zyxel_gs1900-10hp @@ -292,7 +296,7 @@ define Device/zyxel_gs1900-8hp-v1 DEVICE_MODEL := GS1900-8HP DEVICE_VARIANT := v1 ZYXEL_VERS := AAHI - DEVICE_PACKAGES += lua-rs232 + DEVICE_PACKAGES += realtek-poe endef TARGET_DEVICES += zyxel_gs1900-8hp-v1 @@ -302,7 +306,7 @@ define Device/zyxel_gs1900-8hp-v2 DEVICE_MODEL := GS1900-8HP DEVICE_VARIANT := v2 ZYXEL_VERS := AAHI - DEVICE_PACKAGES += lua-rs232 + DEVICE_PACKAGES += realtek-poe endef TARGET_DEVICES += zyxel_gs1900-8hp-v2 @@ -329,6 +333,7 @@ define Device/zyxel_gs1900-24hp-v1 DEVICE_MODEL := GS1900-24HP DEVICE_VARIANT := v1 ZYXEL_VERS := AAHM + DEVICE_PACKAGES += realtek-poe endef TARGET_DEVICES += zyxel_gs1900-24hp-v1 @@ -338,5 +343,6 @@ define Device/zyxel_gs1900-24hp-v2 DEVICE_MODEL := GS1900-24HP DEVICE_VARIANT := v2 ZYXEL_VERS := ABTP + DEVICE_PACKAGES += realtek-poe endef TARGET_DEVICES += zyxel_gs1900-24hp-v2 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 f21a998b7b..c1c553b30d 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 @@ -9,7 +9,7 @@ get_device_irq() { # wait up to 10 seconds for the irq/device to appear while [ "${seconds}" -le 10 ]; do - line=$(grep -m 1 "${device}\$" /proc/interrupts) && break + line=$(grep -E -m 1 "${device}\$" /proc/interrupts) && break seconds="$(( seconds + 2 ))" sleep 2 done @@ -48,7 +48,7 @@ radxa,rockpi-e|\ xunlong,orangepi-r1-plus|\ xunlong,orangepi-r1-plus-lts) set_interface_core 2 "eth0" - set_interface_core 4 "eth1" "xhci-hcd:usb1" + set_interface_core 4 "eth1" "xhci-hcd:usb[0-9]+" ;; friendlyarm,nanopi-r4s|\ friendlyarm,nanopi-r4se|\