[openwrt/openwrt] ar71xx: add support for ALFA Network N5Q
LEDE Commits
lede-commits at lists.infradead.org
Sun Jan 14 15:14:26 PST 2018
pepe2k pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/4b0eebe9dfa49f995474322f2c6998026534a5f8
commit 4b0eebe9dfa49f995474322f2c6998026534a5f8
Author: Piotr Dymacz <pepe2k at gmail.com>
AuthorDate: Fri Jan 5 11:35:45 2018 +0100
ar71xx: 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.
Specification:
- 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 (AR9344), with ext. PA (RFPA5542) and LNA, up to 27 dBm
- 8x LED (7 are driven by GPIO)
- 1x button (reset)
- external h/w watchdog (EM6324QYSP5B, disabled and not used)
- header for optional 802.3at/af PoE module
- DC jack for main power input (optional, not installed by default)
- UART header on PCB
Flash instruction:
You can use sysupgrade image directly in vendor firmare 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 at gmail.com>
---
target/linux/ar71xx/base-files/etc/board.d/01_leds | 10 +-
target/linux/ar71xx/base-files/etc/diag.sh | 3 +-
target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 +
.../ar71xx/base-files/lib/upgrade/platform.sh | 1 +
target/linux/ar71xx/config-4.4 | 1 +
target/linux/ar71xx/config-4.9 | 1 +
.../ar71xx/files/arch/mips/ath79/Kconfig.openwrt | 8 ++
target/linux/ar71xx/files/arch/mips/ath79/Makefile | 1 +
.../linux/ar71xx/files/arch/mips/ath79/mach-n5q.c | 132 +++++++++++++++++++++
.../linux/ar71xx/files/arch/mips/ath79/machtypes.h | 1 +
target/linux/ar71xx/generic/config-default | 1 +
target/linux/ar71xx/image/generic.mk | 12 ++
12 files changed, 172 insertions(+), 2 deletions(-)
diff --git a/target/linux/ar71xx/base-files/etc/board.d/01_leds b/target/linux/ar71xx/base-files/etc/board.d/01_leds
index 97bf330..f2d66b2 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/01_leds
+++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds
@@ -129,13 +129,21 @@ dr531)
;;
esac
;;
-ap91-5g)
+ap91-5g|\
+n5q)
ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth0"
ucidef_set_rssimon "wlan0" "200000" "1"
ucidef_set_led_rssi "signal1" "SIGNAL1" "$board:red:signal1" "wlan0" "1" "100"
ucidef_set_led_rssi "signal2" "SIGNAL2" "$board:orange:signal2" "wlan0" "25" "100"
ucidef_set_led_rssi "signal3" "SIGNAL3" "$board:green:signal3" "wlan0" "50" "100"
ucidef_set_led_rssi "signal4" "SIGNAL4" "$board:green:signal4" "wlan0" "75" "100"
+
+ case "$board" in
+ n5q)
+ ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth1"
+ ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
+ ;;
+ esac
;;
bhr-4grv2)
ucidef_set_led_default "power" "POWER" "buffalo:green:power" "1"
diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index 2f2d2c3..63a9ebc 100644
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -80,7 +80,8 @@ get_status_led() {
gl-mifi)
status_led="$board:green:lan"
;;
- ap91-5g)
+ ap91-5g|\
+ n5q)
status_led="$board:green:signal4"
;;
ap96)
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index e90d89e..1de9d02 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -768,6 +768,9 @@ ar71xx_board_detect() {
*"MZK-W300NH")
name="mzk-w300nh"
;;
+ *"N5Q")
+ name="n5q"
+ ;;
*"Nanostation M")
name="nanostation-m"
ubnt_xm_board_detect
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 37c637b..3bfedf8 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -252,6 +252,7 @@ platform_check_image() {
loco-m-xw|\
mzk-w04nu|\
mzk-w300nh|\
+ n5q|\
nanostation-m|\
nanostation-m-xw|\
nbg460n_550n_550nh|\
diff --git a/target/linux/ar71xx/config-4.4 b/target/linux/ar71xx/config-4.4
index 44af80d..c5bcc40 100644
--- a/target/linux/ar71xx/config-4.4
+++ b/target/linux/ar71xx/config-4.4
@@ -139,6 +139,7 @@ CONFIG_ATH79=y
# CONFIG_ATH79_MACH_MYNET_REXT is not set
# CONFIG_ATH79_MACH_MZK_W04NU is not set
# CONFIG_ATH79_MACH_MZK_W300NH is not set
+# CONFIG_ATH79_MACH_N5Q is not set
# CONFIG_ATH79_MACH_NBG460N is not set
# CONFIG_ATH79_MACH_NBG6716 is not set
# CONFIG_ATH79_MACH_OM2P is not set
diff --git a/target/linux/ar71xx/config-4.9 b/target/linux/ar71xx/config-4.9
index 401c41e..8815edf 100644
--- a/target/linux/ar71xx/config-4.9
+++ b/target/linux/ar71xx/config-4.9
@@ -137,6 +137,7 @@ CONFIG_ATH79=y
# CONFIG_ATH79_MACH_MYNET_REXT is not set
# CONFIG_ATH79_MACH_MZK_W04NU is not set
# CONFIG_ATH79_MACH_MZK_W300NH is not set
+# CONFIG_ATH79_MACH_N5Q is not set
# CONFIG_ATH79_MACH_NBG460N is not set
# CONFIG_ATH79_MACH_NBG6716 is not set
# CONFIG_ATH79_MACH_OM2P is not set
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
index f2717e8..4309646 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
+++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
@@ -2008,6 +2008,14 @@ config ATH79_MACH_ZCN_1523H
select ATH79_DEV_LEDS_GPIO
select ATH79_DEV_M25P80
+config ATH79_MACH_N5Q
+ bool "ALFA Network N5Q support"
+ select SOC_AR934X
+ select ATH79_DEV_ETH
+ select ATH79_DEV_GPIO_BUTTONS
+ select ATH79_DEV_LEDS_GPIO
+ select ATH79_DEV_WMAC
+
config ATH79_MACH_NBG460N
bool "Zyxel NBG460N/550N/550NH board support"
select SOC_AR913X
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Makefile b/target/linux/ar71xx/files/arch/mips/ath79/Makefile
index 0e58100..53edaac 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/Makefile
+++ b/target/linux/ar71xx/files/arch/mips/ath79/Makefile
@@ -147,6 +147,7 @@ obj-$(CONFIG_ATH79_MACH_MYNET_N750) += mach-mynet-n750.o
obj-$(CONFIG_ATH79_MACH_MYNET_REXT) += mach-mynet-rext.o
obj-$(CONFIG_ATH79_MACH_MZK_W04NU) += mach-mzk-w04nu.o
obj-$(CONFIG_ATH79_MACH_MZK_W300NH) += mach-mzk-w300nh.o
+obj-$(CONFIG_ATH79_MACH_N5Q) += mach-n5q.o
obj-$(CONFIG_ATH79_MACH_NBG460N) += mach-nbg460n.o
obj-$(CONFIG_ATH79_MACH_NBG6716) += mach-nbg6716.o
obj-$(CONFIG_ATH79_MACH_RAMBUTAN) += mach-rambutan.o
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-n5q.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-n5q.c
new file mode 100644
index 0000000..895fc32
--- /dev/null
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-n5q.c
@@ -0,0 +1,132 @@
+/*
+ * ALFA Network N5Q board support
+ *
+ * Copyright (C) 2018 Piotr Dymacz <pepe2k at gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
+ */
+
+#include <linux/gpio.h>
+#include <linux/platform_device.h>
+
+#include <asm/mach-ath79/ath79.h>
+#include <asm/mach-ath79/ar71xx_regs.h>
+
+#include "common.h"
+#include "dev-eth.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "dev-wmac.h"
+#include "machtypes.h"
+
+#define N5Q_GPIO_LED_LAN 19
+#define N5Q_GPIO_LED_SIGNAL1 0
+#define N5Q_GPIO_LED_SIGNAL2 1
+#define N5Q_GPIO_LED_SIGNAL3 2
+#define N5Q_GPIO_LED_SIGNAL4 3
+#define N5Q_GPIO_LED_WAN 18
+#define N5Q_GPIO_LED_WLAN 12
+
+#define N5Q_GPIO_WDT_EN 16
+#define N5Q_GPIO_WDT_IN 17
+
+#define N5Q_GPIO_BTN_RESET 11
+
+#define N5Q_MAC0_OFFSET 0
+#define N5Q_MAC1_OFFSET 6
+#define N5Q_WMAC_CALDATA_OFFSET 0x1000
+
+#define N5Q_KEYS_POLL_INTERVAL 20
+#define N5Q_KEYS_DEBOUNCE_INTERVAL (3 * N5Q_KEYS_POLL_INTERVAL)
+
+static struct gpio_led n5q_leds_gpio[] __initdata = {
+ {
+ .name = "n5q:green:lan",
+ .gpio = N5Q_GPIO_LED_LAN,
+ .active_low = 1,
+ }, {
+ .name = "n5q:red:signal1",
+ .gpio = N5Q_GPIO_LED_SIGNAL1,
+ .active_low = 1,
+ }, {
+ .name = "n5q:orange:signal2",
+ .gpio = N5Q_GPIO_LED_SIGNAL2,
+ .active_low = 1,
+ }, {
+ .name = "n5q:green:signal3",
+ .gpio = N5Q_GPIO_LED_SIGNAL3,
+ .active_low = 1,
+ }, {
+ .name = "n5q:green:signal4",
+ .gpio = N5Q_GPIO_LED_SIGNAL4,
+ .active_low = 1,
+ }, {
+ .name = "n5q:green:wan",
+ .gpio = N5Q_GPIO_LED_WAN,
+ .active_low = 1,
+ }, {
+ .name = "n5q:green:wlan",
+ .gpio = N5Q_GPIO_LED_WLAN,
+ .active_low = 1,
+ },
+};
+
+static struct gpio_keys_button n5q_gpio_keys[] __initdata = {
+ {
+ .desc = "reset",
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .debounce_interval = N5Q_KEYS_DEBOUNCE_INTERVAL,
+ .gpio = N5Q_GPIO_BTN_RESET,
+ .active_low = 1,
+ },
+};
+
+static void __init n5q_setup(void)
+{
+ u8 *art = (u8 *) KSEG1ADDR(0x1f070000);
+
+ ath79_register_m25p80(NULL);
+
+ ath79_register_mdio(1, 0x0);
+
+ ath79_switch_data.phy4_mii_en = 1;
+ ath79_switch_data.phy_poll_mask = 0xf7;
+
+ /* LAN */
+ ath79_eth1_data.duplex = DUPLEX_FULL;
+ ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
+ ath79_init_mac(ath79_eth1_data.mac_addr, art + N5Q_MAC1_OFFSET, 0);
+ ath79_register_eth(1);
+
+ /* WAN */
+ ath79_eth0_data.duplex = DUPLEX_FULL;
+ ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
+ ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+ ath79_eth0_data.phy_mask = BIT(4);
+ ath79_eth0_data.speed = SPEED_100;
+ ath79_init_mac(ath79_eth0_data.mac_addr, art + N5Q_MAC0_OFFSET, 0);
+ ath79_register_eth(0);
+
+ ath79_register_leds_gpio(-1, ARRAY_SIZE(n5q_leds_gpio),
+ n5q_leds_gpio);
+
+ ath79_register_gpio_keys_polled(-1, N5Q_KEYS_POLL_INTERVAL,
+ ARRAY_SIZE(n5q_gpio_keys),
+ n5q_gpio_keys);
+
+ gpio_request_one(N5Q_GPIO_WDT_IN,
+ GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
+ "WDT input");
+
+ gpio_request_one(N5Q_GPIO_WDT_EN,
+ GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
+ "WDT enable");
+
+ ath79_register_wmac(art + N5Q_WMAC_CALDATA_OFFSET, NULL);
+}
+
+MIPS_MACHINE(ATH79_MACH_N5Q, "N5Q", "ALFA Network N5Q", n5q_setup);
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
index c2cb8b6..06fa476 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
+++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
@@ -143,6 +143,7 @@ enum ath79_mach_type {
ATH79_MACH_MYNET_REXT, /* WD My Net Wi-Fi Range Extender */
ATH79_MACH_MZK_W04NU, /* Planex MZK-W04NU */
ATH79_MACH_MZK_W300NH, /* Planex MZK-W300NH */
+ ATH79_MACH_N5Q, /* ALFA Network N5Q */
ATH79_MACH_NBG460N, /* Zyxel NBG460N/550N/550NH */
ATH79_MACH_NBG6616, /* Zyxel NBG6616 */
ATH79_MACH_NBG6716, /* Zyxel NBG6716 */
diff --git a/target/linux/ar71xx/generic/config-default b/target/linux/ar71xx/generic/config-default
index e9bf6f3..5d236b2 100644
--- a/target/linux/ar71xx/generic/config-default
+++ b/target/linux/ar71xx/generic/config-default
@@ -108,6 +108,7 @@ CONFIG_ATH79_MACH_MYNET_N750=y
CONFIG_ATH79_MACH_MYNET_REXT=y
CONFIG_ATH79_MACH_MZK_W04NU=y
CONFIG_ATH79_MACH_MZK_W300NH=y
+CONFIG_ATH79_MACH_N5Q=y
CONFIG_ATH79_MACH_OM2P=y
CONFIG_ATH79_MACH_OM5P=y
CONFIG_ATH79_MACH_OM5P_AC=y
diff --git a/target/linux/ar71xx/image/generic.mk b/target/linux/ar71xx/image/generic.mk
index d6515ac..f1efebc 100644
--- a/target/linux/ar71xx/image/generic.mk
+++ b/target/linux/ar71xx/image/generic.mk
@@ -757,6 +757,18 @@ define Device/oolite
endef
TARGET_DEVICES += oolite
+define Device/n5q
+ DEVICE_TITLE := ALFA Network N5Q
+ DEVICE_PACKAGES := rssileds -swconfig
+ BOARDNAME := N5Q
+ SUPPORTED_DEVICES := n5q
+ IMAGE_SIZE := 15872k
+ MTDPARTS := spi0.0:384k(u-boot)ro,64k(u-boot-env),64k(art)ro,-(firmware)
+ IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
+ append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
+endef
+TARGET_DEVICES += n5q
+
define Device/NBG6616
DEVICE_TITLE := ZyXEL NBG6616
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-usb-storage kmod-rtc-pcf8563 kmod-ath10k ath10k-firmware-qca988x
More information about the lede-commits
mailing list