[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