ath79: add support for tl-wr1043nd v2/v3

Signed-off-by: Lucian Cristian <lucian.cristian@gmail.com>
This commit is contained in:
Lucian Cristian 2018-06-18 19:22:13 +02:00 committed by John Crispin
parent 0e81968ee8
commit b1a173d7c3
6 changed files with 341 additions and 23 deletions

View file

@ -57,6 +57,12 @@ ath79_setup_interfaces()
ucidef_add_switch "switch0" \ ucidef_add_switch "switch0" \
"0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan" "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan"
;; ;;
"tplink,tl-wr1043nd-v2"|\
"tplink,tl-wr1043nd-v3")
ucidef_set_interfaces_lan_wan "eth1.1" "eth0.2"
ucidef_add_switch "switch0" \
"0@eth1" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan" "6@eth0"
;;
"netgear,wndr3800") "netgear,wndr3800")
ucidef_set_interfaces_lan_wan "eth0" "eth1" ucidef_set_interfaces_lan_wan "eth0" "eth1"
ucidef_add_switch "switch0" \ ucidef_add_switch "switch0" \

View file

@ -14,12 +14,19 @@
cpu@0 { cpu@0 {
device_type = "cpu"; device_type = "cpu";
compatible = "mips,mips24Kc"; compatible = "mips,mips74Kc";
clocks = <&pll ATH79_CLK_CPU>; clocks = <&pll ATH79_CLK_CPU>;
reg = <0>; reg = <0>;
}; };
}; };
extosc: ref {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-output-names = "ref";
clock-frequency = <40000000>;
};
ahb { ahb {
apb { apb {
ddr_ctrl: memory-controller@18000000 { ddr_ctrl: memory-controller@18000000 {
@ -46,6 +53,28 @@
status = "disabled"; status = "disabled";
}; };
usb_phy0: usb-phy@18030000 {
compatible ="qca,qca9550-usb-phy", "qca,ar7200-usb-phy";
reset-names = "usb-phy", "usb-suspend-override";
resets = <&rst 4>, <&rst 3>;
#phy-cells = <0>;
status = "disabled";
};
usb_phy1: usb-phy {
compatible = "qca,qca9550-usb-phy", "qca,ar7200-usb-phy";
reset-names = "usb-phy", "usb-suspend-override";
resets = <&rst2 4>, <&rst2 3>;
#phy-cells = <0>;
status = "disabled";
};
gpio: gpio@18040000 { gpio: gpio@18040000 {
compatible = "qca,ar9557-gpio", compatible = "qca,ar9557-gpio",
"qca,ar9340-gpio"; "qca,ar9340-gpio";
@ -81,10 +110,12 @@
pll: pll-controller@18050000 { pll: pll-controller@18050000 {
compatible = "qca,ar9557-pll", compatible = "qca,ar9557-pll",
"qca,qca9550-pll"; "qca,qca9550-pll";
reg = <0x18050000 0x20>; reg = <0x18050000 0x50>;
#clock-cells = <1>; #clock-cells = <1>;
clock-output-names = "cpu", "ddr", "ahb"; clock-output-names = "cpu", "ddr", "ahb";
clocks = <&extosc>;
}; };
wdt: wdt@18060008 { wdt: wdt@18060008 {
@ -98,7 +129,7 @@
}; };
rst: reset-controller@1806001c { rst: reset-controller@1806001c {
compatible = "qca,ar9557-reset", compatible = "qca,qca9550-reset",
"qca,ar7100-reset", "qca,ar7100-reset",
"simple-bus"; "simple-bus";
reg = <0x1806001c 0x4>; reg = <0x1806001c 0x4>;
@ -106,18 +137,6 @@
#reset-cells = <1>; #reset-cells = <1>;
interrupt-parent = <&cpuintc>; interrupt-parent = <&cpuintc>;
intc2: interrupt-controller@2 {
compatible = "qcom,qca9556-intc";
interrupts = <2>;
interrupt-controller;
#interrupt-cells = <1>;
qcom,pending-bits = <0x1f0>, /* pcie rc1 */
<0xf>; /* wmac */
};
intc3: interrupt-controller@3 { intc3: interrupt-controller@3 {
compatible = "qcom,qca9556-intc"; compatible = "qcom,qca9556-intc";
@ -126,33 +145,88 @@
interrupt-controller; interrupt-controller;
#interrupt-cells = <1>; #interrupt-cells = <1>;
qcom,pending-bits = <0x1f000>, /* pcie rc2 */ qcom,pending-bits = <0x1f000>, /* pcie rc */
<0x1000000>, /* usb1 */ <0x1000000>, /* usb1 */
<0x10000000>; /* usb2 */ <0x10000000>; /* usb2 */
}; };
}; };
pcie0: pcie-controller@180c0000 { rst2: reset-controller@180600c0 {
compatible = "qca,qca9550-reset",
"qca,ar7100-reset",
"simple-bus";
reg = <0x180600c0 0x4>;
#reset-cells = <1>;
};
pcie: pcie-controller@18250000 {
compatible = "qcom,ar7240-pci"; compatible = "qcom,ar7240-pci";
#address-cells = <3>; #address-cells = <3>;
#size-cells = <2>; #size-cells = <2>;
bus-range = <0x0 0x0>; bus-range = <0x0 0x0>;
reg = <0x180c0000 0x1000>, /* CRP */ reg = <0x18250000 0x1000>, /* CRP */
<0x180f0000 0x100>, /* CTRL */ <0x18280000 0x100>, /* CTRL */
<0x14000000 0x1000>; /* CFG */ <0x16000000 0x1000>; /* CFG */
reg-names = "crp_base", "ctrl_base", "cfg_base"; reg-names = "crp_base", "ctrl_base", "cfg_base";
ranges = <0x2000000 0 0x10000000 0x10000000 0 0x04000000 /* pci memory */ ranges = <0x2000000 0 0x12000000 0x12000000 0 0x02000000 /* pci memory */
0x1000000 0 0x00000000 0x0000000 0 0x000001>; /* io space */ 0x1000000 0 0x00000000 0x0000000 0 0x000001>; /* io space */
interrupt-parent = <&intc2>; interrupt-parent = <&intc3>;
interrupts = <0>; interrupts = <0>;
interrupt-controller; interrupt-controller;
#interrupt-cells = <1>; #interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 1>; interrupt-map-mask = <0 0 0 1>;
interrupt-map = <0 0 0 0 &pcie0 0>; interrupt-map = <0 0 0 0 &pcie 0>;
status = "disabled"; status = "disabled";
}; };
wmac: wmac@18100000 {
compatible = "qca,qca9550-wmac";
reg = <0x18100000 0x10000>;
interrupt-parent = <&cpuintc>;
interrupts = <2>;
status = "disabled";
};
};
usb0: usb@1b000000 {
compatible = "generic-ehci";
reg = <0x1b000000 0x1fc>;
interrupt-parent = <&intc3>;
interrupts = <1>;
resets = <&rst 5>;
reset-names = "usb-host";
has-transaction-translator;
caps-offset = <0x100>;
phy-names = "usb-phy0";
phys = <&usb_phy0>;
status = "disabled";
};
usb1: usb@1b400000 {
compatible = "generic-ehci";
reg = <0x1b400000 0x1fc>;
interrupt-parent = <&intc3>;
interrupts = <2>;
resets = <&rst2 5>;
reset-names = "usb-host";
has-transaction-translator;
caps-offset = <0x100>;
phy-names = "usb-phy1";
phys = <&usb_phy1>;
status = "disabled";
}; };
spi: spi@1f000000 { spi: spi@1f000000 {

View file

@ -0,0 +1,12 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "qca9558_tl-wr1043nd.dtsi"
/ {
compatible = "tplink,tl-wr1043nd-v2", "qca,qca9557";
model = "TP-Link TL-WR1043ND Version 2";
};

View file

@ -0,0 +1,12 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "qca9558_tl-wr1043nd.dtsi"
/ {
compatible = "tplink,tl-wr1043nd-v3", "qca,qca9557";
model = "TP-Link TL-WR1043ND Version 3";
};

View file

@ -0,0 +1,194 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "qca9557.dtsi"
/ {
memory@0 {
device_type = "memory";
reg = <0x0 0x4000000>;
};
chosen {
bootargs = "console=ttyS0,115200n8";
};
aliases {
led-status = &system;
};
leds {
compatible = "gpio-leds";
system: system {
label = "tp-link:green:system";
gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
linux,default-trigger = "heartbeat";
};
usb {
label = "tp-link:green:usb";
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
default-state = "off";
trigger-sources = <&hub_port0>;
linux,default-trigger = "usbport";
};
wifi_green {
label = "tp-link:green:wlan";
gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
default-state = "off";
linux,default-trigger = "phy0tpt";
};
wifi_wps {
label = "tp-link:green:wps";
gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
default-state = "off";
};
};
keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
reset {
label = "Reset button";
linux,code = <KEY_RESTART>;
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
wifi {
label = "RFKILL button";
linux,code = <KEY_RFKILL>;
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
};
gpio-export {
compatible = "gpio-export";
#size-cells = <0>;
gpio_usb_power {
gpio-export,name = "tp-link:power:usb";
gpio-export,output = <1>;
gpios = <&gpio 21 GPIO_ACTIVE_HIGH>;
};
};
};
&uart {
status = "okay";
};
&gpio {
status = "okay";
};
&usb_phy0 {
status = "okay";
};
&usb0 {
status = "okay";
hub_port0: port@1 {
reg = <1>;
#trigger-source-cells = <0>;
};
};
&spi {
status = "okay";
num-cs = <1>;
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
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 0x020000>;
read-only;
};
partition@20000 {
label = "firmware";
reg = <0x020000 0x7d0000>;
};
art: partition@7f0000 {
label = "art";
reg = <0x7f0000 0x010000>;
read-only;
};
};
};
};
&mdio0 {
status = "okay";
phy0: ethernet-phy@0 {
reg = <0>;
qca,ar8327-initvals = <
0x04 0x00080080 /* PORT0 PAD MODE CTRL */
0x0c 0x07600000 /* PORT6 PAD MODE CTRL */
0x10 0x81000080 /* POWER_ON_STRIP */
0x50 0xcc35cc35 /* LED_CTRL0 */
0x54 0xca35ca35 /* LED_CTRL1 */
0x58 0xc935c935 /* LED_CTRL2 */
0x5c 0x03ffff00 /* LED_CTRL3 */
0x7c 0x0000007e /* PORT0_STATUS */
0x94 0x0000007e /* PORT6 STATUS */
>;
};
};
&mdio1 {
status = "okay";
phy1: ethernet-phy@1 {
reg = <1>;
};
};
&eth0 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
mtd-mac-address-increment = <1>;
phy-handle = <&phy0>;
};
&eth1 {
status = "okay";
mtd-mac-address = <&uboot 0x1fc00>;
phy-handle = <&phy1>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
&wmac {
status = "okay";
mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
};

View file

@ -28,6 +28,26 @@ define Device/tl-wr1043nd-v1
endef endef
TARGET_DEVICES += tl-wr1043nd-v1 TARGET_DEVICES += tl-wr1043nd-v1
define Device/tl-wr1043nd-v2
$(Device/tplink-8mlzma)
ATH_SOC := qca9558
DEVICE_TITLE := TP-LINK TL-WR1043N/ND v2
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
TPLINK_HWID := 0x10430002
SUPPORTED_DEVICES := tplink,tl-wr1043nd-v2 tl-wr1043nd-v2
endef
TARGET_DEVICES += tl-wr1043nd-v2
define Device/tl-wr1043nd-v3
$(Device/tplink-8mlzma)
ATH_SOC := qca9558
DEVICE_TITLE := TP-LINK TL-WR1043N/ND v3
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
TPLINK_HWID := 0x10430003
SUPPORTED_DEVICES := tplink,tl-wr1043nd-v3 tl-wr1043nd-v3
endef
TARGET_DEVICES += tl-wr1043nd-v3
define Device/tl-wr1043nd-v4 define Device/tl-wr1043nd-v4
$(Device/tplink) $(Device/tplink)
ATH_SOC := qca9563 ATH_SOC := qca9563