[OpenWrt-Devel,v2,4/5] ath79: add support for Netgear WNR1000 v2
diff mbox series

Message ID 20190806160600.5f04e40e@kosmio.komorska
State Superseded
Delegated to: Hauke Mehrtens
Headers show
Series
  • ath79: add support for some Netgear WNR routers
Related show

Commit Message

Michal Cieslakiewicz Aug. 6, 2019, 2:06 p.m. UTC
This patch adds ath79 support for Netgear WNR1000v2.
Router was previously supported by ar71xx target only.
Note: this is a 4_32 device with limited upgrade capabilities.

Specification
=============
  * Description: Netgear WNR1000 v2
  * Loader: U-boot
  * SOC: Atheros AR7240 (340 MHz)
  * RAM: 32 MiB
  * Flash: 4 MiB (SPI NOR)
	- U-boot binary: 256 KiB
	- U-boot environment: 64 KiB
	- Firmware: 3712 KiB
	- ART: 64 KiB
  * Ethernet: 4 x 10/100 LAN + 1 x 10/100 WAN
  * Wireless: 2.4 GHz b/g/n (Atheros AR9285)
  * USB: no
  * Buttons:
	- Reset
	- WiFi (rfkill)
	- WPS
  * LEDs:
	- Power (amber/green)
	- WAN (amber/green)
	- WLAN (blue)
	- 4 x LAN (amber/green)
	- WPS (green)
  * UART: 4-pin connector JP2, 3.3V (Vcc, TX, RX, GND), 115200 8N1
  * Power supply: DC 12V 1A
  * MAC addresses: LAN on case label, WAN +1, WLAN +2

Installation
============
  * TFTP recovery
  * TFTP via U-boot prompt
  * sysupgrade
  * Web interface

Test build configuration
========================
CONFIG_TARGET_ath79=y
CONFIG_TARGET_ath79_tiny=y
CONFIG_TARGET_ath79_tiny_DEVICE_netgear_wnr1000-v2=y
CONFIG_ALL_KMODS=y
CONFIG_DEVEL=y
CONFIG_CCACHE=y
CONFIG_COLLECT_KERNEL_DEBUG=y
CONFIG_IMAGEOPT=y
CONFIG_KERNEL_DEBUG_INFO=y
CONFIG_KERNEL_DEBUG_KERNEL=y

Signed-off-by: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>
---
 .../ath79/base-files/etc/board.d/01_leds      |   1 +
 .../ath79/base-files/etc/board.d/02_network   |   1 +
 .../etc/hotplug.d/firmware/10-ath9k-eeprom    |   1 +
 .../ath79/dts/ar7240_netgear_wnr1000-v2.dts   | 207 ++++++++++++++++++
 target/linux/ath79/image/tiny-netgear.mk      |  14 ++
 5 files changed, 224 insertions(+)
 create mode 100644 target/linux/ath79/dts/ar7240_netgear_wnr1000-v2.dts

Comments

Adrian Schmutzler Aug. 6, 2019, 2:29 p.m. UTC | #1
Hi,

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] On Behalf Of Michal Cieslakiewicz
> Sent: Dienstag, 6. August 2019 16:06
> To: openwrt-devel@lists.openwrt.org
> Cc: Adrian Schmutzler <mail@adrianschmutzler.de>
> Subject: [OpenWrt-Devel] [PATCH v2 4/5] ath79: add support for Netgear WNR1000 v2
> 
> This patch adds ath79 support for Netgear WNR1000v2.
> Router was previously supported by ar71xx target only.
> Note: this is a 4_32 device with limited upgrade capabilities.
> 

...

