From 1213504750bf27b46fd958d236fcf56f33d2d8cd Mon Sep 17 00:00:00 2001 From: Chuanhong Guo Date: Mon, 13 Aug 2018 20:32:02 +0800 Subject: [PATCH] ath79: add support for TP-Link TL-WR941N/ND v2/v3 Specification: - SoC: Atheros AR9132 - Flash: 4 MB - RAM: 32 MB - Ethernet: Marvell 88E6060 with 5 FE ports. Flash instruction: Upload the generated factory firmware on web interface. Signed-off-by: Chuanhong Guo --- .../ath79/base-files/etc/board.d/02_network | 7 + .../ath79/dts/ar9132_tplink_tl-wr941-v2.dts | 164 ++++++++++++++++++ target/linux/ath79/image/tiny-tp-link.mk | 9 + target/linux/ath79/tiny/config-default | 4 + 4 files changed, 184 insertions(+) create mode 100644 target/linux/ath79/dts/ar9132_tplink_tl-wr941-v2.dts 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 da98061d08..a29a295c56 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -133,6 +133,9 @@ ath79_setup_interfaces() ucidef_add_switch "switch0" \ "0@eth1" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" ;; + tplink,tl-wr941-v2) + ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan" + ;; ubnt,unifiac-mesh-pro|\ ubnt,unifiac-pro) ucidef_add_switch "switch0" \ @@ -173,6 +176,10 @@ ath79_setup_macs() base_mac=$(mtd_get_mac_binary product-info 8) wan_mac=$(macaddr_add "$base_mac" 1) ;; + tplink,tl-wr941-v2) + base_mac=$(mtd_get_mac_binary u-boot 130048) + wan_mac=$(macaddr_add "$base_mac" 1) + ;; esac [ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac diff --git a/target/linux/ath79/dts/ar9132_tplink_tl-wr941-v2.dts b/target/linux/ath79/dts/ar9132_tplink_tl-wr941-v2.dts new file mode 100644 index 0000000000..9928a80f52 --- /dev/null +++ b/target/linux/ath79/dts/ar9132_tplink_tl-wr941-v2.dts @@ -0,0 +1,164 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; + +#include +#include + +#include "ar9132.dtsi" + +/ { + compatible = "tplink,tl-wr941-v2", "qca,ar9132"; + model = "TP-Link TL-WR941N/ND v2/v3"; + + aliases { + led-status = &led_system; + }; + + keys { + compatible = "gpio-keys"; + + button0 { + label = "reset"; + linux,code = ; + gpios = <&gpio 3 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + + button1 { + label = "qss"; + linux,code = ; + gpios = <&gpio 7 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; + + leds { + compatible = "gpio-leds"; + + led_system: system { + label = "tp-link:green:system"; + gpios = <&gpio 2 GPIO_ACTIVE_LOW>; + }; + + qss_r { + label = "tp-link:red:qss"; + gpios = <&gpio 4 GPIO_ACTIVE_HIGH>; + }; + + qss_g { + label = "tp-link:green:qss"; + gpios = <&gpio 5 GPIO_ACTIVE_HIGH>; + }; + + wlan { + label = "tp-link:green:wlan"; + gpios = <&gpio 9 GPIO_ACTIVE_LOW>; + default-state = "off"; + linux,default-trigger = "phy0tpt"; + }; + }; + + dsa { + compatible = "marvell,dsa"; + #address-cells = <1>; + #size-cells = <0>; + + dsa,mii-bus = <&mdio0>; + dsa,ethernet = <ð0>; + + switch@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + + port@0 { + reg = <0>; + label = "wan"; + }; + + port@1 { + reg = <1>; + label = "lan1"; + }; + + port@2 { + reg = <2>; + label = "lan2"; + }; + + port@3 { + reg = <3>; + label = "lan3"; + }; + + port@4 { + reg = <4>; + label = "lan4"; + }; + + port@5 { + reg = <5>; + label = "cpu"; + }; + }; + }; +}; + +&uart { + status = "okay"; +}; + +&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>; + + uboot: partition@0 { + label = "u-boot"; + reg = <0x000000 0x20000>; + read-only; + }; + + partition@20000 { + label = "firmware"; + reg = <0x020000 0x3d0000>; + }; + + art: partition@3f0000 { + label = "art"; + reg = <0x3f0000 0x10000>; + read-only; + }; + }; + }; +}; + +&mdio0 { + status = "okay"; +}; + +ð0 { + status = "okay"; + + phy-mode = "rmii"; + mtd-mac-address = <&uboot 0x1fc00>; + + fixed-link { + speed = <100>; + full-duplex; + }; +}; + +&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 c1777809fc..b358d3153e 100644 --- a/target/linux/ath79/image/tiny-tp-link.mk +++ b/target/linux/ath79/image/tiny-tp-link.mk @@ -137,6 +137,15 @@ define Device/tplink_tl-wr841-v11 endef TARGET_DEVICES += tplink_tl-wr841-v11 +define Device/tplink_tl-wr941-v2 + $(Device/tplink-4m) + ATH_SOC := ar9132 + DEVICE_TITLE := TP-Link TL-WR941N/ND v2/v3 + TPLINK_HWID := 0x09410002 + TPLINK_HWREV := 2 +endef +TARGET_DEVICES += tplink_tl-wr941-v2 + define Device/tplink_tl-wr941-v4 $(Device/tplink-4m) ATH_SOC := ar7240 diff --git a/target/linux/ath79/tiny/config-default b/target/linux/ath79/tiny/config-default index 01af54446d..9062ba11f0 100644 --- a/target/linux/ath79/tiny/config-default +++ b/target/linux/ath79/tiny/config-default @@ -1,5 +1,9 @@ CONFIG_BLK_MQ_PCI=y CONFIG_LEDS_RESET=y +CONFIG_NET_DSA=y +CONFIG_NET_DSA_MV88E6060=y +CONFIG_NET_DSA_TAG_TRAILER=y +CONFIG_NET_SWITCHDEV=y CONFIG_OF_ADDRESS_PCI=y CONFIG_OF_PCI=y CONFIG_OF_PCI_IRQ=y