Note:
The patch breakage that caused me to send V2 in the first place is my own 
fault, original PR doesn't have this issue. Sorry, forgot to mention it.


On Mon, 22 Nov 2021, Enrico Mioso wrote:

Date: Mon, 22 Nov 2021 19:36:02
From: Enrico Mioso <[email protected]>
To: [email protected]
Cc: TruongSinh Tran-Nguyen <[email protected]>,
    Enrico Mioso <[email protected]>, Li Zhang <[email protected]>
Subject: [PATCH V2] ipq40xx: add support for GL.iNet GL-B2200

From: TruongSinh Tran-Nguyen <[email protected]>

This patch adds supports for the GL-B2200 router.

Specifications:
 - SOC: Qualcomm IPQ4019 ARM Quad-Core
 - RAM: 512 MiB
 - Flash: 16 MiB NOR - SPI0
 - EMMC: 8GB EMMC
 - ETH: Qualcomm QCA8075
 - WLAN1: Qualcomm Atheros QCA4019 2.4GHz 802.11b/g/n 2x2
 - WLAN2: Qualcomm Atheros QCA4019 5GHz 802.11n/ac W2 2x2
 - WLAN3: Qualcomm Atheros QCA9886 5GHz 802.11n/ac W2 2x2
 - INPUT: Reset, WPS
 - LED: Power, Internet
 - UART1: On board pin header near to LED (3.3V, TX, RX, GND), 3.3V without pin 
- 115200 8N1
 - UART2: On board with BLE module
 - SPI1: On board socket for Zigbee module