> diff --git a/target/linux/ath79/dts/ar7240_netgear_wnr1000-v2.dts b/target/linux/ath79/dts/ar7240_netgear_wnr1000-v2.dts
> new file mode 100644
> index 0000000000..a9eabb5a88
> --- /dev/null
> +++ b/target/linux/ath79/dts/ar7240_netgear_wnr1000-v2.dts
> @@ -0,0 +1,207 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
> +/dts-v1/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +#include "ar7240.dtsi"
> +
> +/ {
> +	model = "Netgear WNR1000 v2";
> +	compatible = "netgear,wnr1000-v2", "qca,ar7240";

compatible before model ...

In general, it looks to me like you can exploit wnr612-v2.dtsi here.
LEDs will require some care, but almost everything else is shared.
In that context, one might think whether there is a better name for the shared DTSI then ...

For the image Makefile, the same comments as in previous patch are relevant.

Best

Adrian
Michal Cieslakiewicz Aug. 6, 2019, 3:50 p.m. UTC | #2
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On Tue, 6 Aug 2019 16:29:59 +0200
"Adrian Schmutzler" <mail@adrianschmutzler.de> wrote:
> 
> In general, it looks to me like you can exploit wnr612-v2.dtsi here.
> LEDs will require some care, but almost everything else is shared.
> In that context, one might think whether there is a better name for
> the shared DTSI then ...
> 

Agreed. Now it's better to unify definitions. WNR1000v2 and WNR612v2 are
indeed very similar. The same is for WNR2000v3 and WNR2200 (the latter
is just bigger memory plus USB wiring). 
It's just that for development phase I preferred separate dts files...

Cheers
Michal
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEi7ylFMzTSbpOuOZIHU8//LdGKWsFAl1JoeMACgkQHU8//LdG
KWu2EQ/+Kf6AU6W6ROnZs5Joj9ay1XMZSkxKiPAYp3qmj5+U18s5DceBEHV2YYYs
gk0F5B7Eo/LOtHmWDGrl6yl0+MM1eY3wSBDVcO08koCxQqdiY+HCOjGZjeS0ACMM
dXYIV7QouyOYF634lI7S+ESDIbQ8d5+NfSPPK8Jtd44doKZPQ+Vf+8sIHzJujeJb
TK73nvLvEWiiZtKuH7Sk/OFK4r3Kc/eFQ/PS3psEu58iKx8wcZMabF6e0eEqG+ZP
r4V4u9O+65uYPZJptHbKFOLtlcU9Rnvxcnx1vCST34GYc8Bdem2f25HaO0Lv5Nm2
9hoN7XReKN2ZgJhisXSTgVDvWD4IlslecZEmXvfmscVCUSdE6We1gjgeNIFTF5pr
rprySvHUGOZbKNSF+x0mPbxvobmBdZKJj+Dmb58KSxGDFsZWrNDG2JYPZsqCr5Pn
w1UAa5g++P5ARrHo2fpZ5Den7wT2Xy1i+esR1tsiLSF2uHUd50JKL3vaGyzmhQg5
jcnEz7JAyQxp9xj0odrA+utLvReOSeUK+C0xiG+T2bEa/n/jgw2h7w0J+yIpzKIx
Qf0DYjcngM6K6MOtAdB18QzEeX6HACdCbCc9taBtfnIpWgJw5wWv9Q3LPTFlVC8A
zoNEDVziVMyELJe/6ulJ2snCuSCGrfw7OHq4Zoz7F+/iFxwX36w=
=gCBE
-----END PGP SIGNATURE-----

Patch
diff mbox series

diff --git a/target/linux/ath79/base-files/etc/board.d/01_leds b/target/linux/ath79/base-files/etc/board.d/01_leds
index f083ab9ea2..5f5d5a7b2a 100755
--- a/target/linux/ath79/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/base-files/etc/board.d/01_leds
@@ -93,6 +93,7 @@  glinet,gl-ar300m-lite)
 glinet,gl-x750)
 	ucidef_set_led_netdev "wan" "WAN" "$boardname:green:wan" "eth1"
 	;;
+netgear,wnr1000-v2|\
 netgear,wnr2000-v3)
 	ucidef_set_led_netdev "wan-amber" "WAN (amber)" "netgear:amber:wan" "eth0"
 	ucidef_set_led_default "wan-green" "WAN (green)" "netgear:green:wan" "0"
diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network
index 6f938ddae7..a4b6b4e1dd 100755
--- a/target/linux/ath79/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/base-files/etc/board.d/02_network
@@ -180,6 +180,7 @@  ath79_setup_interfaces()
 		ucidef_add_switch_port_attr "switch0" 2 led 9
 		ucidef_add_switch_port_attr "switch0" 5 led 2
 		;;
+	netgear,wnr1000-v2|\
 	netgear,wnr2000-v3|\
 	netgear,wnr612-v2|\
 	on,n150r|\
diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 891f5d1769..e2edebed66 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -164,6 +164,7 @@  case "$FIRMWARE" in
 	winchannel,wb2000)
 		ath9k_eeprom_extract "art" 20480 1088
 		;;
+	netgear,wnr1000-v2|\
 	netgear,wnr2000-v3|\
 	netgear,wnr612-v2|\
 	on,n150r|\
