ath79: add support for Netgear R6100
authorPiotr Dymacz <pepe2k@gmail.com>
Fri, 17 Sep 2021 12:52:04 +0000 (14:52 +0200)
committerPiotr Dymacz <pepe2k@gmail.com>
Wed, 3 Nov 2021 11:45:40 +0000 (12:45 +0100)
Netgear R6100 is a dual-band Wi-Fi 5 (AC1200) router based on Qualcomm
Atheros (AR9344 + QCA9882) platform. Support for this device was first
introduced in 15f6f67d18 (ar71xx). FCC ID: PY312400225.

Specifications:

- Atheros AR9344 (560 MHz)
- 128 MB of RAM (DDR2)
- 128 MB of flash (parallel NAND)
- 2T2R 2.4 GHz Wi-Fi (AR9344)
- 2T2R 5 GHz Wi-Fi (QCA9882)
- 5x 10/100 Mbps Ethernet (AR9344)
- 4x internal antenna
- 1x USB 2.0 (GPIO-controlled power)
- 6x LED, 3x button (reset, Wi-Fi, WPS)
- UART (4-pin, 2.54 mm pitch) header on PCB
- 1x mechanical power switch
- DC jack for main power input (12 V)

WARNING: sysupgrade from older stable releases is not possible, fresh
installation (via vendor's GUI or TFTP based recovery) is required.
Reason for that is increased kernel partition size.

Installation:

Use the 'factory' image under vendor's GUI or via TFTP U-Boot recovery.
You can use the 'nmrpflash' tool at a boot time, before kernel is loaded
or start it manually by pressing the 'reset' button for ~20 seconds from
powering up the device (U-Boot will start TFTP server on 192.168.1.1,
use TFTP client to send the image).

Signed-off-by: Enrico Mioso <mrkiko.rs@gmail.com>
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
Signed-off-by: Michael Pratt <mcpratt@pm.me>
Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
target/linux/ath79/dts/ar9344_netgear_r6100.dts [new file with mode: 0644]
target/linux/ath79/image/nand.mk
target/linux/ath79/nand/base-files/etc/board.d/01_leds
target/linux/ath79/nand/base-files/etc/board.d/02_network
target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/11-ath10k-caldata

diff --git a/target/linux/ath79/dts/ar9344_netgear_r6100.dts b/target/linux/ath79/dts/ar9344_netgear_r6100.dts
new file mode 100644 (file)
index 0000000..80951d6
--- /dev/null
@@ -0,0 +1,231 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "ar9344.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Netgear R6100";
+       compatible = "netgear,r6100", "qca,ar9344";
+
+       aliases {
+               label-mac-device = &eth0;
+               led-boot = &led_power_green;
+               led-failsafe = &led_power_amber;
+               led-running = &led_power_green;
+               led-upgrade = &led_power_green;
+       };
+
+       gpio-export {
+               compatible = "gpio-export";
+               #size-cells = <0>;
+
+               usb-power {
+                       gpio-export,name = "usb-power";
+                       gpio-export,output = <1>;
+                       gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+
+               rfkill {
+                       label = "rfkill";
+                       linux,code = <KEY_RFKILL>;
+                       gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+
+               wps {
+                       label = "wps";
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_power_amber: power_amber {
+                       label = "amber:power";
+                       gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+               };
+
+               led_power_green: power_green {
+                       label = "green:power";
+                       gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+               };
+
+               usb {
+                       label = "blue:usb";
+                       gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+                       trigger-sources = <&hub_port>;
+                       linux,default-trigger = "usbport";
+               };
+
+               wan_amber {
+                       label = "amber:wan";
+                       gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+               };
+
+               wan_green {
+                       label = "green:wan";
+                       gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+               };
+
+               wlan {
+                       label = "blue:wlan";
+                       gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy1tpt";
+               };
+       };
+};
+
+&eth0 {
+       status = "okay";
+
+       phy-handle = <&swphy0>;
+
+       nvmem-cells = <&macaddr_caldata_6>;
+       nvmem-cell-names = "mac-address";
+
+       gmac-config {
+               device = <&gmac>;
+               switch-phy-swap = <1>;
+       };
+};
+
+&eth1 {
+       status = "okay";
+
+       nvmem-cells = <&macaddr_caldata_0>;
+       nvmem-cell-names = "mac-address";
+};
+
+&nand {
+       status = "okay";
+
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "u-boot";
+                       reg = <0x0000000 0x0020000>;
+                       read-only;
+               };
+
+               caldata: partition@20000 {
+                       label = "caldata";
+                       reg = <0x0020000 0x0040000>;
+                       read-only;
+               };
+
+               partition@60000 {
+                       label = "caldata-backup";
+                       reg = <0x0060000 0x0040000>;
+                       read-only;
+               };
+
+               partition@a0000 {
+                       label = "config";
+                       reg = <0x00a0000 0x0080000>;
+                       read-only;
+               };
+
+               partition@120000 {
+                       label = "pot";
+                       reg = <0x0120000 0x0080000>;
+                       read-only;
+               };
+
+               partition@1a0000 {
+                       label = "kernel";
+                       reg = <0x01a0000 0x0400000>;
+               };
+
+               partition@5a0000 {
+                       label = "ubi";
+                       reg = <0x05a0000 0x7560000>;
+               };
+
+               partition@7b00000 {
+                       label = "language";
+                       reg = <0x7b00000 0x0200000>;
+                       read-only;
+               };
+
+               partition@7d00000 {
+                       label = "traffic_meter";
+                       reg = <0x7d00000 0x0300000>;
+                       read-only;
+               };
+       };
+};
+
+&pcie {
+       status = "okay";
+
+       wifi@0,0,0 {
+               compatible = "qcom,ath10k";
+               reg = <0x0000 0 0 0 0>;
+
+               nvmem-cells = <&macaddr_caldata_c>;
+               nvmem-cell-names = "mac-address";
+       };
+};
+
+&ref {
+       clock-frequency = <40000000>;
+};
+
+&usb {
+       status = "okay";
+
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       hub_port: port@1 {
+               reg = <1>;
+               #trigger-source-cells = <0>;
+       };
+};
+
+&usb_phy {
+       status = "okay";
+};
+
+&wmac {
+       status = "okay";
+
+       mtd-cal-data = <&caldata 0x1000>;
+};
+
+&caldata {
+       compatible = "nvmem-cells";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       macaddr_caldata_0: macaddr@0 {
+               reg = <0x0 0x6>;
+       };
+
+       macaddr_caldata_6: macaddr@6 {
+               reg = <0x6 0x6>;
+       };
+
+       macaddr_caldata_c: macaddr@c {
+               reg = <0xc 0x6>;
+       };
+};
index b34e796ac385c785839fb6826fe3c6f6e5230881..91fd7ec301479349550091e8ae88d090f590d954 100644 (file)
@@ -215,6 +215,17 @@ define Device/netgear_ath79_nand
   UBINIZE_OPTS := -E 5
 endef
 
+define Device/netgear_r6100
+  SOC := ar9344
+  DEVICE_MODEL := R6100
+  UIMAGE_MAGIC := 0x36303030
+  NETGEAR_BOARD_ID := R6100
+  NETGEAR_HW_ID := 29764434+0+128+128+2x2+2x2
+  $(Device/netgear_ath79_nand)
+  DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct
+endef
+TARGET_DEVICES += netgear_r6100
+
 define Device/netgear_wndr3700-v4
   SOC := ar9344
   DEVICE_MODEL := WNDR3700
index f694d07e9c4d9ebdff29fca20a356101a06fb1c7..dc7d84df95792dd2dcd929c1575cd4a4bacad09b 100644 (file)
@@ -14,6 +14,9 @@ glinet,gl-ar300m-nand|\
 glinet,gl-ar300m-nor)
        ucidef_set_led_netdev "lan" "LAN" "green:lan" "eth0"
        ;;
