diff mbox series

[OpenWrt-Devel] ath79: port TP-Link TL-WR741ND v4 and TL-WR740ND v4

Message ID 11bf3f46f1d9900e5a5476ab8ac6d3cae218fab5.1530028505.git.rocco@folino.io
State Changes Requested
Delegated to: John Crispin
Headers show
Series [OpenWrt-Devel] ath79: port TP-Link TL-WR741ND v4 and TL-WR740ND v4 | expand

Commit Message

Rocco Folino June 26, 2018, 3:58 p.m. UTC
This patch ports the TP-Link TL-WR741ND v4 and TL-WR740ND v4 to the
ath79 target.

Because the two devices share the same hw layout, this patch adds a common
.dtsi which is included by the two .dts.

Signed-off-by: Rocco Folino <rocco@folino.io>
---
 .../ath79/base-files/etc/board.d/01_leds      |   9 +
 .../ath79/base-files/etc/board.d/02_network   |   7 +
 .../linux/ath79/dts/ar9331_tl-wr740nd-v4.dts  |   9 +
 .../linux/ath79/dts/ar9331_tl-wr741nd-v4.dts  |   9 +
 .../linux/ath79/dts/ar9331_tl-wr741nd-v4.dtsi | 169 ++++++++++++++++++
 target/linux/ath79/image/tiny-tp-link.mk      |  18 ++
 6 files changed, 221 insertions(+)
 create mode 100644 target/linux/ath79/dts/ar9331_tl-wr740nd-v4.dts
 create mode 100644 target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dts
 create mode 100644 target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dtsi

Comments

Mathias Kresin June 26, 2018, 4:36 p.m. UTC | #1
Hey Rocco,

find my (minor) comments inline.

2018-06-26 17:58 GMT+02:00 Rocco Folino <rocco@folino.io>:
> This patch ports the TP-Link TL-WR741ND v4 and TL-WR740ND v4 to the
> ath79 target.
>
> Because the two devices share the same hw layout, this patch adds a common
> .dtsi which is included by the two .dts.
>
> Signed-off-by: Rocco Folino <rocco@folino.io>
> ---
>  .../ath79/base-files/etc/board.d/01_leds      |   9 +
>  .../ath79/base-files/etc/board.d/02_network   |   7 +
>  .../linux/ath79/dts/ar9331_tl-wr740nd-v4.dts  |   9 +
>  .../linux/ath79/dts/ar9331_tl-wr741nd-v4.dts  |   9 +
>  .../linux/ath79/dts/ar9331_tl-wr741nd-v4.dtsi | 169 ++++++++++++++++++
>  target/linux/ath79/image/tiny-tp-link.mk      |  18 ++
>  6 files changed, 221 insertions(+)
>  create mode 100644 target/linux/ath79/dts/ar9331_tl-wr740nd-v4.dts
>  create mode 100644 target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dts
>  create mode 100644 target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dtsi
>
> 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 29416ad83ea7..13d8d1004f79 100755
> --- a/target/linux/ath79/base-files/etc/board.d/01_leds
> +++ b/target/linux/ath79/base-files/etc/board.d/01_leds
> @@ -45,6 +45,15 @@ case "$board" in
>         ucidef_set_led_switch "lan3" "LAN3" "$boardname:green:lan3" "switch0" "0x08"
>         ucidef_set_led_switch "lan4" "LAN4" "$boardname:green:lan4" "switch0" "0x10"
>         ;;
> +"tplink,tl-wr741nd-v4"|\
> +"tplink,tl-wr740nd-v4")
> +       ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
> +       ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04"
> +       ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08"
> +       ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10"
> +       ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02"
> +       ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"

Please use the linux,default-trigger devicetree property to set the
phy0tpt trigger. Have a look at the existing ath79 dts files for
examples.

> +       ;;
>  esac
>
>  board_config_flush
> 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 e2a45b05261a..510b563d6998 100755
> --- a/target/linux/ath79/base-files/etc/board.d/02_network
> +++ b/target/linux/ath79/base-files/etc/board.d/02_network
> @@ -62,6 +62,13 @@ ath79_setup_interfaces()
>                         "0@eth1" "1:lan" "2:lan" "3:lan" "4:lan"
>                 ;;
>
> +       "tplink,tl-wr741nd-v4"|\
> +       "tplink,tl-wr740nd-v4")
> +               ucidef_set_interfaces_lan_wan "eth0.1" "eth1"

ucidef_add_switch should already set the lan interface. A
ucidef_set_interface_wan "eth1" should be sufficient here.

