From 3fb16059314533aec5db52c7b3ae742075446a65 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Tue, 10 Jun 2025 18:51:32 +0200 Subject: [PATCH] ipq806x: add support for IgniteNet SunSpot AC Wave2 The IgniteNet SS-W2-AC2600 is an 802.11ac outdoor (IP-55) access point. FCC ID: HEDSSW2AC2600 Specification: - Qualcomm dual-core IPQ8068 @ 1.4 GHz - 256 MB of DDR3L RAM (2x Winbond W631GU6KB-12) - 16 MB of SPI NOR (Winbond W25Q128FW) - 128 MB of NAND (Macronix MX30UF1G18AC) - Qualcomm QCA9994 2.4GHz 802.11bgn - Qualcomm QCA9994 5GHz 802.11ac - 2 x 10/100/1000 Mbit/s Ethernet - 115200, 8N1 RS-232 console (unpopulated RJ-45) - Reset button - Power and WLAN LEDs - Powered via 802.3at PoE or 12V 2A barrel connector Tested-by: Elektra Wagenrad Signed-off-by: Daniel Golle --- .../ipq806x/base-files/etc/board.d/01_leds | 4 + .../ipq806x/base-files/etc/board.d/02_network | 1 + .../ipq806x/base-files/etc/init.d/bootcount | 3 +- .../base-files/lib/upgrade/platform.sh | 3 +- .../dts/qcom/qcom-ipq8068-ss-w2-ac2600.dts | 309 ++++++++++++++++++ target/linux/ipq806x/image/generic.mk | 15 + 6 files changed, 333 insertions(+), 2 deletions(-) create mode 100644 target/linux/ipq806x/files-6.6/arch/arm/boot/dts/qcom/qcom-ipq8068-ss-w2-ac2600.dts diff --git a/target/linux/ipq806x/base-files/etc/board.d/01_leds b/target/linux/ipq806x/base-files/etc/board.d/01_leds index 60988dec6b5..514778e214b 100644 --- a/target/linux/ipq806x/base-files/etc/board.d/01_leds +++ b/target/linux/ipq806x/base-files/etc/board.d/01_leds @@ -46,6 +46,10 @@ fortinet,fap-421e) ucidef_set_led_wlan "wlan5g" "5G" "yellow:5g" "phy0tpt" ucidef_set_led_usbport "usb" "USB" "amber:power" "usb1-port1" "usb2-port1" ;; +ignitenet,ss-w2-ac2600) + ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wlan2g" "phy1tpt" + ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wlan5g" "phy0tpt" + ;; linksys,e8350-v1) ucidef_set_led_wlan "wlan" "WLAN" "green:wifi" "phy0tpt" ;; diff --git a/target/linux/ipq806x/base-files/etc/board.d/02_network b/target/linux/ipq806x/base-files/etc/board.d/02_network index 78eee799367..10c6efbf41d 100644 --- a/target/linux/ipq806x/base-files/etc/board.d/02_network +++ b/target/linux/ipq806x/base-files/etc/board.d/02_network @@ -58,6 +58,7 @@ ipq806x_setup_interfaces() ucidef_set_interface_lan "eth1 eth2 eth3 lan1 lan2 lan3 lan4" "wan" ;; fortinet,fap-421e |\ + ignitenet,ss-w2-ac2600 |\ ubnt,unifi-ac-hd) ucidef_set_interface_lan "eth0 eth1" ;; diff --git a/target/linux/ipq806x/base-files/etc/init.d/bootcount b/target/linux/ipq806x/base-files/etc/init.d/bootcount index ef3c6894e44..e17dbf4a77f 100755 --- a/target/linux/ipq806x/base-files/etc/init.d/bootcount +++ b/target/linux/ipq806x/base-files/etc/init.d/bootcount @@ -9,7 +9,8 @@ boot() { asrock,g10) asrock_bootconfig_mangle "bootcheck" && reboot ;; - edgecore,ecw5410) + edgecore,ecw5410 |\ + ignitenet,ss-w2-ac2600) fw_setenv bootcount 0 ;; extreme,ap3935) diff --git a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh index f26f118d548..a6fe5c10557 100644 --- a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh +++ b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh @@ -35,7 +35,8 @@ platform_do_upgrade() { CI_ROOTPART="ubi_rootfs" nand_do_upgrade "$1" ;; - edgecore,ecw5410) + edgecore,ecw5410 |\ + ignitenet,ss-w2-ac2600) part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')" if [ "$part" = "rootfs1" ]; then fw_setenv active 2 || exit 1 diff --git a/target/linux/ipq806x/files-6.6/arch/arm/boot/dts/qcom/qcom-ipq8068-ss-w2-ac2600.dts b/target/linux/ipq806x/files-6.6/arch/arm/boot/dts/qcom/qcom-ipq8068-ss-w2-ac2600.dts new file mode 100644 index 00000000000..5174927a0f5 --- /dev/null +++ b/target/linux/ipq806x/files-6.6/arch/arm/boot/dts/qcom/qcom-ipq8068-ss-w2-ac2600.dts @@ -0,0 +1,309 @@ +#include "qcom-ipq8064-v2.0-smb208.dtsi" + +#include +#include +#include + +/ { + model = "IgniteNet SunSpot AC Wave2"; + compatible = "ignitenet,ss-w2-ac2600", "qcom,ipq8068"; + + aliases { + ethernet0 = &gmac2; + ethernet1 = &gmac3; + + led-boot = &led_power_red; + led-failsafe = &led_power_red; + led-running = &led_power_red; + led-upgrade = &led_power_red; + }; + + chosen { + bootargs-append = " console=ttyMSM0,115200n8 root=/dev/ubiblock0_1"; + }; + + reserved-memory { + nss@40000000 { + reg = <0x40000000 0x1000000>; + no-map; + }; + + smem: smem@41000000 { + reg = <0x41000000 0x200000>; + no-map; + }; + + wifi_dump@44000000 { + reg = <0x44000000 0x600000>; + no-map; + }; + }; + + cpus { + idle-states { + CPU_SPC: spc { + status = "disabled"; + }; + }; + }; + + keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + reset { + label = "reset"; + gpios = <&qcom_pinmux 25 GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <60>; + wakeup-source; + }; + }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&led_pins>; + pinctrl-names = "default"; + + wlan2g_green { + label = "green:wlan2g"; + gpios = <&qcom_pinmux 23 GPIO_ACTIVE_LOW>; + }; + + wlan2g_yellow { + label = "yellow:wlan2g"; + gpios = <&qcom_pinmux 24 GPIO_ACTIVE_LOW>; + }; + + wlan5g_green { + label = "green:wlan5g"; + gpios = <&qcom_pinmux 26 GPIO_ACTIVE_LOW>; + }; + + led_power_red: power_red { + function = LED_FUNCTION_POWER; + color = ; + gpios = <&qcom_pinmux 28 GPIO_ACTIVE_LOW>; + }; + + wlan5g_yellow { + label = "yellow:wlan5g"; + gpios = <&qcom_pinmux 59 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&qcom_pinmux { + spi_pins: spi_pins { + mux { + pins = "gpio18", "gpio19"; + function = "gsbi5"; + drive-strength = <10>; + bias-pull-down; + }; + + clk { + pins = "gpio21"; + function = "gsbi5"; + drive-strength = <12>; + bias-pull-down; + }; + + cs { + pins = "gpio20"; + function = "gpio"; + drive-strength = <10>; + bias-pull-up; + }; + }; + + led_pins: led_pins { + mux { + pins = "gpio16", "gpio23", "gpio24", "gpio26", + "gpio28", "gpio59"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + + button_pins: button_pins { + mux { + pins = "gpio25"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; +}; + +&gsbi5 { + qcom,mode = ; + status = "okay"; + + spi4: spi@1a280000 { + status = "okay"; + spi-max-frequency = <50000000>; + + pinctrl-0 = <&spi_pins>; + pinctrl-names = "default"; + + cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>; + + w25q128@0 { + compatible = "jedec,spi-nor"; + #address-cells = <1>; + #size-cells = <1>; + spi-max-frequency = <50000000>; + reg = <0>; + + partitions { + compatible = "qcom,smem-part"; + + art: partition-0-art { + label = "0:art"; + }; + }; + }; + }; +}; + +&art { + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_art_0: macaddr@0 { + reg = <0x0 0x6>; + }; + + macaddr_art_6: macaddr@6 { + reg = <0x6 0x6>; + }; + + precal_art_1000: precal@1000 { + reg = <0x1000 0x2f20>; + }; + + precal_art_5000: precal@5000 { + reg = <0x5000 0x2f20>; + }; + }; +}; + +&pcie1 { + status = "okay"; + + bridge@0,0 { + reg = <0x00000000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + wifi@1,0 { + compatible = "qcom,ath10k"; + status = "okay"; + reg = <0x00010000 0 0 0 0>; + qcom,ath10k-calibration-variant = "IgniteNet-SS-W2-AC2600"; + nvmem-cells = <&precal_art_1000>; + nvmem-cell-names = "pre-calibration"; + }; + }; +}; + +&pcie2 { + status = "okay"; + + bridge@0,0 { + reg = <0x00000000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + wifi@1,0 { + compatible = "qcom,ath10k"; + status = "okay"; + reg = <0x00010000 0 0 0 0>; + qcom,ath10k-calibration-variant = "IgniteNet-SS-W2-AC2600"; + nvmem-cells = <&precal_art_5000>; + nvmem-cell-names = "pre-calibration"; + }; + }; +}; + +&nand { + status = "okay"; + + nand@0 { + compatible = "qcom,nandcs"; + + reg = <0>; + + nand-ecc-strength = <4>; + nand-bus-width = <8>; + nand-ecc-step-size = <512>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + rootfs1@0 { + label = "rootfs1"; + reg = <0x0000000 0x4000000>; + }; + + rootfs2@4000000 { + label = "rootfs2"; + reg = <0x4000000 0x4000000>; + }; + }; + }; +}; + +&mdio0 { + status = "okay"; + + pinctrl-0 = <&mdio0_pins>; + pinctrl-names = "default"; + + phy0: ethernet-phy@0 { + reg = <0>; + }; + + phy1: ethernet-phy@1 { + reg = <1>; + }; +}; + +&gmac2 { + status = "okay"; + + qcom,id = <2>; + mdiobus = <&mdio0>; + + phy-mode = "sgmii"; + phy-handle = <&phy1>; + + nvmem-cells = <&macaddr_art_0>; + nvmem-cell-names = "mac-address"; +}; + +&gmac3 { + status = "okay"; + + qcom,id = <3>; + mdiobus = <&mdio0>; + + phy-mode = "sgmii"; + phy-handle = <&phy0>; + + nvmem-cells = <&macaddr_art_6>; + nvmem-cell-names = "mac-address"; +}; + +&adm_dma { + status = "okay"; +}; diff --git a/target/linux/ipq806x/image/generic.mk b/target/linux/ipq806x/image/generic.mk index 112793d5fde..b7608019f06 100644 --- a/target/linux/ipq806x/image/generic.mk +++ b/target/linux/ipq806x/image/generic.mk @@ -201,6 +201,21 @@ define Device/fortinet_fap-421e endef TARGET_DEVICES += fortinet_fap-421e +define Device/ignitenet_ss-w2-ac2600 + $(call Device/FitImage) + $(call Device/UbiFit) + DEVICE_VENDOR := IgniteNet + DEVICE_MODEL := SunSpot AC Wave2 + DEVICE_ALT0_VENDOR := Accton Technology Corporation + DEVICE_ALT0_MODEL := EAP1024A + DEVICE_ALT0_VARIANT := V2 + SOC := qcom-ipq8068 + BLOCKSIZE := 128k + PAGESIZE := 2048 + DEVICE_PACKAGES := ath10k-firmware-qca9984-ct ipq-wifi-ignitenet_ss-w2-ac2600 +endef +TARGET_DEVICES += ignitenet_ss-w2-ac2600 + define Device/linksys_e8350-v1 $(call Device/LegacyImage) DEVICE_VENDOR := Linksys -- 2.47.2