diff --git a/target/linux/ath79/dts/ar7240_netgear_wnr1000-v2.dts b/target/linux/ath79/dts/ar7240_netgear_wnr1000-v2.dts
new file mode 100644
index 0000000000..a9eabb5a88
--- /dev/null
+++ b/target/linux/ath79/dts/ar7240_netgear_wnr1000-v2.dts
@@ -0,0 +1,207 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+#include "ar7240.dtsi"
+
+/ {
+	model = "Netgear WNR1000 v2";
+	compatible = "netgear,wnr1000-v2", "qca,ar7240";
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	aliases {
+		led-boot = &power_amber;
+		led-failsafe = &power_amber;
+		led-running = &power_green;
+		led-upgrade = &power_amber;
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		poll-interval = <20>;
+
+		wps {
+			label = "wps";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&ath9k 6 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&ath9k 7 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+
+		rfkill {
+			label = "rfkill";
+			linux,code = <KEY_RFKILL>;
+			gpios = <&ath9k 8 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&jtag_disable_pins &switch_led_disable_pins &clks_disable_pins>;
+
+		power_green: power_green {
+			label = "netgear:green:power";
+			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+		};
+
+		power_amber: power_amber {
+			label = "netgear:amber:power";
+			gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
+			default-state = "keep";
+		};
+
+		wan_green {
+			label = "netgear:green:wan";
+			gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+		};
+
+		wan_amber {
+			label = "netgear:amber:wan";
+			gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+		};
+
+		lan1_green {
+			label = "netgear:green:lan1";
+			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+		};
+
+		lan1_amber {
+			label = "netgear:amber:lan1";
+			gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
+		};
+
+		lan2_green {
+			label = "netgear:green:lan2";
+			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+		};
+
+		lan2_amber {
+			label = "netgear:amber:lan2";
+			gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
+		};
+
+		lan3_green {
+			label = "netgear:green:lan3";
+			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+		};
+
+		lan3_amber {
+			label = "netgear:amber:lan3";
+			gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
+		};
+
+		lan4_green {
+			label = "netgear:green:lan4";
+			gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+		};
+
+		lan4_amber {
+			label = "netgear:amber:lan4";
+			gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	ath9k-leds {
+		compatible = "gpio-leds";
+
+		wps_green {
+			label = "netgear:green:wps";
+			gpios = <&ath9k 5 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan_blue {
+			label = "netgear:blue:wlan";
+			gpios = <&ath9k 1 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+	};
+};
+
+&spi {
+	status = "okay";
+	num-cs = <1>;
+
+	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 = <0x000000 0x040000>;
+				read-only;
+			};
+
+			partition@40000 {
+				label = "u-boot-env";
+				reg = <0x040000 0x010000>;
+			};
+
+			partition@50000 {
+				label = "firmware";
+				reg = <0x050000 0x3a0000>;
+				compatible = "netgear,uimage";
+			};
+
+			art: partition@3f0000 {
+				label = "art";
+				reg = <0x3f0000 0x010000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	mtd-mac-address = <&art 0x00>;
+};
+
+&eth1 {
+	status = "okay";
+
+	mtd-mac-address = <&art 0x06>;
+};
+
+&pcie {
+	status = "okay";
+
+	ath9k: wifi@0,0 {
+		compatible = "pci168c,002b";
+		reg = <0x0000 0 0 0 0>;
+		mtd-mac-address = <&art 0x00>;
+		mtd-mac-address-increment = <1>;
+		mtd-cal-data = <&art 0x1000>;
+		qca,no-eeprom;
+		#gpio-cells = <2>;
+		gpio-controller;
+	};
+};
+
+&uart {
+	status = "okay";
+};
+
+&gpio {
+        status = "okay";
+};
diff --git a/target/linux/ath79/image/tiny-netgear.mk b/target/linux/ath79/image/tiny-netgear.mk
index 6d1a3afbd1..16dd653cfd 100644
--- a/target/linux/ath79/image/tiny-netgear.mk
+++ b/target/linux/ath79/image/tiny-netgear.mk
@@ -28,6 +28,20 @@  define Device/on_n150r
 endef
 TARGET_DEVICES += on_n150r
 
+define Device/netgear_wnr1000-v2
+  ATH_SOC := ar7240
+  DEVICE_VENDOR := Netgear
+  DEVICE_MODEL := WNR1000
+  DEVICE_VARIANT := v2
+  DEVICE_DTS := ar7240_netgear_wnr1000-v2
+  NETGEAR_KERNEL_MAGIC := 0x31303031
+  IMAGE_SIZE := 3712k
+  IMAGE/default := append-kernel | pad-to $$$$(BLOCKSIZE) | netgear-squashfs | append-rootfs | pad-rootfs
+  SUPPORTED_DEVICES += wnr1000-v2
+  $(Device/netgear_ath79)
+endef
+TARGET_DEVICES += netgear_wnr1000-v2
+
 define Device/netgear_wnr2000-v3
   ATH_SOC := ar7241
   DEVICE_VENDOR := Netgear