[OpenWrt-Devel] [PATCH 2/2] lantiq: Add target TP-Link TD-W8980

Mathias Kresin openwrt at kresin.me
Fri Oct 2 17:14:56 EDT 2015


The device is similar to the TD-W8970, beside a different Atheros 2.4 GHz
wireless chip and the additional, PCI connected, WAVE300 5 GHz wireless.

Signed-off-by: Mathias Kresin <openwrt at kresin.me>
---

The DTS should work for a TD-W9980 as well. But due to lack of the
appropriate hardware, it has not been tested.

 .../lantiq/base-files/etc/uci-defaults/02_network  |   2 +-
 target/linux/lantiq/dts/TDW8970.dts                | 251 +-------------------
 target/linux/lantiq/dts/TDW8980.dts                |  31 +++
 target/linux/lantiq/dts/TDW89X0.dtsi               | 252 +++++++++++++++++++++
 target/linux/lantiq/image/Makefile                 |   3 +
 target/linux/lantiq/xrx200/profiles/tplink.mk      |   7 +
 tools/firmware-utils/src/mktplinkfw2.c             |   5 +
 7 files changed, 300 insertions(+), 251 deletions(-)
 create mode 100644 target/linux/lantiq/dts/TDW8980.dts
 create mode 100644 target/linux/lantiq/dts/TDW89X0.dtsi

diff --git a/target/linux/lantiq/base-files/etc/uci-defaults/02_network b/target/linux/lantiq/base-files/etc/uci-defaults/02_network
index ff21e02..85d0eba 100644
--- a/target/linux/lantiq/base-files/etc/uci-defaults/02_network
+++ b/target/linux/lantiq/base-files/etc/uci-defaults/02_network
@@ -151,7 +151,7 @@ P2812HNUF*)
 	ucidef_add_switch_vlan "switch0" "1" "0 1 2 4 5 6t"
 	;;
 
-TDW8970)
+TDW8970|TDW8980)
 	lan_mac=$(mtd_get_mac_binary boardconfig 61696)
 	wan_mac=$(macaddr_add "$lan_mac" 1)
 	ucidef_set_interface_lan 'eth0.1'
diff --git a/target/linux/lantiq/dts/TDW8970.dts b/target/linux/lantiq/dts/TDW8970.dts
index d8dcb5d..172c46c 100644
--- a/target/linux/lantiq/dts/TDW8970.dts
+++ b/target/linux/lantiq/dts/TDW8970.dts
@@ -1,256 +1,7 @@
 /dts-v1/;
 