> +               ucidef_add_switch "switch0" \
> +                       "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
> +               ;;
> +
>         "tplink,tl-wr1043nd-v1")
>                 ucidef_add_switch "switch0" \
>                         "1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "5@eth0"
> diff --git a/target/linux/ath79/dts/ar9331_tl-wr740nd-v4.dts b/target/linux/ath79/dts/ar9331_tl-wr740nd-v4.dts
> new file mode 100644
> index 000000000000..b0029b88b6f4
> --- /dev/null
> +++ b/target/linux/ath79/dts/ar9331_tl-wr740nd-v4.dts
> @@ -0,0 +1,9 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
> +/dts-v1/;
> +
> +#include "ar9331_tl-wr741nd-v4.dtsi"
> +
> +/ {
> +       model = "TP-Link TL-WR740N/ND v4";
> +       compatible = "tplink,tl-wr740n-v4";
> +};
> diff --git a/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dts b/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dts
> new file mode 100644
> index 000000000000..118831b4d24c
> --- /dev/null
> +++ b/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dts
> @@ -0,0 +1,9 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
> +/dts-v1/;
> +
> +#include "ar9331_tl-wr741nd-v4.dtsi"
> +
> +/ {
> +       model = "TP-Link TL-WR741N/ND v4";
> +       compatible = "tplink,tl-wr741n-v4";
> +};
> diff --git a/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dtsi b/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dtsi
> new file mode 100644
> index 000000000000..6aa578a52520
> --- /dev/null
> +++ b/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dtsi
> @@ -0,0 +1,169 @@
> +// 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 "ar9331.dtsi"
> +
> +/ {
> +       compatible = "tplink,tl-wr741n-v4", "qca,ar9331";
> +       model = "TP-Link TL-WR741N/ND v4";
> +
> +       aliases {
> +               serial0 = &uart;
> +               led-status = &led_system;
> +       };
> +
> +       memory@0 {
> +               device_type = "memory";
> +               reg = <0x0 0x2000000>;
> +       };

The pending https://github.com/openwrt/openwrt/pull/1091 is about to
remove all memory nodes in favour of the automatic memory detection.
Would you please test if the correct of amount of memory is detected
without the node. If so, the node can be removed.

Mathias
Rocco Folino June 27, 2018, 10:13 a.m. UTC | #2
Hi Mathias,

Thanks for the review.

On Tue, Jun 26, 2018 at 06:36:23PM +0200, Mathias Kresin wrote:
> > +"tplink,tl-wr741nd-v4"|\
> > +"tplink,tl-wr740nd-v4")
> > +       ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
> > +       ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04"
> > +       ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08"
> > +       ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10"
> > +       ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02"
> > +       ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
> 
> Please use the linux,default-trigger devicetree property to set the
> phy0tpt trigger. Have a look at the existing ath79 dts files for
> examples.
> 

I'll fix it in the v2.

> > +       ;;
> >                 ;;
> >
> > +       "tplink,tl-wr741nd-v4"|\
> > +       "tplink,tl-wr740nd-v4")
> > +               ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
> 
> ucidef_add_switch should already set the lan interface. A
> ucidef_set_interface_wan "eth1" should be sufficient here.
> 

I'll fix it in the v2.

> > +
> > +       memory@0 {
> > +               device_type = "memory";
> > +               reg = <0x0 0x2000000>;
> > +       };
> 
> The pending https://github.com/openwrt/openwrt/pull/1091 is about to
> remove all memory nodes in favour of the automatic memory detection.
> Would you please test if the correct of amount of memory is detected
> without the node. If so, the node can be removed.
> 

I confirm that the correct amount of memory is detected without the memory node.


Best,
Rocco
diff mbox series

Patch

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 29416ad83ea7..13d8d1004f79 100755
--- a/target/linux/ath79/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/base-files/etc/board.d/01_leds
@@ -45,6 +45,15 @@  case "$board" in
 	ucidef_set_led_switch "lan3" "LAN3" "$boardname:green:lan3" "switch0" "0x08"
 	ucidef_set_led_switch "lan4" "LAN4" "$boardname:green:lan4" "switch0" "0x10"
 	;;
+"tplink,tl-wr741nd-v4"|\
+"tplink,tl-wr740nd-v4")
+	ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
+	ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04"
+	ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08"
+	ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10"
+	ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02"
+	ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
+	;;
 esac
 
 board_config_flush
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 e2a45b05261a..510b563d6998 100755
--- a/target/linux/ath79/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/base-files/etc/board.d/02_network
@@ -62,6 +62,13 @@  ath79_setup_interfaces()
 			"0@eth1" "1:lan" "2:lan" "3:lan" "4:lan"
 		;;
 
+	"tplink,tl-wr741nd-v4"|\
+	"tplink,tl-wr740nd-v4")
+		ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
+		ucidef_add_switch "switch0" \
+			"0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
+		;;
+
 	"tplink,tl-wr1043nd-v1")
 		ucidef_add_switch "switch0" \
 			"1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "5@eth0"
