ramips: add support for Netgear R6350
authorNOGUCHI Hiroshi <drvlabo@gmail.com>
Fri, 24 Aug 2018 01:36:13 +0000 (10:36 +0900)
committerMathias Kresin <dev@kresin.me>
Sun, 16 Dec 2018 07:41:41 +0000 (08:41 +0100)
Netgear R6350 is a wireless router, aka Netgear AC1750.

Specification:
- SoC: Mediatek MT7621AT (2 CPU cores, 4 threads)
- RAM: 128MiB (Nanya NT5CC64M16GP-DI)
- ROM: 128MiB NAND Flash (Macronix MX30LF1G18AC-TI)
- Wireless:
   for 11b/g/n (upto 300Mbps): MT7603
   for 11a/ac  (upto 1450Mbps) : MT7615, is not avaliable now
- Ethernet LAN speed: up to 1000Mbps
- Ethernet LAN ports: 4
- Ethernet WAN speed: up to 1000Mbps
- Ethernet WAN ports: 1
- USB ports: 1 (USB 2.0)
- LEDs: 4 (all can be controlled by SoC's GPIO)
- buttons: 2
- serial ports: unknown

Installation through telnet:
  - Copy kernel.bin and rootfs.bin to a USB flash disk,
    plug to usb port on the router.
link: http://192.168.1.1/setup.cgi?todo=debug
    (login if required, default: admin password)
  - You will see "Debug Enabled!"
  - Telnet 192.168.1.1 and login with "root"
  - ls /mnt/shares/ to find out path of your USB disk.
    'myUdisk' for example.
  - cd /mnt/shares/myUdisk
  - mtd_write write rootfs.bin Rootfs
  - mtd_write write kernel.bin Kernel
  - reboot

recovery when bricked:
  nmrpflash can be used to recover to the netgear firmware
  if a broken image was flashed.

The SC_PART_MAP partition suggests that an on flash partition table
exists. After implementing a partition parser/builder for the sercom
partition format, the definitions don't match the flash layout used by
the stock firmware.

It either means the partition format has not yet been completely
understood or it isn't used by the stock firmware. For now, use fixed
partitions instead.

Signed-off-by: NOGUCHI Hiroshi <drvlabo@gmail.com>
[apply latest ramips changes and document the on flash partition map
issues]
Signed-off-by: Mathias Kresin <dev@kresin.me>
target/linux/ramips/base-files/etc/board.d/01_leds
target/linux/ramips/base-files/etc/board.d/02_network
target/linux/ramips/base-files/lib/upgrade/platform.sh
target/linux/ramips/dts/R6350.dts [new file with mode: 0644]
target/linux/ramips/image/mt7621.mk

index 0fca40e..400183a 100755 (executable)
@@ -266,7 +266,8 @@ px-4885-4M|\
 px-4885-8M)
        set_wifi_led "px-4885:orange:wifi"
        ;;
-r6220)
+r6220|\
+netgear,r6350)
        ucidef_set_led_netdev "wan" "wan" "$boardname:green:wan" eth0.2
        set_wifi_led "$boardname:green:wifi"
        ;;
index eed8d50..4cf6159 100755 (executable)
@@ -113,6 +113,7 @@ ramips_setup_interfaces()
        psg1208|\
        psg1218a|\
        r6220|\
+       netgear,r6350|\
        rt-n12p|\
        sap-g3200u3|\
        sk-wb8|\
@@ -561,7 +562,8 @@ ramips_setup_macs()
                lan_mac=$(mtd_get_mac_binary factory 40)
                wan_mac=$(mtd_get_mac_binary factory 46)
                ;;
-       r6220)
+       r6220|\
+       netgear,r6350)
                wan_mac=$(mtd_get_mac_binary factory 4)
                lan_mac=$(macaddr_add "$wan_mac" 1)
                ;;
index 2fad950..97fbaef 100755 (executable)
@@ -38,6 +38,7 @@ platform_do_upgrade() {
        hc5962|\
        mir3g|\
        r6220|\
+       netgear,r6350|\
        ubnt-erx|\
        ubnt-erx-sfp)
                nand_do_upgrade "$ARGV"