-/include/ "vr9.dtsi"
+/include/ "TDW89X0.dtsi"
 
 / {
 	model = "TDW8970 - TP-LINK TD-W8970";
-
-	chosen {
-		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
-	};
-
-	memory at 0 {
-		reg = <0x0 0x4000000>;
-	};
-
-	fpi at 10000000 {
-		gpio: pinmux at E100B10 {
-			pinctrl-names = "default";
-			pinctrl-0 = <&state_default>;
-
-			state_default: pinmux {
-				mdio {
-					lantiq,groups = "mdio";
-					lantiq,function = "mdio";
-				};
-				gphy-leds {
-					lantiq,groups = "gphy0 led1", "gphy1 led1";
-					lantiq,function = "gphy";
-					lantiq,pull = <2>;
-					lantiq,open-drain = <0>;
-					lantiq,output = <1>;
-				};
-				phy-rst {
-					lantiq,pins = "io42";
-					lantiq,pull = <0>;
-					lantiq,open-drain = <0>;
-					lantiq,output = <1>;
-				};
-				spi-in {
-					lantiq,pins = "io16";
-					lantiq,open-drain = <1>;
-					lantiq,pull = <2>;
-				};
-				spi-out {
-					lantiq,pins = "io10", "io17", "io18", "io21";
-					lantiq,open-drain = <0>;
-					lantiq,pull = <2>;
-				};
-				pcie-rst {
-					lantiq,pins = "io38";
-					lantiq,pull = <0>;
-					lantiq,output = <1>;
-				};
-			};
-		};
-
-		eth at E108000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "lantiq,xrx200-net";
-			reg = <	0xE108000 0x3000 /* switch */
-				0xE10B100 0x70 /* mdio */
-				0xE10B1D8 0x30 /* mii */
-				0xE10B308 0x30 /* pmac */
-			>;
-			interrupt-parent = <&icu0>;
-			interrupts = <73 72>;
-
-			lan: interface at 0 {
-				compatible = "lantiq,xrx200-pdi";
-				#address-cells = <1>;
-				#size-cells = <0>;
-				reg = <0>;
-				mtd-mac-address = <&ath9k_cal 0xf100>;
-				lantiq,switch;
-
-				ethernet at 0 {
-					compatible = "lantiq,xrx200-pdi-port";
-					reg = <0>;
-					phy-mode = "rgmii";
-					phy-handle = <&phy0>;
-					// gpios = <&gpio 42 1>;
-				};
-				ethernet at 5 {
-					compatible = "lantiq,xrx200-pdi-port";
-					reg = <5>;
-					phy-mode = "rgmii";
-					phy-handle = <&phy5>;
-				};
-				ethernet at 2 {
-					compatible = "lantiq,xrx200-pdi-port";
-					reg = <2>;
-					phy-mode = "gmii";
-					phy-handle = <&phy11>;
-				};
-				ethernet at 3 {
-					compatible = "lantiq,xrx200-pdi-port";
-					reg = <4>;
-					phy-mode = "gmii";
-					phy-handle = <&phy13>;
-				};
-			};
-
-			mdio at 0 {
-				#address-cells = <1>;
-				#size-cells = <0>;
-				compatible = "lantiq,xrx200-mdio";
-				phy0: ethernet-phy at 0 {
-					reg = <0x0>;
-					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
-				};
-				phy5: ethernet-phy at 5 {
-					reg = <0x5>;
-					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
-				};
-				phy11: ethernet-phy at 11 {
-					reg = <0x11>;
-					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
-				};
-				phy13: ethernet-phy at 13 {
-					reg = <0x13>;
-					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
-				};
-			};
-		};
-
-		ifxhcd at E101000 {
-			status = "okay";
-			gpios = <&gpio 33 0>;
-			lantiq,portmask = <0x3>;
-		};
-
-		ifxhcd at E106000 {
-			status = "okay";
-			gpios = <&gpio 33 0>;
-		};
-	};
-
-	gphy-xrx200 {
-		compatible = "lantiq,phy-xrx200";
-		firmware = "lantiq/vr9_phy11g_a2x.bin";
-		phys = [ 00 01 ];
-	};
-
-	pcie {
-		compatible = "lantiq,pcie-xway";
-	};
-
-	spi {
-		#address-cells = <1>;
-		#size-cells = <1>;
-
-		compatible = "spi-gpio";
-
-		gpio-miso = <&gpio 16 0>;
-		gpio-mosi = <&gpio 17 0>;
-		gpio-sck = <&gpio 18 0>;
-		num-chipselects = <1>;
-		cs-gpios = <&gpio 10 1>;
-
-		m25p80 at 0 {
-			#address-cells = <1>;
-			#size-cells = <1>;
-			compatible = "en25q64", "m25p80";
-			reg = <0 0>;
-			linux,modalias = "en25q64";
-			spi-max-frequency = <1000000>;
-
-			partition at 0 {
-				reg = <0x0 0x20000>;
-				label = "u-boot";
-				read-only;
-			};
-
-			partition at 20000 {
-				reg = <0x20000 0x6a0000>;
-				label = "firmware";
-			};
-
-			partition at 6c0000 {
-				reg = <0x6c0000 0x100000>;
-				label = "dsl_fw";
-			};
-
-			partition at 7c0000 {
-				reg = <0x7c0000 0x10000>;
-				label = "config";
-				read-only;
-			};
-
-			ath9k_cal: partition at 7d0000 {
-				reg = <0x7d0000 0x30000>;
-				label = "boardconfig";
-				read-only;
-			};
-		};
-	};
-	
-	ath9k_eep {
-		compatible = "ath9k,eeprom";
-		ath,eep-flash = <&ath9k_cal 0x21000>;
-		ath,mac-offset = <0xf100>;
-		ath,mac-increment;
-		ath,led-pin = <0>;
-	};
-
-	gpio-keys-polled {
-		compatible = "gpio-keys-polled";
-		#address-cells = <1>;
-		#size-cells = <0>;
-		poll-interval = <100>;
-		reset {
-			label = "reset";
-			gpios = <&gpio 0 1>;
-			linux,code = <0x198>;
-		};
-
-		wifi {
-			label = "wifi";
-			gpios = <&gpio 9 0>;
-			linux,code = <0xf7>;
-			linux,input-type = <5>; /* EV_SW */
-		};
-
-		wps {
-			label = "wps";
-			gpios = <&gpio 39 1>;
-			linux,code = <0x211>;
-		};
-	};
-
-	gpio-leds {
-		compatible = "gpio-leds";
-
-		dsl {
-			label = "dsl";
-			gpios = <&gpio 4 0>;
-		};
-		internet {
-			label = "internet";
-			gpios = <&gpio 5 0>;
-		};
-		usb0 {
-			label = "usb";
-			gpios = <&gpio 19 0>;
-		};
-		usb2 {
-			label = "usb2";
-			gpios = <&gpio 20 0>;
-		};
-		wps {
-			label = "wps";
-			gpios = <&gpio 37 0>;
-		};
-	};
 };
