From 161179f40bd7899516518f3844fea28c6dd86efc Mon Sep 17 00:00:00 2001 From: John Crispin Date: Mon, 5 Oct 2015 10:28:19 +0000 Subject: [PATCH] lantiq: Add target TP-Link TD-W8980 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 SVN-Revision: 47130 --- .../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 ff21e02aea..85d0eba140 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 d8dcb5d836..172c46c12c 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@0 { - reg = <0x0 0x4000000>; - }; - - fpi@10000000 { - gpio: pinmux@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@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@0 { - compatible = "lantiq,xrx200-pdi"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0>; - mtd-mac-address = <&ath9k_cal 0xf100>; - lantiq,switch; - - ethernet@0 { - compatible = "lantiq,xrx200-pdi-port"; - reg = <0>; - phy-mode = "rgmii"; - phy-handle = <&phy0>; - // gpios = <&gpio 42 1>; - }; - ethernet@5 { - compatible = "lantiq,xrx200-pdi-port"; - reg = <5>; - phy-mode = "rgmii"; - phy-handle = <&phy5>; - }; - ethernet@2 { - compatible = "lantiq,xrx200-pdi-port"; - reg = <2>; - phy-mode = "gmii"; - phy-handle = <&phy11>; - }; - ethernet@3 { - compatible = "lantiq,xrx200-pdi-port"; - reg = <4>; - phy-mode = "gmii"; - phy-handle = <&phy13>; - }; - }; - - mdio@0 { - #address-cells = <1>; - #size-cells = <0>; - compatible = "lantiq,xrx200-mdio"; - phy0: ethernet-phy@0 { - reg = <0x0>; - compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; - }; - phy5: ethernet-phy@5 { - reg = <0x5>; - compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; - }; - phy11: ethernet-phy@11 { - reg = <0x11>; - compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; - }; - phy13: ethernet-phy@13 { - reg = <0x13>; - compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; - }; - }; - }; - - ifxhcd@E101000 { - status = "okay"; - gpios = <&gpio 33 0>; - lantiq,portmask = <0x3>; - }; - - ifxhcd@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@0 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "en25q64", "m25p80"; - reg = <0 0>; - linux,modalias = "en25q64"; - spi-max-frequency = <1000000>; - - partition@0 { - reg = <0x0 0x20000>; - label = "u-boot"; - read-only; - }; - - partition@20000 { - reg = <0x20000 0x6a0000>; - label = "firmware"; - }; - - partition@6c0000 { - reg = <0x6c0000 0x100000>; - label = "dsl_fw"; - }; - - partition@7c0000 { - reg = <0x7c0000 0x10000>; - label = "config"; - read-only; - }; - - ath9k_cal: partition@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 0000000000..ad3d1829bd --- /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@10000000 { + gpio: pinmux@E100B10 { + state_default: pinmux { + pci_rst { + lantiq,pins = "io21"; + lantiq,output = <1>; + lantiq,open-drain; + }; + }; + }; + + pci@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 0000000000..084aa25e23 --- /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@0 { + reg = <0x0 0x4000000>; + }; + + fpi@10000000 { + gpio: pinmux@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@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@0 { + compatible = "lantiq,xrx200-pdi"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + mtd-mac-address = <&ath9k_cal 0xf100>; + lantiq,switch; + + ethernet@0 { + compatible = "lantiq,xrx200-pdi-port"; + reg = <0>; + phy-mode = "rgmii"; + phy-handle = <&phy0>; + // gpios = <&gpio 42 1>; + }; + ethernet@5 { + compatible = "lantiq,xrx200-pdi-port"; + reg = <5>; + phy-mode = "rgmii"; + phy-handle = <&phy5>; + }; + ethernet@2 { + compatible = "lantiq,xrx200-pdi-port"; + reg = <2>; + phy-mode = "gmii"; + phy-handle = <&phy11>; + }; + ethernet@3 { + compatible = "lantiq,xrx200-pdi-port"; + reg = <4>; + phy-mode = "gmii"; + phy-handle = <&phy13>; + }; + }; + + mdio@0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "lantiq,xrx200-mdio"; + phy0: ethernet-phy@0 { + reg = <0x0>; + compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; + }; + phy5: ethernet-phy@5 { + reg = <0x5>; + compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; + }; + phy11: ethernet-phy@11 { + reg = <0x11>; + compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; + }; + phy13: ethernet-phy@13 { + reg = <0x13>; + compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; + }; + }; + }; + + ifxhcd@E101000 { + status = "okay"; + gpios = <&gpio 33 0>; + lantiq,portmask = <0x3>; + }; + + ifxhcd@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@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "en25q64", "m25p80"; + reg = <0 0>; + linux,modalias = "en25q64"; + spi-max-frequency = <1000000>; + + partition@0 { + reg = <0x0 0x20000>; + label = "u-boot"; + read-only; + }; + + partition@20000 { + reg = <0x20000 0x6a0000>; + label = "firmware"; + }; + + partition@6c0000 { + reg = <0x6c0000 0x100000>; + label = "dsl_fw"; + }; + + partition@7c0000 { + reg = <0x7c0000 0x10000>; + label = "config"; + read-only; + }; + + ath9k_cal: partition@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 7980627e4e..686cb6d724 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 1ee010ce3c..6ae9399060 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 34c4b14064..25915e68bf 100644 --- a/tools/firmware-utils/src/mktplinkfw2.c +++ b/tools/firmware-utils/src/mktplinkfw2.c @@ -160,6 +160,11 @@ static struct board_info boards[] = { .hw_id = 0x89700001, .hw_rev = 1, .layout_id = "8Mltq", + }, { + .id = "TD-W8980v1", + .hw_id = 0x89800001, + .hw_rev = 14, + .layout_id = "8Mltq", }, { .id = "ArcherC20i", .hw_id = 0xc2000001, -- 2.25.1