diff mbox series

[OpenWrt-Devel,v4] ath79: add support for TP-Link TL-MR6400

Message ID 20200117121552.2225-1-freifunk@adrianschmutzler.de
State Accepted
Delegated to: Adrian Schmutzler
Headers show
Series [OpenWrt-Devel,v4] ath79: add support for TP-Link TL-MR6400 | expand

Commit Message

Adrian Schmutzler Jan. 17, 2020, 12:15 p.m. UTC
From: Enrico Mioso <mrkiko.rs@gmail.com>

This device is an LTE router supported in ar71xx so far.
As per original commit, hardware specifications (v1.0 EU):
- SoC: QCA9531
- Flash: Winbond W25Q64FV (8MiB)
- RAM: EtronTech EM6AB160TSE-5G (64MiB)
- Wireless: SoC platform only (2.4GHz b/g/n, 2x internal antenna)
- Ethernet: 2NIC (3x100M + 1x100M)
- WWAN: TP-LINK LTE MODULE (2x external detachable antenna)
- Power: DC 12V 1A

Flashing instructions:
You can flash via tftp recovery (serve factory image as /mr6400_tp_recovery.bin
on 192.168.0.66/24, connect to any ethernet port and power on device while
holding the reset button). Flashing via OEM web interface does not work.

Known issues:
- LTE module does not always come up during boot. This can be fixed by turning
  it off and on again.
- As it happened occasionally in ar71xx, during bursty flash activity, LTE
  module init will fail, with USB enumeration errors.
- eth1 (LAN) always shows carrier as 1 even if no cable is plugged in (this
  works "correctly" on ar71xx)

Signed-off-by: Enrico Mioso <mrkiko.rs@gmail.com>
[rebase and several adjustments]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Tested-by: Filip Moc <lede@moc6.cz>
---
 .../ath79/dts/qca9531_tplink_tl-mr6400-v1.dts | 167 ++++++++++++++++++
 .../generic/base-files/etc/board.d/01_leds    |   5 +
 .../generic/base-files/etc/board.d/02_network |   5 +
 target/linux/ath79/image/generic-tp-link.mk   |  12 ++
 4 files changed, 189 insertions(+)
 create mode 100644 target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts

Comments

Thomas Richard via openwrt-devel Jan. 17, 2020, 12:53 p.m. UTC | #1
The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
Hi, 

thanks for patch. Good to see support for MR6400 possibly going to ath79.

Just to clarify known issues.
The first two issues are both just the same thing.
Problem with interface showing always as up with carrier is with eth0, not eth1
(eth0 is LAN1 to LAN3, eth1 is LAN4/WAN).

Filip