diff --git a/target/linux/lantiq/dts/TDW8980.dts b/target/linux/lantiq/dts/TDW8980.dts
new file mode 100644
index 0000000..ad3d182
--- /dev/null
+++ b/target/linux/lantiq/dts/TDW8980.dts
@@ -0,0 +1,31 @@
+/dts-v1/;
+
+/include/ "TDW89X0.dtsi"
+
+/ {
+	model = "TDW8980 - TP-LINK TD-W8980";
+
+	fpi at 10000000 {
+		gpio: pinmux at E100B10 {
+			state_default: pinmux {
+				pci_rst {
+					lantiq,pins = "io21";
+					lantiq,output = <1>;
+					lantiq,open-drain;
+				};
+			};
+		};
+
+		pci at E105400 {
+			status = "okay";
+			lantiq,bus-clock = <33333333>;
+			interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
+			interrupt-map = <0x7000 0 0 1 &icu0 30 1>;
+			gpio-reset = <&gpio 21 0>;
+		};
+	};
+
+	ath9k_eep {
+		ath,pci-slot = <0>;
+	};
+};
diff --git a/target/linux/lantiq/dts/TDW89X0.dtsi b/target/linux/lantiq/dts/TDW89X0.dtsi
new file mode 100644
index 0000000..084aa25
--- /dev/null
+++ b/target/linux/lantiq/dts/TDW89X0.dtsi
@@ -0,0 +1,252 @@
+/include/ "vr9.dtsi"
+
+/ {
+	chosen {
+		bootargs = "console=ttyLTQ0,115200 init=/etc/preinit";
+	};
+
+	memory at 0 {
+		reg = <0x0 0x4000000>;
+	};
+
+	fpi at 10000000 {
+		gpio: pinmux at E100B10 {
+			pinctrl-names = "default";
+			pinctrl-0 = <&state_default>;
+
+			state_default: pinmux {
+				mdio {
+					lantiq,groups = "mdio";
+					lantiq,function = "mdio";
+				};
+				gphy-leds {
+					lantiq,groups = "gphy0 led1", "gphy1 led1";
+					lantiq,function = "gphy";
+					lantiq,pull = <2>;
+					lantiq,open-drain = <0>;
+					lantiq,output = <1>;
+				};
+				phy-rst {
+					lantiq,pins = "io42";
+					lantiq,pull = <0>;
+					lantiq,open-drain = <0>;
+					lantiq,output = <1>;
+				};
+				spi-in {
+					lantiq,pins = "io16";
+					lantiq,open-drain = <1>;
+					lantiq,pull = <2>;
+				};
+				spi-out {
+					lantiq,pins = "io10", "io17", "io18", "io21";
+					lantiq,open-drain = <0>;
+					lantiq,pull = <2>;
+				};
+				pcie-rst {
+					lantiq,pins = "io38";
+					lantiq,pull = <0>;
+					lantiq,output = <1>;
+				};
+			};
+		};
+
+		eth at E108000 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			compatible = "lantiq,xrx200-net";
+			reg = <	0xE108000 0x3000 /* switch */
+				0xE10B100 0x70 /* mdio */
+				0xE10B1D8 0x30 /* mii */
+				0xE10B308 0x30 /* pmac */
+			>;
+			interrupt-parent = <&icu0>;
+			interrupts = <73 72>;
+
+			lan: interface at 0 {
+				compatible = "lantiq,xrx200-pdi";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0>;
+				mtd-mac-address = <&ath9k_cal 0xf100>;
+				lantiq,switch;
+
+				ethernet at 0 {
+					compatible = "lantiq,xrx200-pdi-port";
+					reg = <0>;
+					phy-mode = "rgmii";
+					phy-handle = <&phy0>;
+					// gpios = <&gpio 42 1>;
+				};
+				ethernet at 5 {
+					compatible = "lantiq,xrx200-pdi-port";
+					reg = <5>;
+					phy-mode = "rgmii";
+					phy-handle = <&phy5>;
+				};
+				ethernet at 2 {
+					compatible = "lantiq,xrx200-pdi-port";
+					reg = <2>;
+					phy-mode = "gmii";
+					phy-handle = <&phy11>;
+				};
+				ethernet at 3 {
+					compatible = "lantiq,xrx200-pdi-port";
+					reg = <4>;
+					phy-mode = "gmii";
+					phy-handle = <&phy13>;
+				};
+			};
+
+			mdio at 0 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				compatible = "lantiq,xrx200-mdio";
+				phy0: ethernet-phy at 0 {
+					reg = <0x0>;
+					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
+				};
+				phy5: ethernet-phy at 5 {
+					reg = <0x5>;
+					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
+				};
+				phy11: ethernet-phy at 11 {
+					reg = <0x11>;
+					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
+				};
+				phy13: ethernet-phy at 13 {
+					reg = <0x13>;
+					compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
+				};
+			};
+		};
+
+		ifxhcd at E101000 {
+			status = "okay";
+			gpios = <&gpio 33 0>;
+			lantiq,portmask = <0x3>;
+		};
+
+		ifxhcd at E106000 {
+			status = "okay";
+			gpios = <&gpio 33 0>;
+		};
+	};
+
+	gphy-xrx200 {
+		compatible = "lantiq,phy-xrx200";
+		firmware = "lantiq/vr9_phy11g_a2x.bin";
+		phys = [ 00 01 ];
+	};
+
+	pcie {
+		compatible = "lantiq,pcie-xway";
+	};
+
+	spi {
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		compatible = "spi-gpio";
+
+		gpio-miso = <&gpio 16 0>;
+		gpio-mosi = <&gpio 17 0>;
+		gpio-sck = <&gpio 18 0>;
+		num-chipselects = <1>;
+		cs-gpios = <&gpio 10 1>;
+
+		m25p80 at 0 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			compatible = "en25q64", "m25p80";
+			reg = <0 0>;
+			linux,modalias = "en25q64";
+			spi-max-frequency = <1000000>;
+
+			partition at 0 {
+				reg = <0x0 0x20000>;
+				label = "u-boot";
+				read-only;
+			};
+
+			partition at 20000 {
+				reg = <0x20000 0x6a0000>;
+				label = "firmware";
+			};
+
+			partition at 6c0000 {
+				reg = <0x6c0000 0x100000>;
+				label = "dsl_fw";
+			};
+
+			partition at 7c0000 {
+				reg = <0x7c0000 0x10000>;
+				label = "config";
+				read-only;
+			};
+
+			ath9k_cal: partition at 7d0000 {
+				reg = <0x7d0000 0x30000>;
+				label = "boardconfig";
+				read-only;
+			};
+		};
+	};
+	
+	ath9k_eep {
+		compatible = "ath9k,eeprom";
+		ath,eep-flash = <&ath9k_cal 0x21000>;
+		ath,mac-offset = <0xf100>;
+		ath,mac-increment;
+		ath,led-pin = <0>;
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <100>;
+		reset {
+			label = "reset";
+			gpios = <&gpio 0 1>;
+			linux,code = <0x198>;
+		};
+
+		wifi {
+			label = "wifi";
+			gpios = <&gpio 9 0>;
+			linux,code = <0xf7>;
+			linux,input-type = <5>; /* EV_SW */
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&gpio 39 1>;
+			linux,code = <0x211>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		dsl {
+			label = "dsl";
+			gpios = <&gpio 4 0>;
+		};
+		internet {
+			label = "internet";
+			gpios = <&gpio 5 0>;
+		};
+		usb0 {
+			label = "usb";
+			gpios = <&gpio 19 0>;
+		};
+		usb2 {
+			label = "usb2";
+			gpios = <&gpio 20 0>;
+		};
+		wps {
+			label = "wps";
+			gpios = <&gpio 37 0>;
+		};
+	};
+};
diff --git a/target/linux/lantiq/image/Makefile b/target/linux/lantiq/image/Makefile
index 7980627..686cb6d 100644
--- a/target/linux/lantiq/image/Makefile
+++ b/target/linux/lantiq/image/Makefile
@@ -410,6 +410,9 @@ Image/Build/Profile/VG3503J_V2=$(call Image/BuildLoader/$(1),$(1),VG3503J_V2)
 Image/BuildKernel/Profile/TDW8970=$(call Image/BuildKernelTPLink/Template,TDW8970,TD-W8970v1,$(1))
 Image/Build/Profile/TDW8970=$(call Image/BuildTPLink/$(1),$(1),TDW8970,TD-W8970v1)
 
