ath79: add support for Xiaomi Mi Router 4Q

Hardware
--------
CPU:   Qualcomm Atheros QCA9561
RAM:   64M DDR2
FLASH: 16M SPI-NOR
ETH:   1x WAN - 2x LAN
WiFi:  QCA9561 3T3R
BTN:   1x Reset - 1x WPS
LED:   1x Blue - 1x Red - 1x Yellow
UART:  TX - GND - RX - VCC (From ethernet port)
       115200n8 - 3.3V

Installation
------------
1. Connect to the device via UART.

2. Interrupt the U-Boot on power-on by pressing enter when prompted.

3. Connect you computer to one of the routers LAN ports.
   Assign yourself the IP 192.168.31.10/24.
   Copy the OpenWRT initramfs image to a tftp server root directory.
   Rename the image to 'x4q.bin'.

4. Load the initramfs image to the router by executing following command
   in U-Boot. The image will boot afterwards.

   > tftpboot 0x81000000 x4q.bin; bootm

5. SCP the sysupgrade-image into '/tmp'.
   Remember to assign yourself an IP in 192.168.1.0/24 for this step!

6. Install OpenWRT permanently by executing

   > sysupgrade -n /tmp/<OpenWRT-sysupgrade-image>

Signed-off-by: David Bauer <mail@david-bauer.net>
This commit is contained in:
David Bauer 2019-02-01 20:48:41 +01:00 committed by Christian Lamparter
parent 4130e24326
commit 0c24b363a6
3 changed files with 165 additions and 0 deletions

View File

@ -216,6 +216,11 @@ ath79_setup_interfaces()
ucidef_add_switch "switch0" \
"0@eth0" "2:lan" "3:wan"
;;
xiaomi,mi-router-4q)
ucidef_set_interface_wan "eth0"
ucidef_add_switch "switch0" \
"0@eth1" "3:lan:1" "4:lan:2"
;;
*)
ucidef_set_interfaces_lan_wan "eth0" "eth1"
;;

View File

@ -0,0 +1,153 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "qca956x.dtsi"
/ {
compatible = "xiaomi,mi-router-4q", "qca,qca9560";
model = "Xiaomi Mi Router 4Q";
aliases {
led-boot = &led_yellow;
led-failsafe = &led_red;
led-running = &led_blue;
led-upgrade = &led_red;
};
chosen {
bootargs = "console=ttyS0,115200n8";
};
keys {
compatible = "gpio-keys-polled";
poll-interval = <100>;
reset {
label = "Reset button";
linux,code = <KEY_RESTART>;
gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
};
wps {
label = "WPS/MI button";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
};
};
leds {
compatible = "gpio-leds";
led_red: led_red {
label = "mi-router-4q:red:led";
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
};
led_yellow: led_yellow {
label = "mi-router-4q:yellow:led";
gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
};
led_blue: led_blue {
label = "mi-router-4q:blue:led";
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
};
};
};
&uart {
status = "okay";
};
&gpio {
status = "okay";
};
&spi {
status = "okay";
num-cs = <1>;
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <25000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x000000 0x30000>;
read-only;
};
partition@30000 {
label = "nvram";
reg = <0x030000 0x10000>;
read-only;
};
partition@40000 {
label = "boarddata";
reg = <0x40000 0x10000>;
read-only;
};
partition@50000 {
label = "crash";
reg = <0x50000 0x10000>;
read-only;
};
art: partition@60000 {
label = "art";
reg = <0x60000 0x10000>;
read-only;
};
partition@70000 {
label = "cfg_bak";
reg = <0x70000 0x20000>;
read-only;
};
partition@90000 {
label = "overlay";
reg = <0x90000 0x170000>;
read-only;
};
partition@200000 {
compatible = "denx,uimage";
label = "firmware";
reg = <0x200000 0xe00000>;
};
};
};
};
&eth0 {
status = "okay";
phy-handle = <&swphy4>;
mtd-mac-address = <&art 0x0>;
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x6>;
};
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&art 0x0>;
mtd-mac-address-increment = <1>;
};

View File

@ -528,3 +528,10 @@ define Device/winchannel_wb2000
DEVICE_PACKAGES := kmod-i2c-core kmod-i2c-gpio kmod-rtc-ds1307 kmod-usb2 kmod-usb-ledtrig-usbport
endef
TARGET_DEVICES += winchannel_wb2000
define Device/xiaomi_mi-router-4q
ATH_SOC := qca9561
DEVICE_TITLE := Xiaomi Mi Router 4Q
IMAGE_SIZE := 14336k
endef
TARGET_DEVICES += xiaomi_mi-router-4q