On Fri, Jan 17, 2020 at 01:15:52PM +0100, Adrian Schmutzler wrote:
> From: Enrico Mioso <mrkiko.rs@gmail.com>
> 
> This device is an LTE router supported in ar71xx so far.
> As per original commit, hardware specifications (v1.0 EU):
> - SoC: QCA9531
> - Flash: Winbond W25Q64FV (8MiB)
> - RAM: EtronTech EM6AB160TSE-5G (64MiB)
> - Wireless: SoC platform only (2.4GHz b/g/n, 2x internal antenna)
> - Ethernet: 2NIC (3x100M + 1x100M)
> - WWAN: TP-LINK LTE MODULE (2x external detachable antenna)
> - Power: DC 12V 1A
> 
> Flashing instructions:
> You can flash via tftp recovery (serve factory image as /mr6400_tp_recovery.bin
> on 192.168.0.66/24, connect to any ethernet port and power on device while
> holding the reset button). Flashing via OEM web interface does not work.
> 
> Known issues:
> - LTE module does not always come up during boot. This can be fixed by turning
>   it off and on again.
> - As it happened occasionally in ar71xx, during bursty flash activity, LTE
>   module init will fail, with USB enumeration errors.
> - eth1 (LAN) always shows carrier as 1 even if no cable is plugged in (this
>   works "correctly" on ar71xx)
> 
> Signed-off-by: Enrico Mioso <mrkiko.rs@gmail.com>
> [rebase and several adjustments]
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> Tested-by: Filip Moc <lede@moc6.cz>
> ---
>  .../ath79/dts/qca9531_tplink_tl-mr6400-v1.dts | 167 ++++++++++++++++++
>  .../generic/base-files/etc/board.d/01_leds    |   5 +
>  .../generic/base-files/etc/board.d/02_network |   5 +
>  target/linux/ath79/image/generic-tp-link.mk   |  12 ++
>  4 files changed, 189 insertions(+)
>  create mode 100644 target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts
> 
> diff --git a/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts b/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts
> new file mode 100644
> index 0000000000..7299257cda
> --- /dev/null
> +++ b/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts
> @@ -0,0 +1,167 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/dts-v1/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +#include "qca953x.dtsi"
> +
> +/ {
> +	compatible = "tplink,tl-mr6400-v1", "qca,qca9531";
> +	model = "TP-Link TL-MR6400 v1";
> +
> +	aliases {
> +		led-boot = &led_power;
> +		led-failsafe = &led_power;
> +		led-running = &led_power;
> +		led-upgrade = &led_power;
> +		label-mac-device = &wmac;
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +
> +		/* D12 */
> +		wan {
> +			label = "tp-link:white:wan";
> +			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		/* D11 */
> +		4g {
> +			label = "tp-link:white:4g";
> +			gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		/* D5 */
> +		wps {
> +			label = "tp-link:white:wps";
> +			gpios = <&gpio 3 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		/* D3 */
> +		wlan {
> +			label = "tp-link:white:wlan";
> +			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "phy0tpt";
> +		};
> +
> +		/* D2 */
> +		led_power: power {
> +			label = "tp-link:white:power";
> +			gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		/* D4 */
> +		lan {
> +			label = "tp-link:white:lan";
> +			gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +
> +	keys {
> +		compatible = "gpio-keys";
> +
> +		/* SW2 */
> +		reset {
> +			label = "Reset button";
> +			linux,code = <KEY_RESTART>;
> +			gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
> +			debounce-interval = <60>;
> +		};
> +
> +		/* SW3 */
> +		rfkill {
> +			label = "RF kill button";
> +			linux,code = <KEY_RFKILL>;
> +			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
> +			debounce-interval = <60>;
> +		};
> +	};
> +
> +	gpio-export {
> +		compatible = "gpio-export";
> +
> +		gpio_usb_power {
> +			gpio-export,name = "tp-link:power:lte";
> +			gpio-export,output = <0>;
> +			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +};
> +
> +&uart {
> +	status = "okay";
> +};
> +
> +&spi {
> +	status = "okay";
> +
> +	num-cs = <1>;
> +
> +	flash@0 {
> +		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 {
> +				compatible = "tplink,firmware";
> +				label = "firmware";
> +				reg = <0x020000 0x7d0000>;
> +			};
> +
> +			art: partition@7f0000 {
> +				label = "art";
> +				reg = <0x7f0000 0x010000>;
> +				read-only;
> +			};
> +		};
> +	};
> +};
> +
> +&eth0 {
> +	status = "okay";
> +
> +	phy-handle = <&swphy0>;
> +
> +	mtd-mac-address = <&uboot 0x1fc00>;
> +	mtd-mac-address-increment = <1>;
> +};
> +
> +&eth1 {
> +	mtd-mac-address = <&uboot 0x1fc00>;
> +	mtd-mac-address-increment = <(-1)>;
> +};
> +
> +&wmac {
> +	status = "okay";
> +
> +	mtd-cal-data = <&art 0x1000>;
> +	mtd-mac-address = <&uboot 0x1fc00>;
> +};
> +
> +&usb0 {
> +	#address-cells = <1>;
> +	#size-cells = <0>;
> +	status = "okay";
> +
> +	hub_port: port@1 {
> +		reg = <1>;
> +		#trigger-source-cells = <0>;
> +	};
> +};
> +
> +&usb_phy {
> +	status = "okay";
> +};
> diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
> index de4e8b4a7f..1023ba7a39 100755
> --- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds
> +++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
> @@ -215,6 +215,11 @@ tplink,re450-v2)
>  	ucidef_set_led_netdev "lan_data" "LAN Data" "tp-link:green:lan_data" "eth0" "tx rx"
>  	ucidef_set_led_netdev "lan_link" "LAN Link" "tp-link:green:lan_link" "eth0" "link"
>  	;;
> +tplink,tl-mr6400-v1)
> +	ucidef_set_led_switch "lan" "LAN" "tp-link:white:lan" "switch0" "0x0e"
> +	ucidef_set_led_netdev "wan" "WAN" "tp-link:white:wan" "eth1"
> +	ucidef_set_led_netdev "4g" "4G" "tp-link:white:4g" "usb0"
> +	;;
>  tplink,tl-wr842n-v2)
>  	ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
>  	ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04"
> diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
> index a96b504d5a..0bae9dc384 100755
> --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
> +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
> @@ -236,6 +236,11 @@ ath79_setup_interfaces()
>  		ucidef_add_switch "switch0" \
>  			"0@eth0" "2:lan:3" "3:lan:2" "4:lan:1" "1:wan"
>  		;;
> +	tplink,tl-mr6400-v1)
> +		ucidef_set_interfaces_lan_wan "eth0.1 eth1" "usb0"
> +		ucidef_add_switch "switch0" \
> +			"0@eth0" "1:lan:1" "2:lan:3" "3:lan:2"
> +		;;
>  	tplink,tl-wr842n-v2)
>  		ucidef_set_interface_wan "eth1"
>  		ucidef_add_switch "switch0" \
> diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk
> index a7266f05a9..53138e343b 100644
> --- a/target/linux/ath79/image/generic-tp-link.mk
> +++ b/target/linux/ath79/image/generic-tp-link.mk
> @@ -374,6 +374,18 @@ define Device/tplink_re450-v2
>  endef
>  TARGET_DEVICES += tplink_re450-v2
>  
> +define Device/tplink_tl-mr6400-v1
> +  $(Device/tplink-8mlzma)
> +  SOC := qca9531
> +  DEVICE_MODEL := TL-MR6400
> +  DEVICE_VARIANT := v1
> +  TPLINK_HWID := 0x64000001
> +  DEVICE_PACKAGES := kmod-usb2 kmod-usb-net kmod-usb-net-rndis kmod-usb-serial \
> +	kmod-usb-serial-option adb-enablemodem
> +  SUPPORTED_DEVICES += tl-mr6400
> +endef
> +TARGET_DEVICES += tplink_tl-mr6400-v1
> +
>  define Device/tplink_tl-wdr3500-v1
>    $(Device/tplink-8mlzma)
>    SOC := ar9344
> -- 
> 2.20.1
>
Adrian Schmutzler Jan. 17, 2020, 2:16 p.m. UTC | #2
Hi,

> -----Original Message-----
> From: Filip Moc [mailto:lede@moc6.cz]
> Sent: Freitag, 17. Januar 2020 13:53
> To: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> Cc: openwrt-devel@lists.openwrt.org; Enrico Mioso <mrkiko.rs@gmail.com>
> Subject: Re: [PATCH v4] ath79: add support for TP-Link TL-MR6400
> 
> Hi,
> 
> thanks for patch. Good to see support for MR6400 possibly going to ath79.
> 
> Just to clarify known issues.
> The first two issues are both just the same thing.

Yes, obviously ...

> Problem with interface showing always as up with carrier is with eth0, not eth1
> (eth0 is LAN1 to LAN3, eth1 is LAN4/WAN).

Yes.

I would adjust to the following during merge:

"- LTE module does not always come up during boot (showing USB enumeration errors). Similar behavior has been reported at least from one user for ar71xx, too. Turning USB off and on again will serve as a workaround.
- eth0 (LAN) always shows carrier as 1 even if no cable is plugged in (this works "correctly" on ar71xx)"

Best

Adrian
Thomas Richard via openwrt-devel Jan. 31, 2020, 9:33 p.m. UTC | #3
The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
Hi,

I tested snapshot build from "Fri Jan 31 00:17:40 2020" and except for problems
mentioned in known issues it seems to be working fine.

Filip


On Fri, Jan 17, 2020 at 01:15:52PM +0100, Adrian Schmutzler wrote:
> From: Enrico Mioso <mrkiko.rs@gmail.com>
> 
> This device is an LTE router supported in ar71xx so far.
> As per original commit, hardware specifications (v1.0 EU):
> - SoC: QCA9531
> - Flash: Winbond W25Q64FV (8MiB)
> - RAM: EtronTech EM6AB160TSE-5G (64MiB)
> - Wireless: SoC platform only (2.4GHz b/g/n, 2x internal antenna)
> - Ethernet: 2NIC (3x100M + 1x100M)
> - WWAN: TP-LINK LTE MODULE (2x external detachable antenna)
> - Power: DC 12V 1A
> 
> Flashing instructions:
> You can flash via tftp recovery (serve factory image as /mr6400_tp_recovery.bin
> on 192.168.0.66/24, connect to any ethernet port and power on device while
> holding the reset button). Flashing via OEM web interface does not work.
> 
> Known issues:
> - LTE module does not always come up during boot. This can be fixed by turning
>   it off and on again.
> - As it happened occasionally in ar71xx, during bursty flash activity, LTE
>   module init will fail, with USB enumeration errors.
> - eth1 (LAN) always shows carrier as 1 even if no cable is plugged in (this
>   works "correctly" on ar71xx)
> 
> Signed-off-by: Enrico Mioso <mrkiko.rs@gmail.com>
> [rebase and several adjustments]
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> Tested-by: Filip Moc <lede@moc6.cz>
> ---
>  .../ath79/dts/qca9531_tplink_tl-mr6400-v1.dts | 167 ++++++++++++++++++
>  .../generic/base-files/etc/board.d/01_leds    |   5 +
>  .../generic/base-files/etc/board.d/02_network |   5 +
>  target/linux/ath79/image/generic-tp-link.mk   |  12 ++
>  4 files changed, 189 insertions(+)
>  create mode 100644 target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts
> 
> diff --git a/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts b/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts
> new file mode 100644
> index 0000000000..7299257cda
> --- /dev/null
> +++ b/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts
> @@ -0,0 +1,167 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/dts-v1/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +#include "qca953x.dtsi"
> +
> +/ {
> +	compatible = "tplink,tl-mr6400-v1", "qca,qca9531";
> +	model = "TP-Link TL-MR6400 v1";
> +
> +	aliases {
> +		led-boot = &led_power;
> +		led-failsafe = &led_power;
> +		led-running = &led_power;
> +		led-upgrade = &led_power;
> +		label-mac-device = &wmac;
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +
> +		/* D12 */
> +		wan {
> +			label = "tp-link:white:wan";
> +			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		/* D11 */
> +		4g {
> +			label = "tp-link:white:4g";
> +			gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		/* D5 */
> +		wps {
> +			label = "tp-link:white:wps";
> +			gpios = <&gpio 3 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		/* D3 */
> +		wlan {
> +			label = "tp-link:white:wlan";
> +			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "phy0tpt";
> +		};
> +
> +		/* D2 */
> +		led_power: power {
> +			label = "tp-link:white:power";
> +			gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		/* D4 */
> +		lan {
> +			label = "tp-link:white:lan";
> +			gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +
> +	keys {
> +		compatible = "gpio-keys";
> +
> +		/* SW2 */
> +		reset {
> +			label = "Reset button";
> +			linux,code = <KEY_RESTART>;
> +			gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
> +			debounce-interval = <60>;
> +		};
> +
> +		/* SW3 */
> +		rfkill {
> +			label = "RF kill button";
> +			linux,code = <KEY_RFKILL>;
> +			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
> +			debounce-interval = <60>;
> +		};
> +	};
> +
> +	gpio-export {
> +		compatible = "gpio-export";
> +
> +		gpio_usb_power {
> +			gpio-export,name = "tp-link:power:lte";
> +			gpio-export,output = <0>;
> +			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +};
> +
> +&uart {
> +	status = "okay";
> +};
> +
> +&spi {
> +	status = "okay";
> +
> +	num-cs = <1>;
> +
> +	flash@0 {
> +		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 {
> +				compatible = "tplink,firmware";
> +				label = "firmware";
> +				reg = <0x020000 0x7d0000>;
> +			};
> +
> +			art: partition@7f0000 {
> +				label = "art";
> +				reg = <0x7f0000 0x010000>;
> +				read-only;
> +			};
> +		};
> +	};
> +};
> +
> +&eth0 {
> +	status = "okay";
> +
> +	phy-handle = <&swphy0>;
> +
> +	mtd-mac-address = <&uboot 0x1fc00>;
> +	mtd-mac-address-increment = <1>;
> +};
> +
> +&eth1 {
> +	mtd-mac-address = <&uboot 0x1fc00>;
> +	mtd-mac-address-increment = <(-1)>;
> +};
> +
> +&wmac {
> +	status = "okay";
> +
> +	mtd-cal-data = <&art 0x1000>;
> +	mtd-mac-address = <&uboot 0x1fc00>;
> +};
> +
> +&usb0 {
> +	#address-cells = <1>;
> +	#size-cells = <0>;
> +	status = "okay";
> +
> +	hub_port: port@1 {
> +		reg = <1>;
> +		#trigger-source-cells = <0>;
> +	};
> +};
> +
> +&usb_phy {
> +	status = "okay";
> +};
> diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
> index de4e8b4a7f..1023ba7a39 100755
> --- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds
> +++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
> @@ -215,6 +215,11 @@ tplink,re450-v2)
>  	ucidef_set_led_netdev "lan_data" "LAN Data" "tp-link:green:lan_data" "eth0" "tx rx"
>  	ucidef_set_led_netdev "lan_link" "LAN Link" "tp-link:green:lan_link" "eth0" "link"
>  	;;
> +tplink,tl-mr6400-v1)
> +	ucidef_set_led_switch "lan" "LAN" "tp-link:white:lan" "switch0" "0x0e"
> +	ucidef_set_led_netdev "wan" "WAN" "tp-link:white:wan" "eth1"
> +	ucidef_set_led_netdev "4g" "4G" "tp-link:white:4g" "usb0"
> +	;;
>  tplink,tl-wr842n-v2)
>  	ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
>  	ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04"
> diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
> index a96b504d5a..0bae9dc384 100755
> --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
> +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
> @@ -236,6 +236,11 @@ ath79_setup_interfaces()
>  		ucidef_add_switch "switch0" \
>  			"0@eth0" "2:lan:3" "3:lan:2" "4:lan:1" "1:wan"
>  		;;
> +	tplink,tl-mr6400-v1)
> +		ucidef_set_interfaces_lan_wan "eth0.1 eth1" "usb0"
> +		ucidef_add_switch "switch0" \
> +			"0@eth0" "1:lan:1" "2:lan:3" "3:lan:2"
> +		;;
>  	tplink,tl-wr842n-v2)
>  		ucidef_set_interface_wan "eth1"
>  		ucidef_add_switch "switch0" \
> diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk
> index a7266f05a9..53138e343b 100644
> --- a/target/linux/ath79/image/generic-tp-link.mk
> +++ b/target/linux/ath79/image/generic-tp-link.mk
> @@ -374,6 +374,18 @@ define Device/tplink_re450-v2
>  endef
>  TARGET_DEVICES += tplink_re450-v2
>  
> +define Device/tplink_tl-mr6400-v1
> +  $(Device/tplink-8mlzma)
> +  SOC := qca9531
> +  DEVICE_MODEL := TL-MR6400
> +  DEVICE_VARIANT := v1
> +  TPLINK_HWID := 0x64000001
> +  DEVICE_PACKAGES := kmod-usb2 kmod-usb-net kmod-usb-net-rndis kmod-usb-serial \
> +	kmod-usb-serial-option adb-enablemodem
> +  SUPPORTED_DEVICES += tl-mr6400
> +endef
> +TARGET_DEVICES += tplink_tl-mr6400-v1
> +
>  define Device/tplink_tl-wdr3500-v1
>    $(Device/tplink-8mlzma)
>    SOC := ar9344
> -- 
> 2.20.1
>
Enrico Mioso Feb. 1, 2020, 10:12 a.m. UTC | #4
Hello Filip, and all.

Thank you very very much for bringing this on. Sorry for my disappearing lately, been a little bit busy moving home.
Unfortunately I don't think I have particular findings to reveal regarding stock FW - I probably would run the original firmware and look at console to try to have an idea on what's goin' on.
Maybe:
1 - changing flash SPI frequency may impact power usage and hence modem init success rate? maybe this is completely wrong hypotetis but ...
2 - Original Firmware may init modem later on?

I think we should merge this in any case. this is a nice device after all, and having support for it in OpenWRt is worth, even with those known issues.

big big thanks to you Adrian and Filip.




On Fri, 31 Jan 2020, Filip Moc wrote:

> Date: Fri, 31 Jan 2020 22:33:33
> From: Filip Moc <lede@moc6.cz>
> To: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> Cc: openwrt-devel@lists.openwrt.org, Enrico Mioso <mrkiko.rs@gmail.com>
> Subject: Re: [PATCH v4] ath79: add support for TP-Link TL-MR6400
> 
> Hi,
>
> I tested snapshot build from "Fri Jan 31 00:17:40 2020" and except for problems
> mentioned in known issues it seems to be working fine.
>
> Filip
>
>
> On Fri, Jan 17, 2020 at 01:15:52PM +0100, Adrian Schmutzler wrote:
>> From: Enrico Mioso <mrkiko.rs@gmail.com>
>>
>> This device is an LTE router supported in ar71xx so far.
>> As per original commit, hardware specifications (v1.0 EU):
>> - SoC: QCA9531
>> - Flash: Winbond W25Q64FV (8MiB)
>> - RAM: EtronTech EM6AB160TSE-5G (64MiB)
>> - Wireless: SoC platform only (2.4GHz b/g/n, 2x internal antenna)
>> - Ethernet: 2NIC (3x100M + 1x100M)
>> - WWAN: TP-LINK LTE MODULE (2x external detachable antenna)
>> - Power: DC 12V 1A
>>
>> Flashing instructions:
>> You can flash via tftp recovery (serve factory image as /mr6400_tp_recovery.bin
>> on 192.168.0.66/24, connect to any ethernet port and power on device while
>> holding the reset button). Flashing via OEM web interface does not work.
>>
>> Known issues:
>> - LTE module does not always come up during boot. This can be fixed by turning
>>   it off and on again.
>> - As it happened occasionally in ar71xx, during bursty flash activity, LTE
>>   module init will fail, with USB enumeration errors.
>> - eth1 (LAN) always shows carrier as 1 even if no cable is plugged in (this
>>   works "correctly" on ar71xx)
>>
>> Signed-off-by: Enrico Mioso <mrkiko.rs@gmail.com>
>> [rebase and several adjustments]
>> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
>> Tested-by: Filip Moc <lede@moc6.cz>
>> ---
>>  .../ath79/dts/qca9531_tplink_tl-mr6400-v1.dts | 167 ++++++++++++++++++
>>  .../generic/base-files/etc/board.d/01_leds    |   5 +
>>  .../generic/base-files/etc/board.d/02_network |   5 +
>>  target/linux/ath79/image/generic-tp-link.mk   |  12 ++
>>  4 files changed, 189 insertions(+)
>>  create mode 100644 target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts
>>
>> diff --git a/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts b/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts
>> new file mode 100644
>> index 0000000000..7299257cda
>> --- /dev/null
>> +++ b/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts
>> @@ -0,0 +1,167 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +/dts-v1/;
>> +
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/input/input.h>
>> +
>> +#include "qca953x.dtsi"
>> +
>> +/ {
>> +	compatible = "tplink,tl-mr6400-v1", "qca,qca9531";
>> +	model = "TP-Link TL-MR6400 v1";
>> +
>> +	aliases {
>> +		led-boot = &led_power;
>> +		led-failsafe = &led_power;
>> +		led-running = &led_power;
>> +		led-upgrade = &led_power;
>> +		label-mac-device = &wmac;
>> +	};
>> +
>> +	leds {
>> +		compatible = "gpio-leds";
>> +
>> +		/* D12 */
>> +		wan {
>> +			label = "tp-link:white:wan";
>> +			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
>> +		};
>> +
>> +		/* D11 */
>> +		4g {
>> +			label = "tp-link:white:4g";
>> +			gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
>> +		};
>> +
>> +		/* D5 */
>> +		wps {
>> +			label = "tp-link:white:wps";
>> +			gpios = <&gpio 3 GPIO_ACTIVE_HIGH>;
>> +		};
>> +
>> +		/* D3 */
>> +		wlan {
>> +			label = "tp-link:white:wlan";
>> +			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
>> +			linux,default-trigger = "phy0tpt";
>> +		};
>> +
>> +		/* D2 */
>> +		led_power: power {
>> +			label = "tp-link:white:power";
>> +			gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
>> +		};
>> +
>> +		/* D4 */
>> +		lan {
>> +			label = "tp-link:white:lan";
>> +			gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
>> +		};
>> +	};
>> +
>> +	keys {
>> +		compatible = "gpio-keys";
>> +
>> +		/* SW2 */
>> +		reset {
>> +			label = "Reset button";
>> +			linux,code = <KEY_RESTART>;
>> +			gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
>> +			debounce-interval = <60>;
>> +		};
>> +
>> +		/* SW3 */
>> +		rfkill {
>> +			label = "RF kill button";
>> +			linux,code = <KEY_RFKILL>;
>> +			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
>> +			debounce-interval = <60>;
>> +		};
>> +	};
>> +
>> +	gpio-export {
>> +		compatible = "gpio-export";
>> +
>> +		gpio_usb_power {
>> +			gpio-export,name = "tp-link:power:lte";
>> +			gpio-export,output = <0>;
>> +			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
>> +		};
>> +	};
>> +};
>> +
>> +&uart {
>> +	status = "okay";
>> +};
>> +
>> +&spi {
>> +	status = "okay";
>> +
>> +	num-cs = <1>;
>> +
>> +	flash@0 {
>> +		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 {
>> +				compatible = "tplink,firmware";
>> +				label = "firmware";
>> +				reg = <0x020000 0x7d0000>;
>> +			};
>> +
>> +			art: partition@7f0000 {
>> +				label = "art";
>> +				reg = <0x7f0000 0x010000>;
>> +				read-only;
>> +			};
>> +		};
>> +	};
>> +};
>> +
>> +&eth0 {
>> +	status = "okay";
>> +
>> +	phy-handle = <&swphy0>;
>> +
>> +	mtd-mac-address = <&uboot 0x1fc00>;
>> +	mtd-mac-address-increment = <1>;
>> +};
>> +
>> +&eth1 {
>> +	mtd-mac-address = <&uboot 0x1fc00>;
>> +	mtd-mac-address-increment = <(-1)>;
>> +};
>> +
>> +&wmac {
>> +	status = "okay";
>> +
>> +	mtd-cal-data = <&art 0x1000>;
>> +	mtd-mac-address = <&uboot 0x1fc00>;
>> +};
>> +
>> +&usb0 {
>> +	#address-cells = <1>;
>> +	#size-cells = <0>;
>> +	status = "okay";
>> +
>> +	hub_port: port@1 {
>> +		reg = <1>;
>> +		#trigger-source-cells = <0>;
>> +	};
>> +};
>> +
>> +&usb_phy {
>> +	status = "okay";
>> +};
>> diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
>> index de4e8b4a7f..1023ba7a39 100755
>> --- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds
>> +++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
>> @@ -215,6 +215,11 @@ tplink,re450-v2)
>>  	ucidef_set_led_netdev "lan_data" "LAN Data" "tp-link:green:lan_data" "eth0" "tx rx"
>>  	ucidef_set_led_netdev "lan_link" "LAN Link" "tp-link:green:lan_link" "eth0" "link"
>>  	;;
>> +tplink,tl-mr6400-v1)
>> +	ucidef_set_led_switch "lan" "LAN" "tp-link:white:lan" "switch0" "0x0e"
>> +	ucidef_set_led_netdev "wan" "WAN" "tp-link:white:wan" "eth1"
>> +	ucidef_set_led_netdev "4g" "4G" "tp-link:white:4g" "usb0"
>> +	;;
>>  tplink,tl-wr842n-v2)
>>  	ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
>>  	ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04"
>> diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
>> index a96b504d5a..0bae9dc384 100755
>> --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
>> +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
>> @@ -236,6 +236,11 @@ ath79_setup_interfaces()
>>  		ucidef_add_switch "switch0" \
>>  			"0@eth0" "2:lan:3" "3:lan:2" "4:lan:1" "1:wan"
>>  		;;
>> +	tplink,tl-mr6400-v1)
>> +		ucidef_set_interfaces_lan_wan "eth0.1 eth1" "usb0"
>> +		ucidef_add_switch "switch0" \
>> +			"0@eth0" "1:lan:1" "2:lan:3" "3:lan:2"
>> +		;;
>>  	tplink,tl-wr842n-v2)
>>  		ucidef_set_interface_wan "eth1"
>>  		ucidef_add_switch "switch0" \
>> diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk
>> index a7266f05a9..53138e343b 100644
>> --- a/target/linux/ath79/image/generic-tp-link.mk
>> +++ b/target/linux/ath79/image/generic-tp-link.mk
>> @@ -374,6 +374,18 @@ define Device/tplink_re450-v2
>>  endef
>>  TARGET_DEVICES += tplink_re450-v2
>>
>> +define Device/tplink_tl-mr6400-v1
>> +  $(Device/tplink-8mlzma)
>> +  SOC := qca9531
>> +  DEVICE_MODEL := TL-MR6400
>> +  DEVICE_VARIANT := v1
>> +  TPLINK_HWID := 0x64000001
>> +  DEVICE_PACKAGES := kmod-usb2 kmod-usb-net kmod-usb-net-rndis kmod-usb-serial \
>> +	kmod-usb-serial-option adb-enablemodem
>> +  SUPPORTED_DEVICES += tl-mr6400
>> +endef
>> +TARGET_DEVICES += tplink_tl-mr6400-v1
>> +
>>  define Device/tplink_tl-wdr3500-v1
>>    $(Device/tplink-8mlzma)
>>    SOC := ar9344
>> --
>> 2.20.1
>>
>
diff mbox series

