ipq806x: add support for TP-Link Talon AD7200

Daniel Golle daniel at makrotopia.org
Sun Oct 11 19:43:41 EDT 2020


On Mon, Oct 12, 2020 at 02:09:32AM +0300, Paul Fertser wrote:
> From: Gary Cooper <gaco at mail2tor.com>
> 
> Device hardware: https://deviwiki.com/wiki/TP-LINK_AD7200_(Talon)
> 
> The Talon AD7200 is basically an Archer C2600 with larger flash, a third PCIe lane and an 802.11ad radio. It comes in a different housing reminiscent of the Archers C3200 and C5400.
> 
> 
> Specifications
> --------------
> 
>   - IPQ8064 dual-core 1400MHz
>   - QCA9988 2.4GHz WiFi
>   - QCA9888 5GHz WiFi
>   - QCA9500 60GHz WiFi
>   - 256MiB SPI Flash

That should be 256Mb or 32MiB
(according to the flash partition table in DTS)

>   - 512MiB RAM
>   - 5 GBit Ports (QCA8337)
> 
> Installation
> ------------
> 
> Installation is possible from the OEM web interface.
> Sysupgrade is possible.
> TFTP recovery is possible.
>   - Image: AD7200_1.0_tp_recovery.bin
> 
> Notes
>   - This will be the first 802.11ad device supported by mainline.

It'd be great to split this into a generic part adding 802.11ad
features to mac80211.sh and hostapd.sh, and another commit only
adding the device itself.


