[openwrt/openwrt] qualcommax: ipq807x support Netgear Orbi Pro SXK80
LEDE Commits
lede-commits at lists.infradead.org
Wed May 22 05:51:40 PDT 2024
robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0f5c28b96b4e04332b6e9f31280c57b03c672cfd
commit 0f5c28b96b4e04332b6e9f31280c57b03c672cfd
Author: Andrew Smith <gul.code at outlook.com>
AuthorDate: Mon Aug 21 09:48:45 2023 +0100
qualcommax: ipq807x support Netgear Orbi Pro SXK80
This commit adds support for Netgear Orbi Pro SXR80 and SXS80 (collectively known as SXK80)
Specifications:
---------------
* CPU: Qualcomm IPQ8074A Quad core Cortex-A53
* RAM: 1024MB
* Storage: SPI-NAND 512 MiB (Winbond W29N04GZ)
* Ethernet: 4x 1G RJ45 ports (QCA8075) 1x 2.5G RJ45 LAN/WAN (QCA8081)
* WLAN:
- 2.4 GHz: Qualcomm QCN5024 4x4
- 2x 5 GHz: Qualcomm QCN5054 4x4 (second radio high channels only)
* LEDs:
- Power: (Green and red)
- Front: (Blue, green, red and white)
* Buttons:
- 1x Soft reset
- 1x Sync/WPS
* Power: 12V DC Jack
Installation instructions (Telnet):
-----------------------------------
*Note, this guide assumes SXR80, for SXS80 change the firmware file name as appropriate
1. Put firmware file openwrt-qualcommax-ipq807x-netgear_sxr80-initramfs-uImage.itb in root of TFTP server available at 192.168.1.10.
2. Enable telnet by going to http://[ip of device]/debug.htm and clicking on the tickbox 'Enable telnet'
3. Telnet into the device and login using the same username and password as the web interface:
4. Run the following command:
`fw_setenv bootcmd 'env default -a; saveenv; reset'`
5. Reboot the router, once the web interface is available again re-enable telnet via http://[ip of device]/debug.htm and telnet into the device.
6. Run the following command:
`fw_printenv`
It should look similar to the below:
```
baudrate=115200
bootargs=console=ttyMSM0,115200n8
bootcmd=mii write 0x0 0x0 0x800; sleep 1; nmrp; bootdni; boot_DNI_secureboot
bootdelay=2
ipaddr=192.168.1.1
netmask=255.255.255.0
serverip=192.168.1.10
soc_version_major=2
soc_version_minor=0
```
**If you see the message:**
`Warning: Bad CRC, using default environment`
**DO NOT CONTINUE, YOU WILL BRICK YOUR DEVICE**
7. Run the following command:
`fw_setenv originalboot 'mii write 0x0 0x0 0x800; sleep 1; nmrp; bootdni; boot_DNI_secureboot'`
(This should match what's in the bootcmd variable displayed in step 6)
8. Run the following commands:
```
fw_setenv wrttftp 'mii write 0x0 0x0 0x800; sleep 1; nmrp; if tftpboot openwrt-qualcommax-ipq807x-netgear_sxr80-initramfs-uImage.itb; then bootm; fi; bootdni; boot_DNI_secureboot'
fw_setenv wrtboot 'mii write 0x0 0x0 0x800; sleep 1; nmrp; nand read 0x40000000 0x1980000 0x06d00000; bootm 0x40000000'
fw_setenv bootcmd 'run wrttftp'
```
9. Ensure SXR/S device is attached via ethernet (LAN port) to the same ethernet segment as the TFTP server.
10. Reboot the device, it should reboot into OpenWrt and be available on 192.168.1.1
11. Once OpenWrt has booted, update the bootcmd using the following command:
`fw_setenv bootcmd 'run wrtboot'`
12. Flash the sysupgrade image
13. It should boot into OpenWrt
References to SXK80 GPL source:
https://www.downloads.netgear.com/files/GPL/SXK80-V3.2.0.108_gpl_src.tar.bz2.zip
Signed-off-by: Flole Systems <flole at flole.de>
Signed-off-by: Andrew Smith <gul.code at outlook.com>
Link: https://github.com/openwrt/openwrt/pull/14939
Signed-off-by: Robert Marko <robimarko at gmail.com>
---
.../boot/uboot-envtools/files/qualcommax_ipq807x | 6 +
package/firmware/ipq-wifi/Makefile | 2 +
target/linux/qualcommax/config-6.6 | 2 +
.../arch/arm64/boot/dts/qcom/ipq8074-sxk80.dtsi | 541 +++++++++++++++++++++
.../arch/arm64/boot/dts/qcom/ipq8074-sxr80.dts | 11 +
.../arch/arm64/boot/dts/qcom/ipq8074-sxs80.dts | 11 +
target/linux/qualcommax/image/ipq807x.mk | 27 +
.../ipq807x/base-files/etc/board.d/02_network | 4 +
.../etc/hotplug.d/firmware/11-ath11k-caldata | 2 +
.../etc/hotplug.d/ieee80211/11_fix_wifi_mac | 7 +
.../ipq807x/base-files/lib/upgrade/platform.sh | 2 +
11 files changed, 615 insertions(+)
diff --git a/package/boot/uboot-envtools/files/qualcommax_ipq807x b/package/boot/uboot-envtools/files/qualcommax_ipq807x
index 060871396b..4ae0de4e26 100644
--- a/package/boot/uboot-envtools/files/qualcommax_ipq807x
+++ b/package/boot/uboot-envtools/files/qualcommax_ipq807x
@@ -37,6 +37,12 @@ linksys,mx8500)
[ -n "$idx" ] && \
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x40000" "0x20000" "2"
;;
+netgear,sxr80|\
+netgear,sxs80)
+ idx="$(find_mtd_index 0:appsblenv)"
+ [ -n "$idx" ] && \
+ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x40000" "0x20000"
+ ;;
redmi,ax6|\
xiaomi,ax3600|\
xiaomi,ax9000)
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index 2ffd2e014c..fc578115f3 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -40,6 +40,7 @@ ALLWIFIBOARDS:= \
linksys_mx8500 \
netgear_lbr20 \
netgear_rax120v2 \
+ netgear_sxk80 \
netgear_wax214 \
netgear_wax218 \
netgear_wax620 \
@@ -161,6 +162,7 @@ $(eval $(call generate-ipq-wifi-package,linksys_mx5300,Linksys MX5300))
$(eval $(call generate-ipq-wifi-package,linksys_mx8500,Linksys MX8500))
$(eval $(call generate-ipq-wifi-package,netgear_lbr20,Netgear LBR20))
$(eval $(call generate-ipq-wifi-package,netgear_rax120v2,Netgear RAX120v2))
+$(eval $(call generate-ipq-wifi-package,netgear_sxk80,Netgear SXK80))
$(eval $(call generate-ipq-wifi-package,netgear_wax214,Netgear WAX214))
$(eval $(call generate-ipq-wifi-package,netgear_wax218,Netgear WAX218))
$(eval $(call generate-ipq-wifi-package,netgear_wax620,Netgear WAX620))
diff --git a/target/linux/qualcommax/config-6.6 b/target/linux/qualcommax/config-6.6
index 71b54041c5..1d05868caf 100644
--- a/target/linux/qualcommax/config-6.6
+++ b/target/linux/qualcommax/config-6.6
@@ -216,6 +216,7 @@ CONFIG_IRQ_FASTEOI_HIERARCHY_HANDLERS=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_IRQ_WORK=y
# CONFIG_KPSS_XCC is not set
+CONFIG_LEDS_TLC591XX=y
CONFIG_LIBFDT=y
CONFIG_LOCK_DEBUGGING_SUPPORT=y
CONFIG_LOCK_SPIN_ON_OWNER=y
@@ -441,6 +442,7 @@ CONFIG_RANDSTRUCT_NONE=y
CONFIG_RAS=y
CONFIG_RATIONAL=y
CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_MMIO=y
CONFIG_REGULATOR=y
# CONFIG_REGULATOR_CPR3 is not set
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxk80.dtsi b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxk80.dtsi
new file mode 100644
index 0000000000..7f8b813749
--- /dev/null
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxk80.dtsi
@@ -0,0 +1,541 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (c) 2021, Flole <flole at flole.de>
+ * Copyright (c) 2023, Andrew Smith <gul.code at outlook.com>
+ */
+
+/dts-v1/;
+
+#include "ipq8074.dtsi"
+#include "ipq8074-ess.dtsi"
+#include "ipq8074-hk-cpu.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+ aliases {
+ serial0 = &blsp1_uart5;
+ led-boot = &led_front_blue;
+ led-failsafe = &led_front_red;
+ led-running = &led_front_green;
+ led-upgrade = &led_front_white;
+ label-mac-device = &dp2;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ bootargs-append = " ubi.mtd=rootfs root=/dev/ubiblock0_0";
+ };
+
+ keys {
+ compatible = "gpio-keys";
+
+ reset {
+ label = "reset";
+ gpios = <&tlmm 54 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ };
+
+ wps {
+ label = "wps";
+ gpios = <&tlmm 57 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_WPS_BUTTON>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_front_blue: front-blue {
+ function = LED_FUNCTION_STATUS;
+ gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
+ color = <LED_COLOR_ID_BLUE>;
+ };
+
+ led_front_green: front-green {
+ function = LED_FUNCTION_STATUS;
+ gpios = <&tlmm 29 GPIO_ACTIVE_LOW>;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+
+ led_front_red: front-red {
+ function = LED_FUNCTION_STATUS;
+ gpios = <&tlmm 31 GPIO_ACTIVE_LOW>;
+ color = <LED_COLOR_ID_RED>;
+ };
+
+ led_front_white: front-white {
+ function = LED_FUNCTION_STATUS;
+ gpios = <&tlmm 26 GPIO_ACTIVE_LOW>;
+ color = <LED_COLOR_ID_WHITE>;
+ };
+
+ led_power_green: power-green {
+ function = LED_FUNCTION_POWER;
+ gpios = <&tlmm 21 GPIO_ACTIVE_LOW>;
+ color = <LED_COLOR_ID_GREEN>;
+ default-state = "on";
+ };
+
+ led_power_red: power-red {
+ function = LED_FUNCTION_POWER;
+ gpios = <&tlmm 22 GPIO_ACTIVE_LOW>;
+ color = <LED_COLOR_ID_RED>;
+ panic-indicator;
+ };
+ };
+};
+
+&tlmm {
+ mdio_pins: mdio-pins {
+ mdc {
+ pins = "gpio68";
+ function = "mdc";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+
+ mdio {
+ pins = "gpio69";
+ function = "mdio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+ };
+
+ leds_pins: leds_pinmux {
+ led_power_green {
+ pins = "gpio21";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+
+ led_power_red {
+ pins = "gpio22";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+
+ led_white {
+ pins = "gpio26";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+
+ led_green {
+ pins = "gpio29";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+
+ led_red {
+ pins = "gpio31";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+
+ led_blue {
+ pins = "gpio33";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+ };
+};
+
+&blsp1_uart5 {
+ status = "okay";
+};
+
+&blsp1_i2c2 {
+ pinctrl-0 = <&i2c_0_pins>;
+ pinctrl-names = "default";
+
+ status = "okay";
+
+ tlc59208f at 27 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "ti,tlc59108";
+ reg = <0x27>;
+
+ led at 0 {
+ label = "rgb:led0";
+ reg = <0>;
+ linux,default-trigger = "default-off";
+ };
+
+ led at 1 {
+ label = "rgb:led1";
+ reg = <1>;
+ linux,default-trigger = "default-off";
+ };
+
+ led at 2 {
+ label = "rgb:led2";
+ reg = <2>;
+ linux,default-trigger = "default-off";
+ };
+
+ led at 3 {
+ label = "rgb:led3";
+ reg = <3>;
+ linux,default-trigger = "default-off";
+ };
+ };
+};
+
+&prng {
+ status = "okay";
+};
+
+&cryptobam {
+ status = "okay";
+};
+
+&crypto {
+ status = "okay";
+};
+
+&qpic_bam {
+ status = "okay";
+};
+
+&qpic_nand {
+ status = "okay";
+
+ /*
+ * Bootloader will find the NAND DT node by the compatible and
+ * then "fixup" it by adding the partitions from the SMEM table
+ * using the legacy bindings thus making it impossible for us
+ * to change the partition table or utilize NVMEM for calibration.
+ * So add a dummy partitions node that bootloader will populate
+ * and set it as disabled so the kernel ignores it instead of
+ * printing warnings due to the broken way bootloader adds the
+ * partitions.
+ */
+ partitions {
+ status = "disabled";
+ };
+
+ nand at 0 {
+ reg = <0>;
+ nand-ecc-strength = <4>;
+ nand-ecc-step-size = <512>;
+ nand-bus-width = <8>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition at 0 {
+ label = "0:sbl1";
+ reg = <0x00 0x100000>;
+ read-only;
+ };
+
+ partition at 100000 {
+ label = "0:mibib";
+ reg = <0x100000 0x100000>;
+ read-only;
+ };
+
+ partition at 200000 {
+ label = "0:bootconfig";
+ reg = <0x200000 0x80000>;
+ read-only;
+ };
+
+ partition at 280000 {
+ label = "0:bootconfig_1";
+ reg = <0x280000 0x80000>;
+ read-only;
+ };
+
+ partition at 300000 {
+ label = "0:qsee";
+ reg = <0x300000 0x300000>;
+ read-only;
+ };
+
+ partition at 600000 {
+ label = "0:qsee_1";
+ reg = <0x600000 0x300000>;
+ read-only;
+ };
+
+ partition at 900000 {
+ label = "0:devcfg";
+ reg = <0x900000 0x80000>;
+ read-only;
+ };
+
+ partition at 980000 {
+ label = "0:devcfg_1";
+ reg = <0x980000 0x80000>;
+ read-only;
+ };
+
+ partition at a00000 {
+ label = "0:apdp";
+ reg = <0xa00000 0x80000>;
+ read-only;
+ };
+
+ partition at a80000 {
+ label = "0:apdp_1";
+ reg = <0xa80000 0x80000>;
+ read-only;
+ };
+
+ partition at b00000 {
+ label = "0:rpm";
+ reg = <0xb00000 0x80000>;
+ read-only;
+ };
+
+ partition at b80000 {
+ label = "0:rpm_1";
+ reg = <0xb80000 0x80000>;
+ read-only;
+ };
+
+ partition at c00000 {
+ label = "0:cdt";
+ reg = <0xc00000 0x80000>;
+ read-only;
+ };
+
+ partition at c80000 {
+ label = "0:cdt_1";
+ reg = <0xc80000 0x80000>;
+ read-only;
+ };
+
+ partition at d00000 {
+ label = "0:appsblenv";
+ reg = <0xd00000 0x80000>;
+ };
+
+ partition at d80000 {
+ label = "0:appsbl";
+ reg = <0xd80000 0x100000>;
+ read-only;
+ };
+
+ partition at e80000 {
+ label = "0:appsbl_1";
+ reg = <0xe80000 0x100000>;
+ read-only;
+ };
+
+ partition at f80000 {
+ label = "0:art";
+ reg = <0xf80000 0x80000>;
+ read-only;
+ };
+
+ partition at 1000000 {
+ label = "0:art.bak";
+ reg = <0x1000000 0x80000>;
+ read-only;
+ };
+
+ partition at 1080000 {
+ label = "config";
+ reg = <0x1080000 0x100000>;
+ };
+
+ partition at 1180000 {
+ label = "boarddata1";
+ reg = <0x1180000 0x100000>;
+
+ nvmem-layout {
+ compatible = "fixed-layout";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ macaddr_boarddata1_0: macaddr at 0 {
+ reg = <0x0 0x6>;
+ };
+
+ macaddr_boarddata1_6: macaddr at 6 {
+ reg = <0x6 0x6>;
+ };
+ };
+ };
+
+ partition at 1280000 {
+ label = "boarddata2";
+ reg = <0x1280000 0x100000>;
+ };
+
+ partition at 1380000 {
+ label = "pot";
+ reg = <0x1380000 0x100000>;
+ read-only;
+ };
+
+ partition at 1480000 {
+ label = "dnidata";
+ reg = <0x1480000 0x500000>;
+ read-only;
+ };
+
+ partition at 1980000 {
+ label = "kernel";
+ reg = <0x1980000 0x620000>;
+ };
+
+ partition at 1fa0000 {
+ label = "rootfs";
+ reg = <0x1fa0000 0x66e0000>;
+ };
+
+ partition at 8680000 {
+ label = "kernel2";
+ reg = <0x8680000 0x620000>;
+ read-only;
+ };
+
+ partition at 8ca0000 {
+ label = "rootfs2";
+ reg = <0x8ca0000 0x66e0000>;
+ read-only;
+ };
+ };
+ };
+};
+
+&mdio {
+ status = "okay";
+
+ pinctrl-0 = <&mdio_pins>;
+ pinctrl-names = "default";
+ reset-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;
+
+ ethernet-phy-package at 0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ compatible = "qcom,qca8075-package";
+
+ qca8075_1: ethernet-phy at 1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+ };
+
+ qca8075_2: ethernet-phy at 2 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <2>;
+ };
+
+ qca8075_3: ethernet-phy at 3 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <3>;
+ };
+
+ qca8075_4: ethernet-phy at 4 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <4>;
+ };
+ };
+
+ qca8081_28: ethernet-phy at 28 {
+ compatible = "ethernet-phy-id004d.d101";
+ reg = <28>;
+ reset-deassert-us = <10000>;
+ reset-gpios = <&tlmm 25 GPIO_ACTIVE_LOW>;
+ };
+};
+
+&switch {
+ status = "okay";
+
+ switch_lan_bmp = <(ESS_PORT2 | ESS_PORT3 | ESS_PORT4 | ESS_PORT5)>; /* lan port bitmap */
+ switch_wan_bmp = <ESS_PORT6>; /* wan port bitmap */
+ switch_mac_mode = <MAC_MODE_PSGMII>; /* mac mode for uniphy instance0*/
+ switch_mac_mode2 = <MAC_MODE_SGMII_PLUS>; /* mac mode for uniphy instance2*/
+
+ qcom,port_phyinfo {
+ port at 2 {
+ port_id = <2>;
+ phy_address = <1>;
+ };
+ port at 3 {
+ port_id = <3>;
+ phy_address = <2>;
+ };
+ port at 4 {
+ port_id = <4>;
+ phy_address = <3>;
+ };
+ port at 5 {
+ port_id = <5>;
+ phy_address = <4>;
+ };
+ port at 6 {
+ port_id = <6>;
+ phy_address = <28>;
+ port_mac_sel = "QGMAC_PORT";
+ };
+ };
+};
+
+&edma {
+ status = "okay";
+};
+
+&dp2 {
+ status = "okay";
+ phy-handle = <&qca8075_1>;
+ label = "lan2";
+ nvmem-cells = <&macaddr_boarddata1_0>;
+ nvmem-cell-names = "mac-address";
+};
+
+&dp3 {
+ status = "okay";
+ phy-handle = <&qca8075_2>;
+ label = "lan3";
+ nvmem-cells = <&macaddr_boarddata1_0>;
+ nvmem-cell-names = "mac-address";
+};
+
+&dp4 {
+ status = "okay";
+ phy-handle = <&qca8075_3>;
+ label = "lan4";
+ nvmem-cells = <&macaddr_boarddata1_0>;
+ nvmem-cell-names = "mac-address";
+};
+
+&dp5 {
+ status = "okay";
+ phy-handle = <&qca8075_4>;
+ label = "lan5";
+ nvmem-cells = <&macaddr_boarddata1_0>;
+ nvmem-cell-names = "mac-address";
+};
+
+&dp6 {
+ status = "okay";
+ phy-handle = <&qca8081_28>;
+ label = "wan";
+ nvmem-cells = <&macaddr_boarddata1_6>;
+ nvmem-cell-names = "mac-address";
+};
+
+&wifi {
+ status = "okay";
+
+ qcom,ath11k-calibration-variant = "Netgear-SXK80";
+};
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxr80.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxr80.dts
new file mode 100644
index 0000000000..d90e75da30
--- /dev/null
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxr80.dts
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2021, Flole <flole at flole.de> */
+
+/dts-v1/;
+
+#include "ipq8074-sxk80.dtsi"
+
+/ {
+ model = "Netgear SXR80";
+ compatible = "netgear,sxr80", "qcom,ipq8074";
+};
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxs80.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxs80.dts
new file mode 100644
index 0000000000..0d7240cf07
--- /dev/null
+++ b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxs80.dts
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2021, Flole <flole at flole.de> */
+
+/dts-v1/;
+
+#include "ipq8074-sxk80.dtsi"
+
+/ {
+ model = "Netgear SXS80";
+ compatible = "netgear,sxs80", "qcom,ipq8074";
+};
diff --git a/target/linux/qualcommax/image/ipq807x.mk b/target/linux/qualcommax/image/ipq807x.mk
index 007c73555e..b305c9dbaa 100644
--- a/target/linux/qualcommax/image/ipq807x.mk
+++ b/target/linux/qualcommax/image/ipq807x.mk
@@ -172,6 +172,33 @@ define Device/netgear_rax120v2
endef
TARGET_DEVICES += netgear_rax120v2
+define Device/netgear_sxk80
+ $(call Device/FitImage)
+ $(call Device/UbiFit)
+ DEVICE_PACKAGES += ipq-wifi-netgear_sxk80
+ DEVICE_VENDOR := Netgear
+ BLOCKSIZE := 128k
+ PAGESIZE := 2048
+ DEVICE_DTS_CONFIG := config at hk01
+ SOC := ipq8074
+ KERNEL_SIZE := 6272k
+ NETGEAR_HW_ID := 29766265+0+512+1024+4x4+4x4+4x4
+endef
+
+define Device/netgear_sxr80
+ $(call Device/netgear_sxk80)
+ DEVICE_MODEL := SXR80
+ NETGEAR_BOARD_ID := SXR80
+endef
+TARGET_DEVICES += netgear_sxr80
+
+define Device/netgear_sxs80
+ $(call Device/netgear_sxk80)
+ DEVICE_MODEL := SXS80
+ NETGEAR_BOARD_ID := SXS80
+endef
+TARGET_DEVICES += netgear_sxs80
+
define Device/netgear_wax218
$(call Device/FitImage)
$(call Device/UbiFit)
diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network
index 380588bbab..0bf224f380 100644
--- a/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network
+++ b/target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network
@@ -43,6 +43,10 @@ ipq807x_setup_interfaces()
netgear,rax120v2)
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 lan5" "wan"
;;
+ netgear,sxr80|\
+ netgear,sxs80)
+ ucidef_set_interfaces_lan_wan "lan2 lan3 lan4 lan5" "wan"
+ ;;
netgear,wax218|\
netgear,wax620)
ucidef_set_interface_lan "lan" "dhcp"
diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
index 018e828859..a116d884e2 100644
--- a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
+++ b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
@@ -17,6 +17,8 @@ case "$FIRMWARE" in
edgecore,eap102|\
edimax,cax1800|\
linksys,mx5300|\
+ netgear,sxr80|\
+ netgear,sxs80|\
netgear,wax218|\
netgear,wax620|\
netgear,wax630|\
diff --git a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
index 17284a0d9e..9552536ade 100644
--- a/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
+++ b/target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
@@ -23,6 +23,13 @@ case "$board" in
[ "$PHYNBR" = "0" ] && macaddr_add $(get_mac_label) 2 > /sys${DEVPATH}/macaddress
[ "$PHYNBR" = "1" ] && macaddr_add $(get_mac_label) 3 > /sys${DEVPATH}/macaddress
;;
+ netgear,sxr80|\
+ netgear,sxs80)
+ [ "$PHYNBR" = "0" ] && mtd_get_mac_binary boarddata1 0x0c > /sys${DEVPATH}/macaddress
+ #boarddata1 doesn't have a MAC for the 2G interface
+ [ "$PHYNBR" = "1" ] && macaddr_setbit_la $(get_mac_label) > /sys${DEVPATH}/macaddress
+ [ "$PHYNBR" = "2" ] && mtd_get_mac_binary boarddata1 0x12 > /sys${DEVPATH}/macaddress
+ ;;
zbtlink,zbt-z800ax)
[ "$PHYNBR" = "0" ] && macaddr_add $(get_mac_label) -1 > /sys${DEVPATH}/macaddress
[ "$PHYNBR" = "1" ] && macaddr_add $(get_mac_label) -2 > /sys${DEVPATH}/macaddress
diff --git a/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh
index b99657fb4c..2008334213 100644
--- a/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh
+++ b/target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh
@@ -49,6 +49,8 @@ platform_do_upgrade() {
dynalink,dl-wrx36|\
edimax,cax1800|\
netgear,rax120v2|\
+ netgear,sxr80|\
+ netgear,sxs80|\
netgear,wax218|\
netgear,wax620|\
netgear,wax630|\
More information about the lede-commits
mailing list