From 70a57d48dbd2b6653d6bfd5d8c4827a706cf42b9 Mon Sep 17 00:00:00 2001 From: Piotr Dymacz Date: Tue, 12 May 2020 23:44:10 +0200 Subject: [PATCH] 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 --- .../ath79/dts/ar9344_alfa-network_n5q.dts | 157 ++++++++++++++++++ .../generic/base-files/etc/board.d/01_leds | 9 + .../generic/base-files/etc/board.d/02_network | 1 + target/linux/ath79/image/generic.mk | 10 ++ 4 files changed, 177 insertions(+) create mode 100644 target/linux/ath79/dts/ar9344_alfa-network_n5q.dts 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 index 0000000000..26d9a33a93 --- /dev/null +++ b/target/linux/ath79/dts/ar9344_alfa-network_n5q.dts @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "ar9344.dtsi" + +#include +#include + +/ { + 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 = ; + 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; + }; +}; + +ð0 { + status = "okay"; + + mtd-mac-address = <&art 0x0>; + phy-handle = <&swphy4>; +}; + +ð1 { + 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>; +}; diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds index 0b522910ee..e208ac65f4 100755 --- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds @@ -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" diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network index 160eea523c..c962170710 100755 --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network @@ -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) diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index 920e2e5cee..b5af99971d 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -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 -- 2.30.2