+netgear,r6100)
+       ucidef_set_led_netdev "wan-green" "WAN (green)" "green:wan" "eth1"
+       ;;
 netgear,wndr3700-v4|\
 netgear,wndr4300|\
 netgear,wndr4300sw|\
index dbb9e6815013dd6b4a350d4d5744d1a274b66f7f..76cdab18f831a9a8052e1afac0c8a68acebe33b6 100644 (file)
@@ -25,6 +25,11 @@ ath79_setup_interfaces()
                ucidef_add_switch "switch0" \
                        "0@eth0" "2:lan:2" "3:lan:1" "1:wan"
                ;;
+       netgear,r6100)
+               ucidef_set_interface_wan "eth1"
+               ucidef_add_switch "switch0" \
+                       "0@eth0" "1:lan:4" "2:lan:1" "3:lan:2" "4:lan:3"
+               ;;
        netgear,wndr3700-v4|\
        netgear,wndr4300|\
        netgear,wndr4300sw|\
index 71dfb161e46540e21e2649e1a8458b1051f71028..03e225ddde314cf327f2f1b28a0dca2312c8a578 100644 (file)
@@ -23,6 +23,9 @@ case "$FIRMWARE" in
                caldata_extract "art" 0x5000 0x844
                ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary art 0x0) 1)
                ;;
+       netgear,r6100)
+               caldata_extract "caldata" 0x5000 0x844
+               ;;
        zyxel,nbg6716)
                caldata_extract "art" 0x5000 0x844
                ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) 1)