ath79: add support for ALFA Network N5Q
authorPiotr Dymacz <pepe2k@gmail.com>
Tue, 12 May 2020 21:44:10 +0000 (23:44 +0200)
committerPiotr Dymacz <pepe2k@gmail.com>
Sun, 27 Sep 2020 23:28:37 +0000 (01:28 +0200)
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>
target/linux/ath79/dts/ar9344_alfa-network_n5q.dts [new file with mode: 0644]
target/linux/ath79/generic/base-files/etc/board.d/01_leds
target/linux/ath79/generic/base-files/etc/board.d/02_network
target/linux/ath79/image/generic.mk

diff --git a/target/linux/ath79/dts/ar9344_alfa-network_n5q.dts b/target/linux/ath79/dts/ar9344_alfa-network_n5q.dts
new file mode 100644 (file)
index 0000000..26d9a33
--- /dev/null
@@ -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>;
+};
index 0b522910ee4a7f760c992cb80587f8faca22ec89..e208ac65f4974f291a4c787a6efda78f820322c6 100755 (executable)
@@ -25,6 +25,15 @@ alfa-network,n2q)
        ucidef_set_led_rssi "signal2" "SIGNAL2" "$boardname:orange:signal2" "wlan0" "33" "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)
        ucidef_set_led_netdev "lan" "LAN" "$boardname:blue:lan" "eth0"
        ucidef_set_led_switch "wan" "WAN" "$boardname:blue:wan" "switch0" "0x10"
index 160eea523caeb0d0f7d65a21ca5ee9efcb3aad9f..c96217071094b64686f59274ac34b609e9c646e0 100755 (executable)
@@ -79,6 +79,7 @@ ath79_setup_interfaces()
                ucidef_set_interface_lan "eth0 usb0"
                ;;
        alfa-network,n2q|\
+       alfa-network,n5q|\
        devolo,dvl1200e|\
        devolo,dvl1750e|\
        ocedo,ursus)
index 920e2e5ceed94a628c82b2e141febaa071539152..b5af99971dd87b86ad2df4866e661bce588dfa94 100644 (file)
@@ -247,6 +247,16 @@ define Device/alfa-network_n2q
 endef
 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
   SOC := qca9531
   DEVICE_VENDOR := ALFA Network