diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips index cca394a03b01bd..981e2120e1b9a6 100644 --- a/package/boot/uboot-envtools/files/ramips +++ b/package/boot/uboot-envtools/files/ramips @@ -79,6 +79,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..72aafa20eee757 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_netis_n6.dts @@ -0,0 +1,226 @@ +// 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"; +}; + +ðphy4 { + /delete-property/ interrupts; +}; + +&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 boot time + * using preinit script '09_prepare_eeprom' and + * change MT_EE_WIFI_CONF (offset 0x190) value + * from 0xd2 to 0x92. + */ + + /* + 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 18dbbcadf31d7b..4822ef17dc4186 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -36,6 +36,21 @@ define Build/arcadyan-trx rm $@.hsqs $@.tail 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/gemtek-trailer printf "%s%08X" ".GEMTEK." "$$(cksum $@ | cut -d ' ' -f1)" >> $@ endef @@ -2162,6 +2177,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) @@ -2815,7 +2847,6 @@ define Device/wavlink_ws-wn572hp3-4g endef TARGET_DEVICES += wavlink_ws-wn572hp3-4g - define Device/wavlink_wl-wn573hx1 $(Device/uimage-lzma-loader) IMAGE_SIZE := 15808k 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 21b1e8ea9162db..c18724a2be54a3 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 @@ -187,6 +187,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..104acb875a5e0d --- /dev/null +++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/firmware/11-mt76-caldata @@ -0,0 +1,17 @@ +#!/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) + ln -sf /tmp/mt7915_eeprom_dbdc.bin /lib/firmware/$FIRMWARE + ;; + 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 91c17f8a778c2f..1170790a382087 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 @@ -162,6 +162,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/preinit/09_prepare_eeprom b/target/linux/ramips/mt7621/base-files/lib/preinit/09_prepare_eeprom new file mode 100644 index 00000000000000..829787251a73a6 --- /dev/null +++ b/target/linux/ramips/mt7621/base-files/lib/preinit/09_prepare_eeprom @@ -0,0 +1,17 @@ +. /lib/functions/system.sh + +preinit_prepare_eeprom() { + case $(board_name) in + netis,n6) + EEPROM="/tmp/mt7915_eeprom_dbdc.bin" + head -c $((0xe00)) /dev/mtd2 > $EEPROM + printf "\x92" | \ + dd of=$EEPROM seek=$((0x190)) bs=1 conv=notrunc \ + 2>/dev/null + ;; + *) + ;; + esac +} + +boot_hook_add preinit_main preinit_prepare_eeprom 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 bad7e30ca65ebf..c5f796c21a8e40 100755 --- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh @@ -124,6 +124,7 @@ platform_do_upgrade() { netgear,wac124|\ netgear,wax202|\ netgear,wax214v2|\ + netis,n6|\ netis,wf2881|\ raisecom,msg1500-x-00|\ rostelecom,rt-fe-1a|\