qualcommax: ipq807x support Netgear Orbi Pro SXK80
authorAndrew Smith <gul.code@outlook.com>
Mon, 21 Aug 2023 08:48:45 +0000 (09:48 +0100)
committerRobert Marko <robimarko@gmail.com>
Wed, 22 May 2024 12:51:36 +0000 (14:51 +0200)
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@flole.de>
Signed-off-by: Andrew Smith <gul.code@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/14939
Signed-off-by: Robert Marko <robimarko@gmail.com>
package/boot/uboot-envtools/files/qualcommax_ipq807x
package/firmware/ipq-wifi/Makefile
target/linux/qualcommax/config-6.6
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxk80.dtsi [new file with mode: 0644]
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxr80.dts [new file with mode: 0644]
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq8074-sxs80.dts [new file with mode: 0644]
target/linux/qualcommax/image/ipq807x.mk
target/linux/qualcommax/ipq807x/base-files/etc/board.d/02_network
target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
target/linux/qualcommax/ipq807x/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
target/linux/qualcommax/ipq807x/base-files/lib/upgrade/platform.sh

index 060871396b4ea9c4ee261b67ff29c96955317b35..4ae0de4e26bee0b3d5078ba0ac4a03c0b52c4881 100644 (file)
@@ -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)
index 2ffd2e014c7fd117e130e1ee58a97ebca7937c47..fc578115f34cda7ef3b2b674951e99e82baa82f2 100644 (file)
@@ -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))
index 71b54041c50e59ce3e5c61f0d2230af2e132ffe2..1d05868cafd291094499672a658a7e6b7755ab6a 100644 (file)
@@ -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 (file)
index 0000000..7f8b813
--- /dev/null
@@ -0,0 +1,541 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (c) 2021, Flole <flole@flole.de>
+ * Copyright (c) 2023, Andrew Smith <gul.code@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@27 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "ti,tlc59108";
+               reg = <0x27>;
+               
+               led@0 {
+                       label = "rgb:led0";
+                       reg = <0>;
+                       linux,default-trigger = "default-off";
+               };
+
+               led@1 {
+                       label = "rgb:led1";
+                       reg = <1>;
+                       linux,default-trigger = "default-off";
+               };
+
+               led@2 {
+                       label = "rgb:led2";
+                       reg = <2>;
+                       linux,default-trigger = "default-off";
+               };
+
+               led@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@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@0 {
+                               label = "0:sbl1";
+                               reg = <0x00 0x100000>;
+                               read-only;
+                       };
+
+                       partition@100000 {
+                               label = "0:mibib";
+                               reg = <0x100000 0x100000>;
+                               read-only;
+                       };
+
+                       partition@200000 {
+                               label = "0:bootconfig";
+                               reg = <0x200000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@280000 {
+                               label = "0:bootconfig_1";
+                               reg = <0x280000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@300000 {
+                               label = "0:qsee";
+                               reg = <0x300000 0x300000>;
+                               read-only;
+                       };
+
+                       partition@600000 {
+                               label = "0:qsee_1";
+                               reg = <0x600000 0x300000>;
+                               read-only;
+                       };
+
+                       partition@900000 {
+                               label = "0:devcfg";
+                               reg = <0x900000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@980000 {
+                               label = "0:devcfg_1";
+                               reg = <0x980000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@a00000 {
+                               label = "0:apdp";
+                               reg = <0xa00000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@a80000 {
+                               label = "0:apdp_1";
+                               reg = <0xa80000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@b00000 {
+                               label = "0:rpm";
+                               reg = <0xb00000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@b80000 {
+                               label = "0:rpm_1";
+                               reg = <0xb80000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@c00000 {
+                               label = "0:cdt";
+                               reg = <0xc00000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@c80000 {
+                               label = "0:cdt_1";
+                               reg = <0xc80000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@d00000 {
+                               label = "0:appsblenv";
+                               reg = <0xd00000 0x80000>;
+                       };
+
+                       partition@d80000 {
+                               label = "0:appsbl";
+                               reg = <0xd80000 0x100000>;
+                               read-only;
+                       };
+
+                       partition@e80000 {
+                               label = "0:appsbl_1";
+                               reg = <0xe80000 0x100000>;
+                               read-only;
+                       };
+
+                       partition@f80000 {
+                               label = "0:art";
+                               reg = <0xf80000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@1000000 {
+                               label = "0:art.bak";
+                               reg = <0x1000000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@1080000 {
+                               label = "config";
+                               reg = <0x1080000 0x100000>;
+                       };
+
+                       partition@1180000 {
+                               label = "boarddata1";
+                               reg = <0x1180000 0x100000>;
+
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       macaddr_boarddata1_0: macaddr@0 {
+                                               reg = <0x0 0x6>;
+                                       };
+
+                                       macaddr_boarddata1_6: macaddr@6 {
+                                               reg = <0x6 0x6>;
+                                       };
+                               };
+                       };
+
+                       partition@1280000 {
+                               label = "boarddata2";
+                               reg = <0x1280000 0x100000>;
+                       };
+
+                       partition@1380000 {
+                               label = "pot";
+                               reg = <0x1380000 0x100000>;
+                               read-only;
+                       };
+
+                       partition@1480000 {
+                               label = "dnidata";
+                               reg = <0x1480000 0x500000>;
+                               read-only;
+                       };
+
+                       partition@1980000 {
+                               label = "kernel";
+                               reg = <0x1980000 0x620000>;
+                       };
+
+                       partition@1fa0000 {
+                               label = "rootfs";
+                               reg = <0x1fa0000 0x66e0000>;
+                       };
+
+                       partition@8680000 {
+                               label = "kernel2";
+                               reg = <0x8680000 0x620000>;
+                               read-only;
+                       };
+
+                       partition@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@0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0>;
+
+               compatible = "qcom,qca8075-package";
+
+               qca8075_1: ethernet-phy@1 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <1>;
+               };
+
+               qca8075_2: ethernet-phy@2 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <2>;
+               };
+
+               qca8075_3: ethernet-phy@3 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <3>;
+               };
+
+               qca8075_4: ethernet-phy@4 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <4>;
+               };
+       };
+
+       qca8081_28: ethernet-phy@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@2 {
+                       port_id = <2>;
+                       phy_address = <1>;
+               };
+               port@3 {
+                       port_id = <3>;
+                       phy_address = <2>;
+               };
+               port@4 {
+                       port_id = <4>;
+                       phy_address = <3>;
+               };
+               port@5 {
+                       port_id = <5>;
+                       phy_address = <4>;
+               };
+               port@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 (file)
index 0000000..d90e75d
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2021, Flole <flole@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 (file)
index 0000000..0d7240c
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2021, Flole <flole@flole.de> */
+
+/dts-v1/;
+
+#include "ipq8074-sxk80.dtsi"
+
+/ {
+       model = "Netgear SXS80";
+       compatible = "netgear,sxs80", "qcom,ipq8074";
+};
index 007c73555e2254926b650358bda45b694c32dc0e..b305c9dbaaa26f1feec275095d0cfc7351298be8 100644 (file)
@@ -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@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)
index 380588bbab14d87e82552a1f1093c7fce487a481..0bf224f380e8753c04d63fcf46cb1c92c0d35cb6 100644 (file)
@@ -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"
index 018e8288590b96ad829134f3c90cebbf89719b1c..a116d884e2b53653dbd01c673aeb830ded0f1b8b 100644 (file)
@@ -17,6 +17,8 @@ case "$FIRMWARE" in
        edgecore,eap102|\
        edimax,cax1800|\
        linksys,mx5300|\
+       netgear,sxr80|\
+       netgear,sxs80|\
        netgear,wax218|\
        netgear,wax620|\
        netgear,wax630|\
index 17284a0d9ea82ba9108ef30f8f741cc0bb2b23a1..9552536ade6d68b117f97788b5fce27c293ac0f5 100644 (file)
@@ -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
index b99657fb4ccbd39b36b4568fee2dbd6daee96fdd..200833421365d2d376f0929e6190a99ee2743637 100644 (file)
@@ -49,6 +49,8 @@ platform_do_upgrade() {
        dynalink,dl-wrx36|\
        edimax,cax1800|\
        netgear,rax120v2|\
+       netgear,sxr80|\
+       netgear,sxs80|\
        netgear,wax218|\
        netgear,wax620|\
        netgear,wax630|\