From 07b09c01d002572c58d37de90d9b69d89a179de8 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 18 Jun 2021 11:07:02 +0200 Subject: [PATCH 1/7] ipq40xx: add tplink ec420 support Signed-off-by: John Crispin --- 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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�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 +#include +#include + +/ { + 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 = ; + }; + + ess_tcsr@1953000 { + compatible = "qcom,tcsr"; + reg = <0x1953000 0x1000>; + qcom,ess-interface-select = ; + }; + + tcsr@1957000 { + compatible = "qcom,tcsr"; + reg = <0x1957000 0x100>; + qcom,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 = ; + 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