ath79: add support for ALFA Network N5Q

ALFA Network N5Q is a successor of previous model, the N5 (outdoor
CPE/AP, based on Atheros AR7240 + AR9280). New version is based on
Atheros AR9344.

Support for this device was first introduced in 4b0eebe9df (ar71xx
target) but users are advised to migrate from ar71xx target without
preserving settings as ath79 support includes some changes in network
and LED default configuration. They were aligned with vendor firmware
and recently added N2Q model (both Ethernet ports as LAN, labelled as
LAN1 and LAN2).

Specifications:

- Atheros AR9344
- 550/400/200 MHz (CPU/DDR/AHB)
- 64 MB of RAM (DDR2)
- 16 MB of flash (SPI NOR)
- 2x 10/100 Mbps Ethernet, with passive PoE support (24 V)
- 2T2R 5 GHz Wi-Fi, with ext. PA (RFPA5542) and LNA, up to 27 dBm
- 2x IPEX/U.FL or MMCX antenna connectors (for PCBA version)
- 8x LED (7 are driven by GPIO)
- 1x button (reset)
- external h/w watchdog (EM6324QYSP5B, enabled by default)
- header for optional 802.3at/af PoE module
- DC jack for main power input (optional, not installed by default)
- UART (4-pin, 2.54 mm pitch) header on PCB
- LEDs (2x 5-pin, 2.54 mm pitch) header on PCB

Flash instruction:

You can use sysupgrade image directly in vendor firmware which is based
on OpenWrt/LEDE. Alternatively, you can use web recovery mode in U-Boot:

1. Configure PC with static IP 192.168.1.2/24.
2. Connect PC with one of RJ45 ports, press the reset button, power up
   device, wait for first blink of all LEDs (indicates network setup),
   then keep button for 3 following blinks and release it.
3. Open 192.168.1.1 address in your browser and upload sysupgrade image.

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
master
Piotr Dymacz 2020-05-12 23:44:10 +02:00
parent 6ae0684297
commit 70a57d48db
4 changed files with 177 additions and 0 deletions

View File

@ -0,0 +1,157 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "ar9344.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
/ {
model = "ALFA Network N5Q";
compatible = "alfa-network,n5q", "qca,ar9344";
aliases {
label-mac-device = &wmac;
led-boot = &led_signal4;
led-failsafe = &led_signal4;
led-upgrade = &led_signal4;
};
gpio-export {
compatible = "gpio-export";
#size-cells = <0>;
watchdog-enable {
gpio-export,name = "watchdog-enable";
gpio-export,output = <1>;
gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
};
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
linux,code = <KEY_RESTART>;
gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
};
leds {
compatible = "gpio-leds";
lan1 {
label = "n5q:green:lan1";
gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
};
lan2 {
label = "n5q:green:lan2";
gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
};
led_signal4: signal4 {
label = "n5q:green:signal4";
gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
};
signal1 {
label = "n5q:red:signal1";
gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
};
signal2 {
label = "n5q:orange:signal2";
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
};
signal3 {
label = "n5q:green:signal3";
gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
};
wlan {
label = "n5q:green:wlan";
gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy0tpt";
};
};
watchdog {
compatible = "linux,wdt-gpio";
gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
hw_algo = "toggle";
hw_margin_ms = <25000>;
always-running;
};
};
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x0>;
phy-handle = <&swphy4>;
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x6>;
};
&ref {
clock-frequency = <40000000>;
};
&spi {
status = "okay";
num-cs = <1>;
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <50000000>;
m25p,fast-read;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x000000 0x060000>;
read-only;
};
partition@60000 {
label = "u-boot-env";
reg = <0x060000 0x010000>;
};
art: partition@70000 {
label = "art";
reg = <0x070000 0x010000>;
read-only;
};
partition@80000 {
compatible = "denx,uimage";
label = "firmware";
reg = <0x080000 0xf80000>;
};
};
};
};
&uart {
status = "okay";
};
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
};

View File

@ -25,6 +25,15 @@ alfa-network,n2q)
ucidef_set_led_rssi "signal2" "SIGNAL2" "$boardname:orange:signal2" "wlan0" "33" "100" ucidef_set_led_rssi "signal2" "SIGNAL2" "$boardname:orange:signal2" "wlan0" "33" "100"
ucidef_set_led_rssi "signal3" "SIGNAL3" "$boardname:green:signal3" "wlan0" "66" "100" ucidef_set_led_rssi "signal3" "SIGNAL3" "$boardname:green:signal3" "wlan0" "66" "100"
;; ;;
alfa-network,n5q)
ucidef_set_led_netdev "lan2" "LAN2" "$boardname:green:lan2" "eth1"
ucidef_set_led_switch "lan1" "LAN1" "$boardname:green:lan1" "switch0" "0x10"
ucidef_set_rssimon "wlan0" "200000" "1"
ucidef_set_led_rssi "signal1" "SIGNAL1" "$boardname:red:signal1" "wlan0" "1" "100"
ucidef_set_led_rssi "signal2" "SIGNAL2" "$boardname:orange:signal2" "wlan0" "25" "100"
ucidef_set_led_rssi "signal3" "SIGNAL3" "$boardname:green:signal3" "wlan0" "50" "100"
ucidef_set_led_rssi "signal4" "SIGNAL4" "$boardname:green:signal4" "wlan0" "75" "100"
;;
alfa-network,r36a) alfa-network,r36a)
ucidef_set_led_netdev "lan" "LAN" "$boardname:blue:lan" "eth0" ucidef_set_led_netdev "lan" "LAN" "$boardname:blue:lan" "eth0"
ucidef_set_led_switch "wan" "WAN" "$boardname:blue:wan" "switch0" "0x10" ucidef_set_led_switch "wan" "WAN" "$boardname:blue:wan" "switch0" "0x10"

View File

@ -79,6 +79,7 @@ ath79_setup_interfaces()
ucidef_set_interface_lan "eth0 usb0" ucidef_set_interface_lan "eth0 usb0"
;; ;;
alfa-network,n2q|\ alfa-network,n2q|\
alfa-network,n5q|\
devolo,dvl1200e|\ devolo,dvl1200e|\
devolo,dvl1750e|\ devolo,dvl1750e|\
ocedo,ursus) ocedo,ursus)

View File

@ -247,6 +247,16 @@ define Device/alfa-network_n2q
endef endef
TARGET_DEVICES += alfa-network_n2q TARGET_DEVICES += alfa-network_n2q
define Device/alfa-network_n5q
SOC := ar9344
DEVICE_VENDOR := ALFA Network
DEVICE_MODEL := N5Q
DEVICE_PACKAGES := rssileds
IMAGE_SIZE := 15872k
SUPPORTED_DEVICES += n5q
endef
TARGET_DEVICES += alfa-network_n5q
define Device/alfa-network_r36a define Device/alfa-network_r36a
SOC := qca9531 SOC := qca9531
DEVICE_VENDOR := ALFA Network DEVICE_VENDOR := ALFA Network