+Image/BuildKernel/Profile/TDW8980=$(call Image/BuildKernelTPLink/Template,TDW8980,TD-W8980v1,$(1))
+Image/Build/Profile/TDW8980=$(call Image/BuildTPLink/$(1),$(1),TDW8980,TD-W8980v1)
+
 Image/BuildKernel/Profile/VGV7510KW22NOR=$(call Image/BuildKernel/Template,VGV7510KW22NOR,$(1))
 Image/Build/Profile/VGV7510KW22NOR=$(call Image/Build/$(1),$(1),VGV7510KW22NOR)
 
diff --git a/target/linux/lantiq/xrx200/profiles/tplink.mk b/target/linux/lantiq/xrx200/profiles/tplink.mk
index 1ee010c..6ae9399 100644
--- a/target/linux/lantiq/xrx200/profiles/tplink.mk
+++ b/target/linux/lantiq/xrx200/profiles/tplink.mk
@@ -4,3 +4,10 @@ define Profile/TDW8970
 endef
 
 $(eval $(call Profile,TDW8970))
+
+define Profile/TDW8980
+  NAME:=TP-LINK TD-W8980
+  PACKAGES:=kmod-ath9k wpad-mini kmod-usb-dwc2 kmod-ledtrig-usbdev
+endef
+
+$(eval $(call Profile,TDW8980))
diff --git a/tools/firmware-utils/src/mktplinkfw2.c b/tools/firmware-utils/src/mktplinkfw2.c
index 34c4b14..25915e6 100644
--- a/tools/firmware-utils/src/mktplinkfw2.c
+++ b/tools/firmware-utils/src/mktplinkfw2.c
@@ -161,6 +161,11 @@ static struct board_info boards[] = {
 		.hw_rev		= 1,
 		.layout_id	= "8Mltq",
 	}, {
+		.id		= "TD-W8980v1",
+		.hw_id		= 0x89800001,
+		.hw_rev		= 14,
+		.layout_id	= "8Mltq",
+	}, {
 		.id		= "ArcherC20i",
 		.hw_id		= 0xc2000001,
 		.hw_rev		= 58,
-- 
1.9.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list