diff --git a/target/linux/ath79/dts/ar9331_tl-wr740nd-v4.dts b/target/linux/ath79/dts/ar9331_tl-wr740nd-v4.dts
new file mode 100644
index 000000000000..b0029b88b6f4
--- /dev/null
+++ b/target/linux/ath79/dts/ar9331_tl-wr740nd-v4.dts
@@ -0,0 +1,9 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "ar9331_tl-wr741nd-v4.dtsi"
+
+/ {
+	model = "TP-Link TL-WR740N/ND v4";
+	compatible = "tplink,tl-wr740n-v4";
+};
diff --git a/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dts b/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dts
new file mode 100644
index 000000000000..118831b4d24c
--- /dev/null
+++ b/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dts
@@ -0,0 +1,9 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "ar9331_tl-wr741nd-v4.dtsi"
+
+/ {
+	model = "TP-Link TL-WR741N/ND v4";
+	compatible = "tplink,tl-wr741n-v4";
+};
diff --git a/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dtsi b/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dtsi
new file mode 100644
index 000000000000..6aa578a52520
--- /dev/null
+++ b/target/linux/ath79/dts/ar9331_tl-wr741nd-v4.dtsi
@@ -0,0 +1,169 @@ 
+// 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 "ar9331.dtsi"
+
+/ {
+	compatible = "tplink,tl-wr741n-v4", "qca,ar9331";
+	model = "TP-Link TL-WR741N/ND v4";
+
+	aliases {
+		serial0 = &uart;
+		led-status = &led_system;
+	};
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x2000000>;
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "wps";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&gpio 26 GPIO_ACTIVE_HIGH>;
+			debounce-interval = <60>;
+		};
+	};
+	
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		lan1 {
+			label = "tp-link:green:lan1";
+			gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
+		};
+
+		lan2 {
+			label = "tp-link:green:lan2";
+			gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
+		};
+
+		lan3 {
+			label = "tp-link:green:lan3";
+			gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+		};
+
+		lan4 {
+			label = "tp-link:green:lan4";
+			gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+		};
+
+		qss {
+			label = "tp-link:green:qss";
+			gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
+		};
+
+		led_system: system {
+			label = "tp-link:green:system";
+			gpios = <&gpio 27 GPIO_ACTIVE_HIGH>;
+		};
+
+		wan {
+			label = "tp-link:green:wan";
+			gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
+		};
+
+		wlan {
+			label = "tp-link:green:wlan";
+			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
+		};
+	};
+};
+
+&spi {
+	status = "okay";
+	num-cs = <1>;
+
+	flash@0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <25000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			uboot: partition@0 {
+				reg = <0x0 0x20000>;
+				label = "u-boot";
+				read-only;
+			};
+
+			firmware: partition@20000 {
+				reg = <0x20000 0x3d0000>;
+				label = "firmware";
+			};
+
+			art: partition@3f0000 {
+				reg = <0x3f0000 0x10000>;
+				label = "art";
+				read-only;
+			};
+		};
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	phy-handle = <&phy4>;
+
+	mtd-mac-address = <&uboot 0x1fc00>;
+	mtd-mac-address-increment = <1>;
+
+	gmac-config {
+		device = <&gmac>;
+
+		switch-phy-addr-swap = <1>;
+		switch-phy-swap = <1>;
+	};
+};
+
+&eth1 {
+	status = "okay";
+
+	mtd-mac-address = <&uboot 0x1fc00>;
+	mtd-mac-address-increment = <(-1)>;
+};
+
+&gpio {
+	status = "okay";
+};
+
+&mdio0 {
+	status = "okay";
+
+	phy4: ethernet-phy@4 {
+		reg = <4>;
+		phy-mode = "mii";
+	};
+};
+
+&uart {
+	status = "okay";
+};
+
+&wmac {
+	status = "okay";
+	mtd-cal-data = <&art 0x1000>;
+	mtd-mac-address = <&uboot 0x1fc00>;
+};
diff --git a/target/linux/ath79/image/tiny-tp-link.mk b/target/linux/ath79/image/tiny-tp-link.mk
index 1dfed48dbad4..656737bed2a8 100644
--- a/target/linux/ath79/image/tiny-tp-link.mk
+++ b/target/linux/ath79/image/tiny-tp-link.mk
@@ -39,3 +39,21 @@  define Device/tl-wr740n-v2
   SUPPORTED_DEVICES := tplink,tl-wr740n-v2 tl-wr740n-v2
 endef
 TARGET_DEVICES += tl-wr740n-v2
+
+define Device/tl-wr741nd-v4
+  $(Device/tplink-4mlzma)
+  ATH_SOC := ar9331
+  DEVICE_TITLE := TP-LINK TL-WR741N/ND v4
+  TPLINK_HWID := 0x07410004
+  SUPPORTED_DEVICES := tplink,tl-wr741n-v4 tl-wr741n-v4
+endef
+TARGET_DEVICES += tl-wr741nd-v4
+
+define Device/tl-wr740nd-v4
+  $(Device/tplink-4mlzma)
+  ATH_SOC := ar9331
+  DEVICE_TITLE := TP-LINK TL-WR740N/ND v4
+  TPLINK_HWID := 0x07400004
+  SUPPORTED_DEVICES := tplink,tl-wr740n-v4 tl-wr740n-v4
+endef
+TARGET_DEVICES += tl-wr740nd-v4