浏览代码

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 <[email protected]>
Chuanhong Guo 7 年之前
父节点
当前提交
1213504750

+ 7 - 0
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

+ 164 - 0
target/linux/ath79/dts/ar9132_tplink_tl-wr941-v2.dts

@@ -0,0 +1,164 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+#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 = <KEY_RESTART>;
+			gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+
+		button1 {
+			label = "qss";
+			linux,code = <KEY_WPS_BUTTON>;
+			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 = <&eth0>;
+
+		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";
+};
+
+&eth0 {
+	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>;
+};

+ 9 - 0
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

+ 4 - 0
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