diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips index b81ad91bdfea9cc7498fd664ead8e590fd4a907f..4988a4f6de33f1e864c7fa77556aa0ccfdcfb938 100644 --- a/package/boot/uboot-envtools/files/ramips +++ b/package/boot/uboot-envtools/files/ramips @@ -33,6 +33,7 @@ xiaomi,miwifi-nano|\ zbtlink,zbt-wg2626) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x10000" ;; +linksys,ea7500-v2|\ xiaomi,mir3p|\ xiaomi,mir3g|\ xiaomi,miwifi-r3|\ diff --git a/package/system/mtd/src/Makefile b/package/system/mtd/src/Makefile index 5b233914790c7018161f5621e3eb2c0e837f92ef..b8ba456c41d8c97916b88c96f4bd3fdd7a638339 100644 --- a/package/system/mtd/src/Makefile +++ b/package/system/mtd/src/Makefile @@ -11,7 +11,7 @@ obj.brcm = trx.o obj.brcm47xx = $(obj.brcm) obj.bcm53xx = $(obj.brcm) $(obj.seama) obj.brcm63xx = imagetag.o -obj.ramips = $(obj.seama) $(obj.wrg) +obj.ramips = $(obj.seama) $(obj.wrg) linksys_bootcount.o obj.mvebu = linksys_bootcount.o obj.kirkwood = linksys_bootcount.o obj.ipq806x = linksys_bootcount.o diff --git a/target/linux/ramips/dts/mt7621_linksys_ea7500-v2.dts b/target/linux/ramips/dts/mt7621_linksys_ea7500-v2.dts new file mode 100644 index 0000000000000000000000000000000000000000..a008a3ddde9dc9d265328f4772850d93b8b3a42d --- /dev/null +++ b/target/linux/ramips/dts/mt7621_linksys_ea7500-v2.dts @@ -0,0 +1,178 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "mt7621.dtsi" + +#include +#include + +/ { + compatible = "linksys,ea7500-v2", "mediatek,mt7621-soc"; + model = "Linksys EA7500 v2"; + + aliases { + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; + }; + + chosen { + bootargs = "console=ttyS0,115200"; + }; + + leds { + compatible = "gpio-leds"; + + wan_green { + label = "ea7500-v2:green:wan"; + gpios = <&gpio0 7 GPIO_ACTIVE_LOW>; + }; + + lan1_green { + label = "ea7500-v2:green:lan1"; + gpios = <&gpio0 3 GPIO_ACTIVE_LOW>; + }; + + lan2_green { + label = "ea7500-v2:green:lan2"; + gpios = <&gpio0 18 GPIO_ACTIVE_LOW>; + }; + + lan3_green { + label = "ea7500-v2:green:lan3"; + gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; + }; + + lan4_green { + label = "ea7500-v2:green:lan4"; + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; + }; + + led_power: power { + label = "ea7500-v2:white:power"; + gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>; + }; + + wps { + label = "ea7500-v2:green:wps"; + gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>; + }; + }; + + keys { + compatible = "gpio-keys"; + + wps { + label = "wps"; + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + reset { + label = "reset"; + gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; +}; + +&nand { + status = "okay"; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "boot"; + reg = <0x0 0x80000>; + read-only; + }; + + partition@80000 { + label = "u_env"; + reg = <0x80000 0x40000>; + read-only; + }; + + factory: partition@c0000 { + label = "factory"; + reg = <0xc0000 0x40000>; + read-only; + }; + + partition@100000 { + label = "s_env"; + reg = <0x100000 0x40000>; + }; + + partition@140000 { + label = "devinfo"; + reg = <0x140000 0x40000>; + read-only; + }; + + partition@180000 { + label = "kernel"; + reg = <0x180000 0x400000>; + }; + + partition@580000 { + label = "ubi"; + reg = <0x580000 0x2400000>; + }; + + partition@2980000 { + label = "alt_kernel"; + reg = <0x2980000 0x400000>; + read-only; + }; + + partition@2d80000 { + label = "alt_rootfs"; + reg = <0x2d80000 0x2400000>; + read-only; + }; + + partition@5180000 { + label = "sysdiag"; + reg = <0x5180000 0x100000>; + read-only; + }; + + partition@5280000 { + label = "syscfg"; + reg = <0x5280000 0x2d00000>; + read-only; + }; + }; +}; + +&state_default { + gpio { + ralink,group = "i2c", "uart2", "uart3", "jtag", "wdt"; + ralink,function = "gpio"; + }; +}; + +&pcie { + status = "okay"; +}; + +&pcie0 { + mt76@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x0000>; + }; +}; + +&pcie1 { + mt76@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x8000>; + }; +}; \ No newline at end of file diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 72a231c6406105b487f430400e61898db8e047c8..13acc9e03ef70a48958297b621d3b4c6113ac692 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -453,6 +453,23 @@ define Device/lenovo_newifi-d1 endef TARGET_DEVICES += lenovo_newifi-d1 +define Device/linksys_ea7500-v2 + BLOCKSIZE := 128k + PAGESIZE := 2048 + KERNEL_SIZE := 4096k + IMAGE_SIZE := 36864k + DEVICE_VENDOR := Linksys + DEVICE_MODEL := EA7500 + DEVICE_VARIANT := v2 + DEVICE_PACKAGES := kmod-usb3 kmod-mt7615e wpad-openssl uboot-envtools + UBINIZE_OPTS := -E 5 + IMAGES := sysupgrade.bin factory.bin + IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata | check-size $$$$(IMAGE_SIZE) + IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | \ + append-ubi | check-size $$$$(IMAGE_SIZE) | linksys-image type=EA7500v2 +endef +TARGET_DEVICES += linksys_ea7500-v2 + define Device/linksys_re6500 IMAGE_SIZE := 7872k DEVICE_VENDOR := Linksys 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 b67dfb07833f547b765e39e17003508ea0436451..16362b66a299cb7f86b1ab6aff1005c1ee0e8533 100755 --- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds @@ -34,6 +34,13 @@ gnubee,gb-pc2) ucidef_set_led_switch "lan1" "lan1" "$boardname:green:lan1" "switch0" "0x01" ucidef_set_led_switch "lan2" "lan2" "$boardname:green:lan2" "switch0" "0x10" ;; +linksys,ea7500-v2) + ucidef_set_led_netdev "lan1" "lan1 link" "$boardname:green:lan1" "lan1" "link" + ucidef_set_led_netdev "lan2" "lan2 link" "$boardname:green:lan2" "lan2" "link" + ucidef_set_led_netdev "lan3" "lan3 link" "$boardname:green:lan3" "lan3" "link" + ucidef_set_led_netdev "lan4" "lan4 link" "$boardname:green:lan4" "lan4" "link" + ucidef_set_led_netdev "wan" "wan link" "$boardname:green:wan" "wan" "link" + ;; mikrotik,rbm11g) ucidef_set_rssimon "wlan0" "200000" "1" ucidef_set_led_rssi "rssilow" "RSSILOW" "$boardname:green:rssi0" "wlan0" "1" "100" diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network index d47d15f580f19a969c072720fc7ec2eee2fc7c41..ad745929833f3f744ce7fda78b8082686c54e24a 100755 --- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network @@ -117,6 +117,10 @@ ramips_setup_interfaces() ucidef_add_switch "switch0" \ "1:lan:2" "2:lan:1" "4:wan" "6@eth0" ;; + linksys,ea7500-v2) + ucidef_add_switch "switch0" \ + "0:wan" "1:lan" "2:lan" "3:lan" "4:lan" "6t@eth0" + ;; linksys,re6500) ucidef_add_switch "switch0" \ "0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "6@eth0" @@ -247,6 +251,11 @@ ramips_setup_macs() wan_mac=$(mtd_get_mac_ascii u-boot-env wanaddr) label_mac=$wan_mac ;; + linksys,ea7500-v2) + lan_mac=$(mtd_get_mac_ascii devinfo hw_mac_addr) + wan_mac=$lan_mac + label_mac=$lan_mac + ;; iptime,a6ns-m|\ iptime,a8004t) wan_mac=$(mtd_get_mac_binary u-boot 0x1fc40) 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 new file mode 100644 index 0000000000000000000000000000000000000000..e05078648bd52ff9d51dbbe2623c3abf07f2383e --- /dev/null +++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac @@ -0,0 +1,18 @@ +[ "$ACTION" == "add" ] || exit 0 + +PHYNBR=${DEVPATH##*/phy} + +[ -n $PHYNBR ] || exit 0 + +. /lib/functions.sh +. /lib/functions/system.sh + +board=$(board_name) + +case "$board" in + linksys,ea7500-v2) + hw_mac_addr=$(mtd_get_mac_ascii devinfo hw_mac_addr) + [ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 1 > /sys${DEVPATH}/macaddress + [ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress + ;; +esac diff --git a/target/linux/ramips/mt7621/base-files/etc/init.d/bootcount b/target/linux/ramips/mt7621/base-files/etc/init.d/bootcount index b4d72abafc60ebf80b930536da95dea6aebc9348..e92912bbcc19e599a1555cdbd857cf29e992323f 100755 --- a/target/linux/ramips/mt7621/base-files/etc/init.d/bootcount +++ b/target/linux/ramips/mt7621/base-files/etc/init.d/bootcount @@ -8,6 +8,9 @@ boot() { [ -n "$(fw_printenv bootcount bootchanged 2>/dev/null)" ] &&\ echo -e "bootcount\nbootchanged\n" | /usr/sbin/fw_setenv -s - ;; + linksys,ea7500-v2) + mtd resetbc s_env || true + ;; samknows,whitebox-v8) fw_setenv bootcount 0 ;; 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 facc89beed73f9db8086904d8a0013bc6db7a325..8bd80528501bd864edeea6d80daf100d0b66201d 100755 --- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh @@ -45,6 +45,7 @@ platform_do_upgrade() { asus,rt-ac65p|\ asus,rt-ac85p|\ hiwifi,hc5962|\ + linksys,ea7500-v2|\ netgear,r6220|\ netgear,r6260|\ netgear,r6350|\