ramips: add support for I-O DATA WN-DX1167R

I-O DATA WN-DX1167R is a 2.4/5 GHz band 11ac rotuer, based on MediaTek
MT7621A.

Specification:

- SoC		: MediaTek MT7621A
- RAM		: DDR3 128 MiB
- Flash		: NAND 128 MiB
- WLAN		: MediaTek MT7615D (2.4/5 GHz, 2T2R)
- Ethernet	: 5x 10/100/1000 Mbps
  - Switch	: MediaTek MT7621A (MT7530)
- LEDs/Input	: 2x/3x (2x buttons, 1x slide-switch)
- UART		: through-hole on PCB
  - J5: Vcc, TX, RX, NC, GND
  - 57600 bps

Flash instruction using initramfs image:

1. Boot WN-DX1167R normally
2. Access to "http://192.168.0.1/" and open firmware update page
("ファームウェア")
3. Select the OpenWrt initramfs image and click update ("更新")
button to perform firmware update
4. On the initramfs image, perform sysupgrade with squashfs-sysupgrade
image
5. Wait ~120 seconds to complete flashing

Notes:

- configuration in DeviceTree of DBDC (Dual-Band-Dual-Concurrent) mode
for MT7615D chip is not supported in mt76 driver
- last 0x80000 (512 KiB) in NAND flash is not used on stock firmware
- stock firmware requires "customized uImage header" by MSTC
(MitraStar Technology Corp.), but U-Boot doesn't
  - uImage magic (0x0 - 0x3) : 0x434F4D43 (COMC)
  - header crc32 (0x4 - 0x7) : with data length and data crc32
  - image name (0x20 - 0x37) : model ID and firmware versions
  - data length (0x38 - 0x3b): kernel + rootfs
  - data crc32 (0x3c - 0x3f) : kernel + rootfs

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Reviewed-by: Sungbo Eo <mans0n@gorani.run>
This commit is contained in:
INAGAKI Hiroshi
2019-04-09 14:48:31 +09:00
committed by Adrian Schmutzler
parent be4d53bf69
commit 3c0e2aa63e
6 changed files with 268 additions and 4 deletions

View File

@@ -0,0 +1,31 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include "mt7621_iodata_wn-xx-xr.dtsi"
/ {
compatible = "iodata,wn-dx1167r", "mediatek,mt7621-soc";
model = "I-O DATA WN-DX1167R";
};
&partitions {
partition@6b00000 {
label = "idmkey";
reg = <0x6b00000 0x0100000>;
read-only;
};
partition@6c00000 {
label = "Backup";
reg = <0x6c00000 0x1380000>;
read-only;
};
};
&pcie1 {
wifi@0,0 {
compatible = "mediatek,mt76";
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&factory 0x0>;
};
};

View File

@@ -0,0 +1,140 @@
// 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>
/ {
aliases {
led-boot = &led_power;
led-failsafe = &led_power;
led-running = &led_power;
led-upgrade = &led_power;
};
chosen {
bootargs = "console=ttyS0,57600";
};
leds {
compatible = "gpio-leds";
wps {
label = "iodata:green:wps";
gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
};
led_power: power {
label = "iodata:green:power";
gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
};
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
repeater {
label = "repeater";
gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
linux,code = <BTN_0>;
linux,input-type = <EV_SW>;
};
wps {
label = "wps";
gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
linux,code = <KEY_WPS_BUTTON>;
};
};
};
&nand {
status = "okay";
partitions: partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0 0x0100000>;
read-only;
};
partition@100000 {
label = "u-boot-env";
reg = <0x0100000 0x0100000>;
read-only;
};
factory: partition@200000 {
label = "factory";
reg = <0x0200000 0x0100000>;
};
partition@300000 {
label = "SecondBoot";
reg = <0x0300000 0x0100000>;
read-only;
};
partition@400000 {
label = "kernel";
reg = <0x0400000 0x0400000>;
};
partition@800000 {
label = "ubi";
reg = <0x0800000 0x2e00000>;
};
partition@3600000 {
label = "Config";
reg = <0x3600000 0x0100000>;
read-only;
};
partition@3700000 {
label = "firmware_2";
reg = <0x3700000 0x3200000>;
};
partition@6900000 {
label = "Config_2";
reg = <0x6900000 0x0100000>;
read-only;
};
partition@6a00000 {
label = "persist";
reg = <0x6a00000 0x0100000>;
};
};
};
&ethernet {
mtd-mac-address = <&factory 0xe000>;
};
&pcie {
status = "okay";
};
&state_default {
gpio {
ralink,group = "uart2", "uart3", "wdt";
ralink,function = "gpio";
};
};
&xhci {
status = "disabled";
};