Update firmware instructions:
Please update the firmware via U-Boot web UI (by default at 192.168.1.1, 
following instructions found at
https://docs.gl-inet.com/en/3/troubleshooting/debrick/).
Normal sysupgrade, either via CLI or LuCI, is not possible from stock firmware.

What's working:
- WiFi 2G, 5G
- WPA2/WPA3

Not tested:
- Bluetooth LE/Zigbee

Credits goes to the original authors of this patch.

V1->V2:
- updates *arm-boot-add-dts-files.patch correctly
- add uboot-envtools support

Signed-off-by: TruongSinh Tran-Nguyen <[email protected]>
[fix tab and trailing space, document what's working and what's not]
Signed-off-by: Enrico Mioso <[email protected]>
[rebase on top of master, address remaining comments]
Signed-off-by: Li Zhang <[email protected]>
---
package/boot/uboot-envtools/files/ipq40xx     |   1 +
package/firmware/ipq-wifi/Makefile            |   2 +
.../ipq-wifi/board-glinet_gl-b2200.qca4019    | Bin 0 -> 24308 bytes
.../ipq-wifi/board-glinet_gl-b2200.qca9888    | Bin 0 -> 12200 bytes
target/linux/ipq40xx/Makefile                 |   2 +-
.../ipq40xx/base-files/etc/board.d/02_network |   5 +
.../etc/hotplug.d/firmware/11-ath10k-caldata  |   3 +
.../arm/boot/dts/qcom-ipq4019-gl-b2200.dts    | 364 ++++++++++++++++++
target/linux/ipq40xx/image/generic.mk         |  28 ++
.../901-arm-boot-add-dts-files.patch          |   3 +-
.../901-arm-boot-add-dts-files.patch          |   3 +-
11 files changed, 408 insertions(+), 3 deletions(-)
create mode 100644 package/firmware/ipq-wifi/board-glinet_gl-b2200.qca4019
create mode 100644 package/firmware/ipq-wifi/board-glinet_gl-b2200.qca9888
create mode 100644 
target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-gl-b2200.dts

diff --git a/package/boot/uboot-envtools/files/ipq40xx 
b/package/boot/uboot-envtools/files/ipq40xx
index 1462aa991d..9a71a622f7 100644
--- a/package/boot/uboot-envtools/files/ipq40xx
+++ b/package/boot/uboot-envtools/files/ipq40xx
@@ -35,6 +35,7 @@ devolo,magic-2-wifi-next|\
edgecore,ecw5211|\
glinet,gl-ap1300|\
glinet,gl-b1300|\
+glinet,gl-b2200|\
luma,wrtq-329acn|\
netgear,wac510|\
openmesh,a42|\
diff --git a/package/firmware/ipq-wifi/Makefile 
b/package/firmware/ipq-wifi/Makefile
index da0949b887..1467b032da 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -39,6 +39,7 @@ ALLWIFIBOARDS:= \
        engenius_emr3500 \
        ezviz_cs-w3-wd1200g-eup \
        glinet_gl-ap1300 \
+       glinet_gl-b2200 \
        glinet_gl-s1300 \
        linksys_ea8300 \
        linksys_mr8300-v0 \
@@ -125,6 +126,7 @@ $(eval $(call 
generate-ipq-wifi-package,engenius_emd1,EnGenius EMD1))
$(eval $(call generate-ipq-wifi-package,engenius_emr3500,EnGenius EMR3500))
$(eval $(call generate-ipq-wifi-package,ezviz_cs-w3-wd1200g-eup,EZVIZ 
CS-W3-WD1200G EUP))
$(eval $(call generate-ipq-wifi-package,glinet_gl-ap1300,GL.iNet GL-AP1300))
+$(eval $(call generate-ipq-wifi-package,glinet_gl-b2200,GL.iNet GL-B2200))
$(eval $(call generate-ipq-wifi-package,glinet_gl-s1300,GL.iNet GL-S1300))
$(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300))
$(eval $(call generate-ipq-wifi-package,linksys_mr8300-v0,Linksys MR8300))
diff --git a/package/firmware/ipq-wifi/board-glinet_gl-b2200.qca4019 
b/package/firmware/ipq-wifi/board-glinet_gl-b2200.qca4019
new file mode 100644
index 
0000000000000000000000000000000000000000..ac1850160aead29cee0fb96664272b8a620a4e6a
GIT binary patch
literal 24308
zcmeHPdr(tX8b1jj>SE!BfCzXAAv{7MK%g2V@)iT6U{R3(i$E30tx+C^hoKAYC{l=s
zKrI*|Xc?48Q$)ta7qM7dJEP40v48CBA8ltJ-I;aQcC<U~%<kfzdy@+xB$^0pdE76Y
zbG~!#_nq^d-#tn0&G~WPN{9=N+an4KO%0AukIP5|GMNlODGtGN0JgwXC@<e$P+S;P
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

literal 0
HcmV?d00001

diff --git a/package/firmware/ipq-wifi/board-glinet_gl-b2200.qca9888 
b/package/firmware/ipq-wifi/board-glinet_gl-b2200.qca9888
new file mode 100644
index 
0000000000000000000000000000000000000000..4f0a521f35935d4be1fb01b66dd9954a48eade52
GIT binary patch
literal 12200
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

literal 0
HcmV?d00001

diff --git a/target/linux/ipq40xx/Makefile b/target/linux/ipq40xx/Makefile
index fb003243cc..a3270379d4 100644
--- a/target/linux/ipq40xx/Makefile
+++ b/target/linux/ipq40xx/Makefile
@@ -3,7 +3,7 @@ include $(TOPDIR)/rules.mk
ARCH:=arm
BOARD:=ipq40xx
BOARDNAME:=Qualcomm Atheros IPQ40XX
-FEATURES:=squashfs fpu ramdisk nand
+FEATURES:=squashfs fpu ramdisk nand boot-part rootfs-part
CPU_TYPE:=cortex-a7
CPU_SUBTYPE:=neon-vfpv4
SUBTARGETS:=generic mikrotik
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 5d123109a2..c674186b44 100644
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -103,6 +103,11 @@ ipq40xx_setup_interfaces()
                ucidef_add_switch "switch0" \
                        "0u@eth0" "3:lan" "4:lan"
                ;;
+       glinet,gl-b2200)
+               ucidef_set_interfaces_lan_wan "eth0" "eth1"
+               ucidef_add_switch "switch0" \
+                       "0u@eth0" "1:lan" "2:lan" "3:lan" "5:lan" "0u@eth1" 
"4:wan"
+               ;;
        mobipromo,cm520-79f)
                ucidef_add_switch "switch0" \
                        "0u@eth0" "3:lan:2" "4:lan:1"
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 35862ce3bc..6899723a74 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
@@ -35,6 +35,7 @@ case "$FIRMWARE" in
                caldata_extract "ART" 0x9000 0x2f20
                ath10k_patch_mac $(mtd_get_mac_binary ORGDATA 0x32)
                ;;
+       glinet,gl-b2200 |\
        engenius,eap2200 |\
        openmesh,a62 |\
        plasmacloud,pa2200)
