Files
wlan-ap/patches/0032-ipq40xx-add-tplink-ec420-support.patch
2021-08-12 17:07:51 +02:00

1475 lines
79 KiB
Diff

From 07b09c01d002572c58d37de90d9b69d89a179de8 Mon Sep 17 00:00:00 2001
From: John Crispin <john@phrozen.org>
Date: Fri, 18 Jun 2021 11:07:02 +0200
Subject: [PATCH 1/7] ipq40xx: add tplink ec420 support
Signed-off-by: John Crispin <john@phrozen.org>
---
package/firmware/ipq-wifi/Makefile | 4 +-
.../ipq-wifi/board-tp-link_ec420-g1.qca4019 | Bin 0 -> 607304 bytes
.../ipq-wifi/board-tp-link_ec420-g1.qca9984 | Bin 0 -> 171916 bytes
.../ipq40xx/base-files/etc/board.d/02_network | 3 +-
.../etc/hotplug.d/firmware/11-ath10k-caldata | 11 +-
.../base-files/lib/upgrade/platform.sh | 3 +-
.../dts/qcom-ipq4019-tp-link-ec420-g1.dts | 276 ++++++++++++++++++
target/linux/ipq40xx/image/generic.mk | 15 +
.../patches-5.4/998-tp-link-ec420-g1.patch | 12 +
9 files changed, 316 insertions(+), 8 deletions(-)
create mode 100644 package/firmware/ipq-wifi/board-tp-link_ec420-g1.qca4019
create mode 100644 package/firmware/ipq-wifi/board-tp-link_ec420-g1.qca9984
create mode 100755 target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-tp-link-ec420-g1.dts
create mode 100644 target/linux/ipq40xx/patches-5.4/998-tp-link-ec420-g1.patch
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index 513ad4ea67..87dcf9a769 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -48,7 +48,8 @@ ALLWIFIBOARDS:= \
plasmacloud_pa1200 \
plasmacloud_pa2200 \
qxwlan_e2600ac \
- cig_wf610d
+ cig_wf610d \
+ tp-link_ec420-g1
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
@@ -133,5 +134,6 @@ $(eval $(call generate-ipq-wifi-package,plasmacloud_pa1200,Plasma Cloud PA1200))
$(eval $(call generate-ipq-wifi-package,plasmacloud_pa2200,Plasma Cloud PA2200))
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac,Qxwlan E2600AC))
$(eval $(call generate-ipq-wifi-package,cig_wf610d,CIG WF_610D))
+$(eval $(call generate-ipq-wifi-package,tp-link_ec420-g1,tp-link EC420-G1))
$(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
diff --git a/package/firmware/ipq-wifi/board-tp-link_ec420-g1.qca4019 b/package/firmware/ipq-wifi/board-tp-link_ec420-g1.qca4019
new file mode 100644
index 0000000000000000000000000000000000000000..58046713c3e25f2332d00550778b897b5524541c
GIT binary patch
literal 607304
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
literal 0
HcmV?d00001
diff --git a/package/firmware/ipq-wifi/board-tp-link_ec420-g1.qca9984 b/package/firmware/ipq-wifi/board-tp-link_ec420-g1.qca9984
new file mode 100644
index 0000000000000000000000000000000000000000..6530e163c7c21652524afec0b0cf3ce45fc82704
GIT binary patch
literal 171916
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
literal 0
HcmV?d00001
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network
index 597fa9f08b..238376afca 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -31,8 +31,9 @@ ipq40xx_setup_interfaces()
meraki,mr33|\
netgear,ex6100v2|\
netgear,ex6150v2|\
+ tp-link,ec420-g1|\
zyxel,wre6606)
- ucidef_set_interface_lan "eth0"
+ ucidef_set_interface_wan "eth0"
;;
aruba,ap-303h)
ucidef_set_interfaces_lan_wan "eth0" "eth1"
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 5eae9c6e80..8d3006381d 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -46,6 +46,9 @@ case "$FIRMWARE" in
# OEM assigns 4 sequential MACs
ath10k_patch_mac $(macaddr_setbit_la $(macaddr_add "$(cat /sys/class/net/eth0/address)" 4))
;;
+ tp-link,ec420-g1)
+ caldata_extract "0:ART" 0x9000 0x2f20
+ ;;
esac
;;
"ath10k/pre-cal-ahb-a000000.wifi.bin")
@@ -154,6 +157,9 @@ case "$FIRMWARE" in
caldata_extract "ART" 0x1000 0x2f20
ath10k_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -2)
;;
+ tp-link,ec420-g1)
+ caldata_extract "0:ART" 0x1000 0x2f20
+ ;;
esac
;;
"ath10k/pre-cal-ahb-a800000.wifi.bin")
@@ -262,11 +268,6 @@ case "$FIRMWARE" in
caldata_extract "ART" 0x5000 0x2f20
ath10k_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
;;
- tp-link,ap2220 |\
- tp-link,ec420-g1)
- ath10kcal_extract "0:ART" 4096 12064
- ath10kcal_patch_mac_crc $(macaddr_add "$(get_tip mac_address)" 9) #2.4G, wlan1
- ;;
esac
;;
*)
diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
index 5582696759..530545e442 100644
--- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
@@ -72,7 +72,8 @@ platform_do_upgrade() {
glinet,gl-ap1300 |\
luma,wrtq-329acn |\
mobipromo,cm520-79f |\
- qxwlan,e2600ac-c2)
+ qxwlan,e2600ac-c2 |\
+ tp-link,ec420-g1)
nand_do_upgrade "$1"
;;
alfa-network,ap120c-ac)
diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-tp-link-ec420-g1.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-tp-link-ec420-g1.dts
new file mode 100755
index 0000000000..fc48e605d5
--- /dev/null
+++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-tp-link-ec420-g1.dts
@@ -0,0 +1,276 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+ model = "tp-link EC420 G1";
+ compatible = "tp-link,ec420-g1";
+
+ aliases {
+ led-boot = &led_green;
+ led-failsafe = &led_green;
+ led-running = &led_green;
+ led-upgrade = &led_green;
+ };
+
+ soc {
+ mdio@90000 {
+ status = "okay";
+ };
+
+ ess-psgmii@98000 {
+ status = "okay";
+ };
+
+ tcsr@1949000 {
+ compatible = "qcom,tcsr";
+ reg = <0x1949000 0x100>;
+ qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+ };
+
+ ess_tcsr@1953000 {
+ compatible = "qcom,tcsr";
+ reg = <0x1953000 0x1000>;
+ qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+ };
+
+ tcsr@1957000 {
+ compatible = "qcom,tcsr";
+ reg = <0x1957000 0x100>;
+ qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+ };
+
+ crypto@8e3a000 {
+ status = "okay";
+ };
+
+ watchdog@b017000 {
+ status = "okay";
+ };
+
+ ess-switch@c000000 {
+ status = "okay";
+ switch_mac_mode = <0x0>; /* mac mode for RGMII RMII */
+ switch_initvlas = <0x0007c 0x54>; /* port0 status */
+ switch_lan_bmp = <0x10>;
+ };
+
+ edma@c080000 {
+ status = "okay";
+ };
+ };
+
+ key {
+ compatible = "gpio-keys";
+
+ button@1 {
+ label = "reset";
+ linux,code = <KEY_RESTART>;
+ gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
+ linux,input-type = <1>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_red {
+ label = "ec420:red:status";
+ gpios = <&tlmm 20 GPIO_ACTIVE_HIGH>;
+ };
+
+ led_green: power {
+ label = "ec420:green:status";
+ gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
+ };
+
+ led_blue {
+ label = "ec420:blue:status";
+ gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>;
+ };
+ };
+};
+
+&tlmm {
+ serial_0_pins: serial_pinmux {
+ mux {
+ pins = "gpio16", "gpio17";
+ function = "blsp_uart0";
+ bias-disable;
+ };
+ };
+
+spi_0_pins: spi_0_pinmux {
+ pinmux {
+ function = "blsp_spi0";
+ pins = "gpio13", "gpio14", "gpio15";
+ drive-strength = <12>;
+ bias-disable;
+ };
+
+ pinmux_cs {
+ function = "gpio";
+ pins = "gpio12";
+ drive-strength = <2>;
+ bias-disable;
+ output-high;
+ };
+};
+
+nand_pins: nand_pins {
+ pullups {
+ pins = "gpio53", "gpio58", "gpio59";
+ function = "qpic";
+ bias-pull-up;
+ };
+
+ pulldowns {
+ pins = "gpio54", "gpio55", "gpio56",
+ "gpio57", "gpio60", "gpio61",
+ "gpio62", "gpio63", "gpio64",
+ "gpio65", "gpio66", "gpio67",
+ "gpio68", "gpio69";
+ function = "qpic";
+ bias-pull-down;
+ };
+ };
+};
+
+&cryptobam {
+ status = "okay";
+};
+
+&blsp1_spi1 {
+ pinctrl-0 = <&spi_0_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+ cs-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>;
+
+ flash@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ linux,modalias = "m25p80", "gd25q256";
+ spi-max-frequency = <24000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition0@0 {
+ label = "0:SBL1";
+ reg = <0x00000000 0x00040000>;
+ read-only;
+ };
+ partition1@40000 {
+ label = "0:MIBIB";
+ reg = <0x00040000 0x00020000>;
+ read-only;
+ };
+ partition2@60000 {
+ label = "0:QSEE";
+ reg = <0x00060000 0x00060000>;
+ read-only;
+ };
+ partition3@c0000 {
+ label = "0:CDT";
+ reg = <0x000c0000 0x00010000>;
+ read-only;
+ };
+ partition4@d0000 {
+ label = "0:DDRPARAMS";
+ reg = <0x000d0000 0x00010000>;
+ read-only;
+ };
+ partition5@e0000 {
+ label = "0:APPSBLENV";
+ reg = <0x000e0000 0x00010000>;
+ read-only;
+ };
+ partition6@f0000 {
+ label = "0:APPSBL";
+ reg = <0x000f0000 0x00080000>;
+ read-only;
+ };
+ partition7@170000 {
+ label = "0:ART";
+ reg = <0x00170000 0x00010000>;
+ read-only;
+ };
+ partition8@180000 {
+ label = "product_info";
+ reg = <0x00180000 0x00010000>;
+ };
+ partition9@190000 {
+ label = "factory_fw";
+ reg = <0x00190000 0x01e70000>;
+ };
+ };
+ };
+};
+
+&nand {
+ pinctrl-0 = <&nand_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ nand@0 {
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "ubi";
+ reg = <0x00000000 0x10000000>;
+ };
+ };
+ };
+};
+
+&blsp_dma {
+ status = "okay";
+};
+
+&blsp1_uart1 {
+ pinctrl-0 = <&serial_0_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&qpic_bam {
+ status = "okay";
+};
+
+&wifi0 {
+ status = "okay";
+};
+
+&wifi1 {
+ status = "disabled";
+};
+
+&pcie0 {
+ status = "okay";
+ perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+ wake-gpio = <&tlmm 40 GPIO_ACTIVE_LOW>;
+
+ bridge@0,0 {
+ reg = <0x00000000 0 0 0 0>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ ranges;
+
+ wifi2: wifi@1,0 {
+ compatible = "qcom,ath10k";
+ status = "okay";
+ reg = <0x00010000 0 0 0 0>;
+ };
+ };
+};
+
diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk
index 487bba77b0..ee648edc50 100644
--- a/target/linux/ipq40xx/image/generic.mk
+++ b/target/linux/ipq40xx/image/generic.mk
@@ -820,3 +820,18 @@ define Device/zyxel_wre6606
DEVICE_PACKAGES := -kmod-ath10k-ct kmod-ath10k-ct-smallbuffers
endef
TARGET_DEVICES += zyxel_wre6606
+
+define Device/tp-link_ec420_g1
+ $(call Device/FitImage)
+ $(call Device/UbiFit)
+ DEVICE_TITLE := tp-link EC420 G1
+ BOARD_NAME := ec420_g1
+ DEVICE_DTS := qcom-ipq4019-tp-link-ec420-g1
+ KERNEL_SIZE := 4096k
+ IMAGE_SIZE := 26624k
+ BLOCKSIZE := 128k
+ PAGESIZE := 2048
+ SUPPORTED_DEVICES := tp-link,ec420-g1
+ DEVICE_PACKAGES := ath10k-firmware-qca9984-ct ipq-wifi-tp-link_ec420-g1
+endef
+TARGET_DEVICES += tp-link_ec420_g1
diff --git a/target/linux/ipq40xx/patches-5.4/998-tp-link-ec420-g1.patch b/target/linux/ipq40xx/patches-5.4/998-tp-link-ec420-g1.patch
new file mode 100644
index 0000000000..40c913323f
--- /dev/null
+++ b/target/linux/ipq40xx/patches-5.4/998-tp-link-ec420-g1.patch
@@ -0,0 +1,12 @@
+Index: linux-5.4.111/arch/arm/boot/dts/Makefile
+===================================================================
+--- linux-5.4.111.orig/arch/arm/boot/dts/Makefile
++++ linux-5.4.111/arch/arm/boot/dts/Makefile
+@@ -883,6 +883,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+ qcom-ipq4019-u4019-32m.dtb \
+ qcom-ipq4019-wpj419.dtb \
+ qcom-ipq4019-wtr-m2133hp.dtb \
++ qcom-ipq4019-tp-link-ec420-g1.dtb \
+ qcom-ipq4028-wpj428.dtb \
+ qcom-ipq4029-ap-303.dtb \
+ qcom-ipq4029-ap-303h.dtb \
--
2.25.1