summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorINAGAKI Hiroshi2024-02-22 10:00:57 +0000
committerChristian Lamparter2024-03-02 13:08:08 +0000
commit2791ee79fa32805be0c8adac4fd791c1ea79c8b0 (patch)
treef5bf0fb727ed790ad1a7fde13df97d53601c63e9
parentf5b2b08190f250aaee2f6ceffc366db99b2a6166 (diff)
downloadopenwrt-2791ee79fa32805be0c8adac4fd791c1ea79c8b0.tar.gz
ath79: add support for ELECOM WAB-S600-PS
ELECOM WAB-S600-PS is a 2.4/5 GHz band 11n (Wi-Fi 4) access point, based on QCA9557. This device also supports 11ac (Wi-Fi 5) with the another official firmware. Specification: - SoC : Qualcomm Atheros QCA9557 - RAM : DDR2 128 MiB (2x Winbond W9751G6KB251) - Flash : SPI-NOR 16 MiB (Macronix MX25L12835FMI-10G) - WLAN : 2.4/5 GHz 2T2R - 2.4 GHz : Qualcomm Atheros QCA9557 (SoC) - 5 GHz : Qualcomm Atheros QCA9882 - Ethernet : 2x 10/100/1000 Mbps - phy ("PD") : Atheros AR8035 - phy ("PSE") : Atheros AR8033 - LEDs/keys (GPIO) : 3x/3x - UART : 1x RJ-45 port - "SERVICE" : TTL (3.3V) - port : ttyS0 - assignment : 1:3.3V, 2:GND, 3:TX, 4:RX - settings : 115200n8 - note : no compatibility with "Cisco console cable" - Buzzer : 1x GPIO-controlled - USB : 1x USB 2.0 Type-A - Power : DC jack or PoE - DC jack : 12 VDC, 1 A (device only, rating) - PoE : 802.3af/at, 48 VDC, 0.25 A (device only, rating) - note : supports 802.3af supply on PSE (downstream) port when powered by DC adapter or 802.3at PoE Flash instruction using factory.bin image: 1. Boot WAB-S600-PS without no upstream connection (or PoE connection without DHCP) 2. Access to the WebUI ("http://192.168.3.1") on the device and open firmware update page ("ツールボックス" -> "ファームウェア更新") 3. Select the OpenWrt factory.bin image and click update ("アップデート") button 4. Wait ~120 seconds to complete flashing Revert to OEM firmware: 1. Download the latest OEM firmware 2. Remove 128 bytes(0x80) header from firmware image 3. Decode by xor with a pattern "8844a2d168b45a2d" (hex val) 4. Upload the decoded firmware to the device 5. Flash to "firmware" partition by mtd command 6. Reboot Notes: - To use the "SERVICE" port, the connection of 3.3V line is also required to enable console output. The uart line of "SERVICE" is branched out from the internal pin header with 74HC126D and 3.3V line is connected to OE pin on it. - The same PCB is used with WAB-S1167-PS. - To supply 802.3af PoE on "PSE" port when powered by DC adapter, 12 VDC 3.5 A adapter is recommended. (official: WAB-EX-ADP1) MAC addresses: Ethernet (PD, PSE): BC:5C:4C:xx:xx:7C (Config, ethaddr (text)) 2.4GHz : BC:5C:4C:xx:xx:7C (Config, ethaddr (text)) 5GHz : BC:5C:4C:xx:xx:7D [original work of common dtsi part for WAB-I1750-PS] Signed-off-by: Yanase Yuki <dev@zpc.st> [adding support for WAB-S600-PS] Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
-rw-r--r--target/linux/ath79/dts/qca9557_elecom_wab-s600-ps.dts8
-rw-r--r--target/linux/ath79/dts/qca955x_elecom_wab.dtsi261
-rw-r--r--target/linux/ath79/generic/base-files/etc/board.d/02_network12
-rw-r--r--target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac8
-rw-r--r--target/linux/ath79/image/generic.mk19
5 files changed, 303 insertions, 5 deletions
diff --git a/target/linux/ath79/dts/qca9557_elecom_wab-s600-ps.dts b/target/linux/ath79/dts/qca9557_elecom_wab-s600-ps.dts
new file mode 100644
index 0000000000..8d4b1d3a85
--- /dev/null
+++ b/target/linux/ath79/dts/qca9557_elecom_wab-s600-ps.dts
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qca955x_elecom_wab.dtsi"
+
+/ {
+ compatible = "elecom,wab-s600-ps", "qca,qca9557";
+ model = "ELECOM WAB-S600-PS";
+};
diff --git a/target/linux/ath79/dts/qca955x_elecom_wab.dtsi b/target/linux/ath79/dts/qca955x_elecom_wab.dtsi
new file mode 100644
index 0000000000..f94f582468
--- /dev/null
+++ b/target/linux/ath79/dts/qca955x_elecom_wab.dtsi
@@ -0,0 +1,261 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qca955x.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+ aliases {
+ led-boot = &led_status;
+ led-failsafe = &led_status;
+ led-upgrade = &led_status;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led-0 {
+ gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+ color = <LED_COLOR_ID_GREEN>;
+ function = LED_FUNCTION_WLAN;
+ function-enumerator = <24>;
+ linux,default-trigger = "phy1tpt";
+ };
+
+ led_status: led-1 {
+ gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+ color = <LED_COLOR_ID_RED>;
+ function = LED_FUNCTION_STATUS;
+ };
+
+ led-2 {
+ gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+ color = <LED_COLOR_ID_GREEN>;
+ function = LED_FUNCTION_USB;
+ trigger-sources = <&usb_port1>;
+ linux,default-trigger = "usbport";
+ };
+ };
+
+ keys {
+ compatible = "gpio-keys";
+
+ button-wps {
+ label = "wps";
+ gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_WPS_BUTTON>;
+ debounce-interval = <60>;
+ };
+
+ button-reset {
+ label = "reset";
+ gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ debounce-interval = <60>;
+ };
+
+ button-eject {
+ label = "eject";
+ gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_EJECTCD>;
+ debounce-interval = <60>;
+ };
+ };
+
+ beeper {
+ compatible = "gpio-beeper";
+ gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
+ };
+
+ reg_usb_vbus: regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "usb-vbus";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ gpio = <&gpio 11 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ watchdog {
+ compatible = "linux,wdt-gpio";
+ gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+ hw_algo = "toggle";
+ hw_margin_ms = <300>;
+ always-running;
+ };
+};
+
+&mdio0 {
+ status = "okay";
+
+ ethphy4: ethernet-phy@4 {
+ compatible = "ethernet-phy-id004d,d072",
+ "ethernet-phy-ieee802.3-c22";
+ reg = <0x4>;
+ eee-broken-100tx;
+ eee-broken-1000t;
+ };
+};
+
+&eth0 {
+ status = "okay";
+
+ phy-handle = <&ethphy4>;
+ phy-mode = "rgmii-rxid";
+ pll-data = <0xae000000 0x80000101 0x80001313>;
+
+ gmac-config {
+ device = <&gmac>;
+
+ rxdv-delay = <3>;
+ rxd-delay = <3>;
+ txen-delay = <0>;
+ txd-delay = <0>;
+ rgmii-enabled = <1>;
+ };
+};
+
+&mdio1 {
+ status = "okay";
+
+ ethphy1: ethernet-phy@1 {
+ compatible = "ethernet-phy-id004d,d074",
+ "ethernet-phy-ieee802.3-c22";
+ reg = <0x1>;
+ at803x-override-sgmii-link-check;
+ };
+};
+
+&eth1 {
+ status = "okay";
+
+ phy-handle = <&ethphy1>;
+ pll-data = <0x03000000 0x00000101 0x00001313>;
+
+ qca955x-sgmii-fixup;
+};
+
+&pcie0 {
+ status = "okay";
+
+ wifi@0,0 {
+ compatible = "qcom,ath10k";
+ reg = <0x0000 0 0 0 0>;
+ nvmem-cells = <&cal_art_5000>;
+ nvmem-cell-names = "calibration";
+ };
+};
+
+&spi {
+ status = "okay";
+
+ 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 = <0x0 0x40000>;
+ read-only;
+ };
+
+ partition@40000 {
+ label = "u-boot-env";
+ reg = <0x40000 0x10000>;
+ read-only;
+ };
+
+ partition@50000 {
+ label = "art";
+ reg = <0x50000 0x10000>;
+ read-only;
+
+ nvmem-layout {
+ compatible = "fixed-layout";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ cal_art_1000: calibration@1000 {
+ reg = <0x1000 0x440>;
+ };
+
+ cal_art_5000: calibration@5000 {
+ reg = <0x5000 0x844>;
+ };
+ };
+ };
+
+ partition@60000 {
+ label = "art2";
+ reg = <0x60000 0x10000>;
+ read-only;
+ };
+
+ partition@70000 {
+ compatible = "denx,uimage";
+ label = "firmware";
+ reg = <0x70000 0xe00000>;
+ };
+
+ partition@e70000 {
+ label = "manufacture";
+ reg = <0xe70000 0x100000>;
+ read-only;
+ };
+
+ partition@f70000 {
+ label = "backup";
+ reg = <0xf70000 0x10000>;
+ read-only;
+ };
+
+ partition@f80000 {
+ label = "storage";
+ reg = <0xf80000 0x80000>;
+ read-only;
+ };
+ };
+ };
+};
+
+&uart {
+ status = "okay";
+};
+
+&usb_phy0 {
+ status = "okay";
+};
+
+&usb0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ dr_mode = "host";
+ vbus-supply = <&reg_usb_vbus>;
+
+ usb_port1: port@1 {
+ reg = <1>;
+ #trigger-source-cells = <0>;
+ };
+};
+
+&wdt {
+ status = "disabled";
+};
+
+&wmac {
+ status = "okay";
+
+ nvmem-cells = <&cal_art_1000>;
+ nvmem-cell-names = "calibration";
+};
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 4ed5605fa2..56ef7dd51f 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -144,6 +144,7 @@ ath79_setup_interfaces()
alfa-network,n5q|\
devolo,dvl1200e|\
devolo,dvl1750e|\
+ elecom,wab-s600-ps|\
engenius,enstationac-v1|\
engenius,ews511ap|\
engenius,ews660ap|\
@@ -702,16 +703,17 @@ ath79_setup_macs()
lan_mac=$(mtd_get_mac_ascii devdata "lanmac")
wan_mac=$(mtd_get_mac_ascii devdata "wanmac")
;;
- elecom,wrc-1750ghbk2-i|\
- elecom,wrc-300ghbk2-i)
- wan_mac=$(mtd_get_mac_ascii hwconfig "HW.WAN.MAC.Address")
- label_mac=$wan_mac
- ;;
+ elecom,wab-s600-ps|\
engenius,ecb1200|\
engenius,ecb1750)
lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
label_mac=$lan_mac
;;
+ elecom,wrc-1750ghbk2-i|\
+ elecom,wrc-300ghbk2-i)
+ wan_mac=$(mtd_get_mac_ascii hwconfig "HW.WAN.MAC.Address")
+ label_mac=$wan_mac
+ ;;
engenius,epg5000|\
engenius,esr1200|\
engenius,esr1750|\
diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
index 1a845a4ed7..3d24a4f31a 100644
--- a/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
@@ -41,6 +41,14 @@ case "$board" in
[ "$PHYNBR" -eq 1 ] && \
mtd_get_mac_ascii bdcfg "wlanmac" > /sys${DEVPATH}/macaddress
;;
+ elecom,wab-s600-ps)
+ # set the 5G MAC address (= ethaddr + 1)
+ [ "$PHYNBR" -eq 0 ] && \
+ macaddr_add "$(mtd_get_mac_ascii u-boot-env ethaddr)" 1 > /sys${DEVPATH}/macaddress
+ # set the 2.4G MAC address (= ethaddr)
+ [ "$PHYNBR" -eq 1 ] && \
+ mtd_get_mac_ascii u-boot-env "ethaddr" > /sys${DEVPATH}/macaddress
+ ;;
engenius,ecb1200|\
engenius,ecb1750)
[ "$PHYNBR" -eq 0 ] && \
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 68c4105561..16ef4fdca3 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -9,6 +9,7 @@ DEVICE_VARS += ADDPATTERN_ID ADDPATTERN_VERSION
DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
DEVICE_VARS += KERNEL_INITRAMFS_PREFIX DAP_SIGNATURE
DEVICE_VARS += EDIMAX_HEADER_MAGIC EDIMAX_HEADER_MODEL
+DEVICE_VARS += ELECOM_HWID
DEVICE_VARS += MOXA_MAGIC MOXA_HWID
DEVICE_VARS += OPENMESH_CE_TYPE ZYXEL_MODEL_STRING
DEVICE_VARS += SUPPORTED_TELTONIKA_DEVICES
@@ -1316,6 +1317,24 @@ define Device/dlink_dir-869-a1
endef
TARGET_DEVICES += dlink_dir-869-a1
+define Device/elecom_wab
+ DEVICE_VENDOR := ELECOM
+ IMAGE_SIZE := 14336k
+ IMAGES += factory.bin
+ IMAGE/factory.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | \
+ pad-rootfs | check-size | elx-header $$$$(ELECOM_HWID) 8844A2D168B45A2D
+ DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct kmod-gpio-beeper \
+ kmod-usb2 kmod-usb-ledtrig-usbport
+endef
+
+define Device/elecom_wab-s600-ps
+ $(Device/elecom_wab)
+ SOC := qca9557
+ DEVICE_MODEL := WAB-S600-PS
+ ELECOM_HWID := 01070028
+endef
+TARGET_DEVICES += elecom_wab-s600-ps
+
define Device/elecom_wrc-1750ghbk2-i
SOC := qca9563
DEVICE_VENDOR := ELECOM