@@ -64,6 +65,7 @@ case "$FIRMWARE" in
        ezviz,cs-w3-wd1200g-eup |\
        glinet,gl-ap1300 |\
        glinet,gl-b1300 |\
+       glinet,gl-b2200 |\
        glinet,gl-s1300 |\
        linksys,ea6350v3 |\
        mobipromo,cm520-79f |\
@@ -186,6 +188,7 @@ case "$FIRMWARE" in
        ezviz,cs-w3-wd1200g-eup |\
        glinet,gl-ap1300 |\
        glinet,gl-b1300 |\
+       glinet,gl-b2200 |\
        glinet,gl-s1300 |\
        linksys,ea6350v3 |\
        mobipromo,cm520-79f |\
diff --git 
a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-gl-b2200.dts 
b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-gl-b2200.dts
new file mode 100644
index 0000000000..6b84f78dc4
--- /dev/null
+++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-gl-b2200.dts
@@ -0,0 +1,364 @@
+// SPDX-License-Identifier: GPL-2.0-only 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 = "GL.iNet GL-B2200";
+       compatible = "glinet,gl-b2200", "qcom,ipq4019";
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x10000000>;
+       };
+
+       chosen {
+               bootargs-append = " root=/dev/mmcblk0p2 rw rootwait 
clk_ignore_unused";
+       };
+
+       soc {
+               rng@22000 {
+                       status = "okay";
+               };
+
+               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>;
+               };
+
+               tcsr@194b000 {
+                       /* select hostmode */
+                       compatible = "qcom,tcsr";
+                       reg = <0x194b000 0x100>;
+                       qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+                       status = "okay";
+               };
+
+               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";
+               };
+
+               ess-switch@c000000 {
+                       status = "okay";
+                       switch_lan_bmp = <0x2e>;
+                       switch_wan_bmp = <0x10>;
+               };
+
+               edma@c080000 {
+                       status = "okay";
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               wps {
+                       label = "wps";
+                       gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WPS_BUTTON>;
+                       linux,input-type = <1>;
+               };
+
+               reset {
+                       label = "reset";
+                       gpios = <&tlmm 43 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+                       linux,input-type = <1>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               power_blue {
+                       label = "blue:power";
+                       gpios = <&tlmm 57 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+               internet_blue {
+                       label = "blue:internet";
+                       gpios = <&tlmm 60 GPIO_ACTIVE_HIGH>;
+               };
+               power_white {
+                       label = "white:power";
+                       gpios = <&tlmm 61 GPIO_ACTIVE_LOW>;
+               };
+               internet_white {
+                       label = "white:internet";
+                       gpios = <&tlmm 66 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&gmac1 {
+       qcom,phy_mdio_addr = <3>;
+       qcom,poll_required = <1>;
+       qcom,forced_speed = <1000>;
+       qcom,forced_duplex = <1>;
+       vlan_tag = <2 0x10>;
+};
+
+&gmac0 {
+       vlan_tag = <1 0x2e>;
+};
+
+&vqmmc {
+       status = "okay";
+};
+
+&sdhci {
+       status = "okay";
+       pinctrl-0 = <&sd_pins>;
+       pinctrl-names = "default";
+       cd-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
+       vqmmc-supply = <&vqmmc>;
+};
+
+&blsp_dma {
+       status = "okay";
+};
+
+&cryptobam {
+       status = "okay";
+};
+
+&blsp1_spi1 {
+       pinctrl-0 = <&spi_0_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+       cs-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>;
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <24000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "SBL1";
+                               reg = <0x0 0x40000>;
+                               read-only;
+                       };
+
+                       partition@40000 {
+                               label = "MIBIB";
+                               reg = <0x40000 0x20000>;
+                               read-only;
+                       };
+
+                       partition@60000 {
+                               label = "QSEE";
+                               reg = <0x60000 0x60000>;
+                               read-only;
+                       };
+
+                       partition@c0000 {
+                               label = "CDT";
+                               reg = <0xc0000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@d0000 {
+                               label = "DDRPARAMS";
+                               reg = <0xd0000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@e0000 {
+                               label = "APPSBLENV";
+                               reg = <0xe0000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@f0000 {
+                               label = "APPSBL";
+                               reg = <0xf0000 0x80000>;
+                               read-only;
+                       };
+
+                       partition@170000 {
+                               label = "ART";
+                               reg = <0x170000 0x10000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&blsp1_spi2 {
+       pinctrl-0 = <&spi_1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       spidev1: spi@0 {
+               compatible = "siliconlabs,si3210";
+               reg = <0>;
+               spi-max-frequency = <24000000>;
+       };
+};
+
+&blsp1_uart1 {
+       pinctrl-0 = <&serial_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&blsp1_uart2 {
+       pinctrl-0 = <&serial_1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&tlmm {
+       serial_pins: serial_pinmux {
+               mux {
+                       pins = "gpio16", "gpio17";
+                       function = "blsp_uart0";
+                       bias-disable;
+               };
+       };
+
+       serial_1_pins: serial1_pinmux {
+               mux {
+                       pins = "gpio8", "gpio9",
+                               "gpio10", "gpio11";
+                       function = "blsp_uart1";
+                       bias-disable;
+               };
+       };
+
+       spi_0_pins: spi_0_pinmux {
+               pinmux {
+                       function = "blsp_spi0";
+                       pins = "gpio13", "gpio14", "gpio15";
+               };
+               pinmux_cs {
+                       function = "gpio";
+                       pins = "gpio12";
+               };
+               pinconf {
+                       pins = "gpio13", "gpio14", "gpio15";
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               pinconf_cs {
+                       pins = "gpio12";
+                       drive-strength = <2>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi_1_pins: spi_1_pinmux {
+               mux {
+                       pins = "gpio44", "gpio46", "gpio47";
+                       function = "blsp_spi1";
+                       bias-disable;
+               };
+               cs {
+                       pins = "gpio45";
+                       function = "gpio";
+                       bias-pull-up;
+               };
+               reset {
+                       pins = "gpio43";
+                       function = "gpio";
+                       output-high;
+               };
+               mux_2 {
+                       pins = "gpio35";
+                       function = "gpio";
+                       output-high;
+               };
+               host_int {
+                       pins = "gpio2";
+                       function = "gpio";
+                       input;
+               };
+               wake {
+                       pins = "gpio48";
+                       function = "gpio";
+                       output-high;
+               };
+       };
+
+       sd_pins: sd_pins {
+               pinmux {
+                       function = "sdio";
+                       pins = "gpio23", "gpio24", "gpio25", "gpio26",
+                               "gpio29", "gpio30", "gpio31", "gpio32";
+                       drive-strength = <10>;
+               };
+
+               pinmux_sd_clk {
+                       function = "sdio";
+                       pins = "gpio27";
+                       drive-strength = <16>;
+               };
+
+               pinmux_sd7 {
+                       function = "sdio";
+                       pins = "gpio28";
+                       drive-strength = <10>;
+                       bias-disable;
+               };
+       };
+
+};
+
+&pcie0 {
+       status = "okay";
+       perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+       wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+       bridge@0,0 {
+               reg = <0x00000000 0 0 0 0>;
+               #address-cells = <3>;
+               #size-cells = <2>;
+               ranges;
+
+               wifi2: wifi@1,0 {
+                       status = "okay";
+                       compatible = "qcom,ath10k";
+                       reg = <0x00010000 0 0 0 0>;
+                       qcom,ath10k-calibration-variant = "GL-B2200";
+               };
+       };
+};
+
+&wifi0 {
+       status = "okay";
+       qcom,ath10k-calibration-variant = "GL-B2200";
+};
+
+&wifi1 {
+       status = "okay";
+       qcom,ath10k-calibration-variant = "GL-B2200";
+};
diff --git a/target/linux/ipq40xx/image/generic.mk 
b/target/linux/ipq40xx/image/generic.mk
index c24eb28523..1184b7d533 100644
--- a/target/linux/ipq40xx/image/generic.mk
+++ b/target/linux/ipq40xx/image/generic.mk
@@ -81,6 +81,17 @@ define Build/qsdk-ipq-factory-nand-askey
        @mv [email protected] $@
endef

+define Build/qsdk-ipq-app-gpt
+       cp $@ [email protected] 2>/dev/null || true
+       ptgen -g -o [email protected] -a 1 -l 1024 \
+                       -t 0x2e -N 0:HLOS -r -p 32M \
+                       -t 0x83 -N rootfs -r -p 128M \
+                               -N rootfs_data -p 512M \
+                               -N user_data -p 6766M
+       cat [email protected] >> $@
+       rm [email protected]
+endef
+
define Build/SenaoFW
        -$(STAGING_DIR_HOST)/bin/mksenaofw \
                -n $(BOARD_NAME) -r $(VENDOR_ID) -p $(1) \
@@ -509,6 +520,23 @@ define Device/glinet_gl-b1300
endef
TARGET_DEVICES += glinet_gl-b1300

+define Device/glinet_gl-b2200
+       $(call Device/FitzImage)
+       DEVICE_VENDOR := GL.iNet
+       DEVICE_MODEL := GL-B2200
+       SOC := qcom-ipq4019
+       DEVICE_DTS_CONFIG := [email protected]
+       KERNEL_INITRAMFS_SUFFIX := -recovery.itb
+       IMAGES := sdcard.img.gz
+       IMAGE/sdcard.img.gz := qsdk-ipq-app-gpt |\
+               pad-to 1024k | append-kernel |\
+               pad-to 33792k | append-rootfs |\
+               append-metadata | gzip
+       DEVICE_PACKAGES := ath10k-firmware-qca9888-ct ipq-wifi-glinet_gl-b2200 \
+               kmod-fs-ext4 kmod-mmc kmod-spi-dev mkf2fs e2fsprogs kmod-fs-f2fs
+endef
+TARGET_DEVICES += glinet_gl-b2200
+
define Device/glinet_gl-s1300
        $(call Device/FitzImage)
        DEVICE_VENDOR := GL.iNet
diff --git a/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch 
b/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch
index 436f5a74f5..030e0d6b45 100644
--- a/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <[email protected]>

--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
-@@ -902,11 +902,67 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -902,11 +902,68 @@ dtb-$(CONFIG_ARCH_QCOM) += \
        qcom-apq8074-dragonboard.dtb \
        qcom-apq8084-ifc6540.dtb \
        qcom-apq8084-mtp.dtb \
@@ -73,6 +73,7 @@ Signed-off-by: John Crispin <[email protected]>
+       qcom-ipq4029-ap-303h.dtb \
+       qcom-ipq4029-ap-365.dtb \
+       qcom-ipq4029-gl-b1300.dtb \
++ qcom-ipq4019-gl-b2200.dtb \
+       qcom-ipq4029-gl-s1300.dtb \
+       qcom-ipq4029-mr33.dtb \
        qcom-ipq8064-ap148.dtb \
diff --git a/target/linux/ipq40xx/patches-5.4/901-arm-boot-add-dts-files.patch 
b/target/linux/ipq40xx/patches-5.4/901-arm-boot-add-dts-files.patch
index bb63c1c4fb..ac53337855 100644
--- a/target/linux/ipq40xx/patches-5.4/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-5.4/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <[email protected]>

--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
-@@ -837,11 +837,65 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -837,11 +837,66 @@ dtb-$(CONFIG_ARCH_QCOM) += \
        qcom-apq8074-dragonboard.dtb \
        qcom-apq8084-ifc6540.dtb \
        qcom-apq8084-mtp.dtb \
@@ -71,6 +71,7 @@ Signed-off-by: John Crispin <[email protected]>
+       qcom-ipq4029-ap-303h.dtb \
+       qcom-ipq4029-ap-365.dtb \
+       qcom-ipq4029-gl-b1300.dtb \
++ qcom-ipq4019-gl-b2200.dtb \
+       qcom-ipq4029-gl-s1300.dtb \
+       qcom-ipq4029-mr33.dtb \
        qcom-ipq8064-ap148.dtb \
--
2.34.0



_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to