>   
> Signed-off-by: Gary Cooper <gaco at mail2tor.com>
> ---
>  package/base-files/files/sbin/wifi            |   1 +
>  package/firmware/linux-firmware/qca.mk        |   8 +
>  package/kernel/mac80211/ath.mk                |  13 +-
>  .../mac80211/files/lib/wifi/mac80211.sh       |   6 +
>  .../network/services/hostapd/files/hostapd.sh |   8 +
>  .../ipq806x/base-files/etc/board.d/01_leds    |   9 +
>  .../ipq806x/base-files/etc/board.d/02_network |   4 +
>  .../etc/hotplug.d/firmware/11-ath10k-caldata  |   2 +
>  .../base-files/lib/upgrade/platform.sh        |   1 +
>  .../arch/arm/boot/dts/qcom-ipq8064-ad7200.dts | 440 ++++++++++++++++++
>  target/linux/ipq806x/image/Makefile           |  15 +
>  tools/firmware-utils/src/tplink-safeloader.c  |  44 ++
>  12 files changed, 550 insertions(+), 1 deletion(-)
>  create mode 100644 target/linux/ipq806x/files-5.4/arch/arm/boot/dts/qcom-ipq8064-ad7200.dts
> 
> diff --git a/package/base-files/files/sbin/wifi b/package/base-files/files/sbin/wifi
> index a8b4451c60..75759b94f3 100755
> --- a/package/base-files/files/sbin/wifi
> +++ b/package/base-files/files/sbin/wifi
> @@ -79,6 +79,7 @@ wifi_fixup_hwmode() {
>  	case "$hwmode" in
>  		11bg) hwmode=bg;;
>  		11a) hwmode=a;;
> +		11ad) hwmode=ad;;
>  		11b) hwmode=b;;
>  		11g) hwmode=g;;
>  		11n*)
> diff --git a/package/firmware/linux-firmware/qca.mk b/package/firmware/linux-firmware/qca.mk
> index 23fcc0905a..71b484d5c7 100644
> --- a/package/firmware/linux-firmware/qca.mk
> +++ b/package/firmware/linux-firmware/qca.mk
> @@ -37,3 +37,11 @@ define Package/carl9170-firmware/install
>  	$(INSTALL_DATA) $(PKG_BUILD_DIR)/carl9170-1.fw $(1)/lib/firmware
>  endef
>  $(eval $(call BuildPackage,carl9170-firmware))
> +
> +Package/wil6210-firmware = $(call Package/firmware-default,wil6210 firmware)
> +define Package/wil6210-firmware/install
> +	$(INSTALL_DIR) $(1)/lib/firmware
> +	$(INSTALL_DATA) $(PKG_BUILD_DIR)/wil6210.fw $(1)/lib/firmware
> +	$(INSTALL_DATA) $(PKG_BUILD_DIR)/wil6210.brd $(1)/lib/firmware
> +endef
> +$(eval $(call BuildPackage,wil6210-firmware))
> diff --git a/package/kernel/mac80211/ath.mk b/package/kernel/mac80211/ath.mk
> index 5db4be8daa..e563fb71fc 100644
> --- a/package/kernel/mac80211/ath.mk
> +++ b/package/kernel/mac80211/ath.mk
> @@ -1,6 +1,6 @@
>  PKG_DRIVERS += \
>  	ath ath5k ath6kl ath6kl-sdio ath6kl-usb ath9k ath9k-common ath9k-htc ath10k \
> -	carl9170 owl-loader ar5523
> +	carl9170 wil6210 owl-loader ar5523
>  
>  PKG_CONFIG_DEPENDS += \
>  	CONFIG_PACKAGE_ATH_DEBUG \
> @@ -20,6 +20,7 @@ ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS
>  	ATH9K_HTC_DEBUGFS \
>  	ATH10K_DEBUGFS \
>  	CARL9170_DEBUGFS \
> +	WIL6210_DEBUGFS \
>  	ATH5K_DEBUG \
>  	ATH6KL_DEBUG
>  endif
> @@ -29,6 +30,7 @@ ifdef CONFIG_PACKAGE_MAC80211_TRACING
>  	ATH10K_TRACING \
>  	ATH6KL_TRACING \
>  	ATH_TRACEPOINTS \
> +	WIL6210_TRACING
>  	ATH5K_TRACER
>  endif
>  
> @@ -66,6 +68,7 @@ config-$(call config_package,ath6kl-sdio) += ATH6KL_SDIO
>  config-$(call config_package,ath6kl-usb) += ATH6KL_USB
>  
>  config-$(call config_package,carl9170) += CARL9170
> +config-$(call config_package,wil6210) += WIL6210
>  config-$(call config_package,ar5523) += AR5523
>  
>  define KernelPackage/ath/config
> @@ -284,6 +287,14 @@ define KernelPackage/carl9170
>    AUTOLOAD:=$(call AutoProbe,carl9170)
>  endef
>  
> +define KernelPackage/wil6210
> +  $(call KernelPackage/mac80211/Default)
> +  TITLE:=QCA/Wilocity 60g WiFi card wil6210 support
> +  DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +wil6210-firmware
> +  FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/wil6210/wil6210.ko
> +  AUTOLOAD:=$(call AutoProbe,wil6210)
> +endef
> +
>  define KernelPackage/owl-loader
>    $(call KernelPackage/mac80211/Default)
>    TITLE:=Owl loader for initializing Atheros PCI(e) Wifi chips
> diff --git a/package/kernel/mac80211/files/lib/wifi/mac80211.sh b/package/kernel/mac80211/files/lib/wifi/mac80211.sh
> index c0fbfbe5a8..3e99f06693 100644
> --- a/package/kernel/mac80211/files/lib/wifi/mac80211.sh
> +++ b/package/kernel/mac80211/files/lib/wifi/mac80211.sh
> @@ -88,6 +88,12 @@ detect_mac80211() {
>  			iw phy "$dev" info | grep -q 'VHT Capabilities' && htmode="VHT80"
>  		}
>  
> +		iw phy "$dev" info | grep -q '\* 5.... MHz \[' && {
> +			mode_band="ad"
> +			channel=$(iw phy "$dev" info | grep '\* 5.... MHz \[' | grep '(disabled)' -v -m 1 | sed 's/[^[]*\[\|\|\].*//g')
> +			iw phy "$dev" info | grep -q 'Capabilities:' && htmode="HT20"
> +		}
> +
>  		[ -n "$htmode" ] && ht_capab="set wireless.radio${devidx}.htmode=$htmode"
>  
>  		path="$(mac80211_phy_to_path "$dev")"
> diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
> index 3290358ed2..b5563d88a6 100644
> --- a/package/network/services/hostapd/files/hostapd.sh
> +++ b/package/network/services/hostapd/files/hostapd.sh
> @@ -1163,6 +1163,14 @@ wpa_supplicant_add_network() {
>  		;;
>  	esac
>  
> +	case "$wpa_cipher" in
> +		GCMP)
> +			append network_data "pairwise=GCMP" "$N$T"
> +			append network_data "group=GCMP" "$N$T"
> +		;;
> +		*) ;;
> +	esac
> +
>  	[ "$mode" = mesh ] || {
>  		case "$wpa" in
>  			1)
> diff --git a/target/linux/ipq806x/base-files/etc/board.d/01_leds b/target/linux/ipq806x/base-files/etc/board.d/01_leds
> index c23f25540b..7af06fd3ee 100755
> --- a/target/linux/ipq806x/base-files/etc/board.d/01_leds
> +++ b/target/linux/ipq806x/base-files/etc/board.d/01_leds
> @@ -36,6 +36,15 @@ netgear,r7800)
>  	ucidef_set_led_switch "wan" "WAN" "white:wan" "switch0" "0x20"
>  	ucidef_set_led_ide "esata" "eSATA" "white:esata"
>  	;;
> +tplink,ad7200)
> +	ucidef_set_led_usbport "usb1" "USB 1" "blue:usb_1" "usb1-port1" "usb2-port1"
> +	ucidef_set_led_usbport "usb2" "USB 2" "blue:usb_3" "usb3-port1" "usb4-port1"
> +	ucidef_set_led_switch "wan" "wan" "blue:wan" "switch0" "0x02"
> +	ucidef_set_led_switch "lan" "lan" "blue:lan" "switch0" "0x3c"
> +	ucidef_set_led_wlan "wlan2g" "wlan2g" "blue:wlan2g" "phy2tpt"
> +	ucidef_set_led_wlan "wlan5g" "wlan5g" "blue:wlan5g" "phy1tpt"
> +	ucidef_set_led_netdev "wlan60g" "wlan60g" "blue:wlan60g" "phy0tpt"
> +	;;
>  tplink,c2600)
>  	ucidef_set_led_usbport "usb1" "USB 1" "white:usb_2" "usb1-port1" "usb2-port1"
>  	ucidef_set_led_usbport "usb2" "USB 2" "white:usb_4" "usb3-port1" "usb4-port1"
> diff --git a/target/linux/ipq806x/base-files/etc/board.d/02_network b/target/linux/ipq806x/base-files/etc/board.d/02_network
> index 3f9d96881d..d013f114b4 100755
> --- a/target/linux/ipq806x/base-files/etc/board.d/02_network
> +++ b/target/linux/ipq806x/base-files/etc/board.d/02_network
> @@ -50,6 +50,10 @@ tplink,c2600)
>  	ucidef_add_switch "switch0" \
>  		"1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "6 at eth1" "5:wan" "0 at eth0"
>  	;;
> +tplink,ad7200)
> +	ucidef_add_switch "switch0" \
> +		"2:lan" "3:lan" "4:lan" "5:lan" "6 at eth1" "1:wan" "0 at eth0"
> +	;;
>  qcom,ipq8064-ap161)
>  	ucidef_set_interface_lan "eth1 eth2"
>  	ucidef_add_switch "switch0" \
> diff --git a/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> index 74ad00c5ce..5a19d30538 100644
> --- a/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> +++ b/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> @@ -31,6 +31,7 @@ case "$FIRMWARE" in
>  		caldata_extract "art" 0x1000 0x2f20
>  		ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary art 0x6) +1)
>  		;;
> +	tplink,ad7200 |\
>  	tplink,c2600)
>  		caldata_extract "radio" 0x1000 0x2f20
>  		ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary default-mac 0x8) -1)
> @@ -66,6 +67,7 @@ case "$FIRMWARE" in
>  		caldata_extract "art" 0x5000 0x2f20
>  		ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary art 0x6) +2)
>  		;;
> +	tplink,ad7200 |\
>  	tplink,c2600)
>  		caldata_extract "radio" 0x5000 0x2f20
>  		ath10k_patch_mac $(mtd_get_mac_binary default-mac 0x8)
> diff --git a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
> index f61e8ee878..a20d1bbd5b 100644
> --- a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
> @@ -39,6 +39,7 @@ platform_do_upgrade() {
>  	linksys,ea8500)
>  		platform_do_upgrade_linksys "$1"
>  		;;
> +	tplink,ad7200 |\
>  	tplink,c2600)
>  		PART_NAME="os-image:rootfs"
>  		MTD_CONFIG_ARGS="-s 0x200000"
> diff --git a/target/linux/ipq806x/files-5.4/arch/arm/boot/dts/qcom-ipq8064-ad7200.dts b/target/linux/ipq806x/files-5.4/arch/arm/boot/dts/qcom-ipq8064-ad7200.dts
> new file mode 100644
> index 0000000000..14ed8b49cc
> --- /dev/null
> +++ b/target/linux/ipq806x/files-5.4/arch/arm/boot/dts/qcom-ipq8064-ad7200.dts
> @@ -0,0 +1,440 @@
> +SPDX-License-Identifier: GPL-2.0-or-later OR MIT
> +#include "qcom-ipq8064-v2.0.dtsi"
> +
> +#include <dt-bindings/input/input.h>
> +
> +/ {
> +	model = "TP-Link Talon AD7200";
> +	compatible = "tplink,ad7200", "qcom,ipq8064";
> +
> +	memory at 0 {
> +		reg = <0x42000000 0x1e000000>;
> +		device_type = "memory";
> +	};
> +
> +	aliases {
> +		mdio-gpio0 = &mdio0;
> +
> +		led-boot = &power;
> +		led-failsafe = &power;
> +		led-running = &power;
> +		led-upgrade = &power;
> +		label-mac-device = &gmac2;
> +	};
> +
> +	keys {
> +		compatible = "gpio-keys";
> +		pinctrl-0 = <&button_pins>;
> +		pinctrl-names = "default";
> +
> +		wifi {
> +			label = "wifi";
> +			gpios = <&qcom_pinmux 54 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_RFKILL>;
> +		};
> +
> +		reset {
> +			label = "reset";
> +			gpios = <&qcom_pinmux 7 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_RESTART>;
> +		};
> +
> +		wps {
> +			label = "wps";
> +			gpios = <&qcom_pinmux 67 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_WPS_BUTTON>;
> +		};
> +
> +		ledgeneral {
> +			label = "ledswitch";
> +			gpios = <&qcom_pinmux 53 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_LIGHTS_TOGGLE>;
> +		};
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&led_pins>;
> +		pinctrl-names = "default";
> +
> +		lan {
> +			label = "blue:lan";
> +			gpios = <&qcom_pinmux 2 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		usb1 {
> +			label = "blue:usb_1";
> +			gpios = <&qcom_pinmux 8 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		usb3 {
> +			label = "blue:usb_3";
> +			gpios = <&qcom_pinmux 16 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		wps {
> +			label = "blue:wps";
> +			gpios = <&qcom_pinmux 55 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		wan_orange {
> +			label = "orange:wan";
> +			gpios = <&qcom_pinmux 26 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		wan_blue {
> +			label = "blue:wan";
> +			gpios = <&qcom_pinmux 33 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		power: status {
> +			label = "blue:status";
> +			gpios = <&qcom_pinmux 66 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		wlan2g {
> +			label = "blue:wlan2g";
> +			gpios = <&qcom_pinmux 17 GPIO_ACTIVE_HIGH>;
> +
> +		};
> +
> +		wlan5g {
> +			label = "blue:wlan5g";
> +			gpios = <&qcom_pinmux 15 GPIO_ACTIVE_HIGH>;
> +
> +		};
> +
> +		wlan60g {
> +			label = "blue:wlan60g";
> +			gpios = <&qcom_pinmux 56 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +};
> +
> +&qcom_pinmux {
> +	button_pins: button_pins {
> +		mux {
> +			pins = "gpio53", "gpio54", "gpio67";
> +			function = "gpio";
> +			drive-strength = <2>;
> +			bias-pull-up;
> +		};
> +	};
> +
> +	led_pins: led_pins {
> +		mux {
> +			pins = "gpio2", "gpio8", "gpio15", "gpio16", "gpio17", "gpio26",
> +					"gpio33", "gpio55", "gpio56", "gpio66";
> +			function = "gpio";
> +			drive-strength = <2>;
> +			bias-pull-up;
> +		};
> +	};
> +
> +	spi_pins: spi_pins {
> +		mux {
> +			pins = "gpio18", "gpio19", "gpio21";
> +			function = "gsbi5";
> +			bias-pull-down;
> +		};
> +
> +		data {
> +			pins = "gpio18", "gpio19";
> +			drive-strength = <10>;
> +		};
> +
> +		cs {
> +			pins = "gpio20";
> +			function = "gpio";
> +			drive-strength = <10>;
> +			bias-pull-up;
> +		};
> +
> +		clk {
> +			pins = "gpio21";
> +			drive-strength = <12>;
> +		};
> +	};
> +
> +	usb0_pwr_en_pin: usb0_pwr_en_pin {
> +		mux {
> +			pins = "gpio25";
> +			function = "gpio";
> +			drive-strength = <10>;
> +			bias-pull-up;
> +			output-high;
> +		};
> +	};
> +
> +	usb1_pwr_en_pin: usb1_pwr_en_pin {
> +		mux {
> +			pins = "gpio23";
> +			function = "gpio";
> +			drive-strength = <10>;
> +			bias-pull-up;
> +			output-high;
> +		};
> +	};
> +};
> +
> +&gsbi5 {
> +	qcom,mode = <GSBI_PROT_SPI>;
> +	status = "okay";
> +
> +	spi4: spi at 1a280000 {
> +		status = "okay";
> +
> +		pinctrl-0 = <&spi_pins>;
> +		pinctrl-names = "default";
> +
> +		cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;
> +
> +		m25p80 at 0 {
> +			compatible = "jedec,spi-nor";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			spi-max-frequency = <50000000>;
> +			reg = <0>;
> +
> +			SBL1 at 0 {
> +				label = "SBL1";
> +				reg = <0x0 0x20000>;
> +				read-only;
> +			};
> +
> +			MIBIB at 20000 {
> +				label = "MIBIB";
> +				reg = <0x20000 0x20000>;
> +				read-only;
> +			};
> +
> +			SBL2 at 40000 {
> +				label = "SBL2";
> +				reg = <0x40000 0x20000>;
> +				read-only;
> +			};
> +
> +			SBL3 at 60000 {
> +				label = "SBL3";
> +				reg = <0x60000 0x30000>;
> +				read-only;
> +			};
> +
> +			DDRCONFIG at 90000 {
> +				label = "DDRCONFIG";
> +				reg = <0x90000 0x10000>;
> +				read-only;
> +			};
> +
> +			SSD at a0000 {
> +				label = "SSD";
> +				reg = <0xa0000 0x10000>;
> +				read-only;
> +			};
> +
> +			TZ at b0000 {
> +				label = "TZ";
> +				reg = <0xb0000 0x30000>;
> +				read-only;
> +			};
> +
> +			RPM at e0000 {
> +				label = "RPM";
> +				reg = <0xe0000 0x20000>;
> +				read-only;
> +			};
> +
> +			fs-uboot at 100000 {
> +				label = "fs-uboot";
> +				reg = <0x100000 0x70000>;
> +				read-only;
> +			};
> +
> +			uboot-env at 170000 {
> +				label = "uboot-env";
> +				reg = <0x170000 0x40000>;
> +				read-only;
> +			};
> +
> +			radio at 1b0000 {
> +				label = "radio";
> +				reg = <0x1b0000 0x40000>;
> +				read-only;
> +			};
> +
> +			os-image at 1f0000 {
> +				label = "os-image";
> +				reg = <0x1f0000 0x400000>;
> +			};
> +
> +			rootfs at 5f0000 {
> +				label = "rootfs";
> +				reg = <0x5f0000 0x1900000>;
> +			};
> +
> +			defaultmac: default-mac at 1ef0000 {
> +				label = "default-mac";
> +				reg = <0x1ef0000 0x00200>;
> +				read-only;
> +			};
> +
> +			pin at 1ef0200 {
> +				label = "pin";
> +				reg = <0x1ef0200 0x00200>;
> +				read-only;
> +			};
> +
> +			device-id at 1ef0400 {
> +				label = "device-id";
> +				reg = <0x1ef0400 0x00200>;
> +				read-only;
> +			};
> +
> +			product-info at 1ef0600 {
> +				label = "product-info";
> +				reg = <0x1ef0600 0x0fa00>;
> +				read-only;
> +			};
> +
> +			partition-table at 1f00000 {
> +				label = "partition-table";
> +				reg = <0x1f00000 0x10000>;
> +				read-only;
> +			};
> +
> +			soft-version at 1f10000 {
> +				label = "soft-version";
> +				reg = <0x1f10000 0x10000>;
> +				read-only;
> +			};
> +
> +			support-list at 1f20000 {
> +				label = "support-list";
> +				reg = <0x1f20000 0x10000>;
> +				read-only;
> +			};
> +
> +			profile at 1f30000 {
> +				label = "profile";
> +				reg = <0x1f30000 0x10000>;
> +				read-only;
> +			};
> +
> +			default-config at 1f40000 {
> +				label = "default-config";
> +				reg = <0x1f40000 0x10000>;
> +				read-only;
> +			};
> +
> +			user-config at 1f50000 {
> +				label = "user-config";
> +				reg = <0x1f50000 0x40000>;
> +				read-only;
> +			};
> +
> +			qos-db at 1f90000 {
> +				label = "qos-db";
> +				reg = <0x1f90000 0x40000>;
> +				read-only;
> +			};
> +
> +			usb-config at 1fd0000 {
> +				label = "usb-config";
> +				reg = <0x1fd0000 0x10000>;
> +				read-only;
> +			};
> +
> +			log at 1fe0000 {
> +				label = "log";
> +				reg = <0x1fe0000 0x20000>;
> +				read-only;
> +			};
> +		};
> +	};
> +};
> +
> +&usb3_0 {
> +	status = "okay";
> +
> +	pinctrl-0 = <&usb0_pwr_en_pin>;
> +	pinctrl-names = "default";
> +};
> +
> +&usb3_1 {
> +	status = "okay";
> +
> +	pinctrl-0 = <&usb1_pwr_en_pin>;
> +	pinctrl-names = "default";
> +};
> +
> +&pcie0 {
> +	status = "okay";
> +};
> +
> +&pcie1 {
> +	status = "okay";
> +	max-link-speed = <1>;
> +};
> +
> +&pcie2 {
> +	status = "okay";
> +	max-link-speed = <1>;
> +};
> +
> +&mdio0 {
> +	status = "okay";
> +
> +	pinctrl-0 = <&mdio0_pins>;
> +	pinctrl-names = "default";
> +
> +	phy0: ethernet-phy at 0 {
> +		reg = <0>;
> +		qca,ar8327-initvals = <
> +			0x00004 0x7600000   /* PAD0_MODE */
> +			0x00008 0x1000000   /* PAD5_MODE */
> +			0x0000c 0x80        /* PAD6_MODE */
> +			0x000e4 0x6a545     /* MAC_POWER_SEL */
> +			0x000e0 0xc74164de  /* SGMII_CTRL */
> +			0x0007c 0x4e        /* PORT0_STATUS */
> +			0x00094 0x4e        /* PORT6_STATUS */
> +			>;
> +	};
> +
> +	phy4: ethernet-phy at 4 {
> +		reg = <4>;
> +	};
> +};
> +
> +&gmac1 {
> +	status = "okay";
> +	phy-mode = "rgmii";
> +	qcom,id = <1>;
> +
> +	pinctrl-0 = <&rgmii2_pins>;
> +	pinctrl-names = "default";
> +
> +	mtd-mac-address = <&defaultmac 0x8>;
> +	mtd-mac-address-increment = <1>;
> +
> +	fixed-link {
> +		speed = <1000>;
> +		full-duplex;
> +	};
> +};
> +
> +&gmac2 {
> +	status = "okay";
> +	phy-mode = "sgmii";
> +	qcom,id = <2>;
> +
> +	mtd-mac-address = <&defaultmac 0x8>;
> +
> +	fixed-link {
> +		speed = <1000>;
> +		full-duplex;
> +	};
> +};
> +
> +&adm_dma {
> +	status = "okay";
> +};
> diff --git a/target/linux/ipq806x/image/Makefile b/target/linux/ipq806x/image/Makefile
> index ec73630ae5..6e3ef6f526 100644
> --- a/target/linux/ipq806x/image/Makefile
> +++ b/target/linux/ipq806x/image/Makefile
> @@ -295,6 +295,21 @@ define Device/qcom_ipq8064-db149
>  endef
>  TARGET_DEVICES += qcom_ipq8064-db149
>  
> +define Device/tplink_ad7200
> +	$(call Device/TpSafeImage)
> +	DEVICE_VENDOR := TP-Link
> +	DEVICE_MODEL := Talon AD7200
> +	DEVICE_VARIANT := v1
> +	SOC := qcom-ipq8064
> +	BLOCKSIZE := 128k
> +	PAGESIZE := 2048
> +	BOARD_NAME := ad7200
> +	SUPPORTED_DEVICES += ad7200
> +	TPLINK_BOARD_ID := AD7200
> +	DEVICE_PACKAGES := ath10k-firmware-qca99x0-ct kmod-wil6210
> +endef
> +TARGET_DEVICES += tplink_ad7200
> +
>  define Device/tplink_c2600
>  	$(call Device/TpSafeImage)
>  	DEVICE_VENDOR := TP-Link
> diff --git a/tools/firmware-utils/src/tplink-safeloader.c b/tools/firmware-utils/src/tplink-safeloader.c
> index 31b9c032d1..08f96a5fa8 100644
> --- a/tools/firmware-utils/src/tplink-safeloader.c
> +++ b/tools/firmware-utils/src/tplink-safeloader.c
> @@ -651,6 +651,50 @@ static struct device_info boards[] = {
>  		.last_sysupgrade_partition = "support-list",
>  	},
>  
> +	/** Firmware layout for the AD7200 */
> +	{
> +		.id = "AD7200",
> +		.vendor = "",
> +		.support_list =
> +			"SupportList:\r\n"
> +			"{product_name:Talon AD7200,product_ver:1.0.0,special_id:00000000}\r\n",
> +		.support_trail = '\x00',
> +		.soft_ver = NULL,
> +
> +		.partitions = {
> +			{"SBL1", 0x00000, 0x20000},
> +			{"MIBIB", 0x20000, 0x20000},
> +			{"SBL2", 0x40000, 0x20000},
> +			{"SBL3", 0x60000, 0x30000},
> +			{"DDRCONFIG", 0x90000, 0x10000},
> +			{"SSD", 0xa0000, 0x10000},
> +			{"TZ", 0xb0000, 0x30000},
> +			{"RPM", 0xe0000, 0x20000},
> +			{"fs-uboot", 0x100000, 0x70000},
> +			{"uboot-env", 0x170000, 0x40000},
> +			{"radio", 0x1b0000, 0x40000},
> +			{"os-image", 0x1f0000, 0x400000},
> +			{"file-system", 0x5f0000, 0x1900000},
> +			{"default-mac", 0x1ef0000, 0x00200},
> +			{"pin", 0x1ef0200, 0x00200},
> +			{"device-id", 0x1ef0400, 0x00200},
> +			{"product-info", 0x1ef0600, 0x0fa00},
> +			{"partition-table", 0x1f00000, 0x10000},
> +			{"soft-version", 0x1f10000, 0x10000},
> +			{"support-list", 0x1f20000, 0x10000},
> +			{"profile", 0x1f30000, 0x10000},
> +			{"default-config", 0x1f40000, 0x10000},
> +			{"user-config", 0x1f50000, 0x40000},
> +			{"qos-db", 0x1f90000, 0x40000},
> +			{"usb-config", 0x1fd0000, 0x10000},
> +			{"log", 0x1fe0000, 0x20000},
> +			{NULL, 0, 0}
> +		},
> +
> +		.first_sysupgrade_partition = "os-image",
> +		.last_sysupgrade_partition = "file-system"
> +	},
> +
>  	/** Firmware layout for the C2600 */
>  	{
>  		.id     = "C2600",
> -- 
> 2.17.1
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list