From 8aef741289b979345621eaa441c7f5832b71163f Mon Sep 17 00:00:00 2001
From: Stijn Segers <foss@volatilesystems.org>
Date: Sat, 20 Feb 2021 23:52:56 +0100
Subject: [PATCH v5] ath79: port Netgear WNR2000 v1 from ar71xx

Signed-off-by: Stijn Segers <foss@volatilesystems.org>
---
 .../ath79/dts/ar9132_netgear_wnr2000-v1.dts   | 174 ++++++++++++++++++
 target/linux/ath79/image/tiny-netgear.mk      |  16 ++
 .../ath79/tiny/base-files/etc/board.d/01_leds |   7 +
 3 files changed, 197 insertions(+)
 create mode 100644 target/linux/ath79/dts/ar9132_netgear_wnr2000-v1.dts

diff --git a/target/linux/ath79/dts/ar9132_netgear_wnr2000-v1.dts b/target/linux/ath79/dts/ar9132_netgear_wnr2000-v1.dts
new file mode 100644
index 0000000000..d347f66550
--- /dev/null
+++ b/target/linux/ath79/dts/ar9132_netgear_wnr2000-v1.dts
@@ -0,0 +1,174 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "ar9132.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/mtd/partitions/uimage.h>
+
+/ {
+	compatible = "netgear,wnr2000-v1", "qca,ar9132";
+	model = "Netgear WNR2000 v1";
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	// LED-kleuren zijn OK
+	// label-mac-device ook normaal gezien (eigenaar laten dubbelchecken)
+	aliases {
+		led-boot = &led_power_amber;
+		led-failsafe = &led_power_amber;
+		led-running = &led_power_green;
+		led-upgrade = &led_power_amber;
+		label-mac-device = &eth0;
+	};
+
+	// Knoppen zijn OK
+	keys {
+		compatible = "gpio-keys";
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+	};
+
+	// LED's zijn OK. Er zijn er meer fysiek aanwezig, maar ik vermoed
+	// dat ze niet allemaal via GPIO te controleren zijn?
+	leds {
+		compatible = "gpio-leds";
+
+		// Onduidelijk of onderstaande code nodig is.
+		// pinctrl-names = "default";
+		// pinctrl-0 = <&jtag_disable_pins &switch_led_disable_pins &clks_disable_pins>;
+
+		led_power_green: power_green {
+			label = "green:power";
+			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+		};
+
+		led_power_amber: power_amber {
+			label = "amber:power";
+			gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan {
+			label = "blue:wlan";
+			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+
+		wps {
+			label = "green:wps";
+			gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+// Onderstaande node is OK (layout, SPI-snelheid)
+&spi {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <25000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "u-boot";
+				reg = <0x0 0x40000>;
+				read-only;
+			};
+
+			partition@40000 {
+				label = "u-boot-env";
+				reg = <0x40000 0x10000>;
+			};
+
+			partition@50000 {
+				label = "firmware";
+				reg = <0x50000 0x3a0000>;
+				compatible = "openwrt,uimage", "denx,uimage";
+				openwrt,ih-magic = <0x32303031>;
+				openwrt,ih-type = <IH_TYPE_FILESYSTEM>;
+			};
+
+			art: partition@3f0000 {
+				label = "art";
+				reg = <0x3f0000 0x10000>;
+				read-only;
+			};
+		};
+	};
+};
+
+// Is OK
+&eth0 {
+	status = "okay";
+
+	phy-mode = "rmii";
+	mtd-mac-address = <&art 0x1000>;
+
+	fixed-link {
+		speed = <100>;
+		full-duplex;
+	};
+};
+
+// Wordt niet gedetecteerd. Copy/pasta van ath79.dtsi, te overrulen met wat er veranderd dient.
+&eth1 {
+	status = "okay";
+
+	compatible = "qca,ar9130-eth", "syscon";
+	reg = <0x1a000000 0x200
+		0x18070004 0x4>;
+
+	phy-mode = "rmii";
+	// Onderstaande komt van https://github.com/openwrt/openwrt/pull/3138#discussion_r449726577
+	phy-handle = <&phy1>;
+	// Onderstaande *kan* nodig zijn. Gekopieerd van DTS Sandberg.
+	// resets = <&rst 13>;
+	reset-names = "mac";
+	qca,mac-idx = <1>;
+	// We houden dit voorlopig nog effe achter de hand
+	// mtd-mac-address = <&art 0x1006>;
+	mtd-mac-address-increment = <1>;
+};
+
+// Poging om eth1 online te krijgen, zie https://github.com/openwrt/openwrt/pull/3138#discussion_r449726577
+&mdio1 {
+	status = "okay";
+
+	phy1: ethernet-phy@1{
+		reg = <1>; // possibly 0?
+	};
+};
+
+// Lijkt te werken en online te komen als wlan0 met juiste MAC-adres (:12).
+&wmac {
+       status = "okay";
+
+       mtd-cal-data = <&art 0x1000>;
+       mtd-mac-address = <&art 0x0>;
+       //mtd-mac-address-increment = <1>;
+};
+
+&uart {
+	status = "okay";
+};
diff --git a/target/linux/ath79/image/tiny-netgear.mk b/target/linux/ath79/image/tiny-netgear.mk
index 080827c08d..c4bd26dfe2 100644
--- a/target/linux/ath79/image/tiny-netgear.mk
+++ b/target/linux/ath79/image/tiny-netgear.mk
@@ -41,6 +41,22 @@ define Device/netgear_wnr1000-v2
 endef
 TARGET_DEVICES += netgear_wnr1000-v2
 
+define Device/netgear_wnr2000-v1
+  $(Device/netgear_generic)
+  SOC := ar9132
+  DEVICE_MODEL := WNR2000
+  DEVICE_VARIANT := v1
+  UIMAGE_MAGIC := 0x27051956
+  NETGEAR_BOARD_ID := WNR2000
+  IMAGE_SIZE := 3712k
+  IMAGES += factory-NA.img
+  IMAGE/factory-NA.img := $$(IMAGE/default) | netgear-dni NA | \
+	check-size
+  SUPPORTED_DEVICES += wnr2000-v1
+  DEFAULT := n
+endef
+TARGET_DEVICES += netgear_wnr2000-v1
+
 define Device/netgear_wnr2000-v3
   $(Device/netgear_generic)
   SOC := ar7241
diff --git a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds
index f0b4acf066..8b76c8120b 100755
--- a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds
@@ -41,6 +41,13 @@ netgear,wnr2000-v3)
 	ucidef_set_led_switch "lan3amber" "LAN3 (amber)" "amber:lan3" "switch0" "0x08" "0x02"
 	ucidef_set_led_switch "lan4amber" "LAN4 (amber)" "amber:lan4" "switch0" "0x10" "0x02"
 	;;
+netgear,wnr2000-v1)
+	ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth1"
+	ucidef_set_led_switch "lan1" "LAN1" "green:lan1" "switch0" "0x02"
+	ucidef_set_led_switch "lan2" "LAN2" "green:lan2" "switch0" "0x04"
+	ucidef_set_led_switch "lan3" "LAN3" "green:lan3" "switch0" "0x08"
+	ucidef_set_led_switch "lan4" "LAN4" "green:lan4" "switch0" "0x10"
+	;;
 netgear,wnr612-v2|\
 on,n150r)
 	ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0"
-- 
2.30.0

