Message ID | AM5PR0201MB2417DFDBC5D79A34532D8936A9490@AM5PR0201MB2417.eurprd02.prod.outlook.com |
---|---|
State | Changes Requested |
Delegated to: | John Crispin |
Headers | show |
Series | [OpenWrt-Devel] ath79: Add support for TL-WR740N/NDv2, TL-MR3220v1, TL-MR3420v1 | expand |
Hey Dmitry, find my comments inline. Please take care to fix the outlined issues for all dts. 2018-06-26 16:47 GMT+02:00 Смирнов Дмитрий <dioptimizer@hotmail.com>: > > From dfcb42807ddd384482ea0dc18d42a8e4774b709e Mon Sep 17 00:00:00 2001 > From: Deoptim <dioptimizer@hotmail.com> Please use your full name here. > Date: Tue, 26 Jun 2018 17:01:47 +0300 > Subject: [OpenWrt-Devel] [PATCH] ath79: Add support for TL-WR740N/NDv2,TL-MR3220v1,TL-MR3420v1 > > Its common AP99(AR7241) platform with following devices: > TP-Link TL-WR740N/ND v2 (SoC AR7241 / Wifi AR9287 / without USB) > TP-Link TL-MR3220 v1 (SoC AR7241 / Wifi AR9285 / USB support) > TP-Link TL-MR3420 v1 (SoC AR7241 / Wifi AR9287 / USB support) > > File ar7241_ap99.dtsi have common architecture with those devices > and dts files include it as common configuration. To be honest, I don't like the ar7241_ap99.dtsi filename and I'm not sure if it really does make sense to use a dtsi here. For instance, only two of the boards have a usb led and your workaround is to move the usb led into an extra gpio led node. I prefer to have a complete gpio-leds in the dts files instead. The spi node from the dtsi is overwritten by one dts. In that case it shouldn't be added to dtsi. Instead each dts should have it's own spi node. While I love to remove redundant stuff, we need to keep an eye on maintainability/readability. I would like to ensure that we don't break something for the boards including the dtsif, we change something in the dtsi. > > Signed-off-by: Deoptim <dioptimizer@hotmail.com> Full name here. as well > --- > .../ath79/base-files/etc/board.d/02_network | 7 + > .../etc/hotplug.d/firmware/10-ath9k-eeprom | 3 + > target/linux/ath79/dts/ar7241_ap99.dtsi | 144 ++++++++++++++++++ > .../linux/ath79/dts/ar7241_tl-mr3220-v1.dts | 108 +++++++++++++ > .../linux/ath79/dts/ar7241_tl-mr3420-v1.dts | 44 ++++++ > target/linux/ath79/dts/ar7241_tl-wr841-v7.dts | 12 ++ > target/linux/ath79/image/tiny-tp-link.mk | 29 ++++ > 7 files changed, 347 insertions(+) > create mode 100644 target/linux/ath79/dts/ar7241_ap99.dtsi > create mode 100644 target/linux/ath79/dts/ar7241_tl-mr3220-v1.dts > create mode 100644 target/linux/ath79/dts/ar7241_tl-mr3420-v1.dts > create mode 100644 target/linux/ath79/dts/ar7241_tl-wr841-v7.dts > > diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network > index e2a45b0526..689ae82ffb 100755 > --- a/target/linux/ath79/base-files/etc/board.d/02_network > +++ b/target/linux/ath79/base-files/etc/board.d/02_network > @@ -98,6 +98,13 @@ ath79_setup_interfaces() > ucidef_add_switch "switch0" \ > "0@eth0" "3:lan:1" "5:lan:2" "4:wan" > ;; > + "tplink,tl-wr841-v7"|\ > + "tplink,tl-mr3220-v1"|\ > + "tplink,tl-mr3420-v1") > + ucidef_set_interfaces_lan_wan "eth1.1" "eth0" ucidef_add_switch should already set the lan interface. A ucidef_set_interface_wan "eth1" should be sufficient here. > + ucidef_add_switch "switch0" \ > + "0@eth1" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" > + ;; > *) > ucidef_set_interfaces_lan_wan "eth0" "eth1" > ;; > diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom > index 7023fa5e58..e5e2b1f8d3 100644 > --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom > +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom > @@ -54,6 +54,9 @@ case "$FIRMWARE" in > "tplink,tl-wdr4300") > ath9k_eeprom_extract "art" 20480 1088 > ;; > + "tplink,tl-wr841-v7"|\ > + "tplink,tl-mr3220-v1"|\ > + "tplink,tl-mr3420-v1"|\ > "netgear,wnr612-v2"|\ > "on,n150r"|\ > "tplink,tl-wr740n-v2"|\ > diff --git a/target/linux/ath79/dts/ar7241_ap99.dtsi b/target/linux/ath79/dts/ar7241_ap99.dtsi > new file mode 100644 > index 0000000000..d3834b4915 > --- /dev/null > +++ b/target/linux/ath79/dts/ar7241_ap99.dtsi > @@ -0,0 +1,144 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > + > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/input/input.h> > + > +#include "ar7241.dtsi" > + > +/ { > + aliases { > + led-status = &led_system; > + }; > + > + memory@0 { > + device_type = "memory"; > + reg = <0x0 0x2000000>; > + }; The pending https://github.com/openwrt/openwrt/pull/1091 is about to remove all memory nodes in favour of the automatic memory detection. Would you please test if the correct of amount of memory is detected without the node. If so, it can be removed. > + > + gpio-keys-polled { > + compatible = "gpio-keys-polled"; > + #address-cells = <1>; > + #size-cells = <0>; > + poll-interval = <20>; > + > + reset { > + label = "reset"; > + linux,code = <KEY_RESTART>; > + gpios = <&gpio 11 GPIO_ACTIVE_LOW>; > + debounce-interval = <60>; > + }; > + > + qss { > + label = "qss"; > + linux,code = <KEY_WPS_BUTTON>; > + gpios = <&gpio 12 GPIO_ACTIVE_LOW>; > + debounce-interval = <60>; > + }; > + }; > + > + gpio-leds { > + compatible = "gpio-leds"; > + > + led_system: system { > + label = "tp-link:green:system"; > + gpios = <&gpio 1 GPIO_ACTIVE_LOW>; > + linux,default-trigger = "heartbeat"; Please remove the heartbeat trigger. Due to the led-status alias the led is used for status/diag signaling. > + }; > + > + qss { > + label = "tp-link:green:qss"; > + gpios = <&gpio 0 GPIO_ACTIVE_LOW>; > + }; > + }; > + > + ath9k-leds { > + compatible = "gpio-leds"; > + > + wlan { > + label = "ath9k-phy0"; Please use a proper tp-link:<colour>:<function> label as well. > + gpios = <&ath9k 0 GPIO_ACTIVE_LOW>; > + default-state = "off"; > + linux,default-trigger = "phy0tpt"; > + }; > + }; > +}; > + > +&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 { > + reg = <0x0 0x20000>; > + label = "u-boot"; > + read-only; > + }; > + > + firmware: partition@20000 { > + reg = <0x20000 0x3d0000>; > + label = "firmware"; > + }; > + > + art: partition@3f0000 { > + reg = <0x3f0000 0x10000>; > + label = "art"; > + read-only; > + }; > + }; > + }; > +}; > + > +&pcie { > + status = "okay"; > + > + ath9k: wifi@0 { > + reg = <0x0000 0 0 0 0>; > + #gpio-cells = <2>; > + gpio-controller; > + qca,no-eeprom; > + mtd-mac-address = <&uboot 0x1fc00>; > + }; > +}; > + > +ð0 { > + status = "okay"; > + > + mtd-mac-address = <&uboot 0x1fc00>; > + mtd-mac-address-increment = <(-1)>; > + phy-handle = <&phy4>; > +}; > + > +ð1 { > + status = "okay"; > + > + mtd-mac-address = <&uboot 0x1fc00>; > + mtd-mac-address-increment = <1>; > +}; > + > +&mdio0 { > + status = "okay"; > + > + phy4: ethernet-phy@4 { > + reg = <4>; > + phy-mode = "mii"; > + }; > +}; > + > +&gpio { > + status = "okay"; > +}; > + > +&uart { > + status = "okay"; > +}; > diff --git a/target/linux/ath79/dts/ar7241_tl-mr3220-v1.dts b/target/linux/ath79/dts/ar7241_tl-mr3220-v1.dts > new file mode 100644 > index 0000000000..a5d577749e > --- /dev/null > +++ b/target/linux/ath79/dts/ar7241_tl-mr3220-v1.dts > @@ -0,0 +1,108 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > +/dts-v1/; > + > +#include "ar7241_ap99.dtsi" > + > +/ { > + compatible = "tplink,tl-mr3220-v1", "qca,ar7241"; > + model = "TP-Link TL-MR3220 v1"; > + > + usb-leds { > + compatible = "gpio-leds"; > + > + led3g { > + label = "tp-link:green:3g"; > + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; > + default-state = "off"; > + trigger-sources = <&hub_port>; > + linux,default-trigger = "usbport"; > + }; > + }; > + > + ath9k-leds { > + compatible = "gpio-leds"; > + > + wlan { > + label = "ath9k-phy0"; > + gpios = <&ath9k 1 GPIO_ACTIVE_LOW>; > + default-state = "off"; > + linux,default-trigger = "phy0tpt"; > + }; > + }; > + > + reg_usb_vbus: reg_usb_vbus { > + compatible = "regulator-fixed"; > + regulator-name = "usb_vbus"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + gpio = <&gpio 6 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + }; > +}; > + > +&spi { > + status = "okay"; > + num-cs = <2>; > + // First value is default pin for flash, second value > + // (via comma) the GPIO number for sdcard. But we used > + // gpio 2 and it equivalent of internal CS0 line. And > + // we use it because we use common bus SPI0.0 for two > + // devices (default Low polarity chip-select, custom > + // High polarity chip-select). > + // In its core, this is a dummy, because internal CS0 line > + // is locked by HW and SPI driver, and we can not use it at all. > + // We use this to simply switch SPI bus to another device. > + cs-gpios = <0>, <&gpio 2 GPIO_ACTIVE_HIGH>; > + > + 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 { > + reg = <0x0 0x20000>; > + label = "u-boot"; > + read-only; > + }; > + > + firmware: partition@20000 { > + reg = <0x20000 0x3d0000>; > + label = "firmware"; > + }; > + > + art: partition@3f0000 { > + reg = <0x3f0000 0x10000>; > + label = "art"; > + read-only; > + }; > + }; > + }; > + > + sdcard@0 { > + compatible = "mmc-spi-slot"; > + reg = <1>; > + spi-max-frequency = <25000000>; > + voltage-ranges = <3200 3400>; > + }; > +}; > + > +&usb { > + vbus-supply = <®_usb_vbus>; > + status = "okay"; > + > + hub_port: port@1 { > + reg = <1>; > + #trigger-source-cells = <0>; > + }; > +}; > + > +&usb_phy { > + status = "okay"; > +}; > diff --git a/target/linux/ath79/dts/ar7241_tl-mr3420-v1.dts b/target/linux/ath79/dts/ar7241_tl-mr3420-v1.dts > new file mode 100644 > index 0000000000..de2a237d06 > --- /dev/null > +++ b/target/linux/ath79/dts/ar7241_tl-mr3420-v1.dts > @@ -0,0 +1,44 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > +/dts-v1/; > + > +#include "ar7241_ap99.dtsi" > + > +/ { > + compatible = "tplink,tl-mr3420-v1", "qca,ar7241"; > + model = "TP-Link TL-MR3420 v1"; > + > + usb-leds { > + compatible = "gpio-leds"; > + > + led3g { > + label = "tp-link:green:3g"; > + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; > + default-state = "off"; > + trigger-sources = <&hub_port>; > + linux,default-trigger = "usbport"; > + }; > + }; > + > + reg_usb_vbus: reg_usb_vbus { > + compatible = "regulator-fixed"; > + regulator-name = "usb_vbus"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + gpio = <&gpio 6 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + }; > +}; > + > +&usb { > + vbus-supply = <®_usb_vbus>; > + status = "okay"; > + > + hub_port: port@1 { > + reg = <1>; > + #trigger-source-cells = <0>; > + }; > +}; > + > +&usb_phy { > + status = "okay"; > +}; > diff --git a/target/linux/ath79/dts/ar7241_tl-wr841-v7.dts b/target/linux/ath79/dts/ar7241_tl-wr841-v7.dts > new file mode 100644 > index 0000000000..ecf0fb5577 > --- /dev/null > +++ b/target/linux/ath79/dts/ar7241_tl-wr841-v7.dts > @@ -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 "ar7241_ap99.dtsi" > + > +/ { > + compatible = "tplink,tl-wr841-v7", "qca,ar7241"; > + model = "TP-LINK TL-WR841N/ND v7"; > +}; > \ No newline at end of file > diff --git a/target/linux/ath79/image/tiny-tp-link.mk b/target/linux/ath79/image/tiny-tp-link.mk > index 1dfed48dba..e4d07143ed 100644 > --- a/target/linux/ath79/image/tiny-tp-link.mk > +++ b/target/linux/ath79/image/tiny-tp-link.mk > @@ -39,3 +39,32 @@ define Device/tl-wr740n-v2 > SUPPORTED_DEVICES := tplink,tl-wr740n-v2 tl-wr740n-v2 > endef > TARGET_DEVICES += tl-wr740n-v2 > + > +define Device/tl-wr841-v7 > + $(Device/tplink-4m) > + ATH_SOC := ar7241 > + DEVICE_TITLE := TP-LINK TL-WR841N/ND v7 > + TPLINK_HWID := 0x08410007 > + SUPPORTED_DEVICES := tplink,tl-wr841-v7 tl-wr841-v7 > +endef > +TARGET_DEVICES += tl-wr841-v7 > + > +define Device/tl-mr3220-v1 > + $(Device/tplink-4m) > + ATH_SOC := ar7241 > + DEVICE_TITLE := TP-Link TL-MR3220 v1 > + TPLINK_HWID := 0x32200001 > + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport > + SUPPORTED_DEVICES := tplink,tl-mr3220-v1 tl-mr3220-v1 > +endef > +TARGET_DEVICES += tl-mr3220-v1 > + > +define Device/tl-mr3420-v1 > + $(Device/tplink-4m) > + ATH_SOC := ar7241 > + DEVICE_TITLE := TP-Link TL-MR3420 v1 > + TPLINK_HWID := 0x34200001 > + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport > + SUPPORTED_DEVICES := tplink,tl-mr3420-v1 tl-mr3420-v1 > +endef > +TARGET_DEVICES += tl-mr3420-v1 > -- > 2.17.1 > > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/listinfo/openwrt-devel
Hello Mathias, > Please use your full name here. Fixed. > To be honest, I don't like the ar7241_ap99.dtsi filename and I'm not > sure if it really does make sense to use a dtsi here. For instance, > only two of the boards have a usb led and your workaround is to move > the usb led into an extra gpio led node. I prefer to have a complete > gpio-leds in the dts files instead. > The spi node from the dtsi is overwritten by one dts. In that case it > shouldn't be added to dtsi. Instead each dts should have it's own spi > node. > While I love to remove redundant stuff, we need to keep an eye on > maintainability/readability. I would like to ensure that we don't > break something for the boards including the dtsif, we change > something in the dtsi. Sorry, but I had to use the dsti file (I renamed it to an readability name), because it is suitable for three devices and to save space... Like this https://patchwork.ozlabs.org/patch/928529/ (common dtsi for two devices) By the way, what was the spi sdcard - its was my mod, and I deleted it because in the original it is not present. Sorry)))) > Full name here. as well Fixed. > ucidef_add_switch should already set the lan interface. A > ucidef_set_interface_wan "eth1" should be sufficient here. Fixed. By the way, here is used eth0 as wan and eth1 as lan ports. Otherwise it does not work... > The pending https://github.com/openwrt/openwrt/pull/1091 is about to > remove all memory nodes in favour of the automatic memory detection. > Would you please test if the correct of amount of memory is detected > without the node. If so, it can be removed. Memory node was removed. > Please remove the heartbeat trigger. Due to the led-status alias the > led is used for status/diag signaling. Fixed. > Please use a proper tp-link:<colour>:<function> label as well. Fixed.
From ba345cc5fe00775b279eda5af998cfbdc88e458e Mon Sep 17 00:00:00 2001 From: Dmytro Smyrnov <dioptimizer@hotmail.com> Date: Tue, 26 Jun 2018 17:01:47 +0300 Subject: [PATCH] ath79: Add support for TP-LINK TL-WR841N/ND v7,TL-MR3220v1,TL-MR3420v1 Its common AP99(AR7241) platform with following devices: TP-Link TL-WR841N/ND v7 (SoC AR7241 / Wifi AR9287 / without USB) TP-Link TL-MR3220 v1 (SoC AR7241 / Wifi AR9285 / USB support) TP-Link TL-MR3420 v1 (SoC AR7241 / Wifi AR9287 / USB support) Patches has been Fixed and Updated. Signed-off-by: Dmytro Smyrnov <dioptimizer@hotmail.com> --- .../ath79/base-files/etc/board.d/02_network | 7 + .../etc/hotplug.d/firmware/10-ath9k-eeprom | 3 + target/linux/ath79/dts/ar7241_ap99.dtsi | 144 +++++++++++++++ .../linux/ath79/dts/ar7241_tl-mr3220-v1.dts | 14 ++ .../linux/ath79/dts/ar7241_tl-mr3420-v1.dts | 9 + .../dts/ar7241_tl-mr3x20-v1_tl-wr841-v7.dtsi | 166 ++++++++++++++++++ target/linux/ath79/dts/ar7241_tl-wr841-v7.dts | 28 +++ target/linux/ath79/image/tiny-tp-link.mk | 29 +++ 8 files changed, 400 insertions(+) create mode 100644 target/linux/ath79/dts/ar7241_ap99.dtsi create mode 100644 target/linux/ath79/dts/ar7241_tl-mr3220-v1.dts create mode 100644 target/linux/ath79/dts/ar7241_tl-mr3420-v1.dts create mode 100644 target/linux/ath79/dts/ar7241_tl-mr3x20-v1_tl-wr841-v7.dtsi create mode 100644 target/linux/ath79/dts/ar7241_tl-wr841-v7.dts diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network index e2a45b0526..cf0f406d25 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -98,6 +98,13 @@ ath79_setup_interfaces() ucidef_add_switch "switch0" \ "0@eth0" "3:lan:1" "5:lan:2" "4:wan" ;; + "tplink,tl-wr841-v7"|\ + "tplink,tl-mr3220-v1"|\ + "tplink,tl-mr3420-v1") + ucidef_set_interfaces_wan "eth0" + ucidef_add_switch "switch0" \ + "0@eth1" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" + ;; *) ucidef_set_interfaces_lan_wan "eth0" "eth1" ;; diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index 7023fa5e58..e5e2b1f8d3 100644 --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -54,6 +54,9 @@ case "$FIRMWARE" in "tplink,tl-wdr4300") ath9k_eeprom_extract "art" 20480 1088 ;; + "tplink,tl-wr841-v7"|\ + "tplink,tl-mr3220-v1"|\ + "tplink,tl-mr3420-v1"|\ "netgear,wnr612-v2"|\ "on,n150r"|\ "tplink,tl-wr740n-v2"|\ diff --git a/target/linux/ath79/dts/ar7241_ap99.dtsi b/target/linux/ath79/dts/ar7241_ap99.dtsi new file mode 100644 index 0000000000..d3834b4915 --- /dev/null +++ b/target/linux/ath79/dts/ar7241_ap99.dtsi @@ -0,0 +1,144 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> + +#include "ar7241.dtsi" + +/ { + aliases { + led-status = &led_system; + }; + + memory@0 { + device_type = "memory"; + reg = <0x0 0x2000000>; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + + reset { + label = "reset"; + linux,code = <KEY_RESTART>; + gpios = <&gpio 11 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + + qss { + label = "qss"; + linux,code = <KEY_WPS_BUTTON>; + gpios = <&gpio 12 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + led_system: system { + label = "tp-link:green:system"; + gpios = <&gpio 1 GPIO_ACTIVE_LOW>; + linux,default-trigger = "heartbeat"; + }; + + qss { + label = "tp-link:green:qss"; + gpios = <&gpio 0 GPIO_ACTIVE_LOW>; + }; + }; + + ath9k-leds { + compatible = "gpio-leds"; + + wlan { + label = "ath9k-phy0"; + gpios = <&ath9k 0 GPIO_ACTIVE_LOW>; + default-state = "off"; + linux,default-trigger = "phy0tpt"; + }; + }; +}; + +&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 { + reg = <0x0 0x20000>; + label = "u-boot"; + read-only; + }; + + firmware: partition@20000 { + reg = <0x20000 0x3d0000>; + label = "firmware"; + }; + + art: partition@3f0000 { + reg = <0x3f0000 0x10000>; + label = "art"; + read-only; + }; + }; + }; +}; + +&pcie { + status = "okay"; + + ath9k: wifi@0 { + reg = <0x0000 0 0 0 0>; + #gpio-cells = <2>; + gpio-controller; + qca,no-eeprom; + mtd-mac-address = <&uboot 0x1fc00>; + }; +}; + +ð0 { + status = "okay"; + + mtd-mac-address = <&uboot 0x1fc00>; + mtd-mac-address-increment = <(-1)>; + phy-handle = <&phy4>; +}; + +ð1 { + status = "okay"; + + mtd-mac-address = <&uboot 0x1fc00>; + mtd-mac-address-increment = <1>; +}; + +&mdio0 { + status = "okay"; + + phy4: ethernet-phy@4 { + reg = <4>; + phy-mode = "mii"; + }; +}; + +&gpio { + status = "okay"; +}; + +&uart { + status = "okay"; +}; diff --git a/target/linux/ath79/dts/ar7241_tl-mr3220-v1.dts b/target/linux/ath79/dts/ar7241_tl-mr3220-v1.dts new file mode 100644 index 0000000000..f365c3db56 --- /dev/null +++ b/target/linux/ath79/dts/ar7241_tl-mr3220-v1.dts @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar7241_tl-mr3x20-v1_tl-wr841-v7.dtsi" + +/ { + compatible = "tplink,tl-mr3220-v1", "qca,ar7241"; + model = "TP-Link TL-MR3220 v1"; +}; + +// Just overwrite the gpio led for other wifi chip. +&wlan { + gpios = <&ath9k 1 GPIO_ACTIVE_LOW>; +}; diff --git a/target/linux/ath79/dts/ar7241_tl-mr3420-v1.dts b/target/linux/ath79/dts/ar7241_tl-mr3420-v1.dts new file mode 100644 index 0000000000..ef2c2e3429 --- /dev/null +++ b/target/linux/ath79/dts/ar7241_tl-mr3420-v1.dts @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar7241_tl-mr3x20-v1_tl-wr841-v7.dtsi" + +/ { + compatible = "tplink,tl-mr3420-v1", "qca,ar7241"; + model = "TP-Link TL-MR3420 v1"; +}; diff --git a/target/linux/ath79/dts/ar7241_tl-mr3x20-v1_tl-wr841-v7.dtsi b/target/linux/ath79/dts/ar7241_tl-mr3x20-v1_tl-wr841-v7.dtsi new file mode 100644 index 0000000000..f38771e2e7 --- /dev/null +++ b/target/linux/ath79/dts/ar7241_tl-mr3x20-v1_tl-wr841-v7.dtsi @@ -0,0 +1,166 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> + +#include "ar7241.dtsi" + +/ { + aliases { + led-status = &led_system; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + + reset { + label = "reset"; + linux,code = <KEY_RESTART>; + gpios = <&gpio 11 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + + qss { + label = "qss"; + linux,code = <KEY_WPS_BUTTON>; + gpios = <&gpio 12 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + led_system: system { + label = "tp-link:green:system"; + gpios = <&gpio 1 GPIO_ACTIVE_LOW>; + }; + + wlan: wlan { + label = "tp-link:green:wlan"; + gpios = <&ath9k 0 GPIO_ACTIVE_LOW>; + default-state = "off"; + linux,default-trigger = "phy0tpt"; + }; + + led3g: led3g { + label = "tp-link:green:3g"; + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; + default-state = "off"; + trigger-sources = <&hub_port>; + linux,default-trigger = "usbport"; + }; + + qss { + label = "tp-link:green:qss"; + gpios = <&gpio 0 GPIO_ACTIVE_LOW>; + }; + }; + + reg_usb_vbus: reg_usb_vbus { + compatible = "regulator-fixed"; + regulator-name = "usb_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&gpio 6 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; +}; + +&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 { + reg = <0x0 0x20000>; + label = "u-boot"; + read-only; + }; + + firmware: partition@20000 { + reg = <0x20000 0x3d0000>; + label = "firmware"; + }; + + art: partition@3f0000 { + reg = <0x3f0000 0x10000>; + label = "art"; + read-only; + }; + }; + }; +}; + +&pcie { + status = "okay"; + + ath9k: wifi@0 { + reg = <0x0000 0 0 0 0>; + #gpio-cells = <2>; + gpio-controller; + qca,no-eeprom; + mtd-mac-address = <&uboot 0x1fc00>; + }; +}; + +ð0 { + status = "okay"; + + phy-handle = <&phy4>; + + mtd-mac-address = <&uboot 0x1fc00>; + mtd-mac-address-increment = <(-1)>; +}; + +ð1 { + status = "okay"; + + mtd-mac-address = <&uboot 0x1fc00>; + mtd-mac-address-increment = <1>; +}; + +&mdio0 { + status = "okay"; + + phy4: ethernet-phy@4 { + reg = <4>; + phy-mode = "mii"; + }; +}; + +&gpio { + status = "okay"; +}; + +&uart { + status = "okay"; +}; + +&usb { + vbus-supply = <®_usb_vbus>; + status = "okay"; + + hub_port: port@1 { + reg = <1>; + #trigger-source-cells = <0>; + }; +}; + +&usb_phy { + status = "okay"; +}; diff --git a/target/linux/ath79/dts/ar7241_tl-wr841-v7.dts b/target/linux/ath79/dts/ar7241_tl-wr841-v7.dts new file mode 100644 index 0000000000..c6dd187b06 --- /dev/null +++ b/target/linux/ath79/dts/ar7241_tl-wr841-v7.dts @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar7241_tl-mr3x20-v1_tl-wr841-v7.dtsi" + +/ { + compatible = "tplink,tl-wr841-v7", "qca,ar7241"; + model = "TP-LINK TL-WR841N/ND v7"; +}; + +// Disabling everything that related with USB port, +// since the device does not have it. + +&led3g { + status = "disabled"; +}; + +®_usb_vbus { + status = "disabled"; +}; + +&usb { + status = "disabled"; +}; + +&usb_phy { + status = "disabled"; +}; diff --git a/target/linux/ath79/image/tiny-tp-link.mk b/target/linux/ath79/image/tiny-tp-link.mk index 1dfed48dba..e4d07143ed 100644 --- a/target/linux/ath79/image/tiny-tp-link.mk +++ b/target/linux/ath79/image/tiny-tp-link.mk @@ -39,3 +39,32 @@ define Device/tl-wr740n-v2 SUPPORTED_DEVICES := tplink,tl-wr740n-v2 tl-wr740n-v2 endef TARGET_DEVICES += tl-wr740n-v2 + +define Device/tl-wr841-v7 + $(Device/tplink-4m) + ATH_SOC := ar7241 + DEVICE_TITLE := TP-LINK TL-WR841N/ND v7 + TPLINK_HWID := 0x08410007 + SUPPORTED_DEVICES := tplink,tl-wr841-v7 tl-wr841-v7 +endef +TARGET_DEVICES += tl-wr841-v7 + +define Device/tl-mr3220-v1 + $(Device/tplink-4m) + ATH_SOC := ar7241 + DEVICE_TITLE := TP-Link TL-MR3220 v1 + TPLINK_HWID := 0x32200001 + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport + SUPPORTED_DEVICES := tplink,tl-mr3220-v1 tl-mr3220-v1 +endef +TARGET_DEVICES += tl-mr3220-v1 + +define Device/tl-mr3420-v1 + $(Device/tplink-4m) + ATH_SOC := ar7241 + DEVICE_TITLE := TP-Link TL-MR3420 v1 + TPLINK_HWID := 0x34200001 + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport + SUPPORTED_DEVICES := tplink,tl-mr3420-v1 tl-mr3420-v1 +endef +TARGET_DEVICES += tl-mr3420-v1
diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network index e2a45b0526..689ae82ffb 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -98,6 +98,13 @@ ath79_setup_interfaces() ucidef_add_switch "switch0" \ "0@eth0" "3:lan:1" "5:lan:2" "4:wan" ;; + "tplink,tl-wr841-v7"|\ + "tplink,tl-mr3220-v1"|\ + "tplink,tl-mr3420-v1") + ucidef_set_interfaces_lan_wan "eth1.1" "eth0" + ucidef_add_switch "switch0" \ + "0@eth1" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" + ;; *) ucidef_set_interfaces_lan_wan "eth0" "eth1" ;; diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index 7023fa5e58..e5e2b1f8d3 100644 --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -54,6 +54,9 @@ case "$FIRMWARE" in "tplink,tl-wdr4300") ath9k_eeprom_extract "art" 20480 1088 ;; + "tplink,tl-wr841-v7"|\ + "tplink,tl-mr3220-v1"|\ + "tplink,tl-mr3420-v1"|\ "netgear,wnr612-v2"|\ "on,n150r"|\ "tplink,tl-wr740n-v2"|\ diff --git a/target/linux/ath79/dts/ar7241_ap99.dtsi b/target/linux/ath79/dts/ar7241_ap99.dtsi new file mode 100644 index 0000000000..d3834b4915 --- /dev/null +++ b/target/linux/ath79/dts/ar7241_ap99.dtsi @@ -0,0 +1,144 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> + +#include "ar7241.dtsi" + +/ { + aliases { + led-status = &led_system; + }; + + memory@0 { + device_type = "memory"; + reg = <0x0 0x2000000>; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + + reset { + label = "reset"; + linux,code = <KEY_RESTART>; + gpios = <&gpio 11 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + + qss { + label = "qss"; + linux,code = <KEY_WPS_BUTTON>; + gpios = <&gpio 12 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + led_system: system { + label = "tp-link:green:system"; + gpios = <&gpio 1 GPIO_ACTIVE_LOW>; + linux,default-trigger = "heartbeat"; + }; + + qss { + label = "tp-link:green:qss"; + gpios = <&gpio 0 GPIO_ACTIVE_LOW>; + }; + }; + + ath9k-leds { + compatible = "gpio-leds"; + + wlan { + label = "ath9k-phy0"; + gpios = <&ath9k 0 GPIO_ACTIVE_LOW>; + default-state = "off"; + linux,default-trigger = "phy0tpt"; + }; + }; +}; + +&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 { + reg = <0x0 0x20000>; + label = "u-boot"; + read-only; + }; + + firmware: partition@20000 { + reg = <0x20000 0x3d0000>; + label = "firmware"; + }; + + art: partition@3f0000 { + reg = <0x3f0000 0x10000>; + label = "art"; + read-only; + }; + }; + }; +}; + +&pcie { + status = "okay"; + + ath9k: wifi@0 { + reg = <0x0000 0 0 0 0>; + #gpio-cells = <2>; + gpio-controller; + qca,no-eeprom; + mtd-mac-address = <&uboot 0x1fc00>; + }; +}; + +ð0 { + status = "okay"; + + mtd-mac-address = <&uboot 0x1fc00>; + mtd-mac-address-increment = <(-1)>; + phy-handle = <&phy4>; +}; + +ð1 { + status = "okay"; + + mtd-mac-address = <&uboot 0x1fc00>; + mtd-mac-address-increment = <1>; +}; + +&mdio0 { + status = "okay"; + + phy4: ethernet-phy@4 { + reg = <4>; + phy-mode = "mii"; + }; +}; + +&gpio { + status = "okay"; +}; + +&uart { + status = "okay"; +}; diff --git a/target/linux/ath79/dts/ar7241_tl-mr3220-v1.dts b/target/linux/ath79/dts/ar7241_tl-mr3220-v1.dts new file mode 100644 index 0000000000..a5d577749e --- /dev/null +++ b/target/linux/ath79/dts/ar7241_tl-mr3220-v1.dts @@ -0,0 +1,108 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar7241_ap99.dtsi" + +/ { + compatible = "tplink,tl-mr3220-v1", "qca,ar7241"; + model = "TP-Link TL-MR3220 v1"; + + usb-leds { + compatible = "gpio-leds"; + + led3g { + label = "tp-link:green:3g"; + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; + default-state = "off"; + trigger-sources = <&hub_port>; + linux,default-trigger = "usbport"; + }; + }; + + ath9k-leds { + compatible = "gpio-leds"; + + wlan { + label = "ath9k-phy0"; + gpios = <&ath9k 1 GPIO_ACTIVE_LOW>; + default-state = "off"; + linux,default-trigger = "phy0tpt"; + }; + }; + + reg_usb_vbus: reg_usb_vbus { + compatible = "regulator-fixed"; + regulator-name = "usb_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&gpio 6 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; +}; + +&spi { + status = "okay"; + num-cs = <2>; + // First value is default pin for flash, second value + // (via comma) the GPIO number for sdcard. But we used + // gpio 2 and it equivalent of internal CS0 line. And + // we use it because we use common bus SPI0.0 for two + // devices (default Low polarity chip-select, custom + // High polarity chip-select). + // In its core, this is a dummy, because internal CS0 line + // is locked by HW and SPI driver, and we can not use it at all. + // We use this to simply switch SPI bus to another device. + cs-gpios = <0>, <&gpio 2 GPIO_ACTIVE_HIGH>; + + 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 { + reg = <0x0 0x20000>; + label = "u-boot"; + read-only; + }; + + firmware: partition@20000 { + reg = <0x20000 0x3d0000>; + label = "firmware"; + }; + + art: partition@3f0000 { + reg = <0x3f0000 0x10000>; + label = "art"; + read-only; + }; + }; + }; + + sdcard@0 { + compatible = "mmc-spi-slot"; + reg = <1>; + spi-max-frequency = <25000000>; + voltage-ranges = <3200 3400>; + }; +}; + +&usb { + vbus-supply = <®_usb_vbus>; + status = "okay"; + + hub_port: port@1 { + reg = <1>; + #trigger-source-cells = <0>; + }; +}; + +&usb_phy { + status = "okay"; +}; diff --git a/target/linux/ath79/dts/ar7241_tl-mr3420-v1.dts b/target/linux/ath79/dts/ar7241_tl-mr3420-v1.dts new file mode 100644 index 0000000000..de2a237d06 --- /dev/null +++ b/target/linux/ath79/dts/ar7241_tl-mr3420-v1.dts @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar7241_ap99.dtsi" + +/ { + compatible = "tplink,tl-mr3420-v1", "qca,ar7241"; + model = "TP-Link TL-MR3420 v1"; + + usb-leds { + compatible = "gpio-leds"; + + led3g { + label = "tp-link:green:3g"; + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; + default-state = "off"; + trigger-sources = <&hub_port>; + linux,default-trigger = "usbport"; + }; + }; + + reg_usb_vbus: reg_usb_vbus { + compatible = "regulator-fixed"; + regulator-name = "usb_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&gpio 6 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; +}; + +&usb { + vbus-supply = <®_usb_vbus>; + status = "okay"; + + hub_port: port@1 { + reg = <1>; + #trigger-source-cells = <0>; + }; +}; + +&usb_phy { + status = "okay"; +}; diff --git a/target/linux/ath79/dts/ar7241_tl-wr841-v7.dts b/target/linux/ath79/dts/ar7241_tl-wr841-v7.dts new file mode 100644 index 0000000000..ecf0fb5577 --- /dev/null +++ b/target/linux/ath79/dts/ar7241_tl-wr841-v7.dts @@ -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 "ar7241_ap99.dtsi" + +/ { + compatible = "tplink,tl-wr841-v7", "qca,ar7241"; + model = "TP-LINK TL-WR841N/ND v7"; +}; \ No newline at end of file diff --git a/target/linux/ath79/image/tiny-tp-link.mk b/target/linux/ath79/image/tiny-tp-link.mk index 1dfed48dba..e4d07143ed 100644 --- a/target/linux/ath79/image/tiny-tp-link.mk +++ b/target/linux/ath79/image/tiny-tp-link.mk @@ -39,3 +39,32 @@ define Device/tl-wr740n-v2 SUPPORTED_DEVICES := tplink,tl-wr740n-v2 tl-wr740n-v2 endef TARGET_DEVICES += tl-wr740n-v2 + +define Device/tl-wr841-v7 + $(Device/tplink-4m) + ATH_SOC := ar7241 + DEVICE_TITLE := TP-LINK TL-WR841N/ND v7 + TPLINK_HWID := 0x08410007 + SUPPORTED_DEVICES := tplink,tl-wr841-v7 tl-wr841-v7 +endef +TARGET_DEVICES += tl-wr841-v7 + +define Device/tl-mr3220-v1 + $(Device/tplink-4m) + ATH_SOC := ar7241 + DEVICE_TITLE := TP-Link TL-MR3220 v1 + TPLINK_HWID := 0x32200001 + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport + SUPPORTED_DEVICES := tplink,tl-mr3220-v1 tl-mr3220-v1 +endef +TARGET_DEVICES += tl-mr3220-v1 + +define Device/tl-mr3420-v1 + $(Device/tplink-4m) + ATH_SOC := ar7241 + DEVICE_TITLE := TP-Link TL-MR3420 v1 + TPLINK_HWID := 0x34200001 + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport + SUPPORTED_DEVICES := tplink,tl-mr3420-v1 tl-mr3420-v1 +endef +TARGET_DEVICES += tl-mr3420-v1