From 4d89918a98ae5ed854c15804601db526a569b5bb Mon Sep 17 00:00:00 2001 From: Lech Perczak Date: Mon, 7 Oct 2024 00:08:23 +0200 Subject: [PATCH 1/4] ipq40xx: fix MAC address on Meraki MR33 and MR74 after nvmem-layout ...conversion. Commit 20736013e910 ("kernel: backport nvmem v6.6 fixes and v6.7 changes") has caused dthe device to no longer correctly read MAC address from its onboard 24c64 EEPROM, because "at24" driver doesn't support legacy nvmem-cell bindings [1] - and there was an explicit config option added to mandate that behaviour in the following patch: 820-v6.7-0002-nvmem-add-explicit-config-option-to-read-old-syntax-.patch But some of the devices, MR33 and MR74 included, weren't converted with that as well. Convert the definition to use proper fixed-layout binding to fix it. The offending change was introduced between v23.05.0 and v23.05.1, and found by bisection: git bisect start # status: waiting for both good and bad commits # good: [bd4f415efacfc03bbe5b79ae1d39c1451f5f7385] OpenWrt v23.05.0: adjust config defaults git bisect good bd4f415efacfc03bbe5b79ae1d39c1451f5f7385 # status: waiting for bad commit, 1 good commit known # bad: [a58a86693f8593974ff7c26bb42e280b62a8724c] OpenWrt v23.05.1: adjust config defaults git bisect bad a58a86693f8593974ff7c26bb42e280b62a8724c # good: [3d0a78add22754aa891529b6702b5e4c7b837446] qualcommax: only build initramfs if CONFIG_TARGET_ROOTFS_INITRAMFS is set git bisect good 3d0a78add22754aa891529b6702b5e4c7b837446 # bad: [21e5db97c410f4008c8fe8515fb79a7cde368dbf] build: add CycloneDX SBOM JSON support git bisect bad 21e5db97c410f4008c8fe8515fb79a7cde368dbf # good: [89184b15cfce4aaffac8cda87c2fa74f829ace42] mediatek: add build for MT7981 RFB git bisect good 89184b15cfce4aaffac8cda87c2fa74f829ace42 # bad: [41f27bbb6d0af2f37098b97cd28d5f514a6fc417] bcm53xx: add the latest fix version of brcm_nvram git bisect bad 41f27bbb6d0af2f37098b97cd28d5f514a6fc417 # good: [b649b0bf7100bdc6adb7e857c74738cab7c47b4c] kernel: nvmem: fix "fixed-layout" & support "mac-base" git bisect good b649b0bf7100bdc6adb7e857c74738cab7c47b4c # bad: [20736013e91030005353b401bc4b757ba5e5fa98] kernel: backport nvmem v6.6 fixes and v6.7 changes git bisect bad 20736013e91030005353b401bc4b757ba5e5fa98 # good: [066971615ff66512bc542b09a90be34c2afe98bb] kernel: backport v6.6 nvmem changes git bisect good 066971615ff66512bc542b09a90be34c2afe98bb # first bad commit: [20736013e91030005353b401bc4b757ba5e5fa98] kernel: backport nvmem v6.6 fixes and v6.7 changes Link: [1] https://github.com/openwrt/openwrt/issues/15393#issuecomment-2212300849 Fixes: 20736013e910 ("kernel: backport nvmem v6.6 fixes and v6.7 changes") Fixes: https://github.com/openwrt/openwrt/issues/15393 Signed-off-by: Lech Perczak (cherry picked from commit ccbffad1ad0ce444bc2497098a1d3d3a086a5f44) [replace mac-address-increment with #nvmem-cell-cells] Signed-off-by: Lech Perczak Link: https://github.com/openwrt/openwrt/pull/16624 Signed-off-by: Robert Marko --- .../boot/dts/qcom-ipq4029-insect-common.dtsi | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4029-insect-common.dtsi b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4029-insect-common.dtsi index ebfab171f51cc4..aa26dc187a20a7 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4029-insect-common.dtsi +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4029-insect-common.dtsi @@ -133,11 +133,17 @@ pagesize = <32>; reg = <0x50>; read-only; /* This holds our MAC & Meraki board-data */ - #address-cells = <1>; - #size-cells = <1>; - mac_address: mac-address@66 { - reg = <0x66 0x6>; + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + mac_address: mac-address@66 { + compatible = "mac-base"; + reg = <0x66 0x6>; + #nvmem-cell-cells = <1>; + }; }; }; }; @@ -284,9 +290,8 @@ compatible = "qcom,ath10k"; status = "okay"; reg = <0x00010000 0 0 0 0>; - nvmem-cells = <&mac_address>; + nvmem-cells = <&mac_address 1>; nvmem-cell-names = "mac-address"; - mac-address-increment = <1>; }; }; }; @@ -390,22 +395,20 @@ &wifi0 { status = "okay"; qcom,ath10k-calibration-variant = "Meraki-MR33"; - nvmem-cells = <&mac_address>; + nvmem-cells = <&mac_address 2>; nvmem-cell-names = "mac-address"; - mac-address-increment = <2>; }; &wifi1 { status = "okay"; qcom,ath10k-calibration-variant = "Meraki-MR33"; - nvmem-cells = <&mac_address>; + nvmem-cells = <&mac_address 3>; nvmem-cell-names = "mac-address"; - mac-address-increment = <3>; }; &gmac { status = "okay"; - nvmem-cells = <&mac_address>; + nvmem-cells = <&mac_address 0>; nvmem-cell-names = "mac-address"; }; From 1ec1aa9cc729dd5a37c00a5fcd99641f852b07a3 Mon Sep 17 00:00:00 2001 From: Mikhail Zhilkin Date: Sat, 31 Aug 2024 14:21:06 +0000 Subject: [PATCH 2/4] ramips: add support for netis N6 This commit adds support for netis N6 WiFi 6 router. Specification ------------- - SoC : MediaTek MT7621AT, MIPS, 880 MHz - RAM : 256 MiB - Flash : NAND 128 MiB (ESMT PSU1GA30DT) - WLAN : MT7905DAN + MT7975DN - 2.4 GHz : b/g/n/ax, 574 Mbps, MIMO 2x2 - 5 GHz : a/n/ac/ax, 1201 Mbps, MIMO 2x2 - Ethernet : 10/100/1000 Mbps x5 (1x WAN, 4x LAN) - USB : 1x 3.0 - UART : 3.3V, 115200n8 - Buttons : 1x Reset 1x WPS - LEDs : 1x Power (green) 1x System (green) 1x WAN (green) 1x WiFi 2.4 GHz (green), controlled by phy 1x WiFi 5 GHz (green), controlled by phy 1x WPS (green) 1x USB (green) 5x ethernet leds (green), controlled by switch - Power : 12 VDC, 1.5 A Installation ------------ 1. Update the router using stock firmware web interface and OpenWrt factory.bin image. Recovery and return to stock ---------------------------- 1. Assign your PC a static IP 192.168.1.2 and connect to the router using the ethernet cable; 2. Power off the router; 3. Press Reset button, power on the router and wait until ethernet led start blinking; 4. Release the button; 5. Open http://192.168.1.1/ (N6 System Recovery Mode) in your browser; 6. Upload OpenWrt factory.bin (or stock firmware *.bin) image and proceed with upgrade. MAC addresses ------------- +---------+-------------------+ | | MAC example | +---------+-------------------+ | LAN | dc:xx:xx:49:xx:04 | | WAN | dc:xx:xx:49:xx:05 | | WLAN 2g | dc:xx:xx:19:xx:06 | | WLAN 5g | dc:xx:xx:79:xx:06 | +---------+-------------------+ The WLAN MAC prototype was found in 'Factory', 0x4 The LAN MAC was found in 'Factory', 0x7ef20 The WAN MAC was found in 'Factory', 0x7ef26 Known issue ----------- 2.4 GHz WLAN doesn't start with mt76 driver. Probable reason: Original Netis N6 EEPROM contains wrong MT_EE_WIFI_CONF value (0xd2). Other routers with the same WLAN hardware (e.g., Routerich AX1800) have MT_EE_WIFI_CONF = 0x92. Workaround (already included in this commit): Extract EEPROM to a file at the first time boot and change MT_EE_WIFI_CONF (offset 0x190) value from 0xd2 to 0x92. See /etc/hotplug.d/firmware/11-mt76-caldata for details. Signed-off-by: Mikhail Zhilkin Link: https://github.com/openwrt/openwrt/pull/16322 (cherry picked from commit f368e2d5ece1153ec242872f3c48991ed225d9b7) [ Fix merging onflicts in mt7621.mk, 10_fix_wifi_mac, platform.sh ] [ Change ðphy4 -> &mdio in dts file ] Signed-off-by: Mikhail Zhilkin Link: https://github.com/openwrt/openwrt/pull/16436 Signed-off-by: Hauke Mehrtens --- package/boot/uboot-envtools/files/ramips | 1 + target/linux/ramips/dts/mt7621_netis_n6.dts | 229 ++++++++++++++++++ target/linux/ramips/image/mt7621.mk | 32 +++ .../mt7621/base-files/etc/board.d/01_leds | 3 + .../etc/hotplug.d/firmware/11-mt76-caldata | 21 ++ .../etc/hotplug.d/ieee80211/10_fix_wifi_mac | 8 + .../mt7621/base-files/lib/upgrade/platform.sh | 1 + 7 files changed, 295 insertions(+) create mode 100644 target/linux/ramips/dts/mt7621_netis_n6.dts create mode 100644 target/linux/ramips/mt7621/base-files/etc/hotplug.d/firmware/11-mt76-caldata diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips index eccdd4255ab19d..dac61be02e4b32 100644 --- a/package/boot/uboot-envtools/files/ramips +++ b/package/boot/uboot-envtools/files/ramips @@ -77,6 +77,7 @@ jcg,q20|\ linksys,e7350|\ netgear,eax12|\ netgear,wax202|\ +netis,n6|\ zyxel,wsm20) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" ;; diff --git a/target/linux/ramips/dts/mt7621_netis_n6.dts b/target/linux/ramips/dts/mt7621_netis_n6.dts new file mode 100644 index 00000000000000..685999531d4225 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_netis_n6.dts @@ -0,0 +1,229 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "mt7621.dtsi" + +#include +#include +#include + +/ { + compatible = "netis,n6", "mediatek,mt7621-soc"; + model = "netis N6"; + + aliases { + label-mac-device = &gmac0; + + led-boot = &led_power_green; + led-failsafe = &led_system_green; + led-running = &led_power_green; + led-upgrade = &led_system_green; + }; + + chosen { + bootargs = "console=ttyS0,115200"; + }; + + keys { + compatible = "gpio-keys"; + + key-0 { + label = "wps"; + gpios = <&gpio 15 GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <60>; + }; + + key-1 { + label = "reset"; + gpios = <&gpio 18 GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <60>; + }; + }; + + leds { + compatible = "gpio-leds"; + + led-0 { + color = ; + function = LED_FUNCTION_USB; + gpios = <&gpio 4 GPIO_ACTIVE_LOW>; + trigger-sources = <&xhci_ehci_port1>; + linux,default-trigger = "usbport"; + }; + + led-1 { + color = ; + function = LED_FUNCTION_WPS; + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + }; + + led_system_green: led-2 { + color = ; + function = LED_FUNCTION_INDICATOR; + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + }; + + led-3 { + color = ; + function = LED_FUNCTION_WAN; + gpios = <&gpio 16 GPIO_ACTIVE_LOW>; + }; + + led_power_green: led-4 { + color = ; + function = LED_FUNCTION_POWER; + gpios = <&gpio 17 GPIO_ACTIVE_HIGH>; + }; + }; +}; + +&gmac0 { + nvmem-cells = <&macaddr_factory_7ef20 0>; + nvmem-cell-names = "mac-address"; +}; + +&gmac1 { + status = "okay"; + label = "wan"; + phy-handle = <ðphy4>; + + nvmem-cells = <&macaddr_factory_7ef26 0>; + nvmem-cell-names = "mac-address"; +}; + +&mdio { + ethphy4: ethernet-phy@4 { + reg = <4>; + }; +}; + +&nand { + status = "okay"; + + mediatek,nmbm; + mediatek,bmt-remap-range = <0x000000 0x580000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x80000>; + read-only; + }; + + partition@80000 { + label = "Config"; + reg = <0x80000 0x80000>; + }; + + partition@100000 { + label = "Factory"; + reg = <0x100000 0x80000>; + read-only; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + eeprom_factory_0: eeprom@0 { + reg = <0x0 0xe00>; + }; + + macaddr_factory_7ef20: macaddr@7ef20 { + reg = <0x7ef20 0x6>; + }; + + macaddr_factory_7ef26: macaddr@7ef26 { + reg = <0x7ef26 0x6>; + }; + }; + }; + + partition@180000 { + label = "firmware"; + reg = <0x180000 0x7680000>; + + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "kernel"; + reg = <0x0 0x400000>; + }; + + partition@400000 { + label = "ubi"; + reg = <0x400000 0x7280000>; + }; + }; + }; +}; + +&pcie { + status = "okay"; +}; + +&pcie1 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + + /* + * *** The code block below is commented out *** + * Reason: Probably, original Netis N6 EEPROM has wrong + * MT_EE_WIFI_CONF value 0xd2. As a result 2.4 GHz + * doesn't start with mt76 driver. Other routers + * with the same WLAN chips (e.g., Routerich + * AX1800) have MT_EE_WIFI_CONF = 0x92. + * Workaround: Extract EEPROM to a file at the first time + * boot and change MT_EE_WIFI_CONF (offset + * 0x190) value from 0xd2 to 0x92. See + * /etc/hotplug.d/firmware/11-mt76-caldata for + * details. + */ + + /* + nvmem-cells = <&eeprom_factory_0>; + nvmem-cell-names = "eeprom"; + */ + + mediatek,disable-radar-background; + }; +}; + +&state_default { + gpio { + groups = "i2c", "jtag", "wdt"; + function = "gpio"; + }; +}; + +&switch0 { + ports { + port@0 { + status = "okay"; + label = "lan4"; + }; + + port@1 { + status = "okay"; + label = "lan3"; + }; + + port@2 { + status = "okay"; + label = "lan2"; + }; + + port@3 { + status = "okay"; + label = "lan1"; + }; + }; +}; diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index ce9fcbe518c4b1..0b1d1b6dfc0c60 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -17,6 +17,21 @@ define Build/append-dlink-covr-metadata rm $@metadata.tmp endef +define Build/append-netis-n6-metadata + ( echo -ne '{ \ + "up_model": "Netis-N6R", \ + "supported_devices": ["mt7621-rfb-ax-nand"], \ + "version": { \ + "dist": "$(call json_quote,$(VERSION_DIST))", \ + "version": "$(call json_quote,$(VERSION_NUMBER))", \ + "revision": "$(call json_quote,$(REVISION))", \ + "board": "$(call json_quote,$(BOARD))" \ + } }' \ + ) > $@.metadata.tmp + fwtool -I $@.metadata.tmp $@ + rm $@.metadata.tmp +endef + define Build/arcadyan-trx echo -ne "hsqs" > $@.hsqs $(eval trx_magic=$(word 1,$(1))) @@ -1943,6 +1958,23 @@ define Device/netgear_wndr3700-v5 endef TARGET_DEVICES += netgear_wndr3700-v5 +define Device/netis_n6 + $(Device/dsa-migration) + $(Device/nand) + IMAGE_SIZE := 121344k + DEVICE_VENDOR := netis + DEVICE_MODEL := N6 + KERNEL_LOADADDR := 0x82000000 + KERNEL := kernel-bin | relocate-kernel $(loadaddr-y) | lzma | \ + fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb + IMAGES += factory.bin + IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | \ + append-ubi | check-size | append-netis-n6-metadata + DEVICE_PACKAGES += kmod-mt7915-firmware kmod-usb-ledtrig-usbport \ + kmod-usb3 +endef +TARGET_DEVICES += netis_n6 + define Device/netis_wf2881 $(Device/nand) $(Device/uimage-lzma-loader) diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds index 4ea07da8b0a074..a903969965b3bd 100644 --- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds @@ -183,6 +183,9 @@ netgear,r7450) netgear,wax202) ucidef_set_led_netdev "internet" "Internet" "green:net" "wan" ;; +netis,n6) + ucidef_set_led_netdev "wan" "wan" "green:wan" "wan" "link tx rx" + ;; oraybox,x3a) ucidef_set_led_netdev "wan" "wan link" "red:status" "wan" ucidef_set_led_netdev "lan" "lan link" "green:status" "br-lan" diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/firmware/11-mt76-caldata b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/firmware/11-mt76-caldata new file mode 100644 index 00000000000000..b34678d3558207 --- /dev/null +++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/firmware/11-mt76-caldata @@ -0,0 +1,21 @@ +#!/bin/sh + +[ -e /lib/firmware/$FIRMWARE ] && exit 0 + +. /lib/functions/caldata.sh + +board=$(board_name) + +case "$FIRMWARE" in +"mediatek/mt7915_eeprom_dbdc.bin") + case "$board" in + netis,n6) + EEPROM=/lib/firmware/$FIRMWARE + head -c $((0xe00)) /dev/mtd2 > $EEPROM + printf "\x92" | \ + dd of=$EEPROM seek=$((0x190)) bs=1 conv=notrunc \ + 2>/dev/null + ;; + esac + ;; +esac diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac index c09203270c2b23..2a43567922e6ea 100644 --- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac +++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac @@ -140,6 +140,14 @@ case "$board" in [ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress [ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 3 > /sys${DEVPATH}/macaddress ;; + netis,n6) + hw_mac_addr="$(mtd_get_mac_binary Factory 0x4)" + hw_mac_addr=$(macaddr_setbit $hw_mac_addr 28) + hw_mac_2g=$(macaddr_unsetbit $hw_mac_addr 26) + hw_mac_5g=$(macaddr_setbit $hw_mac_addr 27) + [ "$PHYNBR" = "0" ] && echo -n "$hw_mac_2g" > /sys${DEVPATH}/macaddress + [ "$PHYNBR" = "1" ] && echo -n "$hw_mac_5g" > /sys${DEVPATH}/macaddress + ;; mercusys,mr70x-v1|\ tplink,archer-ax23-v1) hw_mac_addr="$(mtd_get_mac_binary config 0x8)" diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh index 5c3ad733661394..60dba1bdec540a 100755 --- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh @@ -102,6 +102,7 @@ platform_do_upgrade() { netgear,wac104|\ netgear,wac124|\ netgear,wax202|\ + netis,n6|\ netis,wf2881|\ raisecom,msg1500-x-00|\ rostelecom,rt-fe-1a|\ From fb44dd731484765163205affc2fd8895f76a5316 Mon Sep 17 00:00:00 2001 From: Shiji Yang Date: Tue, 24 Sep 2024 18:50:01 +0800 Subject: [PATCH 3/4] ramips: introduce TP-Link v1 header OKLI image recipe It can be used to workaround the booting stuck issue caused by the u-boot LZMA decompression error. The new kernel image structure: +------+------------------+------------------+---------------+-----------------+ | name | tplink-v1 header | OKLI lzma-loader | uImage header | lzma kernel+dtb | +------+------------------+------------------+---------------+-----------------+ | size | 0x200 | 0xe00 | 0x40 | dynamic | +------+------------------+------------------+---------------+-----------------+ Signed-off-by: Shiji Yang Link: https://github.com/openwrt/openwrt/pull/16473 Signed-off-by: Hauke Mehrtens (cherry picked from commit 08eecec3558d9adf351e03b58309e69a77de1a36) --- target/linux/ramips/image/common-tp-link.mk | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/target/linux/ramips/image/common-tp-link.mk b/target/linux/ramips/image/common-tp-link.mk index cb26275960537c..665b8f7971c110 100644 --- a/target/linux/ramips/image/common-tp-link.mk +++ b/target/linux/ramips/image/common-tp-link.mk @@ -1,6 +1,19 @@ DEVICE_VARS += TPLINK_FLASHLAYOUT TPLINK_HWID TPLINK_HWREV TPLINK_HWREVADD DEVICE_VARS += TPLINK_HVERSION TPLINK_BOARD_ID TPLINK_HEADER_VERSION +define Build/tplink-v1-okli-image + cp $(IMAGE_KERNEL) $(IMAGE_ROOTFS).$(word 2,$(1)) + cat $(IMAGE_ROOTFS) >> $(IMAGE_ROOTFS).$(word 2,$(1)) + -$(STAGING_DIR_HOST)/bin/mktplinkfw \ + -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) \ + -N "$(VERSION_DIST)" -V $(REVISION) -m $(TPLINK_HEADER_VERSION) \ + -k "$(KDIR)/loader-$(word 1,$(1)).$(LOADER_TYPE)" -E $(KERNEL_LOADADDR) \ + -r $(IMAGE_ROOTFS).$(word 2,$(1)) -o $@.new -j -X 0x40000 \ + -a $(call rootfs_align,$(FILESYSTEM)) $(wordlist 3,$(words $(1)),$(1)) \ + $(if $(findstring sysupgrade,$(word 2,$(1))),-s) && mv $@.new $@ || rm -f $@ + rm -f $(IMAGE_ROOTFS).$(word 2,$(1)) +endef + define Build/uImage-tplink-c9 mkimage \ -A $(LINUX_KARCH) \ @@ -28,6 +41,18 @@ define Device/tplink-v1 append-metadata endef +define Device/tplink-v1-okli + $(Device/tplink-v1) + LOADER_TYPE := bin + LOADER_FLASH_OFFS := 0x21000 + COMPILE := loader-$(1).bin + COMPILE/loader-$(1).bin := loader-okli-compile | pad-to 64k | lzma | pad-to 3584 + KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x4f4b4c49 + IMAGE/factory.bin := tplink-v1-okli-image $(1) factory -e -O + IMAGE/sysupgrade.bin := tplink-v1-okli-image $(1) sysupgrade -e -O | check-size | \ + append-metadata +endef + define Device/tplink-v2 DEVICE_VENDOR := TP-Link TPLINK_FLASHLAYOUT := From 1efcdb2446602c3b120b265c1d189039fdb9c0e7 Mon Sep 17 00:00:00 2001 From: Shiji Yang Date: Tue, 24 Sep 2024 18:50:01 +0800 Subject: [PATCH 4/4] ramips: use OKLI loader for TP-Link RE200 v1 and RE210 v1 Using OKLI image to fix the booting stuck issue. Tested with u-boot extracted from TP-Link stock images "RE200(EU)_V1_171206.zip" and "RE210(US_CA)_V1_171205.zip". Fixes: https://github.com/openwrt/openwrt/issues/16296 Signed-off-by: Shiji Yang Link: https://github.com/openwrt/openwrt/pull/16473 Signed-off-by: Hauke Mehrtens (cherry picked from commit b62e6f5beb2a574c67ba5159f0049e54cdf25d69) --- target/linux/ramips/dts/mt7620a_tplink_re2x0-v1.dtsi | 5 ++++- target/linux/ramips/image/mt7620.mk | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/target/linux/ramips/dts/mt7620a_tplink_re2x0-v1.dtsi b/target/linux/ramips/dts/mt7620a_tplink_re2x0-v1.dtsi index e6d9b8576d98d7..adb383f3c52ac8 100644 --- a/target/linux/ramips/dts/mt7620a_tplink_re2x0-v1.dtsi +++ b/target/linux/ramips/dts/mt7620a_tplink_re2x0-v1.dtsi @@ -4,6 +4,7 @@ #include #include +#include / { aliases { @@ -51,9 +52,11 @@ }; partition@20000 { - compatible = "tplink,firmware"; + compatible = "openwrt,uimage", "denx,uimage"; label = "firmware"; reg = <0x20000 0x7c0000>; + openwrt,offset = <0x1000>; + openwrt,ih-magic = ; }; partition@7e0000 { diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk index 61b79c962d8dc2..f7ef1c4832bcbd 100644 --- a/target/linux/ramips/image/mt7620.mk +++ b/target/linux/ramips/image/mt7620.mk @@ -1245,7 +1245,7 @@ endef TARGET_DEVICES += tplink_archer-mr200 define Device/tplink_re200-v1 - $(Device/tplink-v1) + $(Device/tplink-v1-okli) SOC := mt7620a DEVICE_MODEL := RE200 DEVICE_VARIANT := v1 @@ -1257,7 +1257,7 @@ endef TARGET_DEVICES += tplink_re200-v1 define Device/tplink_re210-v1 - $(Device/tplink-v1) + $(Device/tplink-v1-okli) SOC := mt7620a DEVICE_MODEL := RE210 DEVICE_VARIANT := v1