Patch

diff --git a/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts b/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts
new file mode 100644
index 0000000000..7299257cda
--- /dev/null
+++ b/target/linux/ath79/dts/qca9531_tplink_tl-mr6400-v1.dts
@@ -0,0 +1,167 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+#include "qca953x.dtsi"
+
+/ {
+	compatible = "tplink,tl-mr6400-v1", "qca,qca9531";
+	model = "TP-Link TL-MR6400 v1";
+
+	aliases {
+		led-boot = &led_power;
+		led-failsafe = &led_power;
+		led-running = &led_power;
+		led-upgrade = &led_power;
+		label-mac-device = &wmac;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		/* D12 */
+		wan {
+			label = "tp-link:white:wan";
+			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
+		};
+
+		/* D11 */
+		4g {
+			label = "tp-link:white:4g";
+			gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
+		};
+
+		/* D5 */
+		wps {
+			label = "tp-link:white:wps";
+			gpios = <&gpio 3 GPIO_ACTIVE_HIGH>;
+		};
+
+		/* D3 */
+		wlan {
+			label = "tp-link:white:wlan";
+			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "phy0tpt";
+		};
+
+		/* D2 */
+		led_power: power {
+			label = "tp-link:white:power";
+			gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
+		};
+
+		/* D4 */
+		lan {
+			label = "tp-link:white:lan";
+			gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		/* SW2 */
+		reset {
+			label = "Reset button";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+
+		/* SW3 */
+		rfkill {
+			label = "RF kill button";
+			linux,code = <KEY_RFKILL>;
+			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+	};
+
+	gpio-export {
+		compatible = "gpio-export";
+
+		gpio_usb_power {
+			gpio-export,name = "tp-link:power:lte";
+			gpio-export,output = <0>;
+			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&uart {
+	status = "okay";
+};
+
+&spi {
+	status = "okay";
+
+	num-cs = <1>;
+
+	flash@0 {
+		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 {
+				compatible = "tplink,firmware";
+				label = "firmware";
+				reg = <0x020000 0x7d0000>;
+			};
+
+			art: partition@7f0000 {
+				label = "art";
+				reg = <0x7f0000 0x010000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	phy-handle = <&swphy0>;
+
+	mtd-mac-address = <&uboot 0x1fc00>;
+	mtd-mac-address-increment = <1>;
+};
+
+&eth1 {
+	mtd-mac-address = <&uboot 0x1fc00>;
+	mtd-mac-address-increment = <(-1)>;
+};
+
+&wmac {
+	status = "okay";
+
+	mtd-cal-data = <&art 0x1000>;
+	mtd-mac-address = <&uboot 0x1fc00>;
+};
+
+&usb0 {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	status = "okay";
+
+	hub_port: port@1 {
+		reg = <1>;
+		#trigger-source-cells = <0>;
+	};
+};
+
+&usb_phy {
+	status = "okay";
+};
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
index de4e8b4a7f..1023ba7a39 100755
--- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
@@ -215,6 +215,11 @@  tplink,re450-v2)
 	ucidef_set_led_netdev "lan_data" "LAN Data" "tp-link:green:lan_data" "eth0" "tx rx"
 	ucidef_set_led_netdev "lan_link" "LAN Link" "tp-link:green:lan_link" "eth0" "link"
 	;;
+tplink,tl-mr6400-v1)
+	ucidef_set_led_switch "lan" "LAN" "tp-link:white:lan" "switch0" "0x0e"
+	ucidef_set_led_netdev "wan" "WAN" "tp-link:white:wan" "eth1"
+	ucidef_set_led_netdev "4g" "4G" "tp-link:white:4g" "usb0"
+	;;
 tplink,tl-wr842n-v2)
 	ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
 	ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04"
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
index a96b504d5a..0bae9dc384 100755
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -236,6 +236,11 @@  ath79_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0@eth0" "2:lan:3" "3:lan:2" "4:lan:1" "1:wan"
 		;;
+	tplink,tl-mr6400-v1)
+		ucidef_set_interfaces_lan_wan "eth0.1 eth1" "usb0"
+		ucidef_add_switch "switch0" \
+			"0@eth0" "1:lan:1" "2:lan:3" "3:lan:2"
+		;;
 	tplink,tl-wr842n-v2)
 		ucidef_set_interface_wan "eth1"
 		ucidef_add_switch "switch0" \
diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk
index a7266f05a9..53138e343b 100644
--- a/target/linux/ath79/image/generic-tp-link.mk
+++ b/target/linux/ath79/image/generic-tp-link.mk
@@ -374,6 +374,18 @@  define Device/tplink_re450-v2
 endef
 TARGET_DEVICES += tplink_re450-v2
 
+define Device/tplink_tl-mr6400-v1
+  $(Device/tplink-8mlzma)
+  SOC := qca9531
+  DEVICE_MODEL := TL-MR6400
+  DEVICE_VARIANT := v1
+  TPLINK_HWID := 0x64000001
+  DEVICE_PACKAGES := kmod-usb2 kmod-usb-net kmod-usb-net-rndis kmod-usb-serial \
+	kmod-usb-serial-option adb-enablemodem
+  SUPPORTED_DEVICES += tl-mr6400
+endef
+TARGET_DEVICES += tplink_tl-mr6400-v1
+
 define Device/tplink_tl-wdr3500-v1
   $(Device/tplink-8mlzma)
   SOC := ar9344