diff options
4 files changed, 222 insertions, 4 deletions
diff --git a/target/linux/ramips/dts/mt7621_iodata_wn-dx1200gr.dts b/target/linux/ramips/dts/mt7621_iodata_wn-dx1200gr.dts new file mode 100644 index 0000000000..055c1abde0 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_iodata_wn-dx1200gr.dts @@ -0,0 +1,196 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "mt7621.dtsi" + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> + +/ { + compatible = "iodata,wn-dx1200gr", "mediatek,mt7621-soc"; + model = "I-O DATA WN-DX1200GR"; + + aliases { + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; + label-mac-device = &wan; + }; + + leds { + compatible = "gpio-leds"; + + wps { + label = "blue:wps"; + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; + }; + + led_power: power { + label = "green:power"; + gpios = <&gpio 9 GPIO_ACTIVE_HIGH>; + }; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&gpio 6 GPIO_ACTIVE_LOW>; + linux,code = <KEY_RESTART>; + }; + + repeater { + label = "repeater"; + gpios = <&gpio 7 GPIO_ACTIVE_LOW>; + linux,code = <BTN_0>; + linux,input-type = <EV_SW>; + }; + + wps { + label = "wps"; + gpios = <&gpio 18 GPIO_ACTIVE_LOW>; + linux,code = <KEY_WPS_BUTTON>; + }; + }; +}; + +&nand { + status = "okay"; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x100000>; + read-only; + }; + + partition@100000 { + label = "u-boot-env"; + reg = <0x100000 0x100000>; + read-only; + }; + + factory: partition@200000 { + label = "factory"; + reg = <0x200000 0x200000>; + }; + + partition@400000 { + label = "kernel"; + reg = <0x400000 0x400000>; + }; + + partition@800000 { + label = "ubi"; + reg = <0x800000 0x2e00000>; + }; + + partition@3600000 { + label = "Config"; + reg = <0x3600000 0x100000>; + read-only; + }; + + partition@3700000 { + label = "firmware_2"; + reg = <0x3700000 0x3200000>; + }; + + partition@6900000 { + label = "Config_2"; + reg = <0x6900000 0x100000>; + read-only; + }; + + partition@6a00000 { + label = "persist"; + reg = <0x6a00000 0x100000>; + }; + + partition@6b00000 { + label = "idmkey"; + reg = <0x6b00000 0x100000>; + read-only; + }; + + partition@6c00000 { + label = "Backup"; + reg = <0x6c00000 0x1380000>; + read-only; + }; + }; +}; + +&gmac0 { + mtd-mac-address = <&factory 0x1e000>; +}; + +&switch0 { + ports { + wan: port@0 { + status = "okay"; + label = "wan"; + mtd-mac-address = <&factory 0x1e006>; + }; + + port@1 { + status = "okay"; + label = "lan4"; + }; + + port@2 { + status = "okay"; + label = "lan3"; + }; + + port@3 { + status = "okay"; + label = "lan2"; + }; + + port@4 { + status = "okay"; + label = "lan1"; + }; + }; +}; + +&pcie { + status = "okay"; +}; + +&pcie0 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + + mediatek,mtd-eeprom = <&factory 0x0>; + ieee80211-freq-limit = <2400000 2500000>; + }; +}; + +&pcie1 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + + mediatek,mtd-eeprom = <&factory 0x8000>; + ieee80211-freq-limit = <5000000 6000000>; + }; +}; + +&state_default { + gpio { + groups = "uart2", "uart3", "wdt"; + function = "gpio"; + }; +}; + +&xhci { + status = "disabled"; +}; diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index f5ab398ec1..3aaa8f28ad 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -618,6 +618,15 @@ define Device/iodata_wn-dx1167r endef TARGET_DEVICES += iodata_wn-dx1167r +define Device/iodata_wn-dx1200gr + $(Device/iodata_nand) + DEVICE_MODEL := WN-DX1200GR + KERNEL_INITRAMFS := $(KERNEL_DTB) | loader-kernel | lzma | \ + uImage lzma -M 0x434f4d43 -n '3.10(XIQ.0)b20' | iodata-mstc-header + DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7663-firmware-ap +endef +TARGET_DEVICES += iodata_wn-dx1200gr + define Device/iodata_wn-gx300gr $(Device/dsa-migration) $(Device/uimage-lzma-loader) diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/iodata.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/iodata.sh index d7a3477f0a..071a132e02 100644 --- a/target/linux/ramips/mt7621/base-files/lib/upgrade/iodata.sh +++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/iodata.sh @@ -16,9 +16,18 @@ iodata_mstc_prepare_fail() { # use 1st image in OpenWrt # - debugflag: enable/disable debug # users can interrupt Z-Loader for recovering the device if enabled +# +# parameters: +# - $1: the offset of "debugflag" iodata_mstc_upgrade_prepare() { local persist_mtd="$(find_mtd_part persist)" local factory_mtd="$(find_mtd_part factory)" + local dflag_offset="$1" + + if [ -z "$dflag_offset" ]; then + echo 'no debugflag offset provided' + iodata_mstc_prepare_fail + fi if [ -z "$persist_mtd" -o -z "$factory_mtd" ]; then echo 'cannot find mtd partition(s), "factory" or "persist"' @@ -26,14 +35,14 @@ iodata_mstc_upgrade_prepare() { fi local bootnum=$(hexdump -s 4 -n 1 -e '"%x"' ${persist_mtd}) - local debugflag=$(hexdump -s 65141 -n 1 -e '"%x"' ${factory_mtd}) + local debugflag=$(hexdump -s $((dflag_offset)) -n 1 -e '"%x"' ${factory_mtd}) if [ "$bootnum" != "1" -a "$bootnum" != "2" ]; then echo "failed to get bootnum, please check the value at 0x4 in ${persist_mtd}" iodata_mstc_prepare_fail fi if [ "$debugflag" != "0" -a "$debugflag" != "1" ]; then - echo "failed to get debugflag, please check the value at 0xFE75 in ${factory_mtd}" + echo "failed to get debugflag, please check the value at ${dflag_offset} in ${factory_mtd}" iodata_mstc_prepare_fail fi echo "current: bootnum => ${bootnum}, debugflag => ${debugflag}" @@ -46,7 +55,7 @@ iodata_mstc_upgrade_prepare() { echo "### switch to 1st os-image on next boot ###" fi if [ "$debugflag" = "0" ]; then - if ! (echo -ne "\x01" | dd bs=1 count=1 seek=65141 conv=notrunc of=${factory_mtd} 2>/dev/null); then + if ! (echo -ne "\x01" | dd bs=1 count=1 seek=$((dflag_offset)) conv=notrunc of=${factory_mtd} 2>/dev/null); then echo "failed to set debugflag" iodata_mstc_prepare_fail fi 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 5bb0386253..c9152c5cf4 100755 --- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh @@ -71,7 +71,11 @@ platform_do_upgrade() { iodata,wn-ax1167gr2|\ iodata,wn-ax2033gr|\ iodata,wn-dx1167r) - iodata_mstc_upgrade_prepare + iodata_mstc_upgrade_prepare "0xfe75" + nand_do_upgrade "$1" + ;; + iodata,wn-dx1200gr) + iodata_mstc_upgrade_prepare "0x1fe75" nand_do_upgrade "$1" ;; ubnt,edgerouter-x|\ |