diff --git a/target/linux/ramips/dts/R6350.dts b/target/linux/ramips/dts/R6350.dts
new file mode 100644 (file)
index 0000000..cdf9a72
--- /dev/null
@@ -0,0 +1,156 @@
+/dts-v1/;
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       compatible = "netgear,r6350", "mediatek,mt7621-soc";
+       model = "Netgear R6350";
+
+       aliases {
+               led-boot = &led_power;
+               led-failsafe = &led_power;
+               led-running = &led_power;
+               led-upgrade = &led_power;
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x8000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,57600";
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               led_power: power {
+                       label = "r6350:green:power";
+                       gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
+               };
+
+               usb {
+                       label = "r6350:green:usb";
+                       gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
+                       trigger-sources = <&xhci_ehci_port1>, <&ehci_port2>;
+                       linux,default-trigger = "usbport";
+               };
+
+               internet {
+                       label = "r6350:green:wan";
+                       gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi {
+                       label = "r6350:green:wifi";
+                       gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio-keys-polled {
+               compatible = "gpio-keys-polled";
+               poll-interval = <20>;
+
+               wps {
+                       label = "wps";
+                       gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WPS_BUTTON>;
+               };
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+
+       gpio_export {
+               compatible = "gpio-export";
+               #size-cells = <0>;
+
+               usbpower {
+                       gpio-export,name = "usbpower";
+                       gpio-export,output = <1>;
+                       gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&nand {
+       status = "okay";
+
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "u-boot";
+                       reg = <0x0 0x100000>;
+                       read-only;
+               };
+
+               partition@100000 {
+                       label = "SC PART_MAP";
+                       reg = <0x100000 0x100000>;
+                       read-only;
+               };
+
+               partition@200000 {
+                       label = "kernel";
+                       reg = <0x200000 0x400000>;
+               };
+
+               partition@600000 {
+                       label = "ubi";
+                       reg = <0x600000 0x2800000>;
+               };
+
+               partition@2e00000 {
+                       label = "reserved0";
+                       reg = <0x2e00000 0x1800000>;
+                       read-only;
+               };
+
+               factory: partition@4600000 {
+                       label = "factory";
+                       reg = <0x4600000 0x200000>;
+                       read-only;
+               };
+
+               partition@4800000 {
+                       label = "reserved1";
+                       reg = <0x4800000 0x3800000>;
+                       read-only;
+               };
+       };
+};
+
+&pcie {
+       status = "okay";
+};
+
+&pcie1 {
+       wifi@0,0 {
+               reg = <0x0 0 0 0 0>;
+               mediatek,mtd-eeprom = <&factory 0x0>;
+               ieee80211-freq-limit = <2400000 2500000>;
+       };
+};
+
+&ethernet {
+       mtd-mac-address = <&factory 0x4>;
+};
+
+&pinctrl {
+       state_default: pinctrl0 {
+               gpio {
+                       ralink,group = "uart3", "uart2", "jtag", "wdt";
+                       ralink,function = "gpio";
+               };
+       };
+};
index 92bdbcf..d4c9a10 100644 (file)
@@ -297,6 +297,23 @@ define Device/r6220
 endef
 TARGET_DEVICES += r6220
 
+define Device/netgear_r6350
+  DTS := R6350
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  KERNEL_SIZE := 4096k
+  IMAGE_SIZE := 40960k
+  UBINIZE_OPTS := -E 5
+  IMAGES += kernel.bin rootfs.bin
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+  IMAGE/kernel.bin := append-kernel
+  IMAGE/rootfs.bin := append-ubi | check-size $$$$(IMAGE_SIZE)
+  DEVICE_TITLE := Netgear R6350
+  DEVICE_PACKAGES := \
+       kmod-mt7603 kmod-usb3 kmod-usb-ledtrig-usbport wpad-basic
+endef
+TARGET_DEVICES += netgear_r6350
+
 define Device/rb750gr3
   DTS := RB750Gr3
   IMAGE_SIZE := $(ralink_default_fw_size_16M)