From f6d6341ba03e88675280251f04c5e4cc4bf2d9a6 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Sat, 25 Nov 2023 09:45:22 +0100 Subject: [PATCH 01/32] ipq807x: fix CIG profile names Signed-off-by: John Crispin --- profiles/{cig_wf188n => cig_wf188n.yml} | 0 profiles/{cig_wf196 => cig_wf196.yml} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename profiles/{cig_wf188n => cig_wf188n.yml} (100%) rename profiles/{cig_wf196 => cig_wf196.yml} (100%) diff --git a/profiles/cig_wf188n b/profiles/cig_wf188n.yml similarity index 100% rename from profiles/cig_wf188n rename to profiles/cig_wf188n.yml diff --git a/profiles/cig_wf196 b/profiles/cig_wf196.yml similarity index 100% rename from profiles/cig_wf196 rename to profiles/cig_wf196.yml From 98453fce9b2b2d7d1e4c6635cb69eab61f2f40f4 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Sun, 26 Nov 2023 16:53:10 +0100 Subject: [PATCH 02/32] ath79: fix indio um-305ac compile Signed-off-by: John Crispin --- profiles/indio_um-305ac.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/profiles/indio_um-305ac.yml b/profiles/indio_um-305ac.yml index 70b3a8708..acf25a6f2 100644 --- a/profiles/indio_um-305ac.yml +++ b/profiles/indio_um-305ac.yml @@ -6,4 +6,3 @@ description: Build image for the Indio 305AC image: bin/targets/ath79/generic/openwrt-ath79-generic-indio_um-305ac-squashfs-sysupgrade.bin include: - ucentral-ap - - wifi-ath10k From 5ca04b5fb86eb1faef6d918856761349559ee972 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 30 Nov 2023 10:22:35 +0100 Subject: [PATCH 03/32] ipq50xx: fix 5G wifi on yuncore fap655 Signed-off-by: John Crispin --- .../arch/arm64/boot/dts/qcom/qcom-ipq5018-yuncore-fap655.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-yuncore-fap655.dts b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-yuncore-fap655.dts index 969017374..e524b28a7 100644 --- a/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-yuncore-fap655.dts +++ b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-yuncore-fap655.dts @@ -823,7 +823,7 @@ #else memory-region = <&q6_qcn6122_data1>; #endif - status = "disabled"; + status = "ok"; }; &wifi2 { From ef0d3c6fdd198e85140a0bc0542d4d35ae25ab1b Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 1 Dec 2023 09:05:18 +0100 Subject: [PATCH 04/32] ipq50xx: fix uncore fap655 base mac Signed-off-by: John Crispin --- .../arch/arm64/boot/dts/qcom/qcom-ipq5018-yuncore-fap655.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-yuncore-fap655.dts b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-yuncore-fap655.dts index e524b28a7..e7abcda2c 100644 --- a/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-yuncore-fap655.dts +++ b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-yuncore-fap655.dts @@ -30,7 +30,7 @@ sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ serial0 = &blsp1_uart1; serial1 = &blsp1_uart2; - ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp1"; led-boot = &led_power; led-failsafe = &led_power; From 0e077cf39ad8745bf0b845d1df6ac16b836c3adc Mon Sep 17 00:00:00 2001 From: HaiBac Date: Thu, 30 Nov 2023 13:40:51 +0100 Subject: [PATCH 05/32] ipq807x: add support for OptimCloud D series Since QC only supports IPQ5018 + QCN9000 combination perfectly in kernel 4.4, thus remove OptimCloud D series support in ipq807x_v5.4 and migrate to ipq807x Signed-off-by: HaiBac --- .../dts/qcom-ipq5018-optimcloud-d50-5g.dts | 23 + .../boot/dts/qcom-ipq5018-optimcloud-d50.dts | 23 + .../dts/qcom-ipq5018-optimcloud-d60-5g.dts | 23 + .../boot/dts/qcom-ipq5018-optimcloud-d60.dts | 23 + .../qcom/qcom-ipq5018-optimcloud-d50-5g.dts | 995 ++++++++++++++++++ .../dts/qcom/qcom-ipq5018-optimcloud-d50.dts | 884 ++++++++++++++++ .../qcom/qcom-ipq5018-optimcloud-d60-5g.dts | 995 ++++++++++++++++++ .../dts/qcom/qcom-ipq5018-optimcloud-d60.dts | 884 ++++++++++++++++ 8 files changed, 3850 insertions(+) create mode 100644 feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d50-5g.dts create mode 100644 feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d50.dts create mode 100644 feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d60-5g.dts create mode 100644 feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d60.dts create mode 100755 feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50-5g.dts create mode 100644 feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50.dts create mode 100755 feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d60-5g.dts create mode 100644 feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d60.dts diff --git a/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d50-5g.dts b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d50-5g.dts new file mode 100644 index 000000000..b37be8d21 --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d50-5g.dts @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "../../../arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50-5g.dts" + +/ { + pmuv8: pmu { + compatible = "arm,cortex-a7-pmu"; + }; +}; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d50.dts b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d50.dts new file mode 100644 index 000000000..ccf478592 --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d50.dts @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "../../../arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50.dts" + +/ { + pmuv8: pmu { + compatible = "arm,cortex-a7-pmu"; + }; +}; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d60-5g.dts b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d60-5g.dts new file mode 100644 index 000000000..b37be8d21 --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d60-5g.dts @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "../../../arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50-5g.dts" + +/ { + pmuv8: pmu { + compatible = "arm,cortex-a7-pmu"; + }; +}; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d60.dts b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d60.dts new file mode 100644 index 000000000..ccf478592 --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm/boot/dts/qcom-ipq5018-optimcloud-d60.dts @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "../../../arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50.dts" + +/ { + pmuv8: pmu { + compatible = "arm,cortex-a7-pmu"; + }; +}; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50-5g.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50-5g.dts new file mode 100755 index 000000000..ff5b260b4 --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50-5g.dts @@ -0,0 +1,995 @@ +/dts-v1/; +/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "qcom-ipq5018.dtsi" + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "OptimCloud D50-5G"; + compatible = "optimcloud,d50-5g", "qcom,ipq5018-mp03.1", "qcom,ipq5018"; + interrupt-parent = <&intc>; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + AUTO_MOUNT; + #endif + + aliases { + sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ + serial0 = &blsp1_uart1; + serial1 = &blsp1_uart2; + ethernet0 = "/soc/dp2"; + ethernet1 = "/soc/dp1"; + }; + + chosen { + bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + bootargs-append = " swiotlb=1"; + #else + bootargs-append = " swiotlb=1 coherent_pool=2M"; + #endif + stdout-path = "serial0"; + }; + + reserved-memory { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + /* 256 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 8MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x40800000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * + | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 23MB | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C700000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4C900000 | 17MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4DA00000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01700000>; + }; + + m3_dump@4c700000 { + no-map; + reg = <0x0 0x4C700000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + qcn9000_pcie0@4c900000 { + no-map; + reg = <0x0 0x4C900000 0x0 0x01100000>; + }; + + mhi_region1: dma_pool1@4da00000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4da00000 0x0 0x01000000>; + }; + #elif __IPQ_MEM_PROFILE_512_MB__ + /* 512 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 24MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C900000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4CA00000 | 2MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4CC00000 | 30MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4EA00000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01800000>; + }; + + m3_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c900000 { + no-map; + reg = <0x0 0x4c900000 0x0 0x100000>; + }; + + q6_caldb_region:q6_caldb_region@4ca00000 { + no-map; + reg = <0x0 0x4ca00000 0x0 0x200000>; + }; + + qcn9000_pcie0@4cc00000 { + no-map; + reg = <0x0 0x4CC00000 0x0 0x01E00000>; + }; + + mhi_region1: dma_pool1@4ea00000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4ea00000 0x0 0x01000000>; + }; + #else + /* 1G Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 24MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C900000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4CA00000 | 2MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4CC00000 | 45MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4F900000 | 24MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01800000>; + }; + + m3_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c900000 { + no-map; + reg = <0x0 0x4c900000 0x0 0x100000>; + }; + + q6_caldb_region:q6_caldb_region@4ca00000 { + no-map; + reg = <0x0 0x4ca00000 0x0 0x200000>; + }; + + qcn9000_pcie0@4cc00000 { + no-map; + reg = <0x0 0x4CC00000 0x0 0x02D00000>; + }; + + mhi_region1: dma_pool1@4F900000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4F900000 0x0 0x01800000>; + }; + #endif + }; + + soc { + serial@78af000 { + status = "ok"; + }; + + blsp1_uart2: serial@78b0000 { + pinctrl-0 = <&blsp1_uart_pins>; + pinctrl-names = "default"; + }; + + qpic_bam: dma@7984000{ + status = "ok"; + }; + + nand: qpic-nand@79b0000 { + pinctrl-0 = <&qspi_nand_pins>; + pinctrl-names = "default"; + status = "ok"; + }; + + spi_0: spi@78b5000 { /* BLSP1 QUP0 */ + pinctrl-0 = <&blsp0_spi_pins>; + pinctrl-names = "default"; + cs-select = <0>; + status = "ok"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + compatible = "n25q128a11"; + linux,modalias = "m25p80", "n25q128a11"; + spi-max-frequency = <50000000>; + use-default-sizes; + }; + }; + + mdio0: mdio@88000 { + status = "ok"; + + ethernet-phy@0 { + reg = <7>; + }; + }; + + mdio1: mdio@90000 { + status = "ok"; + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 39 0>; + ethernet-phy@0 { + reg = <0>; + }; + + ethernet-phy@1 { + reg = <1>; + }; + + ethernet-phy@2 { + reg = <2>; + }; + + ethernet-phy@3 { + reg = <3>; + }; + }; + + ess-instance { + num_devices = <0x2>; + ess-switch@0x39c00000 { + compatible = "qcom,ess-switch-ipq50xx"; + device_id = <0>; + switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/ + cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <7>; + }; + port@1 { + port_id = <2>; + forced-speed = <1000>; + forced-duplex = <1>; + }; + }; + led_source@0 { + source = <0>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + }; + ess-switch1@1 { + compatible = "qcom,ess-switch-qca83xx"; + device_id = <1>; + switch_access_mode = "mdio"; + mdio-bus = <&mdio1>; + reset_gpio = <0x27>; + switch_cpu_bmp = <0x40>; /* cpu port bitmap */ + switch_lan_bmp = <0x1e>; /* lan port bitmap */ + switch_wan_bmp = <0x0>; /* wan port bitmap */ + qca,ar8327-initvals = < + 0x00004 0x7600000 /* PAD0_MODE */ + 0x00008 0x1000000 /* PAD5_MODE */ + 0x0000c 0x80 /* PAD6_MODE */ + 0x00010 0x2613a0 /* PORT6 FORCE MODE*/ + 0x000e4 0xaa545 /* MAC_POWER_SEL */ + 0x000e0 0xc74164de /* SGMII_CTRL */ + 0x0007c 0x4e /* PORT0_STATUS */ + 0x00094 0x4e /* PORT6_STATUS */ + >; + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <0>; + }; + port@1 { + port_id = <2>; + phy_address = <1>; + }; + port@2 { + port_id = <3>; + phy_address = <2>; + }; + port@3 { + port_id = <4>; + phy_address = <3>; + }; + }; + }; + }; + + wifi0: wifi@c000000 { + qcom,bdf-addr = <0x4BA00000 0x4BA00000 0x4BA00000 + 0x0 0x0>; + qcom,caldb-addr = <0x4CA00000 0x4CA00000 0x4CA00000 + 0x0 0x0>; + qcom,caldb-size = <0x200000>; + status = "ok"; + }; + + ess-uniphy@98000 { + status = "disabled"; + }; + + qcom,sps { + status = "ok"; + }; + + qcom,usbbam@8B04000 { + status = "ok"; + }; + + qcom,diag@0 { + status = "ok"; + }; + + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC0_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <1>; + reg = <0x39C00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <7>; + mdio-bus = <&mdio0>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <2>; + reg = <0x39D00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + + rpm_etm0 { + status = "disabled"; + }; + + lpass: lpass@0xA000000{ + status = "disabled"; + }; + + pcm: pcm@0xA3C0000{ + pinctrl-0 = <&audio_pins>; + pinctrl-names = "default"; + status = "disabled"; + }; + + pcm_lb: pcm_lb@0 { + status = "disabled"; + }; + }; + + thermal-zones { + status = "ok"; + }; + + gpio_keys { + compatible = "gpio-keys-polled"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + poll-interval = <100>; + + button@0 { + label = "reset"; + linux,code = ; + gpios = <&tlmm 22 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + button@1 { + label = "wps"; + linux,code = ; + gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + + }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&leds_pins>; + pinctrl-names = "default"; + + led@35 { + label = "green:4g"; + gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_5g_wifi"; + default-state = "off"; + }; + led@30 { + label = "green:wifi"; + gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_2g_wifi"; + default-state = "off"; + }; + led@1 { + label = "green:internet"; + gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_voice"; + default-state = "off"; + }; + led@33 { + label = "green:lte"; + gpios = <&tlmm 33 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_lte_g"; + default-state = "off"; + }; + led@34 { + label = "red:lte"; + gpios = <&tlmm 34 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_lte_r"; + default-state = "off"; + }; + led@27 { + label = "green:mesh"; + gpios = <&tlmm 27 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_nr_g"; + default-state = "off"; + }; + led@28 { + label = "red:mesh"; + gpios = <&tlmm 28 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_nr_r"; + default-state = "off"; + }; + }; + + +}; + +&tlmm { + pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; + pinctrl-names = "default"; + + blsp0_uart_pins: blsp0_uart_pins { + blsp0_uart_rx_tx { + pins = "gpio20", "gpio21"; + function = "blsp0_uart0"; + bias-disable; + }; + }; + + blsp1_uart_pins: blsp1_uart_pins { + blsp1_uart_rx_tx { + pins = "gpio23", "gpio25", "gpio24", "gpio26"; + function = "blsp1_uart2"; + bias-disable; + }; + }; + + blsp0_spi_pins: blsp0_spi_pins { + mux { + pins = "gpio10", "gpio11", "gpio12", "gpio13"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-disable; + }; + }; + + qspi_nand_pins: qspi_nand_pins { + qspi_clock { + pins = "gpio9"; + function = "qspi_clk"; + drive-strength = <8>; + bias-disable; + }; + qspi_cs { + pins = "gpio8"; + function = "qspi_cs"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_0 { + pins = "gpio7"; + function = "qspi0"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_1 { + pins = "gpio6"; + function = "qspi1"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_2 { + pins = "gpio5"; + function = "qspi2"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_3 { + pins = "gpio4"; + function = "qspi3"; + drive-strength = <8>; + bias-disable; + }; + }; + + mdio1_pins: mdio_pinmux { + mux_0 { + pins = "gpio36"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mux_1 { + pins = "gpio37"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + phy_led_pins: phy_led_pins { + gephy_led_pin { + pins = "gpio46"; + function = "led0"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + i2c_pins: i2c_pins { + i2c_scl { + pins = "gpio25"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + + i2c_sda { + pins = "gpio26"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + }; + + button_pins: button_pins { + reset_button{ + pins = "gpio22"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + wps_button { + pins = "gpio38"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + }; + + leds_pins: leds_pins { + led_5g_wifi { + pins = "gpio35"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_2g_wifi { + pins = "gpio30"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lte_g { + pins = "gpio33"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lte_r { + pins = "gpio34"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_nr_g { + pins = "gpio27"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_nr_r { + pins = "gpio28"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_voice { + pins = "gpio1"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + audio_pins: audio_pinmux { + mux_1 { + pins = "gpio24"; + function = "audio_rxbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_2 { + pins = "gpio25"; + function = "audio_rxfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_3 { + pins = "gpio26"; + function = "audio_rxd"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_4 { + pins = "gpio27"; + function = "audio_txmclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_5 { + pins = "gpio28"; + function = "audio_txbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_6 { + pins = "gpio29"; + function = "audio_txfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_7 { + pins = "gpio30"; + function = "audio_txd"; + drive-strength = <8>; + bias-pull-down; + }; + }; + +}; + +&usb3 { + qcom,multiplexed-phy; + qcom,phy-mux-regs = <&tcsr_q6_block 0x2540>; + device-power-gpio = <&tlmm 24 1>; + status = "ok"; +}; + +&eud { + status = "ok"; +}; + +&pcie_x1 { + status = "disabled"; + perst-gpio = <&tlmm 18 1>; +}; + +&pcie_x2 { + status = "ok"; + perst-gpio = <&tlmm 15 1>; +}; + +&bt { + status = "ok"; +}; + +&wcss { + status = "ok"; +}; + +&q6v5_wcss { + status = "disabled"; +}; + +&q6v5_m3 { + status = "disabled"; +}; + +&tcsr_mutex_block { + status = "ok"; +}; + +&tcsr_mutex { + status = "ok"; +}; + +&smem { + status = "ok"; +}; + +&apcs_glb { + status = "ok"; +}; + +&tcsr_q6_block { + status = "ok"; +}; + +&qcom_q6v5_wcss { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_region>, <&q6_etr_region>; + #else + memory-region = <&q6_region>, <&q6_etr_region>, + <&q6_caldb_region>; + #endif + /* IPQ5018 */ + q6v5_wcss_userpd1 { + m3_firmware = "IPQ5018/m3_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 8 0>, + <&wcss_smp2p_in 9 0>, + <&wcss_smp2p_in 12 0>, + <&wcss_smp2p_in 11 0>; + interrupt-names ="fatal", + "ready", + "spawn_ack", + "stop-ack"; + qcom,smem-states = <&wcss_smp2p_out 8>, + <&wcss_smp2p_out 9>, + <&wcss_smp2p_out 10>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + qca,asid = <1>; + qca,auto-restart; + qca,int_radio; + }; +}; + +&i2c_0 { + pinctrl-0 = <&i2c_pins>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&dbm_1p5 { + status = "ok"; +}; + +&msm_imem { + status = "ok"; +}; + +&blsp1_uart1 { + status = "ok"; +}; + +&ssuniphy_0 { + status = "ok"; +}; + +&hs_m31phy_0 { + status = "ok"; +}; + +&pcie_x1phy { + status = "disabled"; +}; + +&pcie_x2phy { + status = "ok"; +}; + +&pcie_x1_rp { + status = "disabled"; + + mhi_0: qcom,mhi@0 { + reg = <0 0 0 0 0 >; + }; +}; + +&pcie_x2_rp { + status = "ok"; + + mhi_1: qcom,mhi@1 { + reg = <0 0 0 0 0 >; + qrtr_instance_id = <0x20>; + #address-cells = <0x2>; + #size-cells = <0x2>; + memory-region = <&mhi_region1>; +#if !defined(__CNSS2__) + base-addr = <0x4CC00000>; + m3-dump-addr = <0x4E000000>; + etr-addr = <0x4E100000>; + qcom,caldb-addr = <0x4E200000>; + qcom,tgt-mem-mode = <0x1>; + mhi,max-channels = <30>; + mhi,timeout = <10000>; +#endif + }; +}; + +&wifi0 { + /* IPQ5018 */ + qcom,board_id = <0x24>; + status = "ok"; +}; + +&wifi3 { + /* QCN9000 5G */ + board_id = <0xa0>; + status = "ok"; +}; + +&qfprom { + status = "ok"; +}; + +&tsens { + status = "ok"; +}; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50.dts new file mode 100644 index 000000000..5f5b99a67 --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d50.dts @@ -0,0 +1,884 @@ +/dts-v1/; +/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "qcom-ipq5018.dtsi" + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "OptimCloud D50"; + compatible = "optimcloud,d50", "qcom,ipq5018-mp03.1", "qcom,ipq5018"; + interrupt-parent = <&intc>; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + AUTO_MOUNT; + #endif + + aliases { + sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ + serial0 = &blsp1_uart1; + serial1 = &blsp1_uart2; + ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp2"; + }; + + chosen { + bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + bootargs-append = " swiotlb=1"; + #else + bootargs-append = " swiotlb=1 coherent_pool=2M"; + #endif + stdout-path = "serial0"; + }; + + reserved-memory { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + /* 256 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 8MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x40800000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * + | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 23MB | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C700000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4C900000 | 17MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4DA00000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01700000>; + }; + + m3_dump@4c700000 { + no-map; + reg = <0x0 0x4C700000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + qcn9000_pcie0@4c900000 { + no-map; + reg = <0x0 0x4C900000 0x0 0x01100000>; + }; + + mhi_region1: dma_pool1@4da00000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4da00000 0x0 0x01000000>; + }; + #elif __IPQ_MEM_PROFILE_512_MB__ + /* 512 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 24MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C900000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4CA00000 | 2MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4CC00000 | 30MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4EA00000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01800000>; + }; + + m3_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c900000 { + no-map; + reg = <0x0 0x4c900000 0x0 0x100000>; + }; + + q6_caldb_region:q6_caldb_region@4ca00000 { + no-map; + reg = <0x0 0x4ca00000 0x0 0x200000>; + }; + + qcn9000_pcie0@4cc00000 { + no-map; + reg = <0x0 0x4CC00000 0x0 0x01E00000>; + }; + + mhi_region1: dma_pool1@4ea00000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4ea00000 0x0 0x01000000>; + }; + #else + /* 1G Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 24MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C900000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4CA00000 | 2MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4CC00000 | 45MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4F900000 | 24MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01800000>; + }; + + m3_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c900000 { + no-map; + reg = <0x0 0x4c900000 0x0 0x100000>; + }; + + q6_caldb_region:q6_caldb_region@4ca00000 { + no-map; + reg = <0x0 0x4ca00000 0x0 0x200000>; + }; + + qcn9000_pcie0@4cc00000 { + no-map; + reg = <0x0 0x4CC00000 0x0 0x02D00000>; + }; + + mhi_region1: dma_pool1@4F900000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4F900000 0x0 0x01800000>; + }; + #endif + }; + + soc { + serial@78af000 { + status = "ok"; + }; + + blsp1_uart2: serial@78b0000 { + pinctrl-0 = <&blsp1_uart_pins>; + pinctrl-names = "default"; + }; + + qpic_bam: dma@7984000{ + status = "ok"; + }; + + nand: qpic-nand@79b0000 { + pinctrl-0 = <&qspi_nand_pins>; + pinctrl-names = "default"; + status = "ok"; + }; + + spi_0: spi@78b5000 { /* BLSP1 QUP0 */ + pinctrl-0 = <&blsp0_spi_pins>; + pinctrl-names = "default"; + cs-select = <0>; + status = "ok"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + compatible = "n25q128a11"; + linux,modalias = "m25p80", "n25q128a11"; + spi-max-frequency = <50000000>; + use-default-sizes; + }; + }; + + mdio0: mdio@88000 { + status = "ok"; + + ethernet-phy@0 { + reg = <7>; + }; + }; + + mdio1: mdio@90000 { + status = "ok"; + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 39 0>; + ethernet-phy@0 { + reg = <0>; + }; + + ethernet-phy@1 { + reg = <1>; + }; + + ethernet-phy@2 { + reg = <2>; + }; + + ethernet-phy@3 { + reg = <3>; + }; + }; + + ess-instance { + num_devices = <0x2>; + ess-switch@0x39c00000 { + compatible = "qcom,ess-switch-ipq50xx"; + device_id = <0>; + switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/ + cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <7>; + }; + port@1 { + port_id = <2>; + forced-speed = <1000>; + forced-duplex = <1>; + }; + }; + led_source@0 { + source = <0>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + }; + ess-switch1@1 { + compatible = "qcom,ess-switch-qca83xx"; + device_id = <1>; + switch_access_mode = "mdio"; + mdio-bus = <&mdio1>; + reset_gpio = <0x27>; + switch_cpu_bmp = <0x40>; /* cpu port bitmap */ + switch_lan_bmp = <0x1e>; /* lan port bitmap */ + switch_wan_bmp = <0x0>; /* wan port bitmap */ + qca,ar8327-initvals = < + 0x00004 0x7600000 /* PAD0_MODE */ + 0x00008 0x1000000 /* PAD5_MODE */ + 0x0000c 0x80 /* PAD6_MODE */ + 0x00010 0x2613a0 /* PORT6 FORCE MODE*/ + 0x000e4 0xaa545 /* MAC_POWER_SEL */ + 0x000e0 0xc74164de /* SGMII_CTRL */ + 0x0007c 0x4e /* PORT0_STATUS */ + 0x00094 0x4e /* PORT6_STATUS */ + >; + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <0>; + }; + port@1 { + port_id = <2>; + phy_address = <1>; + }; + port@2 { + port_id = <3>; + phy_address = <2>; + }; + port@3 { + port_id = <4>; + phy_address = <3>; + }; + }; + }; + }; + + wifi0: wifi@c000000 { + qcom,bdf-addr = <0x4BA00000 0x4BA00000 0x4BA00000 + 0x0 0x0>; + qcom,caldb-addr = <0x4CA00000 0x4CA00000 0x4CA00000 + 0x0 0x0>; + qcom,caldb-size = <0x200000>; + status = "ok"; + }; + + ess-uniphy@98000 { + status = "disabled"; + }; + + qcom,sps { + status = "ok"; + }; + + qcom,usbbam@8B04000 { + status = "ok"; + }; + + qcom,diag@0 { + status = "ok"; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC0_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <1>; + reg = <0x39C00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <7>; + mdio-bus = <&mdio0>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <2>; + reg = <0x39D00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + + rpm_etm0 { + status = "disabled"; + }; + + lpass: lpass@0xA000000{ + status = "disabled"; + }; + + pcm: pcm@0xA3C0000{ + pinctrl-0 = <&audio_pins>; + pinctrl-names = "default"; + status = "disabled"; + }; + + pcm_lb: pcm_lb@0 { + status = "disabled"; + }; + }; + + thermal-zones { + status = "ok"; + }; +}; + +&tlmm { + pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; + pinctrl-names = "default"; + + blsp0_uart_pins: blsp0_uart_pins { + blsp0_uart_rx_tx { + pins = "gpio20", "gpio21"; + function = "blsp0_uart0"; + bias-disable; + }; + }; + + blsp1_uart_pins: blsp1_uart_pins { + blsp1_uart_rx_tx { + pins = "gpio23", "gpio25", "gpio24", "gpio26"; + function = "blsp1_uart2"; + bias-disable; + }; + }; + + blsp0_spi_pins: blsp0_spi_pins { + mux { + pins = "gpio10", "gpio11", "gpio12", "gpio13"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-disable; + }; + }; + + qspi_nand_pins: qspi_nand_pins { + qspi_clock { + pins = "gpio9"; + function = "qspi_clk"; + drive-strength = <8>; + bias-disable; + }; + qspi_cs { + pins = "gpio8"; + function = "qspi_cs"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_0 { + pins = "gpio7"; + function = "qspi0"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_1 { + pins = "gpio6"; + function = "qspi1"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_2 { + pins = "gpio5"; + function = "qspi2"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_3 { + pins = "gpio4"; + function = "qspi3"; + drive-strength = <8>; + bias-disable; + }; + }; + + mdio1_pins: mdio_pinmux { + mux_0 { + pins = "gpio36"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mux_1 { + pins = "gpio37"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + phy_led_pins: phy_led_pins { + gephy_led_pin { + pins = "gpio46"; + function = "led0"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + i2c_pins: i2c_pins { + i2c_scl { + pins = "gpio25"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + + i2c_sda { + pins = "gpio26"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + }; + + button_pins: button_pins { + wps_button { + pins = "gpio38"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + audio_pins: audio_pinmux { + mux_1 { + pins = "gpio24"; + function = "audio_rxbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_2 { + pins = "gpio25"; + function = "audio_rxfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_3 { + pins = "gpio26"; + function = "audio_rxd"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_4 { + pins = "gpio27"; + function = "audio_txmclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_5 { + pins = "gpio28"; + function = "audio_txbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_6 { + pins = "gpio29"; + function = "audio_txfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_7 { + pins = "gpio30"; + function = "audio_txd"; + drive-strength = <8>; + bias-pull-down; + }; + }; + +}; + +&soc { + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + button@1 { + label = "wps"; + linux,code = ; + gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; +}; + +&usb3 { + qcom,multiplexed-phy; + qcom,phy-mux-regs = <&tcsr_q6_block 0x2540>; + device-power-gpio = <&tlmm 24 1>; + status = "ok"; +}; + +&eud { + status = "ok"; +}; + +&pcie_x1 { + status = "disabled"; + perst-gpio = <&tlmm 18 1>; +}; + +&pcie_x2 { + status = "ok"; + perst-gpio = <&tlmm 15 1>; +}; + +&bt { + status = "ok"; +}; + +&wcss { + status = "ok"; +}; + +&q6v5_wcss { + status = "disabled"; +}; + +&q6v5_m3 { + status = "disabled"; +}; + +&tcsr_mutex_block { + status = "ok"; +}; + +&tcsr_mutex { + status = "ok"; +}; + +&smem { + status = "ok"; +}; + +&apcs_glb { + status = "ok"; +}; + +&tcsr_q6_block { + status = "ok"; +}; + +&qcom_q6v5_wcss { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_region>, <&q6_etr_region>; + #else + memory-region = <&q6_region>, <&q6_etr_region>, + <&q6_caldb_region>; + #endif + /* IPQ5018 */ + q6v5_wcss_userpd1 { + m3_firmware = "IPQ5018/m3_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 8 0>, + <&wcss_smp2p_in 9 0>, + <&wcss_smp2p_in 12 0>, + <&wcss_smp2p_in 11 0>; + interrupt-names ="fatal", + "ready", + "spawn_ack", + "stop-ack"; + qcom,smem-states = <&wcss_smp2p_out 8>, + <&wcss_smp2p_out 9>, + <&wcss_smp2p_out 10>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + qca,asid = <1>; + qca,auto-restart; + qca,int_radio; + }; +}; + +&i2c_0 { + pinctrl-0 = <&i2c_pins>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&dbm_1p5 { + status = "ok"; +}; + +&msm_imem { + status = "ok"; +}; + +&blsp1_uart1 { + status = "ok"; +}; + +&ssuniphy_0 { + status = "ok"; +}; + +&hs_m31phy_0 { + status = "ok"; +}; + +&pcie_x1phy { + status = "disabled"; +}; + +&pcie_x2phy { + status = "ok"; +}; + +&pcie_x1_rp { + status = "disabled"; + + mhi_0: qcom,mhi@0 { + reg = <0 0 0 0 0 >; + }; +}; + +&pcie_x2_rp { + status = "ok"; + + mhi_1: qcom,mhi@1 { + reg = <0 0 0 0 0 >; + qrtr_instance_id = <0x20>; + #address-cells = <0x2>; + #size-cells = <0x2>; + memory-region = <&mhi_region1>; +#if !defined(__CNSS2__) + base-addr = <0x4CC00000>; + m3-dump-addr = <0x4E000000>; + etr-addr = <0x4E100000>; + qcom,caldb-addr = <0x4E200000>; + qcom,tgt-mem-mode = <0x1>; + mhi,max-channels = <30>; + mhi,timeout = <10000>; +#endif + }; +}; + +&wifi0 { + /* IPQ5018 */ + qcom,board_id = <0x24>; + status = "ok"; +}; + +&wifi3 { + /* QCN9000 5G */ + board_id = <0xa0>; + status = "ok"; +}; + +&qfprom { + status = "ok"; +}; + +&tsens { + status = "ok"; +}; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d60-5g.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d60-5g.dts new file mode 100755 index 000000000..02910e378 --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d60-5g.dts @@ -0,0 +1,995 @@ +/dts-v1/; +/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "qcom-ipq5018.dtsi" + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "OptimCloud D60-5G"; + compatible = "optimcloud,d60-5g", "qcom,ipq5018-mp03.1", "qcom,ipq5018"; + interrupt-parent = <&intc>; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + AUTO_MOUNT; + #endif + + aliases { + sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ + serial0 = &blsp1_uart1; + serial1 = &blsp1_uart2; + ethernet0 = "/soc/dp2"; + ethernet1 = "/soc/dp1"; + }; + + chosen { + bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + bootargs-append = " swiotlb=1"; + #else + bootargs-append = " swiotlb=1 coherent_pool=2M"; + #endif + stdout-path = "serial0"; + }; + + reserved-memory { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + /* 256 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 8MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x40800000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * + | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 23MB | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C700000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4C900000 | 17MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4DA00000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01700000>; + }; + + m3_dump@4c700000 { + no-map; + reg = <0x0 0x4C700000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + qcn9000_pcie0@4c900000 { + no-map; + reg = <0x0 0x4C900000 0x0 0x01100000>; + }; + + mhi_region1: dma_pool1@4da00000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4da00000 0x0 0x01000000>; + }; + #elif __IPQ_MEM_PROFILE_512_MB__ + /* 512 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 24MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C900000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4CA00000 | 2MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4CC00000 | 30MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4EA00000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01800000>; + }; + + m3_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c900000 { + no-map; + reg = <0x0 0x4c900000 0x0 0x100000>; + }; + + q6_caldb_region:q6_caldb_region@4ca00000 { + no-map; + reg = <0x0 0x4ca00000 0x0 0x200000>; + }; + + qcn9000_pcie0@4cc00000 { + no-map; + reg = <0x0 0x4CC00000 0x0 0x01E00000>; + }; + + mhi_region1: dma_pool1@4ea00000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4ea00000 0x0 0x01000000>; + }; + #else + /* 1G Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 24MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C900000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4CA00000 | 2MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4CC00000 | 45MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4F900000 | 24MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01800000>; + }; + + m3_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c900000 { + no-map; + reg = <0x0 0x4c900000 0x0 0x100000>; + }; + + q6_caldb_region:q6_caldb_region@4ca00000 { + no-map; + reg = <0x0 0x4ca00000 0x0 0x200000>; + }; + + qcn9000_pcie0@4cc00000 { + no-map; + reg = <0x0 0x4CC00000 0x0 0x02D00000>; + }; + + mhi_region1: dma_pool1@4F900000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4F900000 0x0 0x01800000>; + }; + #endif + }; + + soc { + serial@78af000 { + status = "ok"; + }; + + blsp1_uart2: serial@78b0000 { + pinctrl-0 = <&blsp1_uart_pins>; + pinctrl-names = "default"; + }; + + qpic_bam: dma@7984000{ + status = "ok"; + }; + + nand: qpic-nand@79b0000 { + pinctrl-0 = <&qspi_nand_pins>; + pinctrl-names = "default"; + status = "ok"; + }; + + spi_0: spi@78b5000 { /* BLSP1 QUP0 */ + pinctrl-0 = <&blsp0_spi_pins>; + pinctrl-names = "default"; + cs-select = <0>; + status = "ok"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + compatible = "n25q128a11"; + linux,modalias = "m25p80", "n25q128a11"; + spi-max-frequency = <50000000>; + use-default-sizes; + }; + }; + + mdio0: mdio@88000 { + status = "ok"; + + ethernet-phy@0 { + reg = <7>; + }; + }; + + mdio1: mdio@90000 { + status = "ok"; + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 39 0>; + ethernet-phy@0 { + reg = <0>; + }; + + ethernet-phy@1 { + reg = <1>; + }; + + ethernet-phy@2 { + reg = <2>; + }; + + ethernet-phy@3 { + reg = <3>; + }; + }; + + ess-instance { + num_devices = <0x2>; + ess-switch@0x39c00000 { + compatible = "qcom,ess-switch-ipq50xx"; + device_id = <0>; + switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/ + cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <7>; + }; + port@1 { + port_id = <2>; + forced-speed = <1000>; + forced-duplex = <1>; + }; + }; + led_source@0 { + source = <0>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + }; + ess-switch1@1 { + compatible = "qcom,ess-switch-qca83xx"; + device_id = <1>; + switch_access_mode = "mdio"; + mdio-bus = <&mdio1>; + reset_gpio = <0x27>; + switch_cpu_bmp = <0x40>; /* cpu port bitmap */ + switch_lan_bmp = <0x1e>; /* lan port bitmap */ + switch_wan_bmp = <0x0>; /* wan port bitmap */ + qca,ar8327-initvals = < + 0x00004 0x7600000 /* PAD0_MODE */ + 0x00008 0x1000000 /* PAD5_MODE */ + 0x0000c 0x80 /* PAD6_MODE */ + 0x00010 0x2613a0 /* PORT6 FORCE MODE*/ + 0x000e4 0xaa545 /* MAC_POWER_SEL */ + 0x000e0 0xc74164de /* SGMII_CTRL */ + 0x0007c 0x4e /* PORT0_STATUS */ + 0x00094 0x4e /* PORT6_STATUS */ + >; + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <0>; + }; + port@1 { + port_id = <2>; + phy_address = <1>; + }; + port@2 { + port_id = <3>; + phy_address = <2>; + }; + port@3 { + port_id = <4>; + phy_address = <3>; + }; + }; + }; + }; + + wifi0: wifi@c000000 { + qcom,bdf-addr = <0x4BA00000 0x4BA00000 0x4BA00000 + 0x0 0x0>; + qcom,caldb-addr = <0x4CA00000 0x4CA00000 0x4CA00000 + 0x0 0x0>; + qcom,caldb-size = <0x200000>; + status = "ok"; + }; + + ess-uniphy@98000 { + status = "disabled"; + }; + + qcom,sps { + status = "ok"; + }; + + qcom,usbbam@8B04000 { + status = "ok"; + }; + + qcom,diag@0 { + status = "ok"; + }; + + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC0_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <1>; + reg = <0x39C00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <7>; + mdio-bus = <&mdio0>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <2>; + reg = <0x39D00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + + rpm_etm0 { + status = "disabled"; + }; + + lpass: lpass@0xA000000{ + status = "disabled"; + }; + + pcm: pcm@0xA3C0000{ + pinctrl-0 = <&audio_pins>; + pinctrl-names = "default"; + status = "disabled"; + }; + + pcm_lb: pcm_lb@0 { + status = "disabled"; + }; + }; + + thermal-zones { + status = "ok"; + }; + + gpio_keys { + compatible = "gpio-keys-polled"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + poll-interval = <100>; + + button@0 { + label = "reset"; + linux,code = ; + gpios = <&tlmm 22 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + button@1 { + label = "wps"; + linux,code = ; + gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + + }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&leds_pins>; + pinctrl-names = "default"; + + led@35 { + label = "green:4g"; + gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_5g_wifi"; + default-state = "off"; + }; + led@30 { + label = "green:wifi"; + gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_2g_wifi"; + default-state = "off"; + }; + led@1 { + label = "green:internet"; + gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_voice"; + default-state = "off"; + }; + led@33 { + label = "green:lte"; + gpios = <&tlmm 33 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_lte_g"; + default-state = "off"; + }; + led@34 { + label = "red:lte"; + gpios = <&tlmm 34 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_lte_r"; + default-state = "off"; + }; + led@27 { + label = "green:mesh"; + gpios = <&tlmm 27 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_nr_g"; + default-state = "off"; + }; + led@28 { + label = "red:mesh"; + gpios = <&tlmm 28 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "led_nr_r"; + default-state = "off"; + }; + }; + + +}; + +&tlmm { + pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; + pinctrl-names = "default"; + + blsp0_uart_pins: blsp0_uart_pins { + blsp0_uart_rx_tx { + pins = "gpio20", "gpio21"; + function = "blsp0_uart0"; + bias-disable; + }; + }; + + blsp1_uart_pins: blsp1_uart_pins { + blsp1_uart_rx_tx { + pins = "gpio23", "gpio25", "gpio24", "gpio26"; + function = "blsp1_uart2"; + bias-disable; + }; + }; + + blsp0_spi_pins: blsp0_spi_pins { + mux { + pins = "gpio10", "gpio11", "gpio12", "gpio13"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-disable; + }; + }; + + qspi_nand_pins: qspi_nand_pins { + qspi_clock { + pins = "gpio9"; + function = "qspi_clk"; + drive-strength = <8>; + bias-disable; + }; + qspi_cs { + pins = "gpio8"; + function = "qspi_cs"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_0 { + pins = "gpio7"; + function = "qspi0"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_1 { + pins = "gpio6"; + function = "qspi1"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_2 { + pins = "gpio5"; + function = "qspi2"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_3 { + pins = "gpio4"; + function = "qspi3"; + drive-strength = <8>; + bias-disable; + }; + }; + + mdio1_pins: mdio_pinmux { + mux_0 { + pins = "gpio36"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mux_1 { + pins = "gpio37"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + phy_led_pins: phy_led_pins { + gephy_led_pin { + pins = "gpio46"; + function = "led0"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + i2c_pins: i2c_pins { + i2c_scl { + pins = "gpio25"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + + i2c_sda { + pins = "gpio26"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + }; + + button_pins: button_pins { + reset_button{ + pins = "gpio22"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + wps_button { + pins = "gpio38"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + }; + + leds_pins: leds_pins { + led_5g_wifi { + pins = "gpio35"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_2g_wifi { + pins = "gpio30"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lte_g { + pins = "gpio33"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_lte_r { + pins = "gpio34"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_nr_g { + pins = "gpio27"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_nr_r { + pins = "gpio28"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_voice { + pins = "gpio1"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + audio_pins: audio_pinmux { + mux_1 { + pins = "gpio24"; + function = "audio_rxbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_2 { + pins = "gpio25"; + function = "audio_rxfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_3 { + pins = "gpio26"; + function = "audio_rxd"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_4 { + pins = "gpio27"; + function = "audio_txmclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_5 { + pins = "gpio28"; + function = "audio_txbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_6 { + pins = "gpio29"; + function = "audio_txfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_7 { + pins = "gpio30"; + function = "audio_txd"; + drive-strength = <8>; + bias-pull-down; + }; + }; + +}; + +&usb3 { + qcom,multiplexed-phy; + qcom,phy-mux-regs = <&tcsr_q6_block 0x2540>; + device-power-gpio = <&tlmm 24 1>; + status = "ok"; +}; + +&eud { + status = "ok"; +}; + +&pcie_x1 { + status = "disabled"; + perst-gpio = <&tlmm 18 1>; +}; + +&pcie_x2 { + status = "ok"; + perst-gpio = <&tlmm 15 1>; +}; + +&bt { + status = "ok"; +}; + +&wcss { + status = "ok"; +}; + +&q6v5_wcss { + status = "disabled"; +}; + +&q6v5_m3 { + status = "disabled"; +}; + +&tcsr_mutex_block { + status = "ok"; +}; + +&tcsr_mutex { + status = "ok"; +}; + +&smem { + status = "ok"; +}; + +&apcs_glb { + status = "ok"; +}; + +&tcsr_q6_block { + status = "ok"; +}; + +&qcom_q6v5_wcss { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_region>, <&q6_etr_region>; + #else + memory-region = <&q6_region>, <&q6_etr_region>, + <&q6_caldb_region>; + #endif + /* IPQ5018 */ + q6v5_wcss_userpd1 { + m3_firmware = "IPQ5018/m3_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 8 0>, + <&wcss_smp2p_in 9 0>, + <&wcss_smp2p_in 12 0>, + <&wcss_smp2p_in 11 0>; + interrupt-names ="fatal", + "ready", + "spawn_ack", + "stop-ack"; + qcom,smem-states = <&wcss_smp2p_out 8>, + <&wcss_smp2p_out 9>, + <&wcss_smp2p_out 10>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + qca,asid = <1>; + qca,auto-restart; + qca,int_radio; + }; +}; + +&i2c_0 { + pinctrl-0 = <&i2c_pins>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&dbm_1p5 { + status = "ok"; +}; + +&msm_imem { + status = "ok"; +}; + +&blsp1_uart1 { + status = "ok"; +}; + +&ssuniphy_0 { + status = "ok"; +}; + +&hs_m31phy_0 { + status = "ok"; +}; + +&pcie_x1phy { + status = "disabled"; +}; + +&pcie_x2phy { + status = "ok"; +}; + +&pcie_x1_rp { + status = "disabled"; + + mhi_0: qcom,mhi@0 { + reg = <0 0 0 0 0 >; + }; +}; + +&pcie_x2_rp { + status = "ok"; + + mhi_1: qcom,mhi@1 { + reg = <0 0 0 0 0 >; + qrtr_instance_id = <0x20>; + #address-cells = <0x2>; + #size-cells = <0x2>; + memory-region = <&mhi_region1>; +#if !defined(__CNSS2__) + base-addr = <0x4CC00000>; + m3-dump-addr = <0x4E000000>; + etr-addr = <0x4E100000>; + qcom,caldb-addr = <0x4E200000>; + qcom,tgt-mem-mode = <0x1>; + mhi,max-channels = <30>; + mhi,timeout = <10000>; +#endif + }; +}; + +&wifi0 { + /* IPQ5018 */ + qcom,board_id = <0x24>; + status = "ok"; +}; + +&wifi3 { + /* QCN9000 5G */ + board_id = <0xa0>; + status = "ok"; +}; + +&qfprom { + status = "ok"; +}; + +&tsens { + status = "ok"; +}; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d60.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d60.dts new file mode 100644 index 000000000..770fbd157 --- /dev/null +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-optimcloud-d60.dts @@ -0,0 +1,884 @@ +/dts-v1/; +/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "qcom-ipq5018.dtsi" + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "OptimCloud D60"; + compatible = "optimcloud,d60", "qcom,ipq5018-mp03.1", "qcom,ipq5018"; + interrupt-parent = <&intc>; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + AUTO_MOUNT; + #endif + + aliases { + sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ + serial0 = &blsp1_uart1; + serial1 = &blsp1_uart2; + ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp2"; + }; + + chosen { + bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + bootargs-append = " swiotlb=1"; + #else + bootargs-append = " swiotlb=1 coherent_pool=2M"; + #endif + stdout-path = "serial0"; + }; + + reserved-memory { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + /* 256 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 8MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x40800000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * + | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 23MB | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C700000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4C900000 | 17MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4DA00000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01700000>; + }; + + m3_dump@4c700000 { + no-map; + reg = <0x0 0x4C700000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + qcn9000_pcie0@4c900000 { + no-map; + reg = <0x0 0x4C900000 0x0 0x01100000>; + }; + + mhi_region1: dma_pool1@4da00000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4da00000 0x0 0x01000000>; + }; + #elif __IPQ_MEM_PROFILE_512_MB__ + /* 512 MB Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 24MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C900000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4CA00000 | 2MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4CC00000 | 30MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4EA00000 | 16MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01800000>; + }; + + m3_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c900000 { + no-map; + reg = <0x0 0x4c900000 0x0 0x100000>; + }; + + q6_caldb_region:q6_caldb_region@4ca00000 { + no-map; + reg = <0x0 0x4ca00000 0x0 0x200000>; + }; + + qcn9000_pcie0@4cc00000 { + no-map; + reg = <0x0 0x4CC00000 0x0 0x01E00000>; + }; + + mhi_region1: dma_pool1@4ea00000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4ea00000 0x0 0x01000000>; + }; + #else + /* 1G Profile + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | NSS | 0x40000000 | 16MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | Depends on total memory | + * | | | | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | uboot | 0x4A600000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +--------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +--------+--------------+-------------------------+ + * | | | | + * | TZ | 0x4AC00000 | 4MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | Q6 | 0x4B000000 | 24MB | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | M3 Dump| 0x4C800000 | 1MB | + * +--------+--------------+-------------------------+ + * | QDSS | 0x4C900000 | 1MB | + * +--------+--------------+-------------------------+ + * | caldb | 0x4CA00000 | 2MB | + * +--------+--------------+-------------------------+ + * | | | | + * |QCN9000 | 0x4CC00000 | 45MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | MHI1 | 0x4F900000 | 24MB | + * | | | | + * +--------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +=================================================+ + */ + q6_region: wcnss@4b000000 { + no-map; + reg = <0x0 0x4b000000 0x0 0x01800000>; + }; + + m3_dump@4c800000 { + no-map; + reg = <0x0 0x4c800000 0x0 0x100000>; + }; + + q6_etr_region:q6_etr_dump@4c900000 { + no-map; + reg = <0x0 0x4c900000 0x0 0x100000>; + }; + + q6_caldb_region:q6_caldb_region@4ca00000 { + no-map; + reg = <0x0 0x4ca00000 0x0 0x200000>; + }; + + qcn9000_pcie0@4cc00000 { + no-map; + reg = <0x0 0x4CC00000 0x0 0x02D00000>; + }; + + mhi_region1: dma_pool1@4F900000 { + compatible = "shared-dma-pool"; + no-map; + reg = <0x0 0x4F900000 0x0 0x01800000>; + }; + #endif + }; + + soc { + serial@78af000 { + status = "ok"; + }; + + blsp1_uart2: serial@78b0000 { + pinctrl-0 = <&blsp1_uart_pins>; + pinctrl-names = "default"; + }; + + qpic_bam: dma@7984000{ + status = "ok"; + }; + + nand: qpic-nand@79b0000 { + pinctrl-0 = <&qspi_nand_pins>; + pinctrl-names = "default"; + status = "ok"; + }; + + spi_0: spi@78b5000 { /* BLSP1 QUP0 */ + pinctrl-0 = <&blsp0_spi_pins>; + pinctrl-names = "default"; + cs-select = <0>; + status = "ok"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + compatible = "n25q128a11"; + linux,modalias = "m25p80", "n25q128a11"; + spi-max-frequency = <50000000>; + use-default-sizes; + }; + }; + + mdio0: mdio@88000 { + status = "ok"; + + ethernet-phy@0 { + reg = <7>; + }; + }; + + mdio1: mdio@90000 { + status = "ok"; + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 39 0>; + ethernet-phy@0 { + reg = <0>; + }; + + ethernet-phy@1 { + reg = <1>; + }; + + ethernet-phy@2 { + reg = <2>; + }; + + ethernet-phy@3 { + reg = <3>; + }; + }; + + ess-instance { + num_devices = <0x2>; + ess-switch@0x39c00000 { + compatible = "qcom,ess-switch-ipq50xx"; + device_id = <0>; + switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/ + cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <7>; + }; + port@1 { + port_id = <2>; + forced-speed = <1000>; + forced-duplex = <1>; + }; + }; + led_source@0 { + source = <0>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + }; + ess-switch1@1 { + compatible = "qcom,ess-switch-qca83xx"; + device_id = <1>; + switch_access_mode = "mdio"; + mdio-bus = <&mdio1>; + reset_gpio = <0x27>; + switch_cpu_bmp = <0x40>; /* cpu port bitmap */ + switch_lan_bmp = <0x1e>; /* lan port bitmap */ + switch_wan_bmp = <0x0>; /* wan port bitmap */ + qca,ar8327-initvals = < + 0x00004 0x7600000 /* PAD0_MODE */ + 0x00008 0x1000000 /* PAD5_MODE */ + 0x0000c 0x80 /* PAD6_MODE */ + 0x00010 0x2613a0 /* PORT6 FORCE MODE*/ + 0x000e4 0xaa545 /* MAC_POWER_SEL */ + 0x000e0 0xc74164de /* SGMII_CTRL */ + 0x0007c 0x4e /* PORT0_STATUS */ + 0x00094 0x4e /* PORT6_STATUS */ + >; + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <0>; + }; + port@1 { + port_id = <2>; + phy_address = <1>; + }; + port@2 { + port_id = <3>; + phy_address = <2>; + }; + port@3 { + port_id = <4>; + phy_address = <3>; + }; + }; + }; + }; + + wifi0: wifi@c000000 { + qcom,bdf-addr = <0x4BA00000 0x4BA00000 0x4BA00000 + 0x0 0x0>; + qcom,caldb-addr = <0x4CA00000 0x4CA00000 0x4CA00000 + 0x0 0x0>; + qcom,caldb-size = <0x200000>; + status = "ok"; + }; + + ess-uniphy@98000 { + status = "disabled"; + }; + + qcom,sps { + status = "ok"; + }; + + qcom,usbbam@8B04000 { + status = "ok"; + }; + + qcom,diag@0 { + status = "ok"; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC0_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <1>; + reg = <0x39C00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <7>; + mdio-bus = <&mdio0>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <2>; + reg = <0x39D00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + + rpm_etm0 { + status = "disabled"; + }; + + lpass: lpass@0xA000000{ + status = "disabled"; + }; + + pcm: pcm@0xA3C0000{ + pinctrl-0 = <&audio_pins>; + pinctrl-names = "default"; + status = "disabled"; + }; + + pcm_lb: pcm_lb@0 { + status = "disabled"; + }; + }; + + thermal-zones { + status = "ok"; + }; +}; + +&tlmm { + pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; + pinctrl-names = "default"; + + blsp0_uart_pins: blsp0_uart_pins { + blsp0_uart_rx_tx { + pins = "gpio20", "gpio21"; + function = "blsp0_uart0"; + bias-disable; + }; + }; + + blsp1_uart_pins: blsp1_uart_pins { + blsp1_uart_rx_tx { + pins = "gpio23", "gpio25", "gpio24", "gpio26"; + function = "blsp1_uart2"; + bias-disable; + }; + }; + + blsp0_spi_pins: blsp0_spi_pins { + mux { + pins = "gpio10", "gpio11", "gpio12", "gpio13"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-disable; + }; + }; + + qspi_nand_pins: qspi_nand_pins { + qspi_clock { + pins = "gpio9"; + function = "qspi_clk"; + drive-strength = <8>; + bias-disable; + }; + qspi_cs { + pins = "gpio8"; + function = "qspi_cs"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_0 { + pins = "gpio7"; + function = "qspi0"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_1 { + pins = "gpio6"; + function = "qspi1"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_2 { + pins = "gpio5"; + function = "qspi2"; + drive-strength = <8>; + bias-disable; + }; + qspi_data_3 { + pins = "gpio4"; + function = "qspi3"; + drive-strength = <8>; + bias-disable; + }; + }; + + mdio1_pins: mdio_pinmux { + mux_0 { + pins = "gpio36"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mux_1 { + pins = "gpio37"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + phy_led_pins: phy_led_pins { + gephy_led_pin { + pins = "gpio46"; + function = "led0"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + i2c_pins: i2c_pins { + i2c_scl { + pins = "gpio25"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + + i2c_sda { + pins = "gpio26"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + }; + + button_pins: button_pins { + wps_button { + pins = "gpio38"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + audio_pins: audio_pinmux { + mux_1 { + pins = "gpio24"; + function = "audio_rxbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_2 { + pins = "gpio25"; + function = "audio_rxfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_3 { + pins = "gpio26"; + function = "audio_rxd"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_4 { + pins = "gpio27"; + function = "audio_txmclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_5 { + pins = "gpio28"; + function = "audio_txbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_6 { + pins = "gpio29"; + function = "audio_txfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_7 { + pins = "gpio30"; + function = "audio_txd"; + drive-strength = <8>; + bias-pull-down; + }; + }; + +}; + +&soc { + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + button@1 { + label = "wps"; + linux,code = ; + gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; +}; + +&usb3 { + qcom,multiplexed-phy; + qcom,phy-mux-regs = <&tcsr_q6_block 0x2540>; + device-power-gpio = <&tlmm 24 1>; + status = "ok"; +}; + +&eud { + status = "ok"; +}; + +&pcie_x1 { + status = "disabled"; + perst-gpio = <&tlmm 18 1>; +}; + +&pcie_x2 { + status = "ok"; + perst-gpio = <&tlmm 15 1>; +}; + +&bt { + status = "ok"; +}; + +&wcss { + status = "ok"; +}; + +&q6v5_wcss { + status = "disabled"; +}; + +&q6v5_m3 { + status = "disabled"; +}; + +&tcsr_mutex_block { + status = "ok"; +}; + +&tcsr_mutex { + status = "ok"; +}; + +&smem { + status = "ok"; +}; + +&apcs_glb { + status = "ok"; +}; + +&tcsr_q6_block { + status = "ok"; +}; + +&qcom_q6v5_wcss { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_region>, <&q6_etr_region>; + #else + memory-region = <&q6_region>, <&q6_etr_region>, + <&q6_caldb_region>; + #endif + /* IPQ5018 */ + q6v5_wcss_userpd1 { + m3_firmware = "IPQ5018/m3_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 8 0>, + <&wcss_smp2p_in 9 0>, + <&wcss_smp2p_in 12 0>, + <&wcss_smp2p_in 11 0>; + interrupt-names ="fatal", + "ready", + "spawn_ack", + "stop-ack"; + qcom,smem-states = <&wcss_smp2p_out 8>, + <&wcss_smp2p_out 9>, + <&wcss_smp2p_out 10>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + qca,asid = <1>; + qca,auto-restart; + qca,int_radio; + }; +}; + +&i2c_0 { + pinctrl-0 = <&i2c_pins>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&dbm_1p5 { + status = "ok"; +}; + +&msm_imem { + status = "ok"; +}; + +&blsp1_uart1 { + status = "ok"; +}; + +&ssuniphy_0 { + status = "ok"; +}; + +&hs_m31phy_0 { + status = "ok"; +}; + +&pcie_x1phy { + status = "disabled"; +}; + +&pcie_x2phy { + status = "ok"; +}; + +&pcie_x1_rp { + status = "disabled"; + + mhi_0: qcom,mhi@0 { + reg = <0 0 0 0 0 >; + }; +}; + +&pcie_x2_rp { + status = "ok"; + + mhi_1: qcom,mhi@1 { + reg = <0 0 0 0 0 >; + qrtr_instance_id = <0x20>; + #address-cells = <0x2>; + #size-cells = <0x2>; + memory-region = <&mhi_region1>; +#if !defined(__CNSS2__) + base-addr = <0x4CC00000>; + m3-dump-addr = <0x4E000000>; + etr-addr = <0x4E100000>; + qcom,caldb-addr = <0x4E200000>; + qcom,tgt-mem-mode = <0x1>; + mhi,max-channels = <30>; + mhi,timeout = <10000>; +#endif + }; +}; + +&wifi0 { + /* IPQ5018 */ + qcom,board_id = <0x24>; + status = "ok"; +}; + +&wifi3 { + /* QCN9000 5G */ + board_id = <0xa0>; + status = "ok"; +}; + +&qfprom { + status = "ok"; +}; + +&tsens { + status = "ok"; +}; From 3ed959bf2582a1db78872ec450c89dbef82e4db0 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 1 Dec 2023 09:56:40 +0100 Subject: [PATCH 06/32] ipq807x: revert yuncore fap655 back to v4.4 kernel the BDF is too old to make DFS channels work Signed-off-by: John Crispin --- profiles/yuncore_fap655-ath12.yml | 15 +++++++++++++++ profiles/yuncore_fap655-legacy.yml | 14 -------------- profiles/yuncore_fap655.yml | 13 ++++++------- 3 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 profiles/yuncore_fap655-ath12.yml delete mode 100644 profiles/yuncore_fap655-legacy.yml diff --git a/profiles/yuncore_fap655-ath12.yml b/profiles/yuncore_fap655-ath12.yml new file mode 100644 index 000000000..8c7220dc1 --- /dev/null +++ b/profiles/yuncore_fap655-ath12.yml @@ -0,0 +1,15 @@ +--- +profile: yuncore_fap655 +target: ipq50xx +subtarget: generic +description: Build image for Yuncore FAP655 +image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-yuncore_fap655-squashfs-sysupgrade.tar +feeds: + - name: ipq807x + path: ../../feeds/ipq807x_v5.4 +include: + - ucentral-ap +packages: + - ipq50xx +diffconfig: | + CONFIG_KERNEL_IPQ_MEM_PROFILE=512 diff --git a/profiles/yuncore_fap655-legacy.yml b/profiles/yuncore_fap655-legacy.yml deleted file mode 100644 index 730673d79..000000000 --- a/profiles/yuncore_fap655-legacy.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -profile: yuncore_fap655 -target: ipq807x -subtarget: ipq50xx -description: Build image for Yuncore FAP655 -image: bin/targets/ipq807x/ipq50xx/openwrt-ipq807x-yuncore_fap655-squashfs-sysupgrade.tar -feeds: - - name: ipq807x - path: ../../feeds/ipq807x -include: - - wifi-ax - - ucentral-ap -packages: - - ipq807x diff --git a/profiles/yuncore_fap655.yml b/profiles/yuncore_fap655.yml index 8c7220dc1..730673d79 100644 --- a/profiles/yuncore_fap655.yml +++ b/profiles/yuncore_fap655.yml @@ -1,15 +1,14 @@ --- profile: yuncore_fap655 -target: ipq50xx -subtarget: generic +target: ipq807x +subtarget: ipq50xx description: Build image for Yuncore FAP655 -image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-yuncore_fap655-squashfs-sysupgrade.tar +image: bin/targets/ipq807x/ipq50xx/openwrt-ipq807x-yuncore_fap655-squashfs-sysupgrade.tar feeds: - name: ipq807x - path: ../../feeds/ipq807x_v5.4 + path: ../../feeds/ipq807x include: + - wifi-ax - ucentral-ap packages: - - ipq50xx -diffconfig: | - CONFIG_KERNEL_IPQ_MEM_PROFILE=512 + - ipq807x From 371b287db41ebc21ecce9003ea862728414bdf92 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 1 Dec 2023 09:59:15 +0100 Subject: [PATCH 07/32] ucentral-schema: update to latest HEAD 75222fe udevstats: fix UCI generation for swconfig ports Signed-off-by: John Crispin --- feeds/ucentral/ucentral-schema/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/feeds/ucentral/ucentral-schema/Makefile b/feeds/ucentral/ucentral-schema/Makefile index 4f60df19a..7abc3b7d0 100644 --- a/feeds/ucentral/ucentral-schema/Makefile +++ b/feeds/ucentral/ucentral-schema/Makefile @@ -4,10 +4,10 @@ PKG_NAME:=ucentral-schema PKG_RELEASE:=1 PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git -PKG_MIRROR_HASH:=8b8dfea69e4547a4169f4b095742b86d675988b03204577bcbb308619763579b +PKG_MIRROR_HASH:=e5f1001047a601d68c236be740470766dbeab40852093d3c57102a2edc761eb2 PKG_SOURCE_PROTO:=git PKG_SOURCE_DATE:=2022-05-29 -PKG_SOURCE_VERSION:=f8608f6b21236a383b0c284d3b23d5710cbeccc4 +PKG_SOURCE_VERSION:=75222fea7044e4b08a870aeb3284838efd7b6d9f PKG_MAINTAINER:=John Crispin PKG_LICENSE:=BSD-3-Clause From c4bdf037877db52fd9a8089e6314f0182bdab8ae Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 1 Dec 2023 11:50:25 +0100 Subject: [PATCH 08/32] hostapd: fix wpa3 regression Signed-off-by: John Crispin --- feeds/ipq807x_v5.4/hostapd/files/hostapd.sh | 12 ++--- feeds/wifi-ax/hostapd/files/hostapd.sh | 12 ++--- .../0069-hostapd-sync-builtin-patches.patch | 53 +++++++++++++++++-- 3 files changed, 61 insertions(+), 16 deletions(-) diff --git a/feeds/ipq807x_v5.4/hostapd/files/hostapd.sh b/feeds/ipq807x_v5.4/hostapd/files/hostapd.sh index cb71ef10f..0a946f692 100644 --- a/feeds/ipq807x_v5.4/hostapd/files/hostapd.sh +++ b/feeds/ipq807x_v5.4/hostapd/files/hostapd.sh @@ -745,11 +745,11 @@ hostapd_set_bss_options() { } case "$auth_type" in - sae|owe|eap192|eap256) + sae|owe|eap192|eap2) set_default ieee80211w 2 set_default sae_require_mfp 1 ;; - psk-sae|psk2-radius|eap-eap256) + psk-sae|psk2-radius|eap-eap2) set_default ieee80211w 1 set_default sae_require_mfp 1 ;; @@ -796,7 +796,7 @@ hostapd_set_bss_options() { vlan_possible=1 wps_possible=1 ;; - eap|eap192|eap-eap256|eap256) + eap|eap192|eap-eap2|eap2) append_radius_server # radius can provide VLAN ID for clients vlan_possible=1 @@ -1342,10 +1342,10 @@ wpa_supplicant_add_network() { default_disabled case "$auth_type" in - sae|owe|eap-eap256) + sae|owe|eap-eap2) set_default ieee80211w 2 ;; - psk-sae|eap192|eap256) + psk-sae|eap192|eap2) set_default ieee80211w 1 ;; esac @@ -1423,7 +1423,7 @@ wpa_supplicant_add_network() { fi append network_data "$passphrase" "$N$T" ;; - eap|eap192|eap-eap256|eap256) + eap|eap192|eap-eap2|eap2) hostapd_append_wpa_key_mgmt key_mgmt="$wpa_key_mgmt" diff --git a/feeds/wifi-ax/hostapd/files/hostapd.sh b/feeds/wifi-ax/hostapd/files/hostapd.sh index cb71ef10f..0a946f692 100644 --- a/feeds/wifi-ax/hostapd/files/hostapd.sh +++ b/feeds/wifi-ax/hostapd/files/hostapd.sh @@ -745,11 +745,11 @@ hostapd_set_bss_options() { } case "$auth_type" in - sae|owe|eap192|eap256) + sae|owe|eap192|eap2) set_default ieee80211w 2 set_default sae_require_mfp 1 ;; - psk-sae|psk2-radius|eap-eap256) + psk-sae|psk2-radius|eap-eap2) set_default ieee80211w 1 set_default sae_require_mfp 1 ;; @@ -796,7 +796,7 @@ hostapd_set_bss_options() { vlan_possible=1 wps_possible=1 ;; - eap|eap192|eap-eap256|eap256) + eap|eap192|eap-eap2|eap2) append_radius_server # radius can provide VLAN ID for clients vlan_possible=1 @@ -1342,10 +1342,10 @@ wpa_supplicant_add_network() { default_disabled case "$auth_type" in - sae|owe|eap-eap256) + sae|owe|eap-eap2) set_default ieee80211w 2 ;; - psk-sae|eap192|eap256) + psk-sae|eap192|eap2) set_default ieee80211w 1 ;; esac @@ -1423,7 +1423,7 @@ wpa_supplicant_add_network() { fi append network_data "$passphrase" "$N$T" ;; - eap|eap192|eap-eap256|eap256) + eap|eap192|eap-eap2|eap2) hostapd_append_wpa_key_mgmt key_mgmt="$wpa_key_mgmt" diff --git a/patches/0069-hostapd-sync-builtin-patches.patch b/patches/0069-hostapd-sync-builtin-patches.patch index 3c9e411c5..0a796bf23 100644 --- a/patches/0069-hostapd-sync-builtin-patches.patch +++ b/patches/0069-hostapd-sync-builtin-patches.patch @@ -1,11 +1,11 @@ -From b09c1180c1ba4a30b70530b90748e7682931b91a Mon Sep 17 00:00:00 2001 +From b9abe28ab24fbf333960078a9e2255d01cbf408b Mon Sep 17 00:00:00 2001 From: John Crispin Date: Mon, 20 Nov 2023 08:33:42 +0100 Subject: [PATCH] hostapd: sync builtin patches Signed-off-by: John Crispin --- - .../network/services/hostapd/files/hostapd.sh | 5 +- + .../network/services/hostapd/files/hostapd.sh | 17 +- .../hostapd/patches/760-acs_exclude_dfs.patch | 8 +- .../hostapd/patches/780-maxassoc.patch | 6 +- .../patches/790-wired-dynamic-vlan.patch | 33 +++ @@ -16,7 +16,7 @@ Signed-off-by: John Crispin .../hostapd/patches/999-ssi_signal.patch | 81 +++++++ .../services/hostapd/src/src/ap/ubus.c | 229 ++++++++++++++++-- .../services/hostapd/src/src/ap/ubus.h | 1 + - 11 files changed, 491 insertions(+), 55 deletions(-) + 11 files changed, 497 insertions(+), 61 deletions(-) create mode 100644 package/network/services/hostapd/patches/790-wired-dynamic-vlan.patch create mode 100644 package/network/services/hostapd/patches/900-coa.patch create mode 100644 package/network/services/hostapd/patches/901-coa-ubus.patch @@ -24,7 +24,7 @@ Signed-off-by: John Crispin create mode 100644 package/network/services/hostapd/patches/999-ssi_signal.patch diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh -index 145848189d..19d5138510 100644 +index 145848189d..958d5a9ac6 100644 --- a/package/network/services/hostapd/files/hostapd.sh +++ b/package/network/services/hostapd/files/hostapd.sh @@ -48,15 +48,14 @@ hostapd_append_wpa_key_mgmt() { @@ -45,6 +45,51 @@ index 145848189d..19d5138510 100644 append wpa_key_mgmt "WPA-EAP-SHA256" [ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP" ;; +@@ -746,11 +745,11 @@ hostapd_set_bss_options() { + } + + case "$auth_type" in +- sae|owe|eap192|eap256) ++ sae|owe|eap192|eap2) + set_default ieee80211w 2 + set_default sae_require_mfp 1 + ;; +- psk-sae|psk2-radius|eap-eap256) ++ psk-sae|psk2-radius|eap-eap2) + set_default ieee80211w 1 + set_default sae_require_mfp 1 + ;; +@@ -798,7 +797,7 @@ hostapd_set_bss_options() { + vlan_possible=1 + wps_possible=1 + ;; +- eap|eap192|eap-eap256|eap256) ++ eap|eap192|eap-eap2|eap2) + append_radius_server + # radius can provide VLAN ID for clients + vlan_possible=1 +@@ -1344,10 +1343,10 @@ wpa_supplicant_add_network() { + default_disabled + + case "$auth_type" in +- sae|owe|eap-eap256) ++ sae|owe|eap-eap2) + set_default ieee80211w 2 + ;; +- psk-sae|eap192|eap256) ++ psk-sae|eap192|eap2) + set_default ieee80211w 1 + ;; + esac +@@ -1425,7 +1424,7 @@ wpa_supplicant_add_network() { + fi + append network_data "$passphrase" "$N$T" + ;; +- eap|eap192|eap-eap256|eap256) ++ eap|eap192|eap-eap2|eap2) + hostapd_append_wpa_key_mgmt + key_mgmt="$wpa_key_mgmt" + diff --git a/package/network/services/hostapd/patches/760-acs_exclude_dfs.patch b/package/network/services/hostapd/patches/760-acs_exclude_dfs.patch index 52d63c5ff9..27b3a6161a 100644 --- a/package/network/services/hostapd/patches/760-acs_exclude_dfs.patch From 140d8ba1e6f87f0aebf727616feda5c98b9d1c07 Mon Sep 17 00:00:00 2001 From: Esha Aggarwal Date: Wed, 29 Nov 2023 12:28:41 +0530 Subject: [PATCH 09/32] ipq60xx: HFCL-ion4xe Kernel/Firmware upgrade Fixes: WIFI-13052 Signed-off-by: Esha Aggarwal --- profiles/hfcl_ion4xe.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/profiles/hfcl_ion4xe.yml b/profiles/hfcl_ion4xe.yml index c061ab926..05603e6c5 100644 --- a/profiles/hfcl_ion4xe.yml +++ b/profiles/hfcl_ion4xe.yml @@ -1,14 +1,13 @@ --- profile: hfcl_ion4xe -target: ipq807x -subtarget: ipq60xx +target: ipq60xx +subtarget: generic description: Build image for the HFCL ION 4XE -image: bin/targets/ipq807x/ipq60xx/openwrt-ipq807x-hfcl_ion4xe-squashfs-sysupgrade.tar +image: bin/targets/ipq60xx/generic/openwrt-ipq60xx-hfcl_ion4xe-squashfs-sysupgrade.tar feeds: - name: ipq807x - path: ../../feeds/ipq807x + path: ../../feeds/ipq807x_v5.4 packages: - - ipq807x + - ipq60xx include: - - wifi-ax - ucentral-ap From e8b3a76fd9ff6617be42372151d78455e1662d5f Mon Sep 17 00:00:00 2001 From: Esha Aggarwal Date: Wed, 29 Nov 2023 12:41:30 +0530 Subject: [PATCH 10/32] ipq60xx: HFCL-ion4xi Kernel/Firmware upgrade Fixes: WIFI-13053 Signed-off-by: Esha Aggarwal --- profiles/hfcl_ion4xi.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/profiles/hfcl_ion4xi.yml b/profiles/hfcl_ion4xi.yml index e572df6c2..5275d9dd4 100644 --- a/profiles/hfcl_ion4xi.yml +++ b/profiles/hfcl_ion4xi.yml @@ -1,14 +1,13 @@ --- profile: hfcl_ion4xi -target: ipq807x -subtarget: ipq60xx +target: ipq60xx +subtarget: generic description: Build image for the HFCL ION 4XI -image: bin/targets/ipq807x/ipq60xx/openwrt-ipq807x-hfcl_ion4xi-squashfs-sysupgrade.tar +image: bin/targets/ipq60xx/generic/openwrt-ipq60xxx-hfcl_ion4xi-squashfs-sysupgrade.tar feeds: - name: ipq807x - path: ../../feeds/ipq807x + path: ../../feeds/ipq807x_v5.4 packages: - - ipq807x + - ipq60xx include: - - wifi-ax - ucentral-ap From c98c7edc6ad63bf42a962cce31fed6d94407c43e Mon Sep 17 00:00:00 2001 From: Esha Aggarwal Date: Wed, 29 Nov 2023 12:47:57 +0530 Subject: [PATCH 11/32] ipq60xx: HFCL-ion4x_2 Kernel/Firmware upgrade Fixes: WIFI-13193 Signed-off-by: Esha Aggarwal --- profiles/hfcl_ion4x_2.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/profiles/hfcl_ion4x_2.yml b/profiles/hfcl_ion4x_2.yml index d1a2a994b..3dce72a77 100644 --- a/profiles/hfcl_ion4x_2.yml +++ b/profiles/hfcl_ion4x_2.yml @@ -1,14 +1,13 @@ --- profile: hfcl_ion4x_2 -target: ipq807x -subtarget: ipq60xx +target: ipq60xx +subtarget: generic description: Build image for the HFCL ION 4X_2 -image: bin/targets/ipq807x/ipq60xx/openwrt-ipq807x-hfcl_ion4x_2-squashfs-sysupgrade.tar +image: bin/targets/ipq60xx/generic/openwrt-ipq60xx-hfcl_ion4x_2-squashfs-sysupgrade.tar feeds: - name: ipq807x - path: ../../feeds/ipq807x + path: ../../feeds/ipq807x_v5.4 packages: - - ipq807x + - ipq60xx include: - - wifi-ax - ucentral-ap From 984faeae9a149860d42088b0896a9a7b7af9d127 Mon Sep 17 00:00:00 2001 From: Esha Aggarwal Date: Wed, 29 Nov 2023 12:54:13 +0530 Subject: [PATCH 12/32] ipq60xx: HFCL-ion4x Kernel/Firmware upgrade Fixes: WIFI-13051 Signed-off-by: Esha Aggarwal --- profiles/hfcl_ion4x.yml | 11 +++++------ profiles/hfcl_ion4xi.yml | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/profiles/hfcl_ion4x.yml b/profiles/hfcl_ion4x.yml index efa7ddd53..b431f89a2 100644 --- a/profiles/hfcl_ion4x.yml +++ b/profiles/hfcl_ion4x.yml @@ -1,14 +1,13 @@ --- profile: hfcl_ion4x -target: ipq807x -subtarget: ipq60xx +target: ipq60xx +subtarget: generic description: Build image for the HFCL ION 4X -image: bin/targets/ipq807x/ipq60xx/openwrt-ipq807x-hfcl_ion4x-squashfs-sysupgrade.tar +image: bin/targets/ipq60xx/generic/openwrt-ipq60xx-hfcl_ion4x-squashfs-sysupgrade.tar feeds: - name: ipq807x - path: ../../feeds/ipq807x + path: ../../feeds/ipq807x_v5.4 packages: - - ipq807x + - ipq60xx include: - - wifi-ax - ucentral-ap diff --git a/profiles/hfcl_ion4xi.yml b/profiles/hfcl_ion4xi.yml index 5275d9dd4..cc513d397 100644 --- a/profiles/hfcl_ion4xi.yml +++ b/profiles/hfcl_ion4xi.yml @@ -3,7 +3,7 @@ profile: hfcl_ion4xi target: ipq60xx subtarget: generic description: Build image for the HFCL ION 4XI -image: bin/targets/ipq60xx/generic/openwrt-ipq60xxx-hfcl_ion4xi-squashfs-sysupgrade.tar +image: bin/targets/ipq60xx/generic/openwrt-ipq60xx-hfcl_ion4xi-squashfs-sysupgrade.tar feeds: - name: ipq807x path: ../../feeds/ipq807x_v5.4 From 14c6a1a48247f1d1d820e726a104d969b18c8c90 Mon Sep 17 00:00:00 2001 From: Esha Aggarwal Date: Wed, 29 Nov 2023 13:54:39 +0530 Subject: [PATCH 13/32] ipq50xx: HFCL-ion4x_w Kernel/Firmware upgrade Fixes: WIFI-13048 Signed-off-by: Esha Aggarwal --- .../ipq50xx/base-files/etc/board.d/01_leds | 1 + .../ipq50xx/base-files/etc/board.d/02_network | 1 + .../etc/hotplug.d/firmware/10-ath11k-caldata | 2 + .../base-files/lib/upgrade/platform.sh | 4 +- .../dts/qcom/qcom-ipq5018-hfcl-ion4x_w.dts | 852 ++++++++++++++++++ feeds/ipq807x_v5.4/ipq50xx/image/ipq50xx.mk | 9 + profiles/hfcl_ion4x_w.yml | 11 +- profiles/hfcl_ion4xi_w.yml | 11 +- 8 files changed, 878 insertions(+), 13 deletions(-) create mode 100755 feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4x_w.dts diff --git a/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/board.d/01_leds b/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/board.d/01_leds index e01d49aff..5659f6dd5 100755 --- a/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/board.d/01_leds +++ b/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/board.d/01_leds @@ -18,6 +18,7 @@ edgecore,oap101e|\ edgecore,oap101e-6e) ucidef_set_led_netdev "wan" "wan" "red:ethernet" "eth1" ;; +hfcl,ion4x_w|\ hfcl,ion4xi_w) ucidef_set_led_wlan "wlan5g" "WLAN5G" "blue:wifi5" "phy0tpt" ucidef_set_led_wlan "wlan2g" "WLAN2G" "blue:wifi2" "phy1tpt" diff --git a/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/board.d/02_network b/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/board.d/02_network index 7f6caf05c..e52988b20 100755 --- a/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/board.d/02_network +++ b/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/board.d/02_network @@ -30,6 +30,7 @@ qcom_setup_interfaces() ucidef_add_switch "switch1" \ "6@eth1" "1:lan" "2:lan" "3:lan" "4:lan" ;; + hfcl,ion4x_w|\ hfcl,ion4xi_w) ucidef_set_interface_wan "eth0" ;; diff --git a/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata b/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata index 17f83b1e2..8898d5e68 100755 --- a/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata +++ b/feeds/ipq807x_v5.4/ipq50xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata @@ -69,6 +69,7 @@ ath11k/IPQ5018/hw1.0/caldata.bin) edgecore,oap101-6e|\ edgecore,oap101e|\ edgecore,oap101e-6e|\ + hfcl,ion4x_w|\ hfcl,ion4xi_w|\ optimcloud,d60|\ optimcloud,d60-5g|\ @@ -126,6 +127,7 @@ ath11k-macs) yuncore,fap655) ath11k_generate_macs ;; + hfcl,ion4x_w|\ hfcl,ion4xi_w) ath11k_generate_macs_ion4x ;; diff --git a/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/platform.sh b/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/platform.sh index c91385c11..bd14f9ed8 100755 --- a/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/platform.sh +++ b/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/platform.sh @@ -71,6 +71,7 @@ platform_check_image() { cig,wf186w|\ cig,wf186h|\ edgecore,eap104|\ + hfcl,ion4x_w|\ hfcl,ion4xi_w|\ optimcloud,d60|\ optimcloud,d60-5g|\ @@ -103,7 +104,8 @@ platform_do_upgrade() { [ "$(find_mtd_chardev rootfs)" ] && CI_UBIPART="rootfs" nand_upgrade_tar "$1" ;; - hfcl,ion4xi_w) + hfcl,ion4x_w|\ + hfcl,ion4xi_w) wp_part=$(fw_printenv primary | cut -d = -f2) echo "Current Primary is $wp_part" if [[ $wp_part == 1 ]]; then diff --git a/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4x_w.dts b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4x_w.dts new file mode 100755 index 000000000..5c0312634 --- /dev/null +++ b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-hfcl-ion4x_w.dts @@ -0,0 +1,852 @@ +/dts-v1/; +/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. + * + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "ipq5018.dtsi" +#include + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "HFCL ION4x_w"; + compatible = "hfcl,ion4x_w", "qcom,ipq5018-mp03.3", "qcom,ipq5018"; + interrupt-parent = <&intc>; + + aliases { + sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ + serial0 = &blsp1_uart1; + serial1 = &blsp1_uart2; + ethernet0 = "/soc/dp1"; + + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; + }; + + chosen { + bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; + bootargs-append = " swiotlb=1 coherent_pool=2M"; + stdout-path = "serial0"; + }; + + reserved-memory { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + /* 256 MB Profile + * +==========+==============+=========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +----------+--------------+-------------------------+ + * | NSS | 0x40000000 | 8MB | + * +----------+--------------+-------------------------+ + * | Linux | 0x40800000 | Depends on total memory | + * +----------+--------------+-------------------------+ + * | uboot | 0x4A600000 | 4MB | + * +----------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +----------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +----------+--------------+-------------------------+ + * | TZ | 0x4AC00000 | 4MB | + * +----------+--------------+-------------------------+ + * | Q6 | | | + * | code/ | 0x4B000000 | 20MB | + * | data | | | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | data | 0x4C400000 | 13MB | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | M3 Dump | 0x4D100000 | 1MB | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | QDSS | 0x4D200000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | data | 0x4D300000 | 13MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | M3 Dump | 0x4E000000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | QDSS | 0x4E100000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | data | 0x4E200000 | 13MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | M3 Dump | 0x4EF00000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | QDSS | 0x4F000000 | 1MB | + * +----------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +===================================================+ + */ + q6_mem_regions: q6_mem_regions@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x4100000>; + }; + + q6_code_data: q6_code_data@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x1400000>; + }; + + q6_ipq5018_data: q6_ipq5018_data@4C400000 { + no-map; + reg = <0x0 0x4C400000 0x0 0xD00000>; + }; + + m3_dump: m3_dump@4D100000 { + no-map; + reg = <0x0 0x4D100000 0x0 0x100000>; + }; + + q6_etr_region: q6_etr_dump@4D200000 { + no-map; + reg = <0x0 0x4D200000 0x0 0x100000>; + }; + + q6_qcn6122_data1: q6_qcn6122_data1@4D300000 { + no-map; + reg = <0x0 0x4D300000 0x0 0xD00000>; + }; + + m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E000000 { + no-map; + reg = <0x0 0x4E000000 0x0 0x100000>; + }; + + q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E100000 { + no-map; + reg = <0x0 0x4E100000 0x0 0x100000>; + }; + + q6_qcn6122_data2: q6_qcn6122_data2@4E200000 { + no-map; + reg = <0x0 0x4E200000 0x0 0xD00000>; + }; + + m3_dump_qcn6122_2: m3_dump_qcn6122_2@4EF00000 { + no-map; + reg = <0x0 0x4EF00000 0x0 0x100000>; + }; + + q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F000000 { + no-map; + reg = <0x0 0x4F000000 0x0 0x100000>; + }; + #else + /* 512MB/1GB Profiles + * +==========+==============+=========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +----------+--------------+-------------------------+ + * | NSS | 0x40000000 | 16MB | + * +----------+--------------+-------------------------+ + * | Linux | 0x41000000 | Depends on total memory | + * +----------+--------------+-------------------------+ + * | uboot | 0x4A600000 | 4MB | + * +----------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +----------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +----------+--------------+-------------------------+ + * | TZ | 0x4AC00000 | 4MB | + * +----------+--------------+-------------------------+ + * | Q6 | | | + * | code/ | 0x4B000000 | 20MB | + * | data | | | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | data | 0x4C400000 | 13MB | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | M3 Dump | 0x4D100000 | 1MB | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | QDSS | 0x4D200000 | 1MB | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | Caldb | 0x4D300000 | 2MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | data | 0x4D500000 | 13MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | M3 Dump | 0x4E200000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | QDSS | 0x4E300000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | Caldb | 0x4E400000 | 5MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | data | 0x4E900000 | 13MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | M3 Dump | 0x4F600000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | QDSS | 0x4F700000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | Caldb | 0x4F800000 | 5MB | + * +----------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +===================================================+ + */ + q6_mem_regions: q6_mem_regions@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x4D00000>; + }; + + q6_code_data: q6_code_data@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 01400000>; + }; + + q6_ipq5018_data: q6_ipq5018_data@4C400000 { + no-map; + reg = <0x0 0x4C400000 0x0 0xD00000>; + }; + + m3_dump: m3_dump@4D100000 { + no-map; + reg = <0x0 0x4D100000 0x0 0x100000>; + }; + + q6_etr_region: q6_etr_dump@4D200000 { + no-map; + reg = <0x0 0x4D200000 0x0 0x100000>; + }; + + q6_caldb_region: q6_caldb_region@4D300000 { + no-map; + reg = <0x0 0x4D300000 0x0 0x200000>; + }; + + q6_qcn6122_data1: q6_qcn6122_data1@4D500000 { + no-map; + reg = <0x0 0x4D500000 0x0 0xD00000>; + }; + + m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 { + no-map; + reg = <0x0 0x4E200000 0x0 0x100000>; + }; + + q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 { + no-map; + reg = <0x0 0x4E300000 0x0 0x100000>; + }; + + q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E400000 { + no-map; + reg = <0x0 0x4E400000 0x0 0x500000>; + }; + + q6_qcn6122_data2: q6_qcn6122_data2@4E900000 { + no-map; + reg = <0x0 0x4E900000 0x0 0xD00000>; + }; + + m3_dump_qcn6122_2: m3_dump_qcn6122_2@4F600000 { + no-map; + reg = <0x0 0x4F600000 0x0 0x100000>; + }; + + q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F700000 { + no-map; + reg = <0x0 0x4F700000 0x0 0x100000>; + }; + + q6_qcn6122_caldb_2: q6_qcn6122_caldb_2@4F800000 { + no-map; + reg = <0x0 0x4F800000 0x0 0x500000>; + }; + + #endif + }; + + soc { + serial@78af000 { + status = "ok"; + }; + + blsp1_uart2: serial@78b0000 { + pinctrl-0 = <&blsp1_uart_pins>; + pinctrl-names = "default"; + }; + + qpic_bam: dma@7984000{ + status = "ok"; + }; + + nand: qpic-nand@79b0000 { + pinctrl-0 = <&qspi_nand_pins>; + pinctrl-names = "default"; + status = "ok"; + }; + + spi_0: spi@78b5000 { /* BLSP1 QUP0 */ + pinctrl-0 = <&blsp0_spi_pins>; + pinctrl-names = "default"; + cs-select = <0>; + status = "ok"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + compatible = "n25q128a11"; + linux,modalias = "m25p80", "n25q128a11"; + spi-max-frequency = <50000000>; + use-default-sizes; + }; + }; + + mdio0: mdio@88000 { + status = "ok"; + + ethernet-phy@0 { + reg = <7>; + }; + }; + + mdio1: mdio@90000 { + status = "ok"; + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 39 0>; + + ethernet-phy@0 { + reg = <28>; + }; + }; + + ess-instance { + num_devices = <0x1>; + ess-switch@0x39c00000 { + switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/ + cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <7>; + mdiobus = <&mdio0>; + }; + port@1 { + port_id = <2>; + phy_address = <0x1c>; + mdiobus = <&mdio1>; + port_mac_sel = "QGMAC_PORT"; + }; + }; + led_source@0 { + source = <0>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + }; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <2>; + reg = <0x39D00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <28>; + mdio-bus = <&mdio1>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + }; + }; + + qcom,test@0 { + status = "ok"; + }; + + thermal-zones { + status = "ok"; + }; +}; + +&tlmm { + pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; + pinctrl-names = "default"; + + blsp0_uart_pins: uart_pins { + blsp0_uart_rx_tx { + pins = "gpio20", "gpio21"; + function = "blsp0_uart0"; + bias-disable; + }; + }; + + blsp1_uart_pins: blsp1_uart_pins { + blsp1_uart_rx_tx { + pins = "gpio23", "gpio25", "gpio24", "gpio26"; + function = "blsp1_uart2"; + bias-disable; + }; + }; + + blsp0_spi_pins: blsp0_spi_pins { + mux { + pins = "gpio10", "gpio11", "gpio12", "gpio13"; + function = "blsp0_spi"; + drive-strength = <2>; + bias-disable; + }; + }; + + qspi_nand_pins: qspi_nand_pins { + qspi_clock { + pins = "gpio9"; + function = "qspi_clk"; + drive-strength = <8>; + bias-disable; + }; + + qspi_cs { + pins = "gpio8"; + function = "qspi_cs"; + drive-strength = <8>; + bias-disable; + }; + + qspi_data { + pins = "gpio4", "gpio5", "gpio6", "gpio7"; + function = "qspi_data"; + drive-strength = <8>; + bias-disable; + }; + }; + + mdio1_pins: mdio_pinmux { + mux_0 { + pins = "gpio36"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mux_1 { + pins = "gpio37"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + phy_led_pins: phy_led_pins { + gephy_led_pin { + pins = "gpio46"; + function = "led0"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + led_pins: led_pinmux { + mux_1 { + pins = "gpio38"; + function = "gpio"; + bias-pull-down; + }; + }; + + i2c_pins: i2c_pins { + i2c_scl { + pins = "gpio25"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + + i2c_sda { + pins = "gpio26"; + function = "blsp2_i2c1"; + drive-strength = <8>; + bias-disable; + }; + }; + + button_pins: button_pins { + wps_button { + pins = "gpio14"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + audio_pins: audio_pinmux { + mux_1 { + pins = "gpio24"; + function = "audio_rxbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_2 { + pins = "gpio25"; + function = "audio_rxfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_3 { + pins = "gpio26"; + function = "audio_rxd"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_4 { + pins = "gpio27"; + function = "audio_txmclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_5 { + pins = "gpio28"; + function = "audio_txbclk"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_6 { + pins = "gpio29"; + function = "audio_txfsync"; + drive-strength = <8>; + bias-pull-down; + }; + + mux_7 { + pins = "gpio30"; + function = "audio_txd"; + drive-strength = <8>; + bias-pull-down; + }; + }; +}; + +&soc { + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&led_pins>; + pinctrl-names = "default"; + + led_power: led@38 { + label = "blue:status"; + gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; + default-state = "on"; + }; + + }; + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + reset { + label = "reset"; + linux,code = ; + gpios = <&tlmm 14 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; +}; + +&q6v5_wcss { + compatible = "qcom,ipq5018-q6-mpd"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + firmware = "IPQ5018/q6_fw.mdt"; + reg = <0x0cd00000 0x4040>, + <0x1938000 0x8>, + <0x193d204 0x4>; + reg-names = "qdsp6", + "tcsr-msip", + "tcsr-q6"; + resets = <&gcc GCC_WCSSAON_RESET>, + <&gcc GCC_WCSS_Q6_BCR>; + + reset-names = "wcss_aon_reset", + "wcss_q6_reset"; + + clocks = <&gcc GCC_Q6_AXIS_CLK>, + <&gcc GCC_WCSS_ECAHB_CLK>, + <&gcc GCC_Q6_AXIM_CLK>, + <&gcc GCC_Q6_AXIM2_CLK>, + <&gcc GCC_Q6_AHB_CLK>, + <&gcc GCC_Q6_AHB_S_CLK>, + <&gcc GCC_WCSS_AXI_S_CLK>; + clock-names = "gcc_q6_axis_clk", + "gcc_wcss_ecahb_clk", + "gcc_q6_axim_clk", + "gcc_q6_axim2_clk", + "gcc_q6_ahb_clk", + "gcc_q6_ahb_s_clk", + "gcc_wcss_axi_s_clk"; + + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_mem_regions>, <&q6_etr_region>; + #else + memory-region = <&q6_mem_regions>, <&q6_etr_region>, + <&q6_caldb_region>; + #endif + + qcom,rproc = <&q6v5_wcss>; + qcom,bootargs_smem = <507>; + boot-args = <0x1 0x4 0x3 0x0F 0x0 0x0>, + <0x2 0x4 0x2 0x12 0x0 0x0>; + status = "ok"; + q6_wcss_pd1: remoteproc_pd1@4ab000 { + compatible = "qcom,ipq5018-wcss-ahb-mpd"; + reg = <0x4ab000 0x20>; + reg-names = "rmb"; + firmware = "IPQ5018/q6_fw.mdt"; + m3_firmware = "IPQ5018/m3_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 8 0>, + <&wcss_smp2p_in 9 0>, + <&wcss_smp2p_in 12 0>, + <&wcss_smp2p_in 11 0>; + interrupt-names = "fatal", + "ready", + "spawn-ack", + "stop-ack"; + + resets = <&gcc GCC_WCSSAON_RESET>, + <&gcc GCC_WCSS_BCR>, + <&gcc GCC_CE_BCR>; + reset-names = "wcss_aon_reset", + "wcss_reset", + "ce_reset"; + + clocks = <&gcc GCC_WCSS_AHB_S_CLK>, + <&gcc GCC_WCSS_ACMT_CLK>, + <&gcc GCC_WCSS_AXI_M_CLK>; + clock-names = "gcc_wcss_ahb_s_clk", + "gcc_wcss_acmt_clk", + "gcc_wcss_axi_m_clk"; + + qcom,halt-regs = <&tcsr_q6_block 0xa000 0xd000 0x0>; + + qcom,smem-states = <&wcss_smp2p_out 8>, + <&wcss_smp2p_out 9>, + <&wcss_smp2p_out 10>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_ipq5018_data>, <&m3_dump>, + <&q6_etr_region>; + #else + memory-region = <&q6_ipq5018_data>, <&m3_dump>, + <&q6_etr_region>, <&q6_caldb_region>; + #endif + + }; + + q6_wcss_pd2: remoteproc_pd2 { + compatible = "qcom,ipq5018-wcss-pcie-mpd"; + firmware = "IPQ5018/q6_fw.mdt"; + m3_firmware = "qcn6122/m3_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 16 0>, + <&wcss_smp2p_in 17 0>, + <&wcss_smp2p_in 20 0>, + <&wcss_smp2p_in 19 0>; + interrupt-names = "fatal", + "ready", + "spawn-ack", + "stop-ack"; + + qcom,smem-states = <&wcss_smp2p_out 16>, + <&wcss_smp2p_out 17>, + <&wcss_smp2p_out 18>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, + <&q6_qcn6122_etr_1>; + #else + memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, + <&q6_qcn6122_etr_1>, <&q6_qcn6122_caldb_1>; + #endif + + }; + + q6_wcss_pd3: remoteproc_pd3 { + compatible = "qcom,ipq5018-wcss-pcie-mpd"; + firmware = "IPQ5018/q6_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 24 0>, + <&wcss_smp2p_in 25 0>, + <&wcss_smp2p_in 28 0>, + <&wcss_smp2p_in 27 0>; + interrupt-names = "fatal", + "ready", + "spawn-ack", + "stop-ack"; + + qcom,smem-states = <&wcss_smp2p_out 24>, + <&wcss_smp2p_out 25>, + <&wcss_smp2p_out 26>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, + <&q6_qcn6122_etr_2>; + #else + memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, + <&q6_qcn6122_etr_2>, <&q6_qcn6122_caldb_2>; + #endif + }; +}; + +&wifi0 { + /* IPQ5018 */ + qcom,multipd_arch; + qcom,rproc = <&q6_wcss_pd1>; + qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; +#ifdef __IPQ_MEM_PROFILE_256_MB__ + qcom,tgt-mem-mode = <2>; +#else + qcom,tgt-mem-mode = <1>; +#endif + qcom,board_id = <0x23>; +#ifdef __CNSS2__ + qcom,bdf-addr = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>; + qcom,caldb-addr = <0x4D300000 0x4D300000 0 0 0>; + qcom,caldb-size = <0x200000>; + mem-region = <&q6_ipq5018_data>; +#else + memory-region = <&q6_ipq5018_data>; +#endif + status = "ok"; +}; + +&wifi1 { + /* QCN6122 5G */ + qcom,multipd_arch; + qcom,userpd-subsys-name = "q6v5_wcss_userpd2"; + qcom,rproc = <&q6_wcss_pd2>; +#ifdef __IPQ_MEM_PROFILE_256_MB__ + qcom,tgt-mem-mode = <2>; +#else + qcom,tgt-mem-mode = <1>; +#endif + qcom,board_id = <0x60>; +#ifdef __CNSS2__ + qcom,bdf-addr = <0x4D500000 0x4D500000 0x4D300000 0x0 0x0>; + qcom,caldb-addr = <0x4E400000 0x4E400000 0 0 0>; + qcom,caldb-size = <0x500000>; + mem-region = <&q6_qcn6122_data1>; +#else + memory-region = <&q6_qcn6122_data1>; +#endif + status = "disabled"; +}; + +&wifi2 { + /* QCN6122 6G */ + qcom,multipd_arch; + qcom,userpd-subsys-name = "q6v5_wcss_userpd3"; + qcom,rproc = <&q6_wcss_pd3>; +#ifdef __IPQ_MEM_PROFILE_256_MB__ + qcom,tgt-mem-mode = <2>; +#else + qcom,tgt-mem-mode = <1>; +#endif + qcom,board_id = <0xb0>; +#ifdef __CNSS2__ + qcom,bdf-addr = <0x4E900000 0x4E900000 0x4E200000 0x0 0x0>; + qcom,caldb-addr = <0x4F800000 0x4F800000 0 0 0>; + qcom,caldb-size = <0x500000>; + mem-region = <&q6_qcn6122_data2>; +#else + memory-region = <&q6_qcn6122_data2>; +#endif + status = "disabled"; +}; + +&usb3 { + status = "ok"; + device-power-gpio = <&tlmm 24 1>; +}; + +&dwc_0 { + /delete-property/ #phy-cells; + /delete-property/ phys; + /delete-property/ phy-names; +}; + +&hs_m31phy_0 { + status = "ok"; +}; + +&eud { + status = "ok"; +}; + +&pcie_x1 { + perst-gpio = <&tlmm 18 GPIO_ACTIVE_LOW>; +}; + +&pcie_x2 { + perst-gpio = <&tlmm 15 GPIO_ACTIVE_LOW>; +}; + +&pcie_x1_rp { + status = "disabled"; + + mhi_0: qcom,mhi@0 { + reg = <0 0 0 0 0 >; + }; +}; + +&pcie_x2_rp { + status = "disabled"; + + mhi_1: qcom,mhi@1 { + reg = <0 0 0 0 0 >; + + }; +}; diff --git a/feeds/ipq807x_v5.4/ipq50xx/image/ipq50xx.mk b/feeds/ipq807x_v5.4/ipq50xx/image/ipq50xx.mk index 551899cc7..8f1f12edf 100644 --- a/feeds/ipq807x_v5.4/ipq50xx/image/ipq50xx.mk +++ b/feeds/ipq807x_v5.4/ipq50xx/image/ipq50xx.mk @@ -72,6 +72,15 @@ define Device/edgecore_oap101e_6e endef TARGET_DEVICES += edgecore_oap101e_6e +define Device/hfcl_ion4x_w + DEVICE_TITLE := HFCL ION4x_w + DEVICE_DTS := qcom-ipq5018-hfcl-ion4x_w + SUPPORTED_DEVICES := hfcl,ion4x_w + DEVICE_PACKAGES := ath11k-wifi-hfcl-ion4x_w ath11k-firmware-ipq50xx-map-spruce + DEVICE_DTS_CONFIG := config@mp03.3 +endef +TARGET_DEVICES += hfcl_ion4x_w + define Device/hfcl_ion4xi_w DEVICE_TITLE := HFCL ION4xi_w DEVICE_DTS := qcom-ipq5018-hfcl-ion4xi_w diff --git a/profiles/hfcl_ion4x_w.yml b/profiles/hfcl_ion4x_w.yml index 77222a710..903eceeee 100644 --- a/profiles/hfcl_ion4x_w.yml +++ b/profiles/hfcl_ion4x_w.yml @@ -1,15 +1,14 @@ profile: hfcl_ion4x_w -target: ipq807x -subtarget: ipq50xx +target: ipq50xx +subtarget: generic description: Build image for the HFCL ion4x_w -image: bin/targets/ipq807x/ipq50xx/openwrt-ipq807x-hfcl_ion4x_w-squashfs-sysupgrade.tar +image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-hfcl_ion4x_w-squashfs-sysupgrade.tar feeds: - name: ipq807x - path: ../../feeds/ipq807x + path: ../../feeds/ipq807x_v5.4 include: - - wifi-ax - ucentral-ap packages: - - ipq807x + - ipq50xx diffconfig: | CONFIG_KERNEL_IPQ_MEM_PROFILE=512 diff --git a/profiles/hfcl_ion4xi_w.yml b/profiles/hfcl_ion4xi_w.yml index 68f48ba3e..1e1357c5c 100644 --- a/profiles/hfcl_ion4xi_w.yml +++ b/profiles/hfcl_ion4xi_w.yml @@ -1,15 +1,14 @@ profile: hfcl_ion4xi_w -target: ipq807x -subtarget: ipq50xx +target: ipq50xx +subtarget: generic description: Build image for the HFCL ion4xi_w -image: bin/targets/ipq807x/ipq50xx/openwrt-ipq807x-hfcl_ion4xi_w-squashfs-sysupgrade.tar +image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-hfcl_ion4xi_w-squashfs-sysupgrade.tar feeds: - name: ipq807x - path: ../../feeds/ipq807x + path: ../../feeds/ipq807x_v5.4 include: - - wifi-ax - ucentral-ap packages: - - ipq807x + - ipq50xx diffconfig: | CONFIG_KERNEL_IPQ_MEM_PROFILE=512 From c22ad0089cf5b3e23acccd65b604abc16a59be33 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Tue, 5 Dec 2023 11:55:36 +0100 Subject: [PATCH 14/32] ramips: add yuncore_ax820.yml to CI Signed-off-by: John Crispin --- .github/workflows/build-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-dev.yml b/.github/workflows/build-dev.yml index fecb14187..013916193 100644 --- a/.github/workflows/build-dev.yml +++ b/.github/workflows/build-dev.yml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - target: [ 'cig_wf186w', 'cig_wf188n', 'cig_wf196', 'cig_wf660a', 'cybertan_eww622-a1', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap111', 'edgecore_ecw5211', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap102', 'hfcl_ion4','hfcl_ion4xi_wp', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4xi_w', 'hfcl_ion4xi_HMR', 'hfcl_ion4x_w', 'indio_um-305ax', 'indio_um-325ac', 'indio_um-510ac-v3', 'indio_um-550ac', 'indio_um-310ax-v1', 'indio_um-510axp-v1', 'indio_um-510axm-v1', 'udaya_a5-id2', 'wallys_dr40x9', 'wallys_dr6018', 'wallys_dr6018_v4', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655' ] + target: [ 'cig_wf186w', 'cig_wf188n', 'cig_wf196', 'cig_wf660a', 'cybertan_eww622-a1', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap111', 'edgecore_ecw5211', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap102', 'hfcl_ion4','hfcl_ion4xi_wp', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4xi_w', 'hfcl_ion4xi_HMR', 'hfcl_ion4x_w', 'indio_um-305ax', 'indio_um-325ac', 'indio_um-510ac-v3', 'indio_um-550ac', 'indio_um-310ax-v1', 'indio_um-510axp-v1', 'indio_um-510axm-v1', 'udaya_a5-id2', 'wallys_dr40x9', 'wallys_dr6018', 'wallys_dr6018_v4', 'yuncore_ax820', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655' ] steps: - uses: actions/checkout@v3 From a4a9a7692c5bd7e0742a1c14ef1cddc3bf7b4028 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Tue, 5 Dec 2023 15:58:13 +0100 Subject: [PATCH 15/32] netifd: fix vlan-awareness reload Signed-off-by: John Crispin --- .../0072-netifd-fix-vlan-awareness-bug.patch | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 patches/0072-netifd-fix-vlan-awareness-bug.patch diff --git a/patches/0072-netifd-fix-vlan-awareness-bug.patch b/patches/0072-netifd-fix-vlan-awareness-bug.patch new file mode 100644 index 000000000..396416f77 --- /dev/null +++ b/patches/0072-netifd-fix-vlan-awareness-bug.patch @@ -0,0 +1,103 @@ +From 782cefa73e24512dd675b51aa969103bdccee773 Mon Sep 17 00:00:00 2001 +From: John Crispin +Date: Tue, 5 Dec 2023 15:57:08 +0100 +Subject: [PATCH] netifd: fix vlan-awareness bug + +Signed-off-by: John Crispin +--- + .../netifd/patches/004-vlan-awareness.patch | 83 +++++++++++++++++++ + 1 file changed, 83 insertions(+) + create mode 100644 package/network/config/netifd/patches/004-vlan-awareness.patch + +diff --git a/package/network/config/netifd/patches/004-vlan-awareness.patch b/package/network/config/netifd/patches/004-vlan-awareness.patch +new file mode 100644 +index 0000000000..00d43957e1 +--- /dev/null ++++ b/package/network/config/netifd/patches/004-vlan-awareness.patch +@@ -0,0 +1,83 @@ ++diff --git a/bridge.c b/bridge.c ++index c931923e3299..2128ec75a0fb 100644 ++--- a/bridge.c +++++ b/bridge.c ++@@ -223,7 +223,9 @@ bridge_set_member_vlan(struct bridge_member *bm, struct bridge_vlan *vlan, bool ++ if (!port) ++ return; ++ ++- if (bridge_member_vlan_is_pvid(bm, port)) +++ if (!add && bm->pvid == vlan->vid) +++ bm->pvid = 0; +++ else if (add && bridge_member_vlan_is_pvid(bm, port)) ++ bm->pvid = vlan->vid; ++ ++ __bridge_set_member_vlan(bm, vlan, port, add); ++@@ -275,12 +277,12 @@ bridge_set_vlan_state(struct bridge_state *bst, struct bridge_vlan *vlan, bool a ++ { ++ struct bridge_member *bm; ++ struct bridge_vlan *vlan2; +++ bool clear_pvid = false; ++ ++ bridge_set_local_vlan(bst, vlan, add); ++ ++ vlist_for_each_element(&bst->members, bm, node) { ++ struct bridge_vlan_port *port; ++- int new_pvid = -1; ++ ++ port = bridge_find_vlan_member_port(bm, vlan); ++ if (!port) ++@@ -293,17 +295,18 @@ bridge_set_vlan_state(struct bridge_state *bst, struct bridge_vlan *vlan, bool a ++ vlan2 = bridge_recalc_member_pvid(bm); ++ if (vlan2 && vlan2->vid != vlan->vid) { ++ bridge_set_member_vlan(bm, vlan2, false); +++ bm->pvid = vlan2->vid; ++ bridge_set_member_vlan(bm, vlan2, true); +++ } else if (!vlan2) { +++ clear_pvid = true; ++ } ++- new_pvid = vlan2 ? vlan2->vid : 0; ++ } ++ ++- if (!bm->present) ++- continue; +++ if (bm->present) +++ __bridge_set_member_vlan(bm, vlan, port, add); ++ ++- __bridge_set_member_vlan(bm, vlan, port, add); ++- if (new_pvid >= 0) ++- bm->pvid = new_pvid; +++ if (clear_pvid) +++ bm->pvid = 0; ++ } ++ } ++ ++@@ -1369,14 +1372,14 @@ bridge_vlan_update(struct vlist_tree *tree, struct vlist_node *node_new, ++ struct bridge_state *bst = container_of(tree, struct bridge_state, dev.vlans); ++ struct bridge_vlan *vlan_new = NULL, *vlan_old = NULL; ++ ++- if (!bst->has_vlans || !bst->active) ++- goto out; ++- ++ if (node_old) ++ vlan_old = container_of(node_old, struct bridge_vlan, node); ++ if (node_new) ++ vlan_new = container_of(node_new, struct bridge_vlan, node); ++ +++ if (!bst->has_vlans || !bst->active) +++ goto out; +++ ++ if (node_new && node_old && bridge_vlan_equal(vlan_old, vlan_new)) { ++ list_splice_init(&vlan_old->hotplug_ports, &vlan_new->hotplug_ports); ++ goto out; ++@@ -1391,9 +1394,8 @@ bridge_vlan_update(struct vlist_tree *tree, struct vlist_node *node_new, ++ if (node_new) ++ vlan_new->pending = true; ++ ++- bst->dev.config_pending = true; ++- ++ out: +++ bst->dev.config_pending = true; ++ bridge_vlan_free(vlan_old); ++ } ++ +-- +2.34.1 + From 6872bd6964316f2e0089ec9b55731bc01a8e251d Mon Sep 17 00:00:00 2001 From: John Crispin Date: Tue, 5 Dec 2023 16:22:55 +0100 Subject: [PATCH 16/32] ucentral-schema: fix stray character in the default config Signed-off-by: John Crispin --- .../ucentral-schema/files/etc/ucentral/ucentral.cfg.0000000001 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/feeds/ucentral/ucentral-schema/files/etc/ucentral/ucentral.cfg.0000000001 b/feeds/ucentral/ucentral-schema/files/etc/ucentral/ucentral.cfg.0000000001 index c88c6e388..a4fac123a 100644 --- a/feeds/ucentral/ucentral-schema/files/etc/ucentral/ucentral.cfg.0000000001 +++ b/feeds/ucentral/ucentral-schema/files/etc/ucentral/ucentral.cfg.0000000001 @@ -73,7 +73,7 @@ "admin-ui": { "wifi-ssid": "Maverick", "wifi-bands": [ "5G" ], - "offline-trigger": 300, + "offline-trigger": 300 } } } From 6d4788c26f242a0ee49e75c07877265b2480dd66 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Tue, 5 Dec 2023 17:13:38 +0100 Subject: [PATCH 17/32] ucentral-state: properly track online state Signed-off-by: John Crispin --- feeds/ucentral/ucentral-state/files/ucentral-state | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/feeds/ucentral/ucentral-state/files/ucentral-state b/feeds/ucentral/ucentral-state/files/ucentral-state index 42a4afe22..ac26de027 100755 --- a/feeds/ucentral/ucentral-state/files/ucentral-state +++ b/feeds/ucentral/ucentral-state/files/ucentral-state @@ -18,6 +18,7 @@ let ubus = libubus.connect(); let uci = libuci.cursor(); let config; let offline_timer; +let current_state; function self_healing() { @@ -74,8 +75,9 @@ function offline_handler() { function online_handler() { ulog(LOG_INFO, 'going online\n'); ubus.call('network.interface.admin_ui', 'down'); - if (offline_timer) + if (offline_timer) { offline_timer.cancel(); + } } function config_load() { @@ -175,8 +177,11 @@ let state_handler = { let ubus_methods = { set: { call: function(req) { + if (current_state == req.args.state) + return; if (!state_handler[req.args.state]) return ubus.STATUS_INVALID_ARGUMENT; + current_state = req.args.state; blink_timeout(); ulog(LOG_INFO, 'set state -> ' + req.args.state + '\n'); From f7f913ab14872d42f3a44fb896561cef6583cdc9 Mon Sep 17 00:00:00 2001 From: Ken Date: Fri, 10 Nov 2023 14:38:43 +0800 Subject: [PATCH 18/32] ipq50xx: CIG-WF-186W - LEDs are not configurable Signed-off-by: Ken --- .../boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts | 54 ++++++++++++++++--- .../boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts | 54 ++++++++++++++++--- 2 files changed, 96 insertions(+), 12 deletions(-) diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts index 5fb9e3469..7a7ead613 100644 --- a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts @@ -29,6 +29,10 @@ serial1 = &blsp1_uart2; ethernet0 = "/soc/dp1"; ethernet1 = "/soc/dp2"; + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; }; chosen { @@ -682,6 +686,27 @@ }; }; + leds_pins: leds_pins { + led_pwr_g { + pins = "gpio0"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_pwr_b { + pins = "gpio1"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_pwr_r { + pins = "gpio46"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + i2c_pins: i2c_pins { i2c_scl { pins = "gpio25"; @@ -758,14 +783,31 @@ }; &soc { + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&leds_pins>; + pinctrl-names = "default"; - pwm: pwm@0x1941010 { - pinctrl-0 = <&pwm_pins>; - pinctrl-names = "default"; - used-pwm-indices = <1>, <1>, <1>, <1>; - dft-pwm-status = <1>, <0>, <0>, <0>; - status = "ok"; + led3 { + label = "blue:status"; + gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "blue-on"; + default-state = "off"; + }; + led2 { + label = "red:status"; + gpios = <&tlmm 45 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "red-on"; + default-state = "off"; + }; + led_power: led1 { + label = "green:status"; + gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "default-on"; + default-state = "on"; + }; }; + }; &usb3 { diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts index f75b71370..522a7bcb1 100755 --- a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts @@ -29,6 +29,10 @@ serial1 = &blsp1_uart2; ethernet0 = "/soc/dp1"; ethernet1 = "/soc/dp2"; + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; }; chosen { @@ -682,6 +686,27 @@ }; }; + leds_pins: leds_pins { + led_pwr_g { + pins = "gpio0"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_pwr_b { + pins = "gpio1"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_pwr_r { + pins = "gpio46"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + i2c_pins: i2c_pins { i2c_scl { pins = "gpio25"; @@ -758,14 +783,31 @@ }; &soc { + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&leds_pins>; + pinctrl-names = "default"; - pwm: pwm@0x1941010 { - pinctrl-0 = <&pwm_pins>; - pinctrl-names = "default"; - used-pwm-indices = <1>, <1>, <1>, <1>; - dft-pwm-status = <1>, <0>, <0>, <0>; - status = "ok"; + led3 { + label = "blue:status"; + gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "blue-on"; + default-state = "off"; + }; + led2 { + label = "red:status"; + gpios = <&tlmm 45 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "red-on"; + default-state = "off"; + }; + led_power: led1 { + label = "green:status"; + gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "default-on"; + default-state = "on"; + }; }; + }; &usb3 { From 4db54ce3d97cd6b487a1fed1618bc979711f4ca6 Mon Sep 17 00:00:00 2001 From: Ken Date: Wed, 6 Dec 2023 13:31:32 +0800 Subject: [PATCH 19/32] ipq50xx: CIG-WF-186W - LEDs are not configurable Signed-off-by: Ken --- .../boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts | 2 +- .../boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts | 2 +- .../boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts | 57 ++++++++++++++++--- .../boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts | 57 ++++++++++++++++--- 4 files changed, 100 insertions(+), 18 deletions(-) diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts index 7a7ead613..a5751eb40 100644 --- a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts @@ -700,7 +700,7 @@ bias-pull-down; }; led_pwr_r { - pins = "gpio46"; + pins = "gpio45"; function = "gpio"; drive-strength = <8>; bias-pull-down; diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts index 522a7bcb1..96b7b80de 100755 --- a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts +++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts @@ -700,7 +700,7 @@ bias-pull-down; }; led_pwr_r { - pins = "gpio46"; + pins = "gpio45"; function = "gpio"; drive-strength = <8>; bias-pull-down; diff --git a/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts index 0db49f3f5..9c9c973d3 100755 --- a/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts +++ b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts @@ -31,6 +31,10 @@ serial1 = &blsp1_uart2; ethernet0 = "/soc/dp1"; ethernet1 = "/soc/dp2"; + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; }; chosen { @@ -568,15 +572,31 @@ }; &soc { - pwm: pwm@0x1941010 { - pinctrl-0 = <&pwm_pins>; - pinctrl-names = "default"; - used-pwm-indices = <1>, <1>, <1>, <1>; - dft-pwm-status = <1>, <0>, <0>, <0>; - status = "ok"; - }; -}; + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&leds_pins>; + pinctrl-names = "default"; + led3 { + label = "blue:status"; + gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "blue-on"; + default-state = "off"; + }; + led2 { + label = "red:status"; + gpios = <&tlmm 45 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "red-on"; + default-state = "off"; + }; + led_power: led1 { + label = "green:status"; + gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "default-on"; + default-state = "on"; + }; + }; +}; &tlmm { pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; @@ -680,6 +700,27 @@ }; }; + leds_pins: leds_pins { + led_pwr_g { + pins = "gpio0"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_pwr_b { + pins = "gpio1"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_pwr_r { + pins = "gpio45"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + audio_pins: audio_pinmux { mux_1 { pins = "gpio24"; diff --git a/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts index 15605c0ea..eef0a79d1 100755 --- a/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts +++ b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186w.dts @@ -31,6 +31,10 @@ serial1 = &blsp1_uart2; ethernet0 = "/soc/dp1"; ethernet1 = "/soc/dp2"; + led-boot = &led_power; + led-failsafe = &led_power; + led-running = &led_power; + led-upgrade = &led_power; }; chosen { @@ -568,15 +572,31 @@ }; &soc { - pwm: pwm@0x1941010 { - pinctrl-0 = <&pwm_pins>; - pinctrl-names = "default"; - used-pwm-indices = <1>, <1>, <1>, <1>; - dft-pwm-status = <1>, <0>, <0>, <0>; - status = "ok"; - }; -}; + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&leds_pins>; + pinctrl-names = "default"; + led3 { + label = "blue:status"; + gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "blue-on"; + default-state = "off"; + }; + led2 { + label = "red:status"; + gpios = <&tlmm 45 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "red-on"; + default-state = "off"; + }; + led_power: led1 { + label = "green:status"; + gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "default-on"; + default-state = "on"; + }; + }; +}; &tlmm { pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; @@ -680,6 +700,27 @@ }; }; + leds_pins: leds_pins { + led_pwr_g { + pins = "gpio0"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_pwr_b { + pins = "gpio1"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_pwr_r { + pins = "gpio45"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + audio_pins: audio_pinmux { mux_1 { pins = "gpio24"; From 9a9f9e1cb9401a2ec5194c651b1e4e4cc882b047 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 6 Dec 2023 13:56:52 +0100 Subject: [PATCH 20/32] ucentral-state: reuse timers Signed-off-by: John Crispin --- feeds/ucentral/ucentral-state/files/ucentral-state | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/feeds/ucentral/ucentral-state/files/ucentral-state b/feeds/ucentral/ucentral-state/files/ucentral-state index ac26de027..428d39ad5 100755 --- a/feeds/ucentral/ucentral-state/files/ucentral-state +++ b/feeds/ucentral/ucentral-state/files/ucentral-state @@ -68,7 +68,10 @@ state = { }; function offline_handler() { - //ulog(LOG_INFO, 'going offline\n'); + let status = ubus.call('ucentral', 'status'); + if (status?.connected) + return; + ulog(LOG_INFO, 'going offline\n'); ubus.call('network.interface.admin_ui', 'up'); } @@ -142,8 +145,12 @@ let state_handler = { if (!led) return ubus.STATUS_INVALID_ARGUMENT; led_write(led, 'trigger', 'heartbeat'); - if (config.ui.offline_trigger) - offline_timer = uloop.timer(config.ui.offline_trigger * 1000, offline_handler); + if (config.ui.offline_trigger) { + if (offline_timer) + offline_timer.set(config.ui.offline_trigger * 1000); + else + offline_timer = uloop.timer(config.ui.offline_trigger * 1000, offline_handler); + } return 0; }, From 753967bf6b686d7630f2d7c070fe77f5be9311fb Mon Sep 17 00:00:00 2001 From: OutBack Dingo Date: Wed, 6 Dec 2023 09:17:28 -0500 Subject: [PATCH 21/32] ipq807x: remove all Xu related and add OptimCloud support Signed-off-by: OutBack Dingo --- .../ipq807x/base-files/etc/board.d/02_network | 7 + .../etc/hotplug.d/firmware/10-ath11k-caldata | 12 + .../base-files/lib/upgrade/platform.sh | 10 +- .../dts/qcom/qcom-ipq5018-xunison-d50-5g.dtsi | 1442 ----------------- .../dts/qcom/qcom-ipq5018-xunison-d50.dtsi | 1442 ----------------- feeds/ipq807x/ipq807x/image/ipq50xx.mk | 53 + feeds/wifi-ax/ath11k-wifi/Makefile | 26 + .../board-optimcloud-d50.bin.IPQ5018 | Bin 0 -> 131072 bytes .../board-optimcloud-d50.bin.QCN9074 | Bin 0 -> 131072 bytes .../board-optimcloud-d60.bin.IPQ5018 | Bin 0 -> 131072 bytes .../board-optimcloud-d60.bin.QCN9074 | Bin 0 -> 131072 bytes profiles/optimcloud_d50-5g.yml | 17 +- profiles/optimcloud_d50.yml | 17 +- profiles/optimcloud_d60-5g.yml | 17 +- profiles/optimcloud_d60.yml | 17 +- 15 files changed, 151 insertions(+), 2909 deletions(-) delete mode 100755 feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-xunison-d50-5g.dtsi delete mode 100755 feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-xunison-d50.dtsi create mode 100644 feeds/wifi-ax/ath11k-wifi/board-optimcloud-d50.bin.IPQ5018 create mode 100644 feeds/wifi-ax/ath11k-wifi/board-optimcloud-d50.bin.QCN9074 create mode 100644 feeds/wifi-ax/ath11k-wifi/board-optimcloud-d60.bin.IPQ5018 create mode 100644 feeds/wifi-ax/ath11k-wifi/board-optimcloud-d60.bin.QCN9074 diff --git a/feeds/ipq807x/ipq807x/base-files/etc/board.d/02_network b/feeds/ipq807x/ipq807x/base-files/etc/board.d/02_network index 68f1a5d24..2f762efa0 100755 --- a/feeds/ipq807x/ipq807x/base-files/etc/board.d/02_network +++ b/feeds/ipq807x/ipq807x/base-files/etc/board.d/02_network @@ -102,6 +102,13 @@ qcom_setup_interfaces() ucidef_add_switch "switch1" \ "6@eth1" "1:lan" "2:lan" "3:lan" "4:lan" ;; + optimcloud,d60|\ + optimcloud,d60-5g|\ + optimcloud,d50|\ + optimcloud,d50-5g) + ucidef_set_interface_wan "eth0" + ucidef_set_interface_lan "eth1" + ;; qcom,ipq5018-mp03.1) ucidef_set_interface_lan "eth1" ucidef_set_interface_wan "eth0" diff --git a/feeds/ipq807x/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata b/feeds/ipq807x/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata index 678ac332f..27dae3e67 100755 --- a/feeds/ipq807x/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata +++ b/feeds/ipq807x/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata @@ -208,6 +208,10 @@ ath11k/IPQ5018/hw1.0/caldata.bin) liteon,wpx8324|\ motorola,q14|\ muxi,ap3220l|\ + optimcloud,d60|\ + optimcloud,d60-5g|\ + optimcloud,d50|\ + optimcloud,d50-5g|\ qcom,ipq5018-mp03.1) caldata_extract "0:ART" 0x1000 0x20000 ;; @@ -249,6 +253,10 @@ ath11k/QCN9074/hw1.0/caldata_1.bin) cig,wf196|\ wallys,dr6018-v4|\ cybertan,eww622-a1|\ + optimcloud,d60|\ + optimcloud,d60-5g|\ + optimcloud,d50|\ + optimcloud,d50-5g|\ qcom,ipq5018-mp03.1|\ qcom,ipq807x-hk14) caldata_extract "0:ART" 0x26800 0x20000 @@ -287,6 +295,10 @@ ath11k-macs) indio,um-310ax-v1|\ indio,um-510axp-v1|\ indio,um-510axm-v1|\ + optimcloud,d60|\ + optimcloud,d60-5g|\ + optimcloud,d50|\ + optimcloud,d50-5g|\ cig,wf188n) ath11k_generate_macs ;; diff --git a/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh b/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh index 30d4e23ff..ca17d3382 100755 --- a/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh +++ b/feeds/ipq807x/ipq807x/base-files/lib/upgrade/platform.sh @@ -38,7 +38,7 @@ do_flash_emmc() { local emmcblock=$(find_mmc_part $2) local board_dir=$3 local part=$4 - + [ -b "$emmcblock" ] || emmcblock=$(find_mmc_part $2) [ -z "$emmcblock" ] && { @@ -162,6 +162,10 @@ platform_check_image() { qcom,ipq6018-cp01|\ qcom,ipq807x-hk01|\ qcom,ipq807x-hk14|\ + optimcloud,d60|\ + optimcloud,d60-5g|\ + optimcloud,d50|\ + optimcloud,d50-5g|\ qcom,ipq5018-mp03.3) [ "$magic_long" = "73797375" ] && return 0 ;; @@ -200,6 +204,10 @@ platform_do_upgrade() { qcom,ipq6018-cp01|\ qcom,ipq807x-hk01|\ qcom,ipq807x-hk14|\ + optimcloud,d60|\ + optimcloud,d60-5g|\ + optimcloud,d50|\ + optimcloud,d50-5g|\ qcom,ipq5018-mp03.3|\ wallys,dr5018|\ wallys,dr6018|\ diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-xunison-d50-5g.dtsi b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-xunison-d50-5g.dtsi deleted file mode 100755 index 5778a4c41..000000000 --- a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-xunison-d50-5g.dtsi +++ /dev/null @@ -1,1442 +0,0 @@ -/* - * Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include -#include -#include -#include -#include -#include -#include "qcom-ipq5018-memory.dtsi" -#include "qcom-ipq5018-mhi.dtsi" -#include "ipq5018_clocks.dtsi" - -/ { - model = "Qualcomm Technologies, Inc. IPQ5018"; - compatible = "qcom,ipq5018"; - - psci { - compatible = "arm,psci-1.0"; - method = "smc"; - status = "ok"; - }; - -#ifdef ENABLE_QSEECOM - qseecom { - compatible = "ipq5018-qseecom"; - mem-start = <0x4a400000>; - mem-size = <0x200000>; - }; -#endif - - soc: soc { - #address-cells = <0x1>; - #size-cells = <0x1>; - ranges = <0 0 0 0xffffffff>; - compatible = "simple-bus"; - - intc: interrupt-controller@b000000 { - compatible = "qcom,msm-qgic2"; - interrupt-controller; - #interrupt-cells = <0x3>; - reg = <0xb000000 0x1000>, <0xb002000 0x1000>; - ranges = <0x0 0xb00a000 0x1ffa>; - - v2m0: v2m@0 { - compatible = "arm,gic-v2m-frame"; - msi-controller; - reg = <0x0 0xffd>; - }; - - v2m1: v2m@1000 { - compatible = "arm,gic-v2m-frame"; - msi-controller; - reg = <0x1000 0xffd>; - }; - }; - - timer { - compatible = "arm,armv8-timer"; - interrupts = , - , - , - ; - clock-frequency = <24000000>; - }; - - gcc: gcc@1800000 { - compatible = "qcom,gcc-ipq5018"; - reg = <0x1800000 0x80000>; - #clock-cells = <0x1>; - #reset-cells = <0x1>; - }; - - apss_clk: qcom,apss_clk@b111000 { - compatible = "qcom,apss-ipq5018"; - reg = <0xb111000 0x6000>; - #clock-cells = <0x1>; - #reset-cells = <1>; - }; - - blsp1_uart2: serial@78b0000 { - compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; - reg = <0x78b0000 0x200>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - status = "disabled"; - }; - - blsp1_uart1: serial@78af000 { - compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; - reg = <0x78af000 0x200>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - status = "disabled"; - }; - - blsp_dma: dma@7884000 { - compatible = "qcom,bam-v1.7.0"; - reg = <0x07884000 0x1d000>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "bam_clk"; - #dma-cells = <1>; - qcom,ee = <0>; - }; - - spi_0: spi@78b5000 { /* BLSP1 QUP0 */ - compatible = "qcom,spi-qup-v2.2.1"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x78b5000 0x600>; - interrupts = ; - spi-max-frequency = <50000000>; - clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - dmas = <&blsp_dma 4>, <&blsp_dma 5>; - dma-names = "tx", "rx"; - status = "disabled"; - }; - pwm { - compatible = "qca,ipq6018-pwm"; - reg = <0x1941010 0x20>; - clocks = <&gcc GCC_ADSS_PWM_CLK>; - clock-names = "core"; - src-freq = <100000000>; - pwm-base-index = <0>; - used-pwm-indices = <1>, <1>, <1>, <1>; - status = "disabled"; - }; - - mdio0: mdio@88000 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "qcom,qca-mdio", "qcom,ipq40xx-mdio"; - reg = <0x88000 0x64>; - status = "disabled"; - resets = <&gcc GCC_GEPHY_MDC_SW_ARES>; - reset-names = "gephy_mdc_rst"; - }; - - mdio1: mdio@90000 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "qcom,qca-mdio"; - reg = <0x90000 0x64>; - status = "disabled"; - }; - ess-instance { - ess-switch@0x39c00000 { - compatible = "qcom,ess-switch-ipq50xx"; - reg = <0x39c00000 0x200000>; - switch_access_mode = "local bus"; - clocks = <&gcc GCC_CMN_BLK_AHB_CLK>, - <&gcc GCC_CMN_BLK_SYS_CLK>, - <&gcc GCC_UNIPHY_AHB_CLK>, - <&gcc GCC_UNIPHY_SYS_CLK>, - <&gcc GCC_MDIO0_AHB_CLK>, - <&gcc GCC_MDIO1_AHB_CLK>, - <&gcc GCC_GMAC0_CFG_CLK>, - <&gcc GCC_GMAC0_SYS_CLK>, - <&gcc GCC_GMAC1_CFG_CLK>, - <&gcc GCC_GMAC1_SYS_CLK>, - <&gcc GCC_GEPHY_RX_CLK>, - <&gcc GCC_GEPHY_TX_CLK>, - <&gcc GCC_UNIPHY_RX_CLK>, - <&gcc GCC_UNIPHY_TX_CLK>, - <&gcc GCC_GMAC0_RX_CLK>, - <&gcc GCC_GMAC0_TX_CLK>, - <&gcc GCC_GMAC1_RX_CLK>, - <&gcc GCC_GMAC1_TX_CLK>, - <&gcc GCC_SNOC_GMAC0_AHB_CLK>, - <&gcc GCC_SNOC_GMAC1_AHB_CLK>, - <&gcc GCC_GMAC0_PTP_CLK>, - <&gcc GCC_GMAC1_PTP_CLK>; - clock-names = "cmn_ahb_clk", "cmn_sys_clk", - "uniphy_ahb_clk", "uniphy_sys_clk", - "gcc_mdio0_ahb_clk", - "gcc_mdio1_ahb_clk", - "gcc_gmac0_cfg_clk", - "gcc_gmac0_sys_clk", - "gcc_gmac1_cfg_clk", - "gcc_gmac1_sys_clk", - "uniphy0_port1_rx_clk", - "uniphy0_port1_tx_clk", - "uniphy1_port5_rx_clk", - "uniphy1_port5_tx_clk", - "nss_port1_rx_clk", "nss_port1_tx_clk", - "nss_port2_rx_clk", "nss_port2_tx_clk", - "gcc_snoc_gmac0_ahb_clk", - "gcc_snoc_gmac1_ahb_clk", - "gcc_gmac0_ptp_clk", - "gcc_gmac1_ptp_clk"; - resets = <&gcc GCC_GEPHY_BCR>, <&gcc GCC_UNIPHY_BCR>, - <&gcc GCC_GMAC0_BCR>, <&gcc GCC_GMAC1_BCR>, - <&gcc GCC_UNIPHY_SOFT_RESET>, - <&gcc GCC_GEPHY_MISC_ARES>; - reset-names = "gephy_bcr_rst", "uniphy_bcr_rst", - "gmac0_bcr_rst", "gmac1_bcr_rst", - "uniphy1_soft_rst", - "gephy_misc_rst"; - }; - }; - - ess-uniphy@98000 { - compatible = "qcom,ess-uniphy"; - reg = <0x98000 0x800>; - uniphy_access_mode = "local bus"; - }; - - msm_imem: qcom,msm-imem@8600000 { - compatible = "qcom,msm-imem"; - reg = <0x08600000 0x1000>; - ranges = <0x0 0x08600000 0x1000>; - #address-cells = <1>; - #size-cells = <1>; - - mem_dump_table@10 { - compatible = "qcom,msm-imem-mem_dump_table"; - reg = <0x10 8>; - }; - }; - - cryptobam: dma@704000 { - compatible = "qcom,bam-v1.7.0"; - reg = <0x00704000 0x20000>; - interrupts = ; - clocks = <&gcc GCC_CRYPTO_AHB_CLK>; - clock-names = "bam_clk"; - #dma-cells = <1>; - qcom,ee = <1>; - qcom,controlled-remotely = <1>; - }; - - crypto: crypto@73a000 { - compatible = "qcom,crypto-v5.1"; - reg = <0x0073a000 0x6000>; - clocks = <&gcc GCC_CRYPTO_AHB_CLK>, - <&gcc GCC_CRYPTO_AXI_CLK>, - <&gcc GCC_CRYPTO_CLK>; - clock-names = "iface", "bus", "core"; - dmas = <&cryptobam 2>, <&cryptobam 3>; - dma-names = "rx", "tx"; - qce,cmd_desc_support; - }; - - qpic_bam: dma@7984000{ - compatible = "qcom,bam-v1.7.0"; - reg = <0x7984000 0x1c000>; - interrupts = ; - clocks = <&gcc GCC_QPIC_AHB_CLK>; - clock-names = "bam_clk"; - #dma-cells = <1>; - qcom,ee = <0>; - status = "disabled"; - }; - - qcom,sps { - compatible = "qcom,msm_sps_4k"; - qcom,pipe-attr-ee; - }; - - nand: qpic-nand@79b0000 { - compatible = "qcom,ebi2-nandc-bam-v2.1.1"; - reg = <0x79b0000 0x10000>; - #address-cells = <1>; - #size-cells = <0>; - clocks = <&gcc GCC_QPIC_CLK>, - <&gcc GCC_QPIC_AHB_CLK>, - <&gcc GCC_QPIC_IO_MACRO_CLK>; - clock-names = "core", "aon", "io_macro"; - - dmas = <&qpic_bam 0>, - <&qpic_bam 1>, - <&qpic_bam 2>, - <&qpic_bam 3>; - dma-names = "tx", "rx", "cmd", "status"; - - qpic,io_macro_clk_rates = <24000000 100000000 200000000 320000000>; - status = "disabled"; - - nandcs@0 { - compatible = "qcom,nandcs"; - reg = <0>; - #address-cells = <1>; - #size-cells = <1>; - - nand-ecc-strength = <4>; - nand-ecc-step-size = <512>; - nand-bus-width = <8>; - }; - }; - - sdhc_1: sdhci@7804000 { - compatible = "qcom,sdhci-msm-v5"; - reg = <0x7804000 0x1000>; - reg-names = "hc_mem"; - - interrupts = , - ; - interrupt-names = "hc_irq", "pwr_irq"; - - qcom,bus-width = <4>; - qcom,max_clk = <192000000>; - - qcom,dedicated-io = <1>; - - /* device core power supply */ - qcom,vdd-voltage-level = <2900000 2900000>; - qcom,vdd-current-level = <200 570000>; - - /* device communication power supply */ - qcom,vdd-io-lpm-sup; - qcom,vdd-io-voltage-level = <1800000 1800000>; - qcom,vdd-io-current-level = <200 325000>; - qcom,vdd-io-always-on; - - qcom,cpu-dma-latency-us = <701>; - qcom,msm-bus,name = "sdhc1"; - qcom,msm-bus,num-cases = <9>; - qcom,msm-bus,num-paths = <1>; - qcom,msm-bus,vectors-KBps = <78 512 0 0>, /* No vote */ - <78 512 1046 3200>, /* 400 KB/s*/ - <78 512 52286 160000>, /* 20 MB/s */ - <78 512 65360 200000>, /* 25 MB/s */ - <78 512 130718 400000>, /* 50 MB/s */ - <78 512 261438 800000>, /* 100 MB/s */ - <78 512 261438 800000>, /* 200 MB/s */ - <78 512 261438 800000>, /* 400 MB/s */ - <78 512 1338562 4096000>; /* Max. bandwidth */ - qcom,bus-bw-vectors-bps = <0 400000 20000000 25000000 \ - 50000000 100000000 200000000 \ - 400000000 4294967295>; - - clocks = <&gcc GCC_SDCC1_AHB_CLK>, - <&gcc GCC_SDCC1_APPS_CLK>; - clock-names = "iface_clk", "core_clk"; - qcom,large-address-bus; - qcom,disable-aggressive-pm; - status = "disabled"; - }; - - nss-common { - compatible = "qcom,nss-common"; - reg = <0x01868010 0x01>; - reg-names = "nss-misc-reset"; - }; - - nss0: nss@40000000 { - compatible = "qcom,nss"; - interrupts = <0 402 0x1>, <0 401 0x1>, <0 400 0x1>, - <0 399 0x1>, <0 398 0x1>, <0 397 0x1>, - <0 396 0x1>, <0 395 0x1>; - reg = <0x07a00000 0x100>, <0x0b111000 0x1000>; - reg-names = "nphys", "qgic-phys"; - clocks = <&gcc GCC_UBI0_CFG_CLK>, - <&gcc GCC_UBI0_DBG_CLK>, - <&gcc GCC_UBI0_CORE_CLK>, - <&gcc GCC_UBI0_UTCM_CLK>, - <&gcc GCC_UBI0_AXI_CLK>, - <&gcc GCC_SNOC_UBI0_AXI_CLK>, - <&gcc GCC_UBI0_NC_AXI_CLK>; - clock-names = "nss-cfg-clk", "nss-dbg-clk", - "nss-core-clk", "nss-utcm-clk", - "nss-axi-clk", - "nss-snoc-axi-clk", - "nss-nc-axi-clk"; - qcom,id = <0>; - qcom,num-queue = <4>; - qcom,num-irq = <8>; - qcom,num-pri = <4>; - qcom,load-addr = <0x40000000>; - qcom,low-frequency = <850000000>; - qcom,mid-frequency = <850000000>; - qcom,max-frequency = <1000000000>; - qcom,ipv4-enabled; - qcom,ipv4-reasm-enabled; - qcom,ipv6-enabled; - qcom,ipv6-reasm-enabled; - qcom,wlanredirect-enabled; - qcom,tun6rd-enabled; - qcom,l2tpv2-enabled; - qcom,gre-enabled; - qcom,gre-redir-enabled; - qcom,gre-redir-mark-enabled; - qcom,map-t-enabled; - qcom,portid-enabled; - qcom,pppoe-enabled; - qcom,pptp-enabled; - qcom,tunipip6-enabled; - qcom,shaping-enabled; - qcom,wlan-dataplane-offload-enabled; - qcom,pvxlan-enabled; - qcom,clmap-enabled; - qcom,vxlan-enabled; - qcom,match-enabled; - qcom,mirror-enabled; - qcom,crypto-enabled; - qcom,ipsec-enabled; - qcom,rmnet_rx-enabled; - qcom,udp-st-enabled; - }; - - nss-dp-common { - compatible = "qcom,nss-dp-common"; - qcom,tcsr-base = <0x01937000>; - }; - - nss_crypto: qcom,nss_crypto { - compatible = "qcom,nss-crypto"; - #address-cells = <1>; - #size-cells = <1>; - qcom,max-contexts = <64>; - qcom,max-context-size = <144>; - ranges; - ce5_node { - compatible = "qcom,ce5"; - reg-names = "crypto_pbase", "bam_base"; - reg = <0x0073a000 0x6000>, - <0x00704000 0x20000>; - qcom,dma-mask = <0x0c>; - qcom,transform-enabled; - qcom,aes128-cbc; - qcom,aes256-cbc; - qcom,aes128-ctr; - qcom,aes256-ctr; - qcom,aes128-ecb; - qcom,aes256-ecb; - qcom,3des-cbc; - qcom,sha160-hash; - qcom,sha256-hash; - qcom,sha160-hmac; - qcom,sha256-hmac; - qcom,aes128-cbc-sha160-hmac; - qcom,aes256-cbc-sha160-hmac; - qcom,aes128-ctr-sha160-hmac; - qcom,aes256-ctr-sha160-hmac; - qcom,3des-cbc-sha160-hmac; - qcom,3des-cbc-sha256-hmac; - qcom,aes128-cbc-sha256-hmac; - qcom,aes256-cbc-sha256-hmac; - qcom,aes128-ctr-sha256-hmac; - qcom,aes256-ctr-sha256-hmac; - engine0 { - qcom,ee = <2 3>; - }; - }; - }; - - acc0:clock-controller@b188000 { - compatible = "qcom,arm-cortex-acc"; - reg = <0x0b188000 0x1000>; - }; - - acc1:clock-controller@b198000 { - compatible = "qcom,arm-cortex-acc"; - reg = <0x0b198000 0x1000>; - }; - - qcom_rng: qrng@e1000 { - compatible = "qcom,prng-ipq807x"; - reg = <0xe3000 0x1000>; - clocks = <&gcc GCC_PRNG_AHB_CLK>; - clock-names = "core"; - status = "ok"; - }; - - qca,scm_restart_reason { - compatible = "qca,scm_restart_reason"; - dload_status = <0>; - dload_warm_reset = <0>; - }; - - watchdog: watchdog@b017000 { - compatible = "qcom,kpss-wdt-ipq5018"; - reg = <0xb017000 0x1000>; - reg-names = "kpss_wdt"; - interrupt-names = "bark_irq"; - interrupts = ; - clocks = <&sleep_clk>; - timeout-sec = <10>; - wdt-max-timeout = <32>; - }; - - apcs: syscon@b111000 { - compatible = "syscon"; - reg = <0x0B111000 0x1000>; - }; - - wcss: smp2p-wcss { - compatible = "qcom,smp2p"; - qcom,smem = <435>, <428>; - - interrupt-parent = <&intc>; - interrupts = <0 177 1>; - - qcom,ipc = <&apcs 8 9>; - - qcom,local-pid = <0>; - qcom,remote-pid = <1>; - - wcss_smp2p_out: master-kernel { - qcom,entry-name = "master-kernel"; - qcom,smp2p-feature-ssr-ack; - #qcom,smem-state-cells = <1>; - }; - - wcss_smp2p_in: slave-kernel { - qcom,entry-name = "slave-kernel"; - interrupt-controller; - #interrupt-cells = <2>; - }; - }; - - q6v5_wcss: q6v5_wcss@CD00000 { - compatible = "qca,q6v5-wcss-rproc-ipq50xx"; - firmware = "IPQ5018/q6_fw.mdt"; - reg = <0xCD00000 0x10000>, - <0x194f000 0x10>, - <0x1952000 0x10>, - <0x4ab000 0x20>, - <0x1818000 0x10>, - <0x1859000 0x10>, - <0x1945000 0x10>, - <0x193D204 0x4>; - reg-names = "wcss-base", - "tcsr-q6-base", - "tcsr-base", - "mpm-base", - "gcc-wcss-bcr-base", - "gcc-wcss-misc-base", - "tcsr-global", - "tcsr-q6-boot-trig"; - qca,auto-restart; - qca,extended-intc; - qca,dump-q6-reg; - qca,emulation; - interrupts-extended = <&intc 0 291 1>, - <&wcss_smp2p_in 0 0>, - <&wcss_smp2p_in 1 0>, - <&wcss_smp2p_in 3 0>; - interrupt-names = "wdog", - "qcom,gpio-err-fatal", - "qcom,gpio-err-ready", - "qcom,gpio-stop-ack"; - qcom,smem-states = <&wcss_smp2p_out 0>, - <&wcss_smp2p_out 1>; - qcom,smem-state-names = "shutdown", - "stop"; - }; - - q6v5_m3: q6v5_m3 { - compatible = "qca,q6v5-m3-rproc"; - firmware = "IPQ5018/m3_fw.mdt"; - qca,auto-restart; - qcom,restart-group = <&q6v5_m3 &q6v5_wcss>; - }; - - tcsr_mutex_block: syscon@1905000 { - compatible = "syscon"; - reg = <0x1905000 0x8000>; - }; - - tcsr_mutex: hwlock@1905000 { - compatible = "qcom,tcsr-mutex"; - syscon = <&tcsr_mutex_block 0 0x80>; - #hwlock-cells = <1>; - }; - - smem: qcom,smem@4AB00000 { - compatible = "qcom,smem"; - memory-region = <&smem_region>; - hwlocks = <&tcsr_mutex 0>; - }; - - apcs_glb: mailbox@b111000 { - compatible = "qcom,msm8996-apcs-hmss-global"; - qcom,ipc = <&apcs 8 8>; - - #mbox-cells = <1>; - }; - - tcsr_q6_block: syscon@1945000 { - compatible = "syscon"; - reg = <0x1945000 0xE000>; - }; - - qcom_q6v5_wcss: qcom_q6v5_wcss@CD00000 { - compatible = "qcom,ipq5018-wcss-pil"; - firmware = "IPQ5018/q6_fw.mdt"; - m3_firmware = "IPQ5018/m3_fw.mdt"; - reg = <0xCD00000 0x4040>, - <0x4ab000 0x20>, - <0x4a1000 0x10>, - <0x1938000 0x8>, - <0x193D204 0x4>; - reg-names = "qdsp6", - "rmb", - "mpm", - "tcsr-msip", - "tcsr-q6-boot-trig"; - clocks = <&gcc GCC_Q6_AXIS_CLK>, - <&gcc GCC_WCSS_AHB_S_CLK>, - <&gcc GCC_WCSS_ECAHB_CLK>, - <&gcc GCC_WCSS_ACMT_CLK>, - <&gcc GCC_WCSS_AXI_M_CLK>, - <&gcc GCC_Q6_AXIM_CLK>, - <&gcc GCC_Q6_AXIM2_CLK>, - <&gcc GCC_Q6_AHB_CLK>, - <&gcc GCC_Q6_AHB_S_CLK>, - <&gcc GCC_WCSS_AXI_S_CLK>; - clock-names = "gcc_q6_axis_clk", - "gcc_wcss_ahb_s_clk", - "gcc_wcss_ecahb_clk", - "gcc_wcss_acmt_clk", - "gcc_wcss_axi_m_clk", - "gcc_q6_axim_clk", - "gcc_q6_axim2_clk", - "gcc_q6_ahb_clk", - "gcc_q6_ahb_s_clk", - "gcc_wcss_axi_s_clk"; - qca,auto-restart; - qca,extended-intc; - qca,wcss-aon-reset-seq; - interrupts-extended = <&intc 0 291 1>, - <&wcss_smp2p_in 0 0>, - <&wcss_smp2p_in 1 0>, - <&wcss_smp2p_in 2 0>, - <&wcss_smp2p_in 3 0>; - interrupt-names = "wdog", - "fatal", - "ready", - "handover", - "stop-ack"; - - resets = <&gcc GCC_WCSSAON_RESET>, - <&gcc GCC_WCSS_BCR>, - <&gcc GCC_WCSS_Q6_BCR>, - <&gcc GCC_CE_BCR>; - - reset-names = "wcss_aon_reset", - "wcss_reset", - "wcss_q6_reset", - "ce_reset"; - - qcom,halt-regs = <&tcsr_q6_block 0xA000 0xD000 0x0>; - - qcom,smem-states = <&wcss_smp2p_out 0>, - <&wcss_smp2p_out 1>; - qcom,smem-state-names = "shutdown", - "stop"; - - qcom,q6v6; - - glink-edge { - interrupts = ; - qcom,remote-pid = <1>; - mboxes = <&apcs_glb 8>; - - rpm_requests { - qcom,glink-channels = "IPCRTR"; - }; - }; - }; - - wifi0: wifi@c000000 { - compatible = "qcom,cnss-qca5018", "qcom,ipq5018-wifi"; - reg = <0xc000000 0x1000000>; - #ifdef __IPQ_MEM_PROFILE_256_MB__ - qcom,tgt-mem-mode = <2>; - #else - qcom,tgt-mem-mode = <1>; - #endif - qcom,rproc = <&qcom_q6v5_wcss>; - interrupts = <0 288 1>, /* o_wcss_apps_intr[0] = */ - <0 289 1>, - <0 290 1>, - <0 292 1>, - <0 293 1>, - <0 294 1>, - <0 295 1>, - <0 296 1>, - <0 297 1>, - <0 298 1>, - <0 299 1>, - <0 300 1>, - <0 301 1>, - <0 302 1>, - <0 303 1>, - <0 304 1>, - <0 305 1>, - <0 306 1>, - <0 307 1>, - <0 308 1>, - <0 309 1>, - <0 310 1>, - <0 311 1>, - <0 312 1>, - <0 313 1>, /* o_wcss_apps_intr[25] */ - - <0 314 1>, - <0 315 1>, - <0 316 1>, - <0 317 1>, - <0 318 1>, - <0 319 1>, - <0 320 1>, - <0 321 1>, - <0 322 1>, - <0 323 1>, - <0 324 1>, - <0 325 1>, - - <0 326 1>, - - <0 327 1>, - <0 328 1>, - <0 329 1>, - <0 330 1>, - <0 331 1>, - <0 332 1>, - - <0 333 1>, - <0 334 1>, - <0 335 1>, - <0 336 1>, - <0 337 1>, - <0 338 1>, - <0 339 1>; /* o_wcss_apps_intr[51] */ - - interrupt-names = "misc-pulse1", - "misc-latch", - "sw-exception", - "ce0", - "ce1", - "ce2", - "ce3", - "ce4", - "ce5", - "ce6", - "ce7", - "ce8", - "ce9", - "ce10", - "ce11", - "host2wbm-desc-feed", - "host2reo-re-injection", - "host2reo-command", - "host2rxdma-monitor-ring3", - "host2rxdma-monitor-ring2", - "host2rxdma-monitor-ring1", - "reo2ost-exception", - "wbm2host-rx-release", - "reo2host-status", - "reo2host-destination-ring4", - "reo2host-destination-ring3", - "reo2host-destination-ring2", - "reo2host-destination-ring1", - "rxdma2host-monitor-destination-mac3", - "rxdma2host-monitor-destination-mac2", - "rxdma2host-monitor-destination-mac1", - "ppdu-end-interrupts-mac3", - "ppdu-end-interrupts-mac2", - "ppdu-end-interrupts-mac1", - "rxdma2host-monitor-status-ring-mac3", - "rxdma2host-monitor-status-ring-mac2", - "rxdma2host-monitor-status-ring-mac1", - "host2rxdma-host-buf-ring-mac3", - "host2rxdma-host-buf-ring-mac2", - "host2rxdma-host-buf-ring-mac1", - "rxdma2host-destination-ring-mac3", - "rxdma2host-destination-ring-mac2", - "rxdma2host-destination-ring-mac1", - "host2tcl-input-ring4", - "host2tcl-input-ring3", - "host2tcl-input-ring2", - "host2tcl-input-ring1", - "wbm2host-tx-completions-ring3", - "wbm2host-tx-completions-ring2", - "wbm2host-tx-completions-ring1", - "tcl2host-status-ring"; - status = "disabled"; - qcom,pta-num = <0>; - qcom,coex-mode = <0x3>; - qcom,bt-active-time = <0>; - qcom,bt-priority-time = <0>; - qcom,coex-algo = <0x2>; - qcom,pta-priority = <0>; - }; - - wifi1: wifi1@c000000 { - compatible = "qcom,cnss-qcn6122", "qcom,qcn6122-wifi"; - qcom,rproc = <&qcom_q6v5_wcss>; - status = "disabled"; - }; - - wifi2: wifi2@c000000 { - compatible = "qcom,cnss-qcn6122", "qcom,qcn6122-wifi"; - qcom,rproc = <&qcom_q6v5_wcss>; - status = "disabled"; - }; - - i2c_0: i2c@78b7000 { - compatible = "qcom,i2c-qup-v2.2.1"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x78b7000 0x600>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_AHB_CLK>, - <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>; - clock-names = "iface", "core"; - clock-frequency = <100000>; - qup-clock-frequency = <9600000>; - dmas = <&blsp_dma 9>, <&blsp_dma 8>; - dma-names = "rx", "tx"; - status = "disabled"; - }; - - tlmm: pinctrl@1000000 { - compatible = "qcom,ipq5018-pinctrl"; - reg = <0x1000000 0x300000>; - interrupts = <0x0 0xd0 0x0>; - gpio-controller; - #gpio-cells = <0x2>; - interrupt-controller; - #interrupt-cells = <0x2>; - }; - - dbm_1p5: dbm@0x8AF8000 { - compatible = "qcom,usb-dbm-1p5"; - reg = <0x8AF8000 0x300>; - qcom,reset-ep-after-lpm-resume; - }; - - hs_m31phy_0: hs_m31phy@5b000 { - compatible = "qca,m31-usb-hsphy"; - reg = <0x05b000 0x120>, - <0x08af8800 0x400>; - reg-names = "m31usb_phy_base", - "qscratch_base"; - phy_type= "utmi"; - - resets = <&gcc GCC_QUSB2_0_PHY_BCR>; - reset-names = "usb2_phy_reset"; - - status = "disabled"; - }; - - ssuniphy_0: ssuniphy@5d000 { - compatible = "qca,ipq5018-uni-ssphy"; - reg = <0x5d000 0x800>; - clocks = <&gcc GCC_USB0_PIPE_CLK>, - <&gcc GCC_USB0_PHY_CFG_AHB_CLK>; - - clock-names = "pipe_clk", "phy_cfg_ahb_clk"; - - resets = <&gcc GCC_USB0_PHY_BCR>; - reset-names = "por_rst"; - #phy-cells = <0>; - status = "disabled"; - }; - - usb3: usb3@8A00000 { - compatible = "qcom,ipq5018-dwc3"; - #address-cells = <1>; - #size-cells = <1>; - ranges; - reg = <0x8AF8800 0x100>, - <0x8A00000 0xe000>; - reg-names = "qscratch_base", "dwc3_base"; - clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, - <&gcc GCC_USB0_MASTER_CLK>, - <&gcc GCC_USB0_SLEEP_CLK>, - <&gcc GCC_USB0_MOCK_UTMI_CLK>, - <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, - <&gcc GCC_USB0_AUX_CLK>, - <&gcc GCC_USB0_LFPS_CLK>, - <&gcc GCC_USB0_PIPE_CLK>; - clock-names = "sys_noc_axi", - "master", - "sleep", - "mock_utmi", - "cfg_ahb_clk", - "aux_clk", - "lfps_clk", - "pipe_clk"; - assigned-clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, - <&gcc GCC_USB0_MASTER_CLK>, - <&gcc GCC_USB0_MOCK_UTMI_CLK>; - assigned-clock-rates = <133330000>, - <133330000>, - <60000000>; - resets = <&gcc GCC_USB0_BCR>; - reset-names = "usb30_mstr_rst"; - qca,host = <1>; - qcom,usb-dbm = <&dbm_1p5>; - status = "disabled"; - - dwc_0: dwc3@8A00000 { - compatible = "snps,dwc3"; - reg = <0x8A00000 0xe000>; - interrupts = ; - usb-phy = <&hs_m31phy_0>; - #phy-cells = <0>; - phys = <&ssuniphy_0>; - phy-names = "usb3-phy"; - snps,dis_ep_cache_eviction; - tx-fifo-resize; - snps,usb3-u1u2-disable; - snps,nominal-elastic-buffer; - snps,is-utmi-l1-suspend; - snps,hird-threshold = /bits/ 8 <0x0>; - snps,dis_u2_susphy_quirk; - snps,dis_u3_susphy_quirk; - snps,quirk-ref-clock-adjustment = <0x49459>; - snps,quirk-ref-clock-period = <0x10>; - snps,quirk-30m-sb-sel = <0x0>; - dr_mode = "host"; - }; - }; - - qcom,usbbam@8B04000 { - compatible = "qcom,usb-bam-msm"; - reg = <0x8B04000 0x17000>; - interrupt-parent = <&intc>; - interrupts = <0 135 0>; - - qcom,bam-type = <0>; - qcom,usb-bam-fifo-baseaddr = <0x4A600000>; - qcom,usb-bam-num-pipes = <4>; - qcom,ignore-core-reset-ack; - qcom,disable-clk-gating; - qcom,usb-bam-override-threshold = <0x4001>; - qcom,usb-bam-max-mbps-highspeed = <400>; - qcom,usb-bam-max-mbps-superspeed = <3600>; - qcom,reset-bam-on-connect; - - qcom,pipe0 { - label = "ssusb-qdss-in-0"; - qcom,usb-bam-mem-type = <2>; - qcom,dir = <1>; - qcom,pipe-num = <0>; - qcom,peer-bam = <0>; - qcom,peer-bam-physical-address = <0x6064000>; - qcom,src-bam-pipe-index = <0>; - qcom,dst-bam-pipe-index = <0>; - qcom,data-fifo-offset = <0x0>; - qcom,data-fifo-size = <0xe00>; - qcom,descriptor-fifo-offset = <0xe00>; - qcom,descriptor-fifo-size = <0x200>; - }; - }; - - qcom,diag@0 { - compatible = "qcom,diag"; - status = "ok"; - }; - - pcie_x1phy: phy@7e000{ - compatible = "qca,uni-pcie-phy-gen2"; - reg = <0x7e000 0x800>; - phy-type = "gen2"; - #phy-cells = <0>; - clocks = <&gcc GCC_PCIE1_PIPE_CLK>; - clock-names = "pipe_clk"; - - resets = <&gcc GCC_PCIE1_PHY_BCR>, - <&gcc GCC_PCIE1PHY_PHY_BCR>; - reset-names = "phy", - "phy_phy"; - mode_fixed = <2>; - status = "disabled"; - }; - - pcie_x1: pci@80000000 { - compatible = "qcom,pcie-ipq5018"; - reg = <0x80000000 0xf1d - 0x80000F20 0xa8 - 0x80001000 0x1000 - 0x78000 0x3000 - 0x80100000 0x1000>; - reg-names = "dbi", "elbi", "dm_iatu", "parf", "config"; - device_type = "pci"; - linux,pci-domain = <0>; - bus-range = <0x00 0xff>; - num-lanes = <1>; - #address-cells = <3>; - #size-cells = <2>; - - phys = <&pcie_x1phy>; - phy-names ="pciephy"; - force_gen2 = <1>; - - ranges = <0x81000000 0 0x80200000 0x80200000 - 0 0x00100000 /* downstream I/O */ - 0x82000000 0 0x80300000 0x80300000 - 0 0x10000000>; /* non-prefetchable memory */ - - interrupts = , - <0 416 IRQ_TYPE_NONE>, <0 417 IRQ_TYPE_NONE>, - <0 418 IRQ_TYPE_NONE>, <0 419 IRQ_TYPE_NONE>, - <0 420 IRQ_TYPE_NONE>, <0 421 IRQ_TYPE_NONE>, - <0 422 IRQ_TYPE_NONE>, <0 423 IRQ_TYPE_NONE>, - <0 424 IRQ_TYPE_NONE>, <0 425 IRQ_TYPE_NONE>, - <0 426 IRQ_TYPE_NONE>, <0 427 IRQ_TYPE_NONE>, - <0 428 IRQ_TYPE_NONE>, <0 429 IRQ_TYPE_NONE>, - <0 430 IRQ_TYPE_NONE>, <0 431 IRQ_TYPE_NONE>, - <0 432 IRQ_TYPE_NONE>, <0 433 IRQ_TYPE_NONE>, - <0 434 IRQ_TYPE_NONE>, <0 435 IRQ_TYPE_NONE>, - <0 436 IRQ_TYPE_NONE>, <0 437 IRQ_TYPE_NONE>, - <0 438 IRQ_TYPE_NONE>, <0 439 IRQ_TYPE_NONE>, - <0 440 IRQ_TYPE_NONE>, <0 441 IRQ_TYPE_NONE>, - <0 442 IRQ_TYPE_NONE>, <0 443 IRQ_TYPE_NONE>, - <0 444 IRQ_TYPE_NONE>, <0 445 IRQ_TYPE_NONE>, - <0 446 IRQ_TYPE_NONE>, <0 447 IRQ_TYPE_NONE>; - interrupt-names = "msi", "msi_0", "msi_1", - "msi_2", "msi_3", "msi_4", - "msi_5", "msi_6", "msi_7", - "msi_8", "msi_9", "msi_10", - "msi_11", "msi_12", "msi_13", - "msi_14", "msi_15", "msi_16", - "msi_17", "msi_18", "msi_19", - "msi_20", "msi_21", - "msi_23", "msi_24", "msi_25", - "msi_26", "msi_27", "msi_28", - "msi_29", "msi_30", "msi_31"; - #interrupt-cells = <1>; - interrupt-map-mask = <0 0 0 0x7>; - interrupt-map = <0 0 0 1 &intc 0 142 - IRQ_TYPE_LEVEL_HIGH>, /* int_a */ - <0 0 0 2 &intc 0 143 - IRQ_TYPE_LEVEL_HIGH>, /* int_b */ - <0 0 0 3 &intc 0 144 - IRQ_TYPE_LEVEL_HIGH>, /* int_c */ - <0 0 0 4 &intc 0 145 - IRQ_TYPE_LEVEL_HIGH>; /* int_d */ - - clocks = <&gcc GCC_SYS_NOC_PCIE1_AXI_CLK>, - <&gcc GCC_PCIE1_AXI_M_CLK>, - <&gcc GCC_PCIE1_AXI_S_CLK>, - <&gcc GCC_PCIE1_AHB_CLK>, - <&gcc GCC_PCIE1_AUX_CLK>, - <&gcc GCC_PCIE1_AXI_S_BRIDGE_CLK>; - - clock-names = "sys_noc", - "axi_m", - "axi_s", - "ahb", - "aux", - "axi_bridge"; - - resets = <&gcc GCC_PCIE1_PIPE_ARES>, - <&gcc GCC_PCIE1_SLEEP_ARES>, - <&gcc GCC_PCIE1_CORE_STICKY_ARES>, - <&gcc GCC_PCIE1_AXI_MASTER_ARES>, - <&gcc GCC_PCIE1_AXI_SLAVE_ARES>, - <&gcc GCC_PCIE1_AHB_ARES>, - <&gcc GCC_PCIE1_AXI_MASTER_STICKY_ARES>, - <&gcc GCC_PCIE1_AXI_SLAVE_STICKY_ARES>; - - reset-names = "pipe", - "sleep", - "sticky", - "axi_m", - "axi_s", - "ahb", - "axi_m_sticky", - "axi_s_sticky"; - - qcom,msi-gicm-addr = <0x0B00A040>; - qcom,msi-gicm-base = <0x1c0>; - - status = "disabled"; - - pcie_x1_rp: pcie_x1_rp { - reg = <0 0 0 0 0>; - }; - }; - - pcie_x2phy: phy@86000{ - compatible = "qca,uni-pcie-phy-gen2"; - reg = <0x86000 0x800 0x86800 0x800>; - phy-type = "gen2"; - #phy-cells = <0>; - clocks = <&gcc GCC_PCIE0_PIPE_CLK>; - clock-names = "pipe_clk"; - - resets = <&gcc GCC_PCIE0_PHY_BCR>, - <&gcc GCC_PCIE0PHY_PHY_BCR>; - reset-names = "phy", - "phy_phy"; - mode_fixed = <2>; - x2 = <1>; - status = "disabled"; - }; - - pcie_x2: pci@a0000000 { - compatible = "qcom,pcie-ipq5018"; - reg = <0xa0000000 0xf1d - 0xa0000F20 0xa8 - 0xa0001000 0x1000 - 0x80000 0x3000 - 0xa0100000 0x1000>; - reg-names = "dbi", "elbi", "dm_iatu", "parf", "config"; - device_type = "pci"; - linux,pci-domain = <1>; - bus-range = <0x00 0xff>; - num-lanes = <2>; - #address-cells = <3>; - #size-cells = <2>; - - phys = <&pcie_x2phy>; - phy-names ="pciephy"; - force_gen2 = <1>; - - ranges = <0x81000000 0 0xa0200000 0xa0200000 - 0 0x00100000 /* downstream I/O */ - 0x82000000 0 0xa0300000 0xa0300000 - 0 0x10000000>; /* non-prefetchable memory */ - - interrupts = , - <0 448 IRQ_TYPE_NONE>, <0 449 IRQ_TYPE_NONE>, - <0 450 IRQ_TYPE_NONE>, <0 451 IRQ_TYPE_NONE>, - <0 452 IRQ_TYPE_NONE>, <0 453 IRQ_TYPE_NONE>, - <0 454 IRQ_TYPE_NONE>, <0 455 IRQ_TYPE_NONE>, - <0 456 IRQ_TYPE_NONE>, <0 457 IRQ_TYPE_NONE>, - <0 458 IRQ_TYPE_NONE>, <0 459 IRQ_TYPE_NONE>, - <0 460 IRQ_TYPE_NONE>, <0 461 IRQ_TYPE_NONE>, - <0 462 IRQ_TYPE_NONE>, <0 463 IRQ_TYPE_NONE>, - <0 464 IRQ_TYPE_NONE>, <0 465 IRQ_TYPE_NONE>, - <0 466 IRQ_TYPE_NONE>, <0 467 IRQ_TYPE_NONE>, - <0 468 IRQ_TYPE_NONE>, <0 469 IRQ_TYPE_NONE>, - <0 470 IRQ_TYPE_NONE>, <0 471 IRQ_TYPE_NONE>, - <0 472 IRQ_TYPE_NONE>, <0 473 IRQ_TYPE_NONE>, - <0 474 IRQ_TYPE_NONE>, <0 475 IRQ_TYPE_NONE>, - <0 476 IRQ_TYPE_NONE>, <0 477 IRQ_TYPE_NONE>, - <0 478 IRQ_TYPE_NONE>, <0 479 IRQ_TYPE_NONE>; - interrupt-names = "msi", "msi_0", "msi_1", - "msi_2", "msi_3", "msi_4", - "msi_5", "msi_6", "msi_7", - "msi_8", "msi_9", "msi_10", - "msi_11", "msi_12", "msi_13", - "msi_14", "msi_15", "msi_16", - "msi_17", "msi_18", "msi_19", - "msi_20", "msi_21", - "msi_23", "msi_24", "msi_25", - "msi_26", "msi_27", "msi_28", - "msi_29", "msi_30", "msi_31"; - #interrupt-cells = <1>; - interrupt-map-mask = <0 0 0 0x7>; - interrupt-map = <0 0 0 1 &intc 0 75 - IRQ_TYPE_LEVEL_HIGH>, /* int_a */ - <0 0 0 2 &intc 0 78 - IRQ_TYPE_LEVEL_HIGH>, /* int_b */ - <0 0 0 3 &intc 0 79 - IRQ_TYPE_LEVEL_HIGH>, /* int_c */ - <0 0 0 4 &intc 0 83 - IRQ_TYPE_LEVEL_HIGH>; /* int_d */ - - clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>, - <&gcc GCC_PCIE0_AXI_M_CLK>, - <&gcc GCC_PCIE0_AXI_S_CLK>, - <&gcc GCC_PCIE0_AHB_CLK>, - <&gcc GCC_PCIE0_AUX_CLK>, - <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>; - - clock-names = "sys_noc", - "axi_m", - "axi_s", - "ahb", - "aux", - "axi_bridge"; - - resets = <&gcc GCC_PCIE0_PIPE_ARES>, - <&gcc GCC_PCIE0_SLEEP_ARES>, - <&gcc GCC_PCIE0_CORE_STICKY_ARES>, - <&gcc GCC_PCIE0_AXI_MASTER_ARES>, - <&gcc GCC_PCIE0_AXI_SLAVE_ARES>, - <&gcc GCC_PCIE0_AHB_ARES>, - <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>, - <&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>; - - reset-names = "pipe", - "sleep", - "sticky", - "axi_m", - "axi_s", - "ahb", - "axi_m_sticky", - "axi_s_sticky"; - - qcom,msi-gicm-addr = <0x0B00B040>; - qcom,msi-gicm-base = <0x1e0>; - - status = "disabled"; - - pcie_x2_rp: pcie_x2_rp { - reg = <0 0 0 0 0>; - }; - }; - - qgic_msi_0: qti,qgic2m-msi_0 { - compatible = "qti,qgic2m-msi"; - - interrupts = <0 416 IRQ_TYPE_NONE>, <0 417 IRQ_TYPE_NONE>, - <0 418 IRQ_TYPE_NONE>, <0 419 IRQ_TYPE_NONE>, - <0 420 IRQ_TYPE_NONE>, <0 421 IRQ_TYPE_NONE>, - <0 422 IRQ_TYPE_NONE>, <0 423 IRQ_TYPE_NONE>, - <0 424 IRQ_TYPE_NONE>, <0 425 IRQ_TYPE_NONE>, - <0 426 IRQ_TYPE_NONE>, <0 427 IRQ_TYPE_NONE>, - <0 428 IRQ_TYPE_NONE>, <0 429 IRQ_TYPE_NONE>, - <0 430 IRQ_TYPE_NONE>, <0 431 IRQ_TYPE_NONE>, - <0 432 IRQ_TYPE_NONE>, <0 433 IRQ_TYPE_NONE>, - <0 434 IRQ_TYPE_NONE>, <0 435 IRQ_TYPE_NONE>, - <0 436 IRQ_TYPE_NONE>, <0 437 IRQ_TYPE_NONE>, - <0 438 IRQ_TYPE_NONE>, <0 439 IRQ_TYPE_NONE>, - <0 440 IRQ_TYPE_NONE>, <0 441 IRQ_TYPE_NONE>, - <0 442 IRQ_TYPE_NONE>, <0 443 IRQ_TYPE_NONE>, - <0 444 IRQ_TYPE_NONE>, <0 445 IRQ_TYPE_NONE>, - <0 446 IRQ_TYPE_NONE>, <0 447 IRQ_TYPE_NONE>; - interrupt-names = "msi_0", "msi_1", - "msi_2", "msi_3", "msi_4", - "msi_5", "msi_6", "msi_7", - "msi_8", "msi_9", "msi_10", - "msi_11", "msi_12", "msi_13", - "msi_14", "msi_15", "msi_16", - "msi_17", "msi_18", "msi_19", - "msi_20", "msi_21", - "msi_23", "msi_24", "msi_25", - "msi_26", "msi_27", "msi_28", - "msi_29", "msi_30", "msi_31"; - - qti,msi-gicm-addr = <0x0B00A040>; - qti,msi-gicm-base = <0x1c0>; - - status = "disabled"; - }; - - qgic_msi_1: qti,qgic2m-msi_1 { - compatible = "qti,qgic2m-msi"; - - interrupts = <0 448 IRQ_TYPE_NONE>, <0 449 IRQ_TYPE_NONE>, - <0 450 IRQ_TYPE_NONE>, <0 451 IRQ_TYPE_NONE>, - <0 452 IRQ_TYPE_NONE>, <0 453 IRQ_TYPE_NONE>, - <0 454 IRQ_TYPE_NONE>, <0 455 IRQ_TYPE_NONE>, - <0 456 IRQ_TYPE_NONE>, <0 457 IRQ_TYPE_NONE>, - <0 458 IRQ_TYPE_NONE>, <0 459 IRQ_TYPE_NONE>, - <0 460 IRQ_TYPE_NONE>, <0 461 IRQ_TYPE_NONE>, - <0 462 IRQ_TYPE_NONE>, <0 463 IRQ_TYPE_NONE>, - <0 464 IRQ_TYPE_NONE>, <0 465 IRQ_TYPE_NONE>, - <0 466 IRQ_TYPE_NONE>, <0 467 IRQ_TYPE_NONE>, - <0 468 IRQ_TYPE_NONE>, <0 469 IRQ_TYPE_NONE>, - <0 470 IRQ_TYPE_NONE>, <0 471 IRQ_TYPE_NONE>, - <0 472 IRQ_TYPE_NONE>, <0 473 IRQ_TYPE_NONE>, - <0 474 IRQ_TYPE_NONE>, <0 475 IRQ_TYPE_NONE>, - <0 476 IRQ_TYPE_NONE>, <0 477 IRQ_TYPE_NONE>, - <0 478 IRQ_TYPE_NONE>, <0 479 IRQ_TYPE_NONE>; - interrupt-names = "msi_0", "msi_1", - "msi_2", "msi_3", "msi_4", - "msi_5", "msi_6", "msi_7", - "msi_8", "msi_9", "msi_10", - "msi_11", "msi_12", "msi_13", - "msi_14", "msi_15", "msi_16", - "msi_17", "msi_18", "msi_19", - "msi_20", "msi_21", - "msi_23", "msi_24", "msi_25", - "msi_26", "msi_27", "msi_28", - "msi_29", "msi_30", "msi_31"; - - qti,msi-gicm-addr = <0x0B00B040>; - qti,msi-gicm-base = <0x1e0>; - - status = "disabled"; - }; - - qcom,test@0 { - compatible = "qcom,testmhi"; - status = "ok"; - }; - - tzlog: qca,tzlog { - compatible = "qca,tzlog_ipq50xx"; - interrupts = ; - qca,tzbsp-diag-buf-size = <0x2000>; - }; - - eud: qcom,msm-eud{ - compatible = "qcom,msm-eud"; - reg = <0x58000 0x1000>, - <0x59000 0x2000>, - <0x5a000 0x1000>; - reg-names = "eud_base", - "eud_mode_mgr", - "eud_mode_mgr2"; - interrupts = ; - interrupt-names = "eud_irq"; - status = "disabled"; - }; - - bt: bt@7000000 { - compatible = "qcom,bt"; - firmware = "IPQ5018/bt_fw_patch.mdt"; - - reg = <0x01943008 0x8>; - reg-names = "bt_warm_rst"; - memory-region = <&bt_region>; - - qcom,ipc = <&apcs 8 23>; - interrupts = ; - - resets = <&gcc GCC_BTSS_BCR>; - reset-names = "btss_reset"; - - clocks = <&gcc GCC_BTSS_LPO_CLK>; - clock-names = "lpo_clk"; - }; - lpass: lpass@0xA000000{ - compatible = "qca,lpass-ipq5018"; - reg = <0xA000000 0x3BFFFF>; - clocks = <&gcc GCC_SNOC_LPASS_AXIM_CLK>, - <&gcc GCC_SNOC_LPASS_SWAY_CLK>, - <&gcc GCC_LPASS_CORE_AXIM_CLK>, - <&gcc GCC_LPASS_SWAY_CLK>; - clock-names = "snoc_axim", "snoc_sway", "axim", "sway"; - resets = <&gcc GCC_LPASS_BCR>; - reset-names = "lpass"; - status = "disabled"; - }; - - pcm: pcm@0xA3C0000{ - compatible = "qca,ipq5018-lpass-pcm"; - reg = <0xA3C0000 0x23014>; - interrupts = <0 27 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "out0"; - capture_memory = "lpm"; - playback_memory = "lpm"; - voice_loopback = <0>; - status = "disabled"; - }; - - pcm_lb: pcm_lb@0 { - compatible = "qca,ipq5018-pcm-lb"; - status = "disabled"; - }; - }; - - cpus { - #address-cells = <0x1>; - #size-cells = <0x0>; - - CPU0: cpu@0 { - device_type = "cpu"; - compatible = "arm,cortex-a53"; - reg = <0x0>; - enable-method = "psci"; - qcom,acc = <&acc0>; - next-level-cache = <&L2_0>; - clocks = <&apss_clk APCS_ALIAS0_CORE_CLK>; - clock-names = "cpu"; - operating-points = < - /* kHz uV (fixed) */ - 800000 1100000 - 1008000 1100000 - >; - clock-latency = <200000>; - }; - - CPU1: cpu@1 { - device_type = "cpu"; - compatible = "arm,cortex-a53"; - reg = <0x1>; - enable-method = "psci"; - qcom,acc = <&acc1>; - next-level-cache = <&L2_0>; - clocks = <&apss_clk APCS_ALIAS0_CORE_CLK>; - clock-names = "cpu"; - operating-points = < - /* kHz uV (fixed) */ - 800000 1100000 - 1008000 1100000 - >; - clock-latency = <200000>; - }; - - L2_0: l2-cache { - compatible = "cache"; - cache-level = <0x2>; - }; - }; - - clocks { - sleep_clk: sleep_clk { - compatible = "fixed-clock"; - clock-frequency = <32000>; - #clock-cells = <0>; - }; - - xo: xo { - compatible = "fixed-clock"; - clock-frequency = <24000000>; - #clock-cells = <0>; - }; - }; - - pmuv8: pmu { - compatible = "arm,cortex-a53-pmu"; - interrupts = ; - }; - - firmware { - scm { - compatible = "qcom,scm-ipq5018"; - }; - qfprom_sec { - compatible = "qcom,qfprom-sec"; - img-addr = <0x4A800000>; - img-size = <0x00400000>; - }; - }; - -}; - -#include "qcom-ipq5018-coresight.dtsi" -#include "qcom-ipq5018-thermal.dtsi" diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-xunison-d50.dtsi b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-xunison-d50.dtsi deleted file mode 100755 index 5778a4c41..000000000 --- a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-xunison-d50.dtsi +++ /dev/null @@ -1,1442 +0,0 @@ -/* - * Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include -#include -#include -#include -#include -#include -#include "qcom-ipq5018-memory.dtsi" -#include "qcom-ipq5018-mhi.dtsi" -#include "ipq5018_clocks.dtsi" - -/ { - model = "Qualcomm Technologies, Inc. IPQ5018"; - compatible = "qcom,ipq5018"; - - psci { - compatible = "arm,psci-1.0"; - method = "smc"; - status = "ok"; - }; - -#ifdef ENABLE_QSEECOM - qseecom { - compatible = "ipq5018-qseecom"; - mem-start = <0x4a400000>; - mem-size = <0x200000>; - }; -#endif - - soc: soc { - #address-cells = <0x1>; - #size-cells = <0x1>; - ranges = <0 0 0 0xffffffff>; - compatible = "simple-bus"; - - intc: interrupt-controller@b000000 { - compatible = "qcom,msm-qgic2"; - interrupt-controller; - #interrupt-cells = <0x3>; - reg = <0xb000000 0x1000>, <0xb002000 0x1000>; - ranges = <0x0 0xb00a000 0x1ffa>; - - v2m0: v2m@0 { - compatible = "arm,gic-v2m-frame"; - msi-controller; - reg = <0x0 0xffd>; - }; - - v2m1: v2m@1000 { - compatible = "arm,gic-v2m-frame"; - msi-controller; - reg = <0x1000 0xffd>; - }; - }; - - timer { - compatible = "arm,armv8-timer"; - interrupts = , - , - , - ; - clock-frequency = <24000000>; - }; - - gcc: gcc@1800000 { - compatible = "qcom,gcc-ipq5018"; - reg = <0x1800000 0x80000>; - #clock-cells = <0x1>; - #reset-cells = <0x1>; - }; - - apss_clk: qcom,apss_clk@b111000 { - compatible = "qcom,apss-ipq5018"; - reg = <0xb111000 0x6000>; - #clock-cells = <0x1>; - #reset-cells = <1>; - }; - - blsp1_uart2: serial@78b0000 { - compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; - reg = <0x78b0000 0x200>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - status = "disabled"; - }; - - blsp1_uart1: serial@78af000 { - compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; - reg = <0x78af000 0x200>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - status = "disabled"; - }; - - blsp_dma: dma@7884000 { - compatible = "qcom,bam-v1.7.0"; - reg = <0x07884000 0x1d000>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "bam_clk"; - #dma-cells = <1>; - qcom,ee = <0>; - }; - - spi_0: spi@78b5000 { /* BLSP1 QUP0 */ - compatible = "qcom,spi-qup-v2.2.1"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x78b5000 0x600>; - interrupts = ; - spi-max-frequency = <50000000>; - clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>, - <&gcc GCC_BLSP1_AHB_CLK>; - clock-names = "core", "iface"; - dmas = <&blsp_dma 4>, <&blsp_dma 5>; - dma-names = "tx", "rx"; - status = "disabled"; - }; - pwm { - compatible = "qca,ipq6018-pwm"; - reg = <0x1941010 0x20>; - clocks = <&gcc GCC_ADSS_PWM_CLK>; - clock-names = "core"; - src-freq = <100000000>; - pwm-base-index = <0>; - used-pwm-indices = <1>, <1>, <1>, <1>; - status = "disabled"; - }; - - mdio0: mdio@88000 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "qcom,qca-mdio", "qcom,ipq40xx-mdio"; - reg = <0x88000 0x64>; - status = "disabled"; - resets = <&gcc GCC_GEPHY_MDC_SW_ARES>; - reset-names = "gephy_mdc_rst"; - }; - - mdio1: mdio@90000 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "qcom,qca-mdio"; - reg = <0x90000 0x64>; - status = "disabled"; - }; - ess-instance { - ess-switch@0x39c00000 { - compatible = "qcom,ess-switch-ipq50xx"; - reg = <0x39c00000 0x200000>; - switch_access_mode = "local bus"; - clocks = <&gcc GCC_CMN_BLK_AHB_CLK>, - <&gcc GCC_CMN_BLK_SYS_CLK>, - <&gcc GCC_UNIPHY_AHB_CLK>, - <&gcc GCC_UNIPHY_SYS_CLK>, - <&gcc GCC_MDIO0_AHB_CLK>, - <&gcc GCC_MDIO1_AHB_CLK>, - <&gcc GCC_GMAC0_CFG_CLK>, - <&gcc GCC_GMAC0_SYS_CLK>, - <&gcc GCC_GMAC1_CFG_CLK>, - <&gcc GCC_GMAC1_SYS_CLK>, - <&gcc GCC_GEPHY_RX_CLK>, - <&gcc GCC_GEPHY_TX_CLK>, - <&gcc GCC_UNIPHY_RX_CLK>, - <&gcc GCC_UNIPHY_TX_CLK>, - <&gcc GCC_GMAC0_RX_CLK>, - <&gcc GCC_GMAC0_TX_CLK>, - <&gcc GCC_GMAC1_RX_CLK>, - <&gcc GCC_GMAC1_TX_CLK>, - <&gcc GCC_SNOC_GMAC0_AHB_CLK>, - <&gcc GCC_SNOC_GMAC1_AHB_CLK>, - <&gcc GCC_GMAC0_PTP_CLK>, - <&gcc GCC_GMAC1_PTP_CLK>; - clock-names = "cmn_ahb_clk", "cmn_sys_clk", - "uniphy_ahb_clk", "uniphy_sys_clk", - "gcc_mdio0_ahb_clk", - "gcc_mdio1_ahb_clk", - "gcc_gmac0_cfg_clk", - "gcc_gmac0_sys_clk", - "gcc_gmac1_cfg_clk", - "gcc_gmac1_sys_clk", - "uniphy0_port1_rx_clk", - "uniphy0_port1_tx_clk", - "uniphy1_port5_rx_clk", - "uniphy1_port5_tx_clk", - "nss_port1_rx_clk", "nss_port1_tx_clk", - "nss_port2_rx_clk", "nss_port2_tx_clk", - "gcc_snoc_gmac0_ahb_clk", - "gcc_snoc_gmac1_ahb_clk", - "gcc_gmac0_ptp_clk", - "gcc_gmac1_ptp_clk"; - resets = <&gcc GCC_GEPHY_BCR>, <&gcc GCC_UNIPHY_BCR>, - <&gcc GCC_GMAC0_BCR>, <&gcc GCC_GMAC1_BCR>, - <&gcc GCC_UNIPHY_SOFT_RESET>, - <&gcc GCC_GEPHY_MISC_ARES>; - reset-names = "gephy_bcr_rst", "uniphy_bcr_rst", - "gmac0_bcr_rst", "gmac1_bcr_rst", - "uniphy1_soft_rst", - "gephy_misc_rst"; - }; - }; - - ess-uniphy@98000 { - compatible = "qcom,ess-uniphy"; - reg = <0x98000 0x800>; - uniphy_access_mode = "local bus"; - }; - - msm_imem: qcom,msm-imem@8600000 { - compatible = "qcom,msm-imem"; - reg = <0x08600000 0x1000>; - ranges = <0x0 0x08600000 0x1000>; - #address-cells = <1>; - #size-cells = <1>; - - mem_dump_table@10 { - compatible = "qcom,msm-imem-mem_dump_table"; - reg = <0x10 8>; - }; - }; - - cryptobam: dma@704000 { - compatible = "qcom,bam-v1.7.0"; - reg = <0x00704000 0x20000>; - interrupts = ; - clocks = <&gcc GCC_CRYPTO_AHB_CLK>; - clock-names = "bam_clk"; - #dma-cells = <1>; - qcom,ee = <1>; - qcom,controlled-remotely = <1>; - }; - - crypto: crypto@73a000 { - compatible = "qcom,crypto-v5.1"; - reg = <0x0073a000 0x6000>; - clocks = <&gcc GCC_CRYPTO_AHB_CLK>, - <&gcc GCC_CRYPTO_AXI_CLK>, - <&gcc GCC_CRYPTO_CLK>; - clock-names = "iface", "bus", "core"; - dmas = <&cryptobam 2>, <&cryptobam 3>; - dma-names = "rx", "tx"; - qce,cmd_desc_support; - }; - - qpic_bam: dma@7984000{ - compatible = "qcom,bam-v1.7.0"; - reg = <0x7984000 0x1c000>; - interrupts = ; - clocks = <&gcc GCC_QPIC_AHB_CLK>; - clock-names = "bam_clk"; - #dma-cells = <1>; - qcom,ee = <0>; - status = "disabled"; - }; - - qcom,sps { - compatible = "qcom,msm_sps_4k"; - qcom,pipe-attr-ee; - }; - - nand: qpic-nand@79b0000 { - compatible = "qcom,ebi2-nandc-bam-v2.1.1"; - reg = <0x79b0000 0x10000>; - #address-cells = <1>; - #size-cells = <0>; - clocks = <&gcc GCC_QPIC_CLK>, - <&gcc GCC_QPIC_AHB_CLK>, - <&gcc GCC_QPIC_IO_MACRO_CLK>; - clock-names = "core", "aon", "io_macro"; - - dmas = <&qpic_bam 0>, - <&qpic_bam 1>, - <&qpic_bam 2>, - <&qpic_bam 3>; - dma-names = "tx", "rx", "cmd", "status"; - - qpic,io_macro_clk_rates = <24000000 100000000 200000000 320000000>; - status = "disabled"; - - nandcs@0 { - compatible = "qcom,nandcs"; - reg = <0>; - #address-cells = <1>; - #size-cells = <1>; - - nand-ecc-strength = <4>; - nand-ecc-step-size = <512>; - nand-bus-width = <8>; - }; - }; - - sdhc_1: sdhci@7804000 { - compatible = "qcom,sdhci-msm-v5"; - reg = <0x7804000 0x1000>; - reg-names = "hc_mem"; - - interrupts = , - ; - interrupt-names = "hc_irq", "pwr_irq"; - - qcom,bus-width = <4>; - qcom,max_clk = <192000000>; - - qcom,dedicated-io = <1>; - - /* device core power supply */ - qcom,vdd-voltage-level = <2900000 2900000>; - qcom,vdd-current-level = <200 570000>; - - /* device communication power supply */ - qcom,vdd-io-lpm-sup; - qcom,vdd-io-voltage-level = <1800000 1800000>; - qcom,vdd-io-current-level = <200 325000>; - qcom,vdd-io-always-on; - - qcom,cpu-dma-latency-us = <701>; - qcom,msm-bus,name = "sdhc1"; - qcom,msm-bus,num-cases = <9>; - qcom,msm-bus,num-paths = <1>; - qcom,msm-bus,vectors-KBps = <78 512 0 0>, /* No vote */ - <78 512 1046 3200>, /* 400 KB/s*/ - <78 512 52286 160000>, /* 20 MB/s */ - <78 512 65360 200000>, /* 25 MB/s */ - <78 512 130718 400000>, /* 50 MB/s */ - <78 512 261438 800000>, /* 100 MB/s */ - <78 512 261438 800000>, /* 200 MB/s */ - <78 512 261438 800000>, /* 400 MB/s */ - <78 512 1338562 4096000>; /* Max. bandwidth */ - qcom,bus-bw-vectors-bps = <0 400000 20000000 25000000 \ - 50000000 100000000 200000000 \ - 400000000 4294967295>; - - clocks = <&gcc GCC_SDCC1_AHB_CLK>, - <&gcc GCC_SDCC1_APPS_CLK>; - clock-names = "iface_clk", "core_clk"; - qcom,large-address-bus; - qcom,disable-aggressive-pm; - status = "disabled"; - }; - - nss-common { - compatible = "qcom,nss-common"; - reg = <0x01868010 0x01>; - reg-names = "nss-misc-reset"; - }; - - nss0: nss@40000000 { - compatible = "qcom,nss"; - interrupts = <0 402 0x1>, <0 401 0x1>, <0 400 0x1>, - <0 399 0x1>, <0 398 0x1>, <0 397 0x1>, - <0 396 0x1>, <0 395 0x1>; - reg = <0x07a00000 0x100>, <0x0b111000 0x1000>; - reg-names = "nphys", "qgic-phys"; - clocks = <&gcc GCC_UBI0_CFG_CLK>, - <&gcc GCC_UBI0_DBG_CLK>, - <&gcc GCC_UBI0_CORE_CLK>, - <&gcc GCC_UBI0_UTCM_CLK>, - <&gcc GCC_UBI0_AXI_CLK>, - <&gcc GCC_SNOC_UBI0_AXI_CLK>, - <&gcc GCC_UBI0_NC_AXI_CLK>; - clock-names = "nss-cfg-clk", "nss-dbg-clk", - "nss-core-clk", "nss-utcm-clk", - "nss-axi-clk", - "nss-snoc-axi-clk", - "nss-nc-axi-clk"; - qcom,id = <0>; - qcom,num-queue = <4>; - qcom,num-irq = <8>; - qcom,num-pri = <4>; - qcom,load-addr = <0x40000000>; - qcom,low-frequency = <850000000>; - qcom,mid-frequency = <850000000>; - qcom,max-frequency = <1000000000>; - qcom,ipv4-enabled; - qcom,ipv4-reasm-enabled; - qcom,ipv6-enabled; - qcom,ipv6-reasm-enabled; - qcom,wlanredirect-enabled; - qcom,tun6rd-enabled; - qcom,l2tpv2-enabled; - qcom,gre-enabled; - qcom,gre-redir-enabled; - qcom,gre-redir-mark-enabled; - qcom,map-t-enabled; - qcom,portid-enabled; - qcom,pppoe-enabled; - qcom,pptp-enabled; - qcom,tunipip6-enabled; - qcom,shaping-enabled; - qcom,wlan-dataplane-offload-enabled; - qcom,pvxlan-enabled; - qcom,clmap-enabled; - qcom,vxlan-enabled; - qcom,match-enabled; - qcom,mirror-enabled; - qcom,crypto-enabled; - qcom,ipsec-enabled; - qcom,rmnet_rx-enabled; - qcom,udp-st-enabled; - }; - - nss-dp-common { - compatible = "qcom,nss-dp-common"; - qcom,tcsr-base = <0x01937000>; - }; - - nss_crypto: qcom,nss_crypto { - compatible = "qcom,nss-crypto"; - #address-cells = <1>; - #size-cells = <1>; - qcom,max-contexts = <64>; - qcom,max-context-size = <144>; - ranges; - ce5_node { - compatible = "qcom,ce5"; - reg-names = "crypto_pbase", "bam_base"; - reg = <0x0073a000 0x6000>, - <0x00704000 0x20000>; - qcom,dma-mask = <0x0c>; - qcom,transform-enabled; - qcom,aes128-cbc; - qcom,aes256-cbc; - qcom,aes128-ctr; - qcom,aes256-ctr; - qcom,aes128-ecb; - qcom,aes256-ecb; - qcom,3des-cbc; - qcom,sha160-hash; - qcom,sha256-hash; - qcom,sha160-hmac; - qcom,sha256-hmac; - qcom,aes128-cbc-sha160-hmac; - qcom,aes256-cbc-sha160-hmac; - qcom,aes128-ctr-sha160-hmac; - qcom,aes256-ctr-sha160-hmac; - qcom,3des-cbc-sha160-hmac; - qcom,3des-cbc-sha256-hmac; - qcom,aes128-cbc-sha256-hmac; - qcom,aes256-cbc-sha256-hmac; - qcom,aes128-ctr-sha256-hmac; - qcom,aes256-ctr-sha256-hmac; - engine0 { - qcom,ee = <2 3>; - }; - }; - }; - - acc0:clock-controller@b188000 { - compatible = "qcom,arm-cortex-acc"; - reg = <0x0b188000 0x1000>; - }; - - acc1:clock-controller@b198000 { - compatible = "qcom,arm-cortex-acc"; - reg = <0x0b198000 0x1000>; - }; - - qcom_rng: qrng@e1000 { - compatible = "qcom,prng-ipq807x"; - reg = <0xe3000 0x1000>; - clocks = <&gcc GCC_PRNG_AHB_CLK>; - clock-names = "core"; - status = "ok"; - }; - - qca,scm_restart_reason { - compatible = "qca,scm_restart_reason"; - dload_status = <0>; - dload_warm_reset = <0>; - }; - - watchdog: watchdog@b017000 { - compatible = "qcom,kpss-wdt-ipq5018"; - reg = <0xb017000 0x1000>; - reg-names = "kpss_wdt"; - interrupt-names = "bark_irq"; - interrupts = ; - clocks = <&sleep_clk>; - timeout-sec = <10>; - wdt-max-timeout = <32>; - }; - - apcs: syscon@b111000 { - compatible = "syscon"; - reg = <0x0B111000 0x1000>; - }; - - wcss: smp2p-wcss { - compatible = "qcom,smp2p"; - qcom,smem = <435>, <428>; - - interrupt-parent = <&intc>; - interrupts = <0 177 1>; - - qcom,ipc = <&apcs 8 9>; - - qcom,local-pid = <0>; - qcom,remote-pid = <1>; - - wcss_smp2p_out: master-kernel { - qcom,entry-name = "master-kernel"; - qcom,smp2p-feature-ssr-ack; - #qcom,smem-state-cells = <1>; - }; - - wcss_smp2p_in: slave-kernel { - qcom,entry-name = "slave-kernel"; - interrupt-controller; - #interrupt-cells = <2>; - }; - }; - - q6v5_wcss: q6v5_wcss@CD00000 { - compatible = "qca,q6v5-wcss-rproc-ipq50xx"; - firmware = "IPQ5018/q6_fw.mdt"; - reg = <0xCD00000 0x10000>, - <0x194f000 0x10>, - <0x1952000 0x10>, - <0x4ab000 0x20>, - <0x1818000 0x10>, - <0x1859000 0x10>, - <0x1945000 0x10>, - <0x193D204 0x4>; - reg-names = "wcss-base", - "tcsr-q6-base", - "tcsr-base", - "mpm-base", - "gcc-wcss-bcr-base", - "gcc-wcss-misc-base", - "tcsr-global", - "tcsr-q6-boot-trig"; - qca,auto-restart; - qca,extended-intc; - qca,dump-q6-reg; - qca,emulation; - interrupts-extended = <&intc 0 291 1>, - <&wcss_smp2p_in 0 0>, - <&wcss_smp2p_in 1 0>, - <&wcss_smp2p_in 3 0>; - interrupt-names = "wdog", - "qcom,gpio-err-fatal", - "qcom,gpio-err-ready", - "qcom,gpio-stop-ack"; - qcom,smem-states = <&wcss_smp2p_out 0>, - <&wcss_smp2p_out 1>; - qcom,smem-state-names = "shutdown", - "stop"; - }; - - q6v5_m3: q6v5_m3 { - compatible = "qca,q6v5-m3-rproc"; - firmware = "IPQ5018/m3_fw.mdt"; - qca,auto-restart; - qcom,restart-group = <&q6v5_m3 &q6v5_wcss>; - }; - - tcsr_mutex_block: syscon@1905000 { - compatible = "syscon"; - reg = <0x1905000 0x8000>; - }; - - tcsr_mutex: hwlock@1905000 { - compatible = "qcom,tcsr-mutex"; - syscon = <&tcsr_mutex_block 0 0x80>; - #hwlock-cells = <1>; - }; - - smem: qcom,smem@4AB00000 { - compatible = "qcom,smem"; - memory-region = <&smem_region>; - hwlocks = <&tcsr_mutex 0>; - }; - - apcs_glb: mailbox@b111000 { - compatible = "qcom,msm8996-apcs-hmss-global"; - qcom,ipc = <&apcs 8 8>; - - #mbox-cells = <1>; - }; - - tcsr_q6_block: syscon@1945000 { - compatible = "syscon"; - reg = <0x1945000 0xE000>; - }; - - qcom_q6v5_wcss: qcom_q6v5_wcss@CD00000 { - compatible = "qcom,ipq5018-wcss-pil"; - firmware = "IPQ5018/q6_fw.mdt"; - m3_firmware = "IPQ5018/m3_fw.mdt"; - reg = <0xCD00000 0x4040>, - <0x4ab000 0x20>, - <0x4a1000 0x10>, - <0x1938000 0x8>, - <0x193D204 0x4>; - reg-names = "qdsp6", - "rmb", - "mpm", - "tcsr-msip", - "tcsr-q6-boot-trig"; - clocks = <&gcc GCC_Q6_AXIS_CLK>, - <&gcc GCC_WCSS_AHB_S_CLK>, - <&gcc GCC_WCSS_ECAHB_CLK>, - <&gcc GCC_WCSS_ACMT_CLK>, - <&gcc GCC_WCSS_AXI_M_CLK>, - <&gcc GCC_Q6_AXIM_CLK>, - <&gcc GCC_Q6_AXIM2_CLK>, - <&gcc GCC_Q6_AHB_CLK>, - <&gcc GCC_Q6_AHB_S_CLK>, - <&gcc GCC_WCSS_AXI_S_CLK>; - clock-names = "gcc_q6_axis_clk", - "gcc_wcss_ahb_s_clk", - "gcc_wcss_ecahb_clk", - "gcc_wcss_acmt_clk", - "gcc_wcss_axi_m_clk", - "gcc_q6_axim_clk", - "gcc_q6_axim2_clk", - "gcc_q6_ahb_clk", - "gcc_q6_ahb_s_clk", - "gcc_wcss_axi_s_clk"; - qca,auto-restart; - qca,extended-intc; - qca,wcss-aon-reset-seq; - interrupts-extended = <&intc 0 291 1>, - <&wcss_smp2p_in 0 0>, - <&wcss_smp2p_in 1 0>, - <&wcss_smp2p_in 2 0>, - <&wcss_smp2p_in 3 0>; - interrupt-names = "wdog", - "fatal", - "ready", - "handover", - "stop-ack"; - - resets = <&gcc GCC_WCSSAON_RESET>, - <&gcc GCC_WCSS_BCR>, - <&gcc GCC_WCSS_Q6_BCR>, - <&gcc GCC_CE_BCR>; - - reset-names = "wcss_aon_reset", - "wcss_reset", - "wcss_q6_reset", - "ce_reset"; - - qcom,halt-regs = <&tcsr_q6_block 0xA000 0xD000 0x0>; - - qcom,smem-states = <&wcss_smp2p_out 0>, - <&wcss_smp2p_out 1>; - qcom,smem-state-names = "shutdown", - "stop"; - - qcom,q6v6; - - glink-edge { - interrupts = ; - qcom,remote-pid = <1>; - mboxes = <&apcs_glb 8>; - - rpm_requests { - qcom,glink-channels = "IPCRTR"; - }; - }; - }; - - wifi0: wifi@c000000 { - compatible = "qcom,cnss-qca5018", "qcom,ipq5018-wifi"; - reg = <0xc000000 0x1000000>; - #ifdef __IPQ_MEM_PROFILE_256_MB__ - qcom,tgt-mem-mode = <2>; - #else - qcom,tgt-mem-mode = <1>; - #endif - qcom,rproc = <&qcom_q6v5_wcss>; - interrupts = <0 288 1>, /* o_wcss_apps_intr[0] = */ - <0 289 1>, - <0 290 1>, - <0 292 1>, - <0 293 1>, - <0 294 1>, - <0 295 1>, - <0 296 1>, - <0 297 1>, - <0 298 1>, - <0 299 1>, - <0 300 1>, - <0 301 1>, - <0 302 1>, - <0 303 1>, - <0 304 1>, - <0 305 1>, - <0 306 1>, - <0 307 1>, - <0 308 1>, - <0 309 1>, - <0 310 1>, - <0 311 1>, - <0 312 1>, - <0 313 1>, /* o_wcss_apps_intr[25] */ - - <0 314 1>, - <0 315 1>, - <0 316 1>, - <0 317 1>, - <0 318 1>, - <0 319 1>, - <0 320 1>, - <0 321 1>, - <0 322 1>, - <0 323 1>, - <0 324 1>, - <0 325 1>, - - <0 326 1>, - - <0 327 1>, - <0 328 1>, - <0 329 1>, - <0 330 1>, - <0 331 1>, - <0 332 1>, - - <0 333 1>, - <0 334 1>, - <0 335 1>, - <0 336 1>, - <0 337 1>, - <0 338 1>, - <0 339 1>; /* o_wcss_apps_intr[51] */ - - interrupt-names = "misc-pulse1", - "misc-latch", - "sw-exception", - "ce0", - "ce1", - "ce2", - "ce3", - "ce4", - "ce5", - "ce6", - "ce7", - "ce8", - "ce9", - "ce10", - "ce11", - "host2wbm-desc-feed", - "host2reo-re-injection", - "host2reo-command", - "host2rxdma-monitor-ring3", - "host2rxdma-monitor-ring2", - "host2rxdma-monitor-ring1", - "reo2ost-exception", - "wbm2host-rx-release", - "reo2host-status", - "reo2host-destination-ring4", - "reo2host-destination-ring3", - "reo2host-destination-ring2", - "reo2host-destination-ring1", - "rxdma2host-monitor-destination-mac3", - "rxdma2host-monitor-destination-mac2", - "rxdma2host-monitor-destination-mac1", - "ppdu-end-interrupts-mac3", - "ppdu-end-interrupts-mac2", - "ppdu-end-interrupts-mac1", - "rxdma2host-monitor-status-ring-mac3", - "rxdma2host-monitor-status-ring-mac2", - "rxdma2host-monitor-status-ring-mac1", - "host2rxdma-host-buf-ring-mac3", - "host2rxdma-host-buf-ring-mac2", - "host2rxdma-host-buf-ring-mac1", - "rxdma2host-destination-ring-mac3", - "rxdma2host-destination-ring-mac2", - "rxdma2host-destination-ring-mac1", - "host2tcl-input-ring4", - "host2tcl-input-ring3", - "host2tcl-input-ring2", - "host2tcl-input-ring1", - "wbm2host-tx-completions-ring3", - "wbm2host-tx-completions-ring2", - "wbm2host-tx-completions-ring1", - "tcl2host-status-ring"; - status = "disabled"; - qcom,pta-num = <0>; - qcom,coex-mode = <0x3>; - qcom,bt-active-time = <0>; - qcom,bt-priority-time = <0>; - qcom,coex-algo = <0x2>; - qcom,pta-priority = <0>; - }; - - wifi1: wifi1@c000000 { - compatible = "qcom,cnss-qcn6122", "qcom,qcn6122-wifi"; - qcom,rproc = <&qcom_q6v5_wcss>; - status = "disabled"; - }; - - wifi2: wifi2@c000000 { - compatible = "qcom,cnss-qcn6122", "qcom,qcn6122-wifi"; - qcom,rproc = <&qcom_q6v5_wcss>; - status = "disabled"; - }; - - i2c_0: i2c@78b7000 { - compatible = "qcom,i2c-qup-v2.2.1"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x78b7000 0x600>; - interrupts = ; - clocks = <&gcc GCC_BLSP1_AHB_CLK>, - <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>; - clock-names = "iface", "core"; - clock-frequency = <100000>; - qup-clock-frequency = <9600000>; - dmas = <&blsp_dma 9>, <&blsp_dma 8>; - dma-names = "rx", "tx"; - status = "disabled"; - }; - - tlmm: pinctrl@1000000 { - compatible = "qcom,ipq5018-pinctrl"; - reg = <0x1000000 0x300000>; - interrupts = <0x0 0xd0 0x0>; - gpio-controller; - #gpio-cells = <0x2>; - interrupt-controller; - #interrupt-cells = <0x2>; - }; - - dbm_1p5: dbm@0x8AF8000 { - compatible = "qcom,usb-dbm-1p5"; - reg = <0x8AF8000 0x300>; - qcom,reset-ep-after-lpm-resume; - }; - - hs_m31phy_0: hs_m31phy@5b000 { - compatible = "qca,m31-usb-hsphy"; - reg = <0x05b000 0x120>, - <0x08af8800 0x400>; - reg-names = "m31usb_phy_base", - "qscratch_base"; - phy_type= "utmi"; - - resets = <&gcc GCC_QUSB2_0_PHY_BCR>; - reset-names = "usb2_phy_reset"; - - status = "disabled"; - }; - - ssuniphy_0: ssuniphy@5d000 { - compatible = "qca,ipq5018-uni-ssphy"; - reg = <0x5d000 0x800>; - clocks = <&gcc GCC_USB0_PIPE_CLK>, - <&gcc GCC_USB0_PHY_CFG_AHB_CLK>; - - clock-names = "pipe_clk", "phy_cfg_ahb_clk"; - - resets = <&gcc GCC_USB0_PHY_BCR>; - reset-names = "por_rst"; - #phy-cells = <0>; - status = "disabled"; - }; - - usb3: usb3@8A00000 { - compatible = "qcom,ipq5018-dwc3"; - #address-cells = <1>; - #size-cells = <1>; - ranges; - reg = <0x8AF8800 0x100>, - <0x8A00000 0xe000>; - reg-names = "qscratch_base", "dwc3_base"; - clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, - <&gcc GCC_USB0_MASTER_CLK>, - <&gcc GCC_USB0_SLEEP_CLK>, - <&gcc GCC_USB0_MOCK_UTMI_CLK>, - <&gcc GCC_USB0_PHY_CFG_AHB_CLK>, - <&gcc GCC_USB0_AUX_CLK>, - <&gcc GCC_USB0_LFPS_CLK>, - <&gcc GCC_USB0_PIPE_CLK>; - clock-names = "sys_noc_axi", - "master", - "sleep", - "mock_utmi", - "cfg_ahb_clk", - "aux_clk", - "lfps_clk", - "pipe_clk"; - assigned-clocks = <&gcc GCC_SYS_NOC_USB0_AXI_CLK>, - <&gcc GCC_USB0_MASTER_CLK>, - <&gcc GCC_USB0_MOCK_UTMI_CLK>; - assigned-clock-rates = <133330000>, - <133330000>, - <60000000>; - resets = <&gcc GCC_USB0_BCR>; - reset-names = "usb30_mstr_rst"; - qca,host = <1>; - qcom,usb-dbm = <&dbm_1p5>; - status = "disabled"; - - dwc_0: dwc3@8A00000 { - compatible = "snps,dwc3"; - reg = <0x8A00000 0xe000>; - interrupts = ; - usb-phy = <&hs_m31phy_0>; - #phy-cells = <0>; - phys = <&ssuniphy_0>; - phy-names = "usb3-phy"; - snps,dis_ep_cache_eviction; - tx-fifo-resize; - snps,usb3-u1u2-disable; - snps,nominal-elastic-buffer; - snps,is-utmi-l1-suspend; - snps,hird-threshold = /bits/ 8 <0x0>; - snps,dis_u2_susphy_quirk; - snps,dis_u3_susphy_quirk; - snps,quirk-ref-clock-adjustment = <0x49459>; - snps,quirk-ref-clock-period = <0x10>; - snps,quirk-30m-sb-sel = <0x0>; - dr_mode = "host"; - }; - }; - - qcom,usbbam@8B04000 { - compatible = "qcom,usb-bam-msm"; - reg = <0x8B04000 0x17000>; - interrupt-parent = <&intc>; - interrupts = <0 135 0>; - - qcom,bam-type = <0>; - qcom,usb-bam-fifo-baseaddr = <0x4A600000>; - qcom,usb-bam-num-pipes = <4>; - qcom,ignore-core-reset-ack; - qcom,disable-clk-gating; - qcom,usb-bam-override-threshold = <0x4001>; - qcom,usb-bam-max-mbps-highspeed = <400>; - qcom,usb-bam-max-mbps-superspeed = <3600>; - qcom,reset-bam-on-connect; - - qcom,pipe0 { - label = "ssusb-qdss-in-0"; - qcom,usb-bam-mem-type = <2>; - qcom,dir = <1>; - qcom,pipe-num = <0>; - qcom,peer-bam = <0>; - qcom,peer-bam-physical-address = <0x6064000>; - qcom,src-bam-pipe-index = <0>; - qcom,dst-bam-pipe-index = <0>; - qcom,data-fifo-offset = <0x0>; - qcom,data-fifo-size = <0xe00>; - qcom,descriptor-fifo-offset = <0xe00>; - qcom,descriptor-fifo-size = <0x200>; - }; - }; - - qcom,diag@0 { - compatible = "qcom,diag"; - status = "ok"; - }; - - pcie_x1phy: phy@7e000{ - compatible = "qca,uni-pcie-phy-gen2"; - reg = <0x7e000 0x800>; - phy-type = "gen2"; - #phy-cells = <0>; - clocks = <&gcc GCC_PCIE1_PIPE_CLK>; - clock-names = "pipe_clk"; - - resets = <&gcc GCC_PCIE1_PHY_BCR>, - <&gcc GCC_PCIE1PHY_PHY_BCR>; - reset-names = "phy", - "phy_phy"; - mode_fixed = <2>; - status = "disabled"; - }; - - pcie_x1: pci@80000000 { - compatible = "qcom,pcie-ipq5018"; - reg = <0x80000000 0xf1d - 0x80000F20 0xa8 - 0x80001000 0x1000 - 0x78000 0x3000 - 0x80100000 0x1000>; - reg-names = "dbi", "elbi", "dm_iatu", "parf", "config"; - device_type = "pci"; - linux,pci-domain = <0>; - bus-range = <0x00 0xff>; - num-lanes = <1>; - #address-cells = <3>; - #size-cells = <2>; - - phys = <&pcie_x1phy>; - phy-names ="pciephy"; - force_gen2 = <1>; - - ranges = <0x81000000 0 0x80200000 0x80200000 - 0 0x00100000 /* downstream I/O */ - 0x82000000 0 0x80300000 0x80300000 - 0 0x10000000>; /* non-prefetchable memory */ - - interrupts = , - <0 416 IRQ_TYPE_NONE>, <0 417 IRQ_TYPE_NONE>, - <0 418 IRQ_TYPE_NONE>, <0 419 IRQ_TYPE_NONE>, - <0 420 IRQ_TYPE_NONE>, <0 421 IRQ_TYPE_NONE>, - <0 422 IRQ_TYPE_NONE>, <0 423 IRQ_TYPE_NONE>, - <0 424 IRQ_TYPE_NONE>, <0 425 IRQ_TYPE_NONE>, - <0 426 IRQ_TYPE_NONE>, <0 427 IRQ_TYPE_NONE>, - <0 428 IRQ_TYPE_NONE>, <0 429 IRQ_TYPE_NONE>, - <0 430 IRQ_TYPE_NONE>, <0 431 IRQ_TYPE_NONE>, - <0 432 IRQ_TYPE_NONE>, <0 433 IRQ_TYPE_NONE>, - <0 434 IRQ_TYPE_NONE>, <0 435 IRQ_TYPE_NONE>, - <0 436 IRQ_TYPE_NONE>, <0 437 IRQ_TYPE_NONE>, - <0 438 IRQ_TYPE_NONE>, <0 439 IRQ_TYPE_NONE>, - <0 440 IRQ_TYPE_NONE>, <0 441 IRQ_TYPE_NONE>, - <0 442 IRQ_TYPE_NONE>, <0 443 IRQ_TYPE_NONE>, - <0 444 IRQ_TYPE_NONE>, <0 445 IRQ_TYPE_NONE>, - <0 446 IRQ_TYPE_NONE>, <0 447 IRQ_TYPE_NONE>; - interrupt-names = "msi", "msi_0", "msi_1", - "msi_2", "msi_3", "msi_4", - "msi_5", "msi_6", "msi_7", - "msi_8", "msi_9", "msi_10", - "msi_11", "msi_12", "msi_13", - "msi_14", "msi_15", "msi_16", - "msi_17", "msi_18", "msi_19", - "msi_20", "msi_21", - "msi_23", "msi_24", "msi_25", - "msi_26", "msi_27", "msi_28", - "msi_29", "msi_30", "msi_31"; - #interrupt-cells = <1>; - interrupt-map-mask = <0 0 0 0x7>; - interrupt-map = <0 0 0 1 &intc 0 142 - IRQ_TYPE_LEVEL_HIGH>, /* int_a */ - <0 0 0 2 &intc 0 143 - IRQ_TYPE_LEVEL_HIGH>, /* int_b */ - <0 0 0 3 &intc 0 144 - IRQ_TYPE_LEVEL_HIGH>, /* int_c */ - <0 0 0 4 &intc 0 145 - IRQ_TYPE_LEVEL_HIGH>; /* int_d */ - - clocks = <&gcc GCC_SYS_NOC_PCIE1_AXI_CLK>, - <&gcc GCC_PCIE1_AXI_M_CLK>, - <&gcc GCC_PCIE1_AXI_S_CLK>, - <&gcc GCC_PCIE1_AHB_CLK>, - <&gcc GCC_PCIE1_AUX_CLK>, - <&gcc GCC_PCIE1_AXI_S_BRIDGE_CLK>; - - clock-names = "sys_noc", - "axi_m", - "axi_s", - "ahb", - "aux", - "axi_bridge"; - - resets = <&gcc GCC_PCIE1_PIPE_ARES>, - <&gcc GCC_PCIE1_SLEEP_ARES>, - <&gcc GCC_PCIE1_CORE_STICKY_ARES>, - <&gcc GCC_PCIE1_AXI_MASTER_ARES>, - <&gcc GCC_PCIE1_AXI_SLAVE_ARES>, - <&gcc GCC_PCIE1_AHB_ARES>, - <&gcc GCC_PCIE1_AXI_MASTER_STICKY_ARES>, - <&gcc GCC_PCIE1_AXI_SLAVE_STICKY_ARES>; - - reset-names = "pipe", - "sleep", - "sticky", - "axi_m", - "axi_s", - "ahb", - "axi_m_sticky", - "axi_s_sticky"; - - qcom,msi-gicm-addr = <0x0B00A040>; - qcom,msi-gicm-base = <0x1c0>; - - status = "disabled"; - - pcie_x1_rp: pcie_x1_rp { - reg = <0 0 0 0 0>; - }; - }; - - pcie_x2phy: phy@86000{ - compatible = "qca,uni-pcie-phy-gen2"; - reg = <0x86000 0x800 0x86800 0x800>; - phy-type = "gen2"; - #phy-cells = <0>; - clocks = <&gcc GCC_PCIE0_PIPE_CLK>; - clock-names = "pipe_clk"; - - resets = <&gcc GCC_PCIE0_PHY_BCR>, - <&gcc GCC_PCIE0PHY_PHY_BCR>; - reset-names = "phy", - "phy_phy"; - mode_fixed = <2>; - x2 = <1>; - status = "disabled"; - }; - - pcie_x2: pci@a0000000 { - compatible = "qcom,pcie-ipq5018"; - reg = <0xa0000000 0xf1d - 0xa0000F20 0xa8 - 0xa0001000 0x1000 - 0x80000 0x3000 - 0xa0100000 0x1000>; - reg-names = "dbi", "elbi", "dm_iatu", "parf", "config"; - device_type = "pci"; - linux,pci-domain = <1>; - bus-range = <0x00 0xff>; - num-lanes = <2>; - #address-cells = <3>; - #size-cells = <2>; - - phys = <&pcie_x2phy>; - phy-names ="pciephy"; - force_gen2 = <1>; - - ranges = <0x81000000 0 0xa0200000 0xa0200000 - 0 0x00100000 /* downstream I/O */ - 0x82000000 0 0xa0300000 0xa0300000 - 0 0x10000000>; /* non-prefetchable memory */ - - interrupts = , - <0 448 IRQ_TYPE_NONE>, <0 449 IRQ_TYPE_NONE>, - <0 450 IRQ_TYPE_NONE>, <0 451 IRQ_TYPE_NONE>, - <0 452 IRQ_TYPE_NONE>, <0 453 IRQ_TYPE_NONE>, - <0 454 IRQ_TYPE_NONE>, <0 455 IRQ_TYPE_NONE>, - <0 456 IRQ_TYPE_NONE>, <0 457 IRQ_TYPE_NONE>, - <0 458 IRQ_TYPE_NONE>, <0 459 IRQ_TYPE_NONE>, - <0 460 IRQ_TYPE_NONE>, <0 461 IRQ_TYPE_NONE>, - <0 462 IRQ_TYPE_NONE>, <0 463 IRQ_TYPE_NONE>, - <0 464 IRQ_TYPE_NONE>, <0 465 IRQ_TYPE_NONE>, - <0 466 IRQ_TYPE_NONE>, <0 467 IRQ_TYPE_NONE>, - <0 468 IRQ_TYPE_NONE>, <0 469 IRQ_TYPE_NONE>, - <0 470 IRQ_TYPE_NONE>, <0 471 IRQ_TYPE_NONE>, - <0 472 IRQ_TYPE_NONE>, <0 473 IRQ_TYPE_NONE>, - <0 474 IRQ_TYPE_NONE>, <0 475 IRQ_TYPE_NONE>, - <0 476 IRQ_TYPE_NONE>, <0 477 IRQ_TYPE_NONE>, - <0 478 IRQ_TYPE_NONE>, <0 479 IRQ_TYPE_NONE>; - interrupt-names = "msi", "msi_0", "msi_1", - "msi_2", "msi_3", "msi_4", - "msi_5", "msi_6", "msi_7", - "msi_8", "msi_9", "msi_10", - "msi_11", "msi_12", "msi_13", - "msi_14", "msi_15", "msi_16", - "msi_17", "msi_18", "msi_19", - "msi_20", "msi_21", - "msi_23", "msi_24", "msi_25", - "msi_26", "msi_27", "msi_28", - "msi_29", "msi_30", "msi_31"; - #interrupt-cells = <1>; - interrupt-map-mask = <0 0 0 0x7>; - interrupt-map = <0 0 0 1 &intc 0 75 - IRQ_TYPE_LEVEL_HIGH>, /* int_a */ - <0 0 0 2 &intc 0 78 - IRQ_TYPE_LEVEL_HIGH>, /* int_b */ - <0 0 0 3 &intc 0 79 - IRQ_TYPE_LEVEL_HIGH>, /* int_c */ - <0 0 0 4 &intc 0 83 - IRQ_TYPE_LEVEL_HIGH>; /* int_d */ - - clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>, - <&gcc GCC_PCIE0_AXI_M_CLK>, - <&gcc GCC_PCIE0_AXI_S_CLK>, - <&gcc GCC_PCIE0_AHB_CLK>, - <&gcc GCC_PCIE0_AUX_CLK>, - <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>; - - clock-names = "sys_noc", - "axi_m", - "axi_s", - "ahb", - "aux", - "axi_bridge"; - - resets = <&gcc GCC_PCIE0_PIPE_ARES>, - <&gcc GCC_PCIE0_SLEEP_ARES>, - <&gcc GCC_PCIE0_CORE_STICKY_ARES>, - <&gcc GCC_PCIE0_AXI_MASTER_ARES>, - <&gcc GCC_PCIE0_AXI_SLAVE_ARES>, - <&gcc GCC_PCIE0_AHB_ARES>, - <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>, - <&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>; - - reset-names = "pipe", - "sleep", - "sticky", - "axi_m", - "axi_s", - "ahb", - "axi_m_sticky", - "axi_s_sticky"; - - qcom,msi-gicm-addr = <0x0B00B040>; - qcom,msi-gicm-base = <0x1e0>; - - status = "disabled"; - - pcie_x2_rp: pcie_x2_rp { - reg = <0 0 0 0 0>; - }; - }; - - qgic_msi_0: qti,qgic2m-msi_0 { - compatible = "qti,qgic2m-msi"; - - interrupts = <0 416 IRQ_TYPE_NONE>, <0 417 IRQ_TYPE_NONE>, - <0 418 IRQ_TYPE_NONE>, <0 419 IRQ_TYPE_NONE>, - <0 420 IRQ_TYPE_NONE>, <0 421 IRQ_TYPE_NONE>, - <0 422 IRQ_TYPE_NONE>, <0 423 IRQ_TYPE_NONE>, - <0 424 IRQ_TYPE_NONE>, <0 425 IRQ_TYPE_NONE>, - <0 426 IRQ_TYPE_NONE>, <0 427 IRQ_TYPE_NONE>, - <0 428 IRQ_TYPE_NONE>, <0 429 IRQ_TYPE_NONE>, - <0 430 IRQ_TYPE_NONE>, <0 431 IRQ_TYPE_NONE>, - <0 432 IRQ_TYPE_NONE>, <0 433 IRQ_TYPE_NONE>, - <0 434 IRQ_TYPE_NONE>, <0 435 IRQ_TYPE_NONE>, - <0 436 IRQ_TYPE_NONE>, <0 437 IRQ_TYPE_NONE>, - <0 438 IRQ_TYPE_NONE>, <0 439 IRQ_TYPE_NONE>, - <0 440 IRQ_TYPE_NONE>, <0 441 IRQ_TYPE_NONE>, - <0 442 IRQ_TYPE_NONE>, <0 443 IRQ_TYPE_NONE>, - <0 444 IRQ_TYPE_NONE>, <0 445 IRQ_TYPE_NONE>, - <0 446 IRQ_TYPE_NONE>, <0 447 IRQ_TYPE_NONE>; - interrupt-names = "msi_0", "msi_1", - "msi_2", "msi_3", "msi_4", - "msi_5", "msi_6", "msi_7", - "msi_8", "msi_9", "msi_10", - "msi_11", "msi_12", "msi_13", - "msi_14", "msi_15", "msi_16", - "msi_17", "msi_18", "msi_19", - "msi_20", "msi_21", - "msi_23", "msi_24", "msi_25", - "msi_26", "msi_27", "msi_28", - "msi_29", "msi_30", "msi_31"; - - qti,msi-gicm-addr = <0x0B00A040>; - qti,msi-gicm-base = <0x1c0>; - - status = "disabled"; - }; - - qgic_msi_1: qti,qgic2m-msi_1 { - compatible = "qti,qgic2m-msi"; - - interrupts = <0 448 IRQ_TYPE_NONE>, <0 449 IRQ_TYPE_NONE>, - <0 450 IRQ_TYPE_NONE>, <0 451 IRQ_TYPE_NONE>, - <0 452 IRQ_TYPE_NONE>, <0 453 IRQ_TYPE_NONE>, - <0 454 IRQ_TYPE_NONE>, <0 455 IRQ_TYPE_NONE>, - <0 456 IRQ_TYPE_NONE>, <0 457 IRQ_TYPE_NONE>, - <0 458 IRQ_TYPE_NONE>, <0 459 IRQ_TYPE_NONE>, - <0 460 IRQ_TYPE_NONE>, <0 461 IRQ_TYPE_NONE>, - <0 462 IRQ_TYPE_NONE>, <0 463 IRQ_TYPE_NONE>, - <0 464 IRQ_TYPE_NONE>, <0 465 IRQ_TYPE_NONE>, - <0 466 IRQ_TYPE_NONE>, <0 467 IRQ_TYPE_NONE>, - <0 468 IRQ_TYPE_NONE>, <0 469 IRQ_TYPE_NONE>, - <0 470 IRQ_TYPE_NONE>, <0 471 IRQ_TYPE_NONE>, - <0 472 IRQ_TYPE_NONE>, <0 473 IRQ_TYPE_NONE>, - <0 474 IRQ_TYPE_NONE>, <0 475 IRQ_TYPE_NONE>, - <0 476 IRQ_TYPE_NONE>, <0 477 IRQ_TYPE_NONE>, - <0 478 IRQ_TYPE_NONE>, <0 479 IRQ_TYPE_NONE>; - interrupt-names = "msi_0", "msi_1", - "msi_2", "msi_3", "msi_4", - "msi_5", "msi_6", "msi_7", - "msi_8", "msi_9", "msi_10", - "msi_11", "msi_12", "msi_13", - "msi_14", "msi_15", "msi_16", - "msi_17", "msi_18", "msi_19", - "msi_20", "msi_21", - "msi_23", "msi_24", "msi_25", - "msi_26", "msi_27", "msi_28", - "msi_29", "msi_30", "msi_31"; - - qti,msi-gicm-addr = <0x0B00B040>; - qti,msi-gicm-base = <0x1e0>; - - status = "disabled"; - }; - - qcom,test@0 { - compatible = "qcom,testmhi"; - status = "ok"; - }; - - tzlog: qca,tzlog { - compatible = "qca,tzlog_ipq50xx"; - interrupts = ; - qca,tzbsp-diag-buf-size = <0x2000>; - }; - - eud: qcom,msm-eud{ - compatible = "qcom,msm-eud"; - reg = <0x58000 0x1000>, - <0x59000 0x2000>, - <0x5a000 0x1000>; - reg-names = "eud_base", - "eud_mode_mgr", - "eud_mode_mgr2"; - interrupts = ; - interrupt-names = "eud_irq"; - status = "disabled"; - }; - - bt: bt@7000000 { - compatible = "qcom,bt"; - firmware = "IPQ5018/bt_fw_patch.mdt"; - - reg = <0x01943008 0x8>; - reg-names = "bt_warm_rst"; - memory-region = <&bt_region>; - - qcom,ipc = <&apcs 8 23>; - interrupts = ; - - resets = <&gcc GCC_BTSS_BCR>; - reset-names = "btss_reset"; - - clocks = <&gcc GCC_BTSS_LPO_CLK>; - clock-names = "lpo_clk"; - }; - lpass: lpass@0xA000000{ - compatible = "qca,lpass-ipq5018"; - reg = <0xA000000 0x3BFFFF>; - clocks = <&gcc GCC_SNOC_LPASS_AXIM_CLK>, - <&gcc GCC_SNOC_LPASS_SWAY_CLK>, - <&gcc GCC_LPASS_CORE_AXIM_CLK>, - <&gcc GCC_LPASS_SWAY_CLK>; - clock-names = "snoc_axim", "snoc_sway", "axim", "sway"; - resets = <&gcc GCC_LPASS_BCR>; - reset-names = "lpass"; - status = "disabled"; - }; - - pcm: pcm@0xA3C0000{ - compatible = "qca,ipq5018-lpass-pcm"; - reg = <0xA3C0000 0x23014>; - interrupts = <0 27 IRQ_TYPE_LEVEL_HIGH>; - interrupt-names = "out0"; - capture_memory = "lpm"; - playback_memory = "lpm"; - voice_loopback = <0>; - status = "disabled"; - }; - - pcm_lb: pcm_lb@0 { - compatible = "qca,ipq5018-pcm-lb"; - status = "disabled"; - }; - }; - - cpus { - #address-cells = <0x1>; - #size-cells = <0x0>; - - CPU0: cpu@0 { - device_type = "cpu"; - compatible = "arm,cortex-a53"; - reg = <0x0>; - enable-method = "psci"; - qcom,acc = <&acc0>; - next-level-cache = <&L2_0>; - clocks = <&apss_clk APCS_ALIAS0_CORE_CLK>; - clock-names = "cpu"; - operating-points = < - /* kHz uV (fixed) */ - 800000 1100000 - 1008000 1100000 - >; - clock-latency = <200000>; - }; - - CPU1: cpu@1 { - device_type = "cpu"; - compatible = "arm,cortex-a53"; - reg = <0x1>; - enable-method = "psci"; - qcom,acc = <&acc1>; - next-level-cache = <&L2_0>; - clocks = <&apss_clk APCS_ALIAS0_CORE_CLK>; - clock-names = "cpu"; - operating-points = < - /* kHz uV (fixed) */ - 800000 1100000 - 1008000 1100000 - >; - clock-latency = <200000>; - }; - - L2_0: l2-cache { - compatible = "cache"; - cache-level = <0x2>; - }; - }; - - clocks { - sleep_clk: sleep_clk { - compatible = "fixed-clock"; - clock-frequency = <32000>; - #clock-cells = <0>; - }; - - xo: xo { - compatible = "fixed-clock"; - clock-frequency = <24000000>; - #clock-cells = <0>; - }; - }; - - pmuv8: pmu { - compatible = "arm,cortex-a53-pmu"; - interrupts = ; - }; - - firmware { - scm { - compatible = "qcom,scm-ipq5018"; - }; - qfprom_sec { - compatible = "qcom,qfprom-sec"; - img-addr = <0x4A800000>; - img-size = <0x00400000>; - }; - }; - -}; - -#include "qcom-ipq5018-coresight.dtsi" -#include "qcom-ipq5018-thermal.dtsi" diff --git a/feeds/ipq807x/ipq807x/image/ipq50xx.mk b/feeds/ipq807x/ipq807x/image/ipq50xx.mk index 9975a1254..572c035b2 100644 --- a/feeds/ipq807x/ipq807x/image/ipq50xx.mk +++ b/feeds/ipq807x/ipq807x/image/ipq50xx.mk @@ -165,3 +165,56 @@ define Device/yuncore_fap655 endef TARGET_DEVICES += yuncore_fap655 +define Device/optimcloud_d50-5g + DEVICE_TITLE := OptimCloud D50-5G + DEVICE_DTS := qcom-ipq5018-optimcloud-d50-5g + SUPPORTED_DEVICES := optimcloud,d50-5g + DEVICE_PACKAGES := ath11k-wifi-optimcloud-d50 ath11k-firmware-ipq50xx ath11k-firmware-qcn9000 + DEVICE_DTS_CONFIG := config@mp03.1 + IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi + IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata + IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand + IMAGE/nand-factory.ubi := append-ubi +endef +TARGET_DEVICES += optimcloud_d50-5g + +define Device/optimcloud_d50 + DEVICE_TITLE := OptimCloud D50 + DEVICE_DTS := qcom-ipq5018-optimcloud-d50 + SUPPORTED_DEVICES := optimcloud,d50 + DEVICE_PACKAGES := ath11k-wifi-optimcloud-d50 ath11k-firmware-ipq50xx ath11k-firmware-qcn9000 ath11k-firmware-qcn6122 + DEVICE_DTS_CONFIG := config@mp03.1 + IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi + IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata + IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand + IMAGE/factory.ubi := append-ubi | qsdk-ipq-factory-nand + IMAGE/nand-factory.ubi := append-ubi | qsdk-ipq-factory-nand +endef +TARGET_DEVICES += optimcloud_d50 + +define Device/optimcloud_d60-5g + DEVICE_TITLE := OptimCloud D60-5G + DEVICE_DTS := qcom-ipq5018-optimcloud-d60-5g + SUPPORTED_DEVICES := optimcloud,d60-5g + DEVICE_PACKAGES := ath11k-wifi-optimcloud-d60 ath11k-firmware-ipq50xx ath11k-firmware-qcn9000 + DEVICE_DTS_CONFIG := config@mp03.1 + IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi + IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata + IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand + IMAGE/nand-factory.ubi := append-ubi +endef +TARGET_DEVICES += optimcloud_d60-5g + +define Device/optimcloud_d60 + DEVICE_TITLE := OptimCloud D60 + DEVICE_DTS := qcom-ipq5018-optimcloud-d60 + SUPPORTED_DEVICES := optimcloud,d60 + DEVICE_PACKAGES := ath11k-wifi-optimcloud-d60 ath11k-firmware-ipq50xx ath11k-firmware-qcn9000 ath11k-firmware-qcn6122 + DEVICE_DTS_CONFIG := config@mp03.1 + IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi + IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata + IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand + IMAGE/factory.ubi := append-ubi | qsdk-ipq-factory-nand + IMAGE/nand-factory.ubi := append-ubi | qsdk-ipq-factory-nand + endef + TARGET_DEVICES += optimcloud_d60 diff --git a/feeds/wifi-ax/ath11k-wifi/Makefile b/feeds/wifi-ax/ath11k-wifi/Makefile index 1a4a9d247..29ffb4394 100644 --- a/feeds/wifi-ax/ath11k-wifi/Makefile +++ b/feeds/wifi-ax/ath11k-wifi/Makefile @@ -128,6 +128,16 @@ $(call Package/ath11k-wifi-default) TITLE:=motorola q14 bdf endef +define Package/ath11k-wifi-optimcloud-d50 +$(call Package/ath11k-wifi-default) + TITLE:=optimcloud d50 bdf +endef + +define Package/ath11k-wifi-optimcloud-d60 +$(call Package/ath11k-wifi-default) + TITLE:=optimcloud d60 bdf +endef + define Package/ath11k-wifi-plasmacloud-pax1800 $(call Package/ath11k-wifi-default) TITLE:=plasmacloud-pax1800(-v2) bdf @@ -274,6 +284,20 @@ define Package/ath11k-wifi-cig-wf196_6g-us/install echo -n 'US' > $(1)/lib/firmware/country endef +define Package/ath11k-wifi-optimcloud-d50/install + $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/ + $(INSTALL_DIR) $(1)/lib/firmware/ath11k/QCN9074/hw1.0/ + $(INSTALL_DATA) ./board-optimcloud-d50.bin.IPQ5018 $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/board.bin + $(INSTALL_DATA) ./board-optimcloud-d50.bin.QCN9074 $(1)/lib/firmware/ath11k/QCN9074/hw1.0/board.bin +endef + +define Package/ath11k-wifi-optimcloud-d60/install + $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/ + $(INSTALL_DIR) $(1)/lib/firmware/ath11k/QCN9074/hw1.0/ + $(INSTALL_DATA) ./board-optimcloud-d60.bin.QCN9074 $(1)/lib/firmware/ath11k/QCN9074/hw1.0/board.bin + $(INSTALL_DATA) ./board-optimcloud-d60.bin.QCN9074 $(1)/lib/firmware/ath11k/QCN9074/hw1.0/board.bin +endef + define Package/ath11k-wifi-gl-ax1800/install $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ6018/hw1.0/ $(INSTALL_DATA) ./board-gl-ax1800.bin.IPQ6018 $(1)/lib/firmware/ath11k/IPQ6018/hw1.0/board-2.bin @@ -388,6 +412,8 @@ $(eval $(call BuildPackage,ath11k-wifi-cig-wf188n-us)) $(eval $(call BuildPackage,ath11k-wifi-cig-wf196_6g-ca)) $(eval $(call BuildPackage,ath11k-wifi-cig-wf196_6g-us)) $(eval $(call BuildPackage,ath11k-wifi-motorola-q14)) +$(eval $(call BuildPackage,ath11k-wifi-optimcloud-d50)) +$(eval $(call BuildPackage,ath11k-wifi-optimcloud-d60)) $(eval $(call BuildPackage,ath11k-wifi-hfcl-ion4xi)) $(eval $(call BuildPackage,ath11k-wifi-hfcl-ion4xi_wp)) $(eval $(call BuildPackage,ath11k-wifi-hfcl-ion4xi_w)) diff --git a/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d50.bin.IPQ5018 b/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d50.bin.IPQ5018 new file mode 100644 index 0000000000000000000000000000000000000000..b65d6bc71e4eb57285c91e4632e3229cad14b1ab GIT binary patch literal 131072 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 literal 0 HcmV?d00001 diff --git a/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d50.bin.QCN9074 b/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d50.bin.QCN9074 new file mode 100644 index 0000000000000000000000000000000000000000..86c84f2e2a040378410bd827ac7132c6300fa3aa GIT binary patch literal 131072 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

;>U#>u z3dK|EE0rI<(|WAcRl)Nb@KuMaDfFzEr8hR)G2(aC0`>SxJwON4B88CyKaYFZkNV+nE3~}qeu-JD zn?^_JQTyJ*jc*f824VaIy(z1LaL;tAPu-RhaHSB}R2Wv*m-36bzKg#D8@g7yy zDtdG>bigUpzAAJ)8iC+{Tc!2A6+ z(p|vM?3J-+(j5pqj3->Lr!lH|hk^Zv74S#6<-F#a-Ci>o+x>0!$Bv-2>=R|}S(x3i zxR!vw2=1{%uc)6FcGAMdj$(&Ewf~??Yp|3yN4=4MU+o*1RxziI*3PT(4cJFuo@=y?z8>r6TOj2M zRv-qalGwK}n6t&r<(-bXkv$`8#v5hbV%z5~ScY6S+vvOx^Pb0vlC_#Ib9>v`H~0vj z@5{W}I?n^&g#8lkJtI4|UOQ9P811b7Hk#!R$l5mD8uod(g}dN^7!L2@Iqy+?f_=ap zTDCs7{O&@ku!3!;!r`A}Z?`?h>^*3Mt!ekqTDP$OZFuwk*mmrM@Ggka7oS?(nd|$g z#dhoheuB@v*o*txlJ6q0ccZ{P65L0@+8PJ@&rc;lb_&BPds1~*_o+C{T5BMQ@2j4& zJ|ts}Dx=0hSGegl>^L2R|M3ni#Qic4W>7b*+k2#s`VA{gWz+)9Uc1#U*w?>7myW`^ z$d~dK^$0ZmhggAs2ReAF+6%9x0R1Yq!@Bv0?p5E)g;@P8D~>>G{{^4MC2B%D?Umid z9$BAyV|{g~C`W(6is?@S)PAg@hhYBQB^RsDWj!jb+KUIpGOQ5S$I9In)kC~Y^ zQGInQY{kv65HYVq13!hF4^a(qt4P2aZ5KIGjYcbelJ&%Uswe!DCHM;}k5M$%T${i? z8zhsk&Z+Rc3@pv>RcBc0yI@fthDLoDYrVUGp`Tbuuc_IvCC1Q5SU$aB<&+*y8&qArMdd|zaZ25+N?--{W_TVIVcSo| zynhJRTs!)ms$)g{TUZyg#5#?zdB2;7?D0NB<1=&gNj%e~0V`Pw_oj z9(LnMc#1pKaH;4oSRa2=FxFnv)kf@)l!4E4D}1X3@Cf%{b$K(LfVKNP{MQUxPhVh1 zVj?79C@kH|stLTFL+TFHp*@|H>)<(rGztCCU(JxE;5F5!LAdXa)#DBDqKB%X=;v-K6#i2NEV#d=OFc?cReN58 zhWFG5r+tTsudpk#pY9Xy!_O)UY5z?$q|Wfvy|b%#$KirP!@H~i3(6oCDa?eO5gmv5+M zR26l)U$(|BN=;ZvO|XkOM!gAZ{0`LocDV`O&2*Hu9krYbKTtr<;~_04Q+D6R_Kk_gZJ0dY6H!1>TgpJE3}!b^Gz(z*xxntx&SB}4bmTlm{a zgT;FIW}m{I=|sy#lJFCi)ijz2ujC%8CMH7aKbBo#)x`soPt=F1i)yUyg$MjQb~|FQ z9`Ob|<89Dlk6^#SMgPd2I72W3-z$uVH}pF^*on{^1!#?Y61!m~@VAOuK!ewzp_oN? zLE~~CR0ZbW(|pkxrRRavR>AJkpYUXFm!se>H%5O}Q7hofR>k^CGtm}u{1bLMt6+TH zuWncEu{(5BjTQ4mcgSf&F%PRLU9dCtk=#PhVs&XVywFy1H)Og1EkSP&$7(=0yo#YD zgb%#sP2wO{0AfWa^i&1xb+1w5VOdn9$(W;W!sxFJ?YB%t(iH59J%_#Nv1&T>e}Je5 zFZ8l)mVhzOq2~Mo&!22N9L0~lex7{}wP$fYU&3!rDL%`@XXp3?S6jq!Otzrk#0opx(MNEOi9HiOPnEStb#}kRoa-^35hHK=f&#Pt zTPW3>H=d0?G^cv_y!l(&W;bWOjaOh+^-p0Hk9RFjU^P4Y7|ZH!u8G0?D5Q(`OS1ag zjJ$)eI?d^Fw#|9Hp4aHvV&=VqcOcQ5U@5cx%s#<;u+%@q`vB}0@L8t3(80ExpUp2} zf7}yumNny@{tDjPQ7X5JxviJGCHn%*VJqsu9NAacj-5ER+`oY5yIU5-EL{*g7QAm^ z^FC9~d6Y8_S?5zd&+YLW7gl+9S-uGK`xe$0`_}9c?9!aR)_(Q@y&w0J{#^`fy+z@h z6v52HKBc{1atz~{<&4qhac!U5^XzXP-?mfH~u4)1wqytU|yaa9VGgiFc$EwT?SUs$!X3Fh2S2Ib*Lk|yt zT-H$&Afpx3a>(#b`IA}*oje$`auJ;7sfDuwU%<{NOLJ5&S%pgC97oPu0Qch|e&q`D4Yl4=tw;X`2|KYSANd0M1t|lFKklC*m8= zU%>j9AZANnSh)C$=M-&COC1i1pU~aI>26z6qRuf=LzidG?r~~((G~Aj7eCl z?jv@{R4PUhvNr`|_XX#?VE?p(M@1rDJ|pH}g>V4s`=~61lMc;9KUtSXqsDLJr;Ypo z>(t#`1KTf|C5w&G8lIm9(OXcZFSRn_|;v(t~A+YXP4gN+I`VN1uHXb_) z^zE3SZ@qP-9lgsE=H+1#f1Hn6q4W!?JhAJdUqAhR*c1Ioh72Fcocq; zpJ)#&bg0@2JCJuQrpo749bSFM{>^;s2{oWC)Ku)J+pyB!NiCq6Vkxbao#89qj$MK} zI4!c4qQt}SS%<0-*dZ8?^Ct7r*ALL0A_Ct4_(!!A%P@jp!0DiS)r+FG7=`ug1oYQF z-e-Xib&Q6>k9Z1e#pBdhI0rQck~WJfs}9onl!;$2|f7WUum`0mCC=n6N^J>8~!MGWflAXcwKX`ZM+-(#nsy(kLb zcc?4}JN;&L2mH?|IIUQj3c(KC4Vk?3TIvBy@j3A)e1hYU{;H}Y`tN<%qeY}k6c*LhYPlD<#H+V) zdIvidSdpxNdVc`V;x3%k+XK1zQ_jK2dQ0KVEIg5dv_b{T7UFBv%U`@BBC!@x3?8b0 zcY6|E&v&x7>IC1mpzx79U^I2#a`U~K-C8x^)~pBk6}OUQLzo4 zb1m#Y^yX27U6DQT+*+V-p1_L2YV0)~f|lVu$8WJiRaShCoz=UjGgcYPVtr+bdIOp* zL#1KI<`(=V8{!V@bD{zroj1jYsp2bSQ0i=k)e6c}R$JpEfkFJ&aMHUvR7z5vm zk74i6Rn6rZjMY%_IK0b-I1#u^Rh9nOz37a6zxwbnYl?E>8+8(UAtCTLnqy}Dkz#SC zuReBLeo|X$xmqRHLxyVOWY;+O<$uC+=&f2|Jf}gn6Cn5T@EhBRQsOZ>0a?tTPLR9z zQM;ztL#+h=^-k#NXV{OTZ();;R6DVn(u|^IBF6KNG90TPBh)O^y(RMfg5HY*68%N# z%j%bS=MzQJaqkjdW2p*Lb^P-g=kf{xtQg_wHKM>*Kyj~df3C|HX?&5!7wPlhK2Hwm z&sCQ5&Osmt1QNo{_oL62EFnDboPQK3;WGc}wz|%BP6W=@ug-IWfXijz3kouyQBmge z^ylXU`5Z4JBhAa`X!BXBl=&=Bz84Rz)HcI4#T2wZtRc4gJ*+~_%P9RwT%90VK$ z90VK$90VK$90VK$90VK$90VK$90VK$90VK$90VK$90VK$90VK$90VK$90VK$90VK$ z90VK$90VK$90VK$90VK$90VK$90VK$90VK$90aZn1OjDXU~XCx=$pIrxhdO8>mYDC z0?FZX_5W8r{kcsihx?rK`-92O_Xn@6FYKIF8@nH!&woeY=+V;vyU3)U-$gF)5*PRH zs5wt<1TJxRTy^YhoSaVwf%8EiD3|tgkYhie56n)U^F+Y0pRc+pDOVLfPqDaevibWQtyM&^2RkAvH@}j_e)Lsl7Rndu;v67dtE3QgbzPYS*6vYPT pGK-VkLBK)4LBK)4LBK)4LBK)4LBK)4LBK)4LBK)4LExH1;Qyi2Mvnjh literal 0 HcmV?d00001 diff --git a/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d60.bin.IPQ5018 b/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d60.bin.IPQ5018 new file mode 100644 index 0000000000000000000000000000000000000000..b65d6bc71e4eb57285c91e4632e3229cad14b1ab GIT binary patch literal 131072 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 literal 0 HcmV?d00001 diff --git a/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d60.bin.QCN9074 b/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d60.bin.QCN9074 new file mode 100644 index 0000000000000000000000000000000000000000..86c84f2e2a040378410bd827ac7132c6300fa3aa GIT binary patch literal 131072 zcmeHQ2Vhk-7d}Z|OACb#+SgJFlu|Yd0?HI<3zX58O3SJUC?L2QDq9el3WzcVQAEVS z9?G5~f}o%%C~ieWL}WRB75KlC+}pl_&{sg_y-oV=xi`s4zMPz#ljOC6TrT2k(7rkm zE>Z(SsTj}4e_3t+NcZU9byH1T?({JUwQ2r(Omwk-|C9^%T-*|q?4xZHYc^@Kz z_0P?sj{d17YU-c5qMH7xV|~^Twe?RmQC0ukEGp}tAQ5H#)W&CICgy&`B{Qa6GJkT( z{K+NrCzs5hTrz)h$^6MB^QXBa3E^uKM9L7M!C8--yK4mjNpo~lS`^9NqCg7F{@@&x zwBNmC-~4x@_{T&=R}n?d zAaV~O3T}t|HzR)-@_(Ci{$e{&f8;Ops#X8iR{h~uc~k#BxEO=N%M1pggDec{q7KDS z#xFV7p*ZSLbUDgE9o)zt%otWi{t)E<+Kc?Vkbey@n2G%8gCNdd4f(^7|NETtpMinh zhq=MvBh(*lh=4B{`ZzGax>G&GSRHLBgf{HUIe#?9 zQWW~25b}p%ECqD{2KHDy;6?u3$j=zgx`458x*TM9$blCaL}M%zS%ErCM;!*C4J=2w z=*MWg4fc43Ea$Cc$)OkeC^J7}01N|JAKZ%kQRsu8bH?yu=!0nJ6D`XaOPR7<%c{fv zoa><50G$>A47EN&ALP9W`HQ0sUg)D}$YB)s0m~6|YEXM%P#gJqEO{YEi~(KemxBS3 zgMotqs{uz291I*eFcYFP7R*=}J*oAun!RJYgu_0wuPLKDJyz$z;;q6G?I%PN#&;NU z>%*lxhoxjaoBrZ$!|Dwz-o*{u%)Z7=zI}MD-le)mc$D|}@aDa$-xJfu-PleAAAd~h zfVf9vI=Gu`(i8>ZvyUYCll&j)-LY3DMKf zw0XRC&r%&D(z2cnnUprHTJP-TO+k5eQC?{CtaRhXw0o>>w=x|HrDi>wI-$eRxL#$t zgn2w0HZgrz`G;b^3wvDa>)((nd{Uj3Wc$A9LWKNAD2%j-IDKf;y_s+x;_L_ZW;4h&cyFa}%)#vtT8 zG2lMn{JH6a^;REXEQGa3evDBS_JPLW3zWff0KHszjHMH8 z47`wKjREw5uESGS9k?I7Yy)Eu{fO_brSUgv&borGhLI)7)hAs70@69X+r+>aK9USYr(LXPyj z#5xgj$n%1(zZW`PW57Cz<=}O+VHnE5+{E*<)~jB~a*18Yzt+mn7$Sde^t#4i6Z#Qy zSO{&%?Re(7-JTZ;Lk``*knIyamc6hq^jP42WE*7`#=__<9P_hY_F|tf7Ws7@UO|4I zpSccIQ3uZNg^d-%_Q6Io7HoZ@$AXt*DHd{&&BlXH4}lyP2=|V^#$XTX!1Fu$A(CZ@ z?KH-b$Dd3o#(|KRm_Lr51p1d7CS+Xpi}d^k>3khjs=Fr zF&2tJjtfJlhhr>+U@Q~}^NxS!SYTPU?1OAJk{7b1ZDkt+=p=1xV?5_CfI4`gleA8= z=Qh@9ZH+$3&;96yeV}c9$gzz9uN~zU1D0j2Q!o}XZDru7<-m)vP!i)Y20FDEg|Xk~g&b)cjr9@cR;`a%r`hA#i}}4I^pWO|vFORa0LG#>{PkEs8G1a= zge;9hKek65px3<}&m}P)W6*|TTnF@HIL2c^$U$Hs)WHi3J^hU{=4Nj&fKHELIkYi= zJ}P)C#sbE2UN7=928?5ITb6h{L$8OhEMsoW>%~|o1q@1{4$+Wi`S`F&+cF zuvPVVh8(fqnd$SeK46{dg&dV)Ie^a>jk!IF>(6}vofwF*l-CQL%oxyhelZ5iSNEHr z^x_Sp-959wSh=p}{Ir>so(b>e@oYoy`K@N&IL7@**0Z(mKCvR@^&2O;2V^~4wxQ3G zrY~0-AKowP*~*PQ7B_#j;&^x8tY@3v>As-(tQ*FLd-TGF_xi6$nSJAA_hVV<7Ox$+ zIC)0d(e6h*pFOsu>5NLxMtGFBbZxH%EncZOHoSLMx+NQXzm@(*h4JAY<*iu%!2D)2 z%RTM(Xxq~D15oE1o(c2FyKr6q#m!%-_^jLG*~)hZE>C==;v~=Zt~BM1@horUhMo(P znTJQ-r5k!JZuwfpXFYLQzG>LX#eV@ZJ6^Q|FeS z6y|}|+|B(~C(kQAF>Fv)x>fJ?U!L@Og$bT~7i=23y1}azCKmGK`(B?_DRawB4)bW+ z>TN^Twpw)K)CkPq_O<+-zRQ}tT7H6OA1!)k;EE=%R+=2)k$3Ut9?P50t1#I;$j(W$ zU`wCXsSCpwQh6IWvR2vP4JYVg`1vO-RSi);|qGo%gSy2)-;}5W^$+pk0tN- zT9>w@!VBThXZAI3WB+B%UcX_YCss?}9kROV>)GXW+17z;lIGqp#S{A_TYIlbUv$Is zZupS)wRCH*)#-~WJRbpD+`iu2(sxy>g%ziUd!$>vwdcy@c{fbuvpDv(Z2O?MQ}uKq0xehGd$b7 z;r&7DS}d+GEdn~#z7}sDxvu5HO4B^+xAKDl>r)q1c!AF=+1Hwn`ff~ltNe^`%&GRZ z;r#*Yn$9o(e3(bu7Hk=~Hhod~sh+s3+TLsZZEu#J9uE83zSiv=xT)E)O0T*-%Cp~H ztj`Rry-vZZYfY@T^7?&_*I|-5r76c(c_RH`eR|S4<#*mY2sj92N5I}&JKJZ49Ykf< z5S4;G8UvkF1b#_GWt>F}g5*yOqm zFQW|9f!h!PzaRu_uLZoYsmsDgF9jdF1oEHJ1~1MtmjQ+)(FZZF!LCOi@HvK1v>~V< z+HfrAJ}3(eN-jr!#t`#QBx8vB2XP;GY15ZS8%i$&jxV7fG1o=09Mm%XSilS4tlTHS z0CK?n7>zpUeyD2ogBSf+2K-B+A7jvuMKR~`SqY6n2-@I_paNq6ol+8I6o)-r1Z6}(7DN0X2S0hClOW3_SD+3vQ3vE_ouuo4 zb&3El)>_K39D#ocj0LSvSf}y4ztx75F~+bh^49_eUXDc@1D+d8PDeX1 z9*eXC2GD7ts6zoS>Y#O+r!2NXUW_GgWw9*gW<56o!(xnKYqX&n@}my|y!dW`&X4-* zv1seW+Q`p3(TjCg#-JSPP#SHBMIAEr0c45wfj9GOS(XFzV+`g-EsMZV&rK|gUd*k! zA0bD2UV(j)Tl+xgNBv7MhC_hi?ciS%7l2M3^qHG6EQI=dF_swvtrMYB zN$0G%w{V? zA7t8SjG-5{zQ$m?H7}qJ#UYDYCj!S%*eC^l$Qc9M#wx*WfE*Qu9BCUX)Vn&czfu~q z%>G6+_(yd>A8#+b?F0Y=>p>GT>c zpk=gEf!yRbZx!SOKR7PdfhJehA>rIC%X0{;!^$*Ps zzpj1Ra^)*rS^ZG9Y?(5pO4)r8d$??78+4nTU+0ZLY-|aHk}<`Lmxw7IQ~Wd%Bj7)N zU$SH@0(eK4C=ULok?=XL@%QK5aThmZQP1K6qCKfgdN14o(b1*&a=WAW%1)JvLT!{% zK0ZFypWDt>yLzBF=9S8&wKVRp(km}zZvp>ZvkSSdQW*ZTYJYK=um7xJPQh0t0ykae z>#79Jsq__#z(=@(ab2+$yh%MHezb0#p5CaD{o0e_`=q4Wwg2s1 zhYnXx%ItN?M%iFoho7d`+P2O9nUP`B=v?&fnH2gpwSN8DwX0V*?=mu4rl+RbDLtuw zO_^lNl1^z+ty`xinKIkzi{B;T-I-L&mMKl@*RNT#YSlAq)}ce&wpq3QSMFC}J+s&P zGzxNQw=?^v(@z~bcuG)q>c5bu(|RVGtaWhu$wLeL>&Uxg<36W;x(-#n(_{w$2LT5G z2LT5G2Z5^&fdJYuiYu)o{uhZ15JE~sA%w!cI`{we6uwB~i^RT2p9lAOa!BuoG=50$ zhxGoq_dj>~`~6?QDbzEs`~6?b)$_X7=tbx+LVw}kuL?qcp%cZKXn8zAe-ZkN&|if9 zq8$2*&|if9BJ>xbzsTvY3z8&>{z8<9E<``vfaVKB4*iEH5nVE;e)Q;4Z*C>}9Z@2> z5d9=%01-6!LJklmqD$r^58g2INFyOXh!W9-=qDjdh@in2@`NZ6T`~u`@+i`)TSsqP zkeE7|y+A-=EF)s52DlLY6b3OO4_%=!mJubQOI_r#tT2`lC87(_Phl)0f(BoVWkiYS zQWtqFD~x4CiReP~Qy9yLpurbo8Brp-)I}c4kNS_#HrGFTnoV#z?M2r)NiG5cUMb=$ zIMGFb;Gz~02z`Pm5nYIWfzT(2poIv8K0%a-uE2||PXeJ&5GA4u(Jv7C1Q9g&LZ2W? zL|5QN)+d3`Cx{Z!h3FRueS!!Ye4$SeC88_vBI^^!Hn^x_>lF4c2n1m)BT7UUqF)fk zG9qXpf-sg5C88_nB9G-DjAcZL=tA@h!dONG4Zax5h!W8ibdkq$5XLg1M06qg1z{{B zf(BoVWkiYS3UbEszetPo=t@Q)7-JbxBDxU$f-#m6K?@O#v5Y7YUBMT5EC*vOBT7UU zqF*q^G9qa3#aKp^h_2v^JeGqomJubQ3(+qaV;K=N_+l(0N<>$%GnTJpv32V9F9=-0 z?#QL78gyB%){ApnE9k6TtuN=ceCVd!tVidz_}ZbPLc6;Y!nYRAZO-iJYvcd_)W_c~ zxX_EsX?+pO`In*KJaQ0l5O5H7rY z^nm{_^waJ;!`FN1&t~ZVBJF+UIDO4r_^Vf~VsI+%AmAY2AmAY2AmAWy)ga&tdma&g z@+AOfZGaz4ThRFPFRo=233F5hd!o*x`KGQ9D>*z$uzH{d_Mo_U?^`BgK3or*dL zI0#%Z2%M>5oF`W!0#}ScITdjba1i*<5x5$4)b(8F|6Cv(1`Yz(F#^}KZn>0gzm7%h zs%-k@`dgfrQYJllU9P_Y>RE?Nd4IY7_UNT-qbIKmJd(vde+VvhJ8gcK>;E6v{4e$A zg{~)D=sJS)_W`bHb?G$DLBK)4LBK)4LBK)4LBK)a3Pa#>{ZFh*?dRD1F4zC!viV=? z&&%~cz%F$=ZGO4+XLIYn=GI@m!iKw39R~pi0S5sG0S5sGfol)}+YWL*9R#ig1oBgq zi`#K(K|rW6>&ARY;^FjppWy#=8ereCpbKKWpvVh0^I_Bw^C#TP+ea5MAYP9b}pNT$a{ys`aX^YJMbLAuG;CJQs zkyFF#1A!gHKV7r^5Vb$aKb21L&t&U|sGR-@BhR0!6{R+(_-AgmpR=_kjrb>f>xn!| z*mcVMoUH`sxr2a%fP;X8fP;X8z@r*Y79C29k@5eH3IrskmQbI^2EDh@iHgQmN2`SEQy zfR3i>nr=Yx4b1y=<`o>py_%#eLBTk^{cPz(~RPqnfDF#`#6e^GjtOD zLV4nw6N1LGgHE49@hRqgC!Ic#;w}7IDsEpx4w~P?{Jv=;4w~-GbV4!*P4`C+Q9>LC zO^@L6o3`Pg=}}B4G~`f*1!O$uPp{8Gzn@GWl21YsA?W%&PpyzXg@b-SL+5Wz36}i4 zq3LFnV6}IdrkheiQTF44w~M>bb|yAny##F0iDP}(_e9Y(^_)S z^iN!Vg9aQl{iCMSse#qshnQ~Il!JbMK-0~rp~dfaO*f{7R(t=_baQHGwf7{`i48gE z{8E5UZOB2>E~e8Pa?o@D(}@i@XgZYX`VBZ}I-2oKY{Ws+u{wQYO0@V_&~$T3wD?!j zbP^?6*BjaqQf?>jKv zIE{m*JE4BmIE90zyNWo_^*NMDh5UEZ>2IUPx0&}3Yq|k7w(yMO_B2lBp!4?@O+hDd z&~$&DKAjp{?HMBW5;aNYpx@Wy{7o8g(DYaV{nw-!2ThL=BQQQQIB0sjC=I#+2Te~A z$H~>SIU#6#UtoSsTXE3u=P;erl7psaF+NH095nrgexF8379MYDx-lhL@~}+P>6B#E ze}$%7P?Ck`8ZIxn83$cnX>Lz)Qx2Nm#Oae;anSU8q7djd95nrbxE*v$4w~Mj)2CCi z#jlZsJR~>bpx^J&?{A}It3STdbaP6!Q_#peJL3n zboyH)@J&hNpy~P&<1;yx5VXA9$n8&Q%t61esmp6YDHeWpB*tG#Lk{|Vynf$|Qmpm(C?c_jOWy*95mgS%TH~^LDS9TKG1O-G~H4{eo_-TXu7qg+fb?{A8j?=fKn}d zJ7~HQrCRdPmHDS8anSki*K|6iTK)Yfw>PypA?Wt@mFSP#;yCE^k8%3u4LE3eu%??) zbE|z%NX+leTX4|thcW-=tvG0U6sM0*;-KjnE&r!bwG%t6yHFx@hNgQk1%_-d8LLC?=KG{0m@v(nGv`lY3F(COchH-V1hpy_!M z`X?=ggQgd7{^n^MG`&XWPoy-fKis6Wv&QRKg1ja*<)Gj1XL(C&!a>uAb@~RBW{)qX6B=>Q?_c2gI=vMK zO~)&Yuk;KKn*N9DlirAfrit-OPvoHS3t;;xJ)MJoAIkH6dI|?kN9gp;Dc!1Xlun;O z=~jP4GuVS^ppy?n5eI3_;gQjb$qofk!2|>$aBjqO1B8?C<-9R#(ObD9J zP_Rc^wBexhx8?e^$lzf3ar;`f;GpStDh6}|4w_!4-=|PZw1?-j<_hDXWn)6n<+o-1 z*fNoWPJh3auZGmhlE+?5w`ssZzu(6AXSCv==@H^v%vY%#G(A6%>6>o0=|u!9G9i(J ze!ql(M?!rLnnsnJ>jDr^L^259Tn#26qw)RK;v{7ZNuQdes1_+%my{3Ie5oM$z;p7I zq2x<$%0q?7ADSR9v~fOhfC6Yg<%c8$$y+E`R-zDSy@Ik1h00h8lO^#@i&Es4Whh*h zrU+=zLeMIavI!NIO({w?ry|h$MSL1iQQ4A;`ovLD-*_s9nI~G_LB(Y|ijj>d#+5)Z zdD>G6*^FZ8HYzDIsFZ9)r6ojLcB8WL0V?bBBbD>{hRXSNr}92OPzB6}H^}ekMxVh{ z(e)fvQX{C6Yb4#|+D(;RUsDy=w^Y^Dfo{orC*oa*9qDHO&WN4pX1}}X7QcHCyU;EE zT@mj^ydTk@^2iS%yV;Z(wlqFG~rfyPRsE*|GEC5kXLiRDD(ae|24R;N1Wc= z$Llm8bG&XW_*g-^{3Poh+LLA#{4Vo(<xN&;C_e{gyr(KRTWquSo-NK=ADBlzD^TD`J#dp!UO#7aB+4o!r`=0A* z?#Uy)={q}3R+)s+mz6%NOi#Y1&Q@OCF1{~=`egC))9vEtp_FwGY_p~3`u7OC%RL== zxen&u^t-t?^|bG^(imQLUe9v4&en6u^|8~K`xMQ~^WLO4&kO7HDQ>$hJ;Ka$!`IwL zT4}h>hHr`+Z6uR-R~Yw;NzeCo{mngN+aqj)PGjm2;?ed}`rg#X+?(=GW~L8u-{rQ; zH}|G|`<~11;@*lhrmyXL=4Ib=`Sv}_zqvP<+t0cF_I*~FroHC5!M}_9Yvv^j==8@j zap>aads8>Qw{fuV?eyFhQ=g?CY53kQUq9C})5X11mub>JjXpAM+=@D6@yZiE-QxST zM;-RKONMhAZkK(}nA8aWr0{gqpP$?J{JbRoMgl)){DX*m1wQS|(9$NU67B@%Q~Roi z8%e%-J!ye?)xJ!6mrYvv^JLPgxbsYpNd|OQ4VacB{Ot@D?Pt>$`!h&LUqvdou2rz1 zUD;?CBAg&O3)X- zm*iJ4lZFJl$Q2fwnP1bv6|MSKl6mpozvvAu?fgs!6sz3GrnxPfqT z%Oqu|OQl#eY9lGXm6}jrU0zh##H{y%tjgh0C8QR_Qf4luk;CF{@+9D+pO{ozOLXJ7G2N9c)Nn*EE@8{ z_(yxvKBU}LYuDE)_`MJQ2E)y_nksSsYI$j53b5N>$|``{r^vr>J*#}fKW|hsi>`Q0Rxq>8J|dThFBk%V*z{$jA3)ZWe{5$8%xdOA(qE^R!MwqQKwwa}veF zv&zSP$?yR@mutsjKp~SJ4sYfh5BC-6Kg_I8<~{N{*OiMv5Y+B;kLrPz(@6%}kIZ|m zD)ggDI=zS8rRglaZ{BCwX@m58C>`rE@3YJ-Lub7==`+nTtd?+n@&?)Y@g6kmEOY$} zjrM4@WhZey9R#i^1lST%n8Vp$f(?xMJU=|6P|V+9n78wiKjp*k2>j-^ZoCc0h`^rU zRd@-#l5!PR+^MpIfP;X801ybJf39mB!cK30P%tj6{biYz*EBwE8l@LHE1$Z)e>#Qs z4_g*?JgkztyL+zt%r38fDtAApunKhQ%wn7;IUo>DZF5L*VXq_jJOZw$s1l{3qf3-J zS80W4e06?*zyFi|FZkCE?H#%#bTi~+Y}m}OZ^EM7t=;3@uelS#Uk%R}@leFhh-!tV z7CKd^W8}M$mDd$u3ySr?9%np8>Fg17IIF zB%Ge6Iuwr;-P&}I>?-e;9p#;}oxDr7mu+PS{dupvU*0R4ff%+Q~m&=Z}2?-V&nPLR*aiE^AAE62-cg8Ii#7KI-RlnlWA525;M7%iM$g|3`X1ol14zuVdVGfNVbkj`>id__ zAl*J2bC->|>2F?9=ej5@W8B|vERiwR%)J5nydL!d#*csx_jPyF<39Af!M`7HUxt2O zjDDVnI3G2cFXy5*^W<#EpvaVS!-r9p+2mY+H)GEHjhq{vx9V2c&cr-JwgT>1n0EvQ zogmlKA>EAe^YS_1&OI<*OZ@ZT&GKx#PQ#TY{sd&r$bsGKOmn*nA~u1XbGupA>rr>K zm|J@fu(pwBx(B4amzL`VnQeU?Eq`6Uigxqo*)X?xd&;?uInMrS?q;O*(Fpg{HR!HK zn!&s;WPLDXd$nAtN7-_Xz8PIS<`#Hho?W+i${Nc#x8Go%_q6fN(#$&L4#;;qje1*r zwgn1ZA%EPjv$S5Bsr3r?!8G*vt9XXhdOeQ3(=9CLLD-MNDM+-OM|mPJXGyy$ZYEz26~mpK}9RKR5jc)PR{mpWoj#IbIz!~RW zfj(;$)@)n{M*aar)-nB{ah{NGYrVpngmubNOUoJjPpOj_&3~ys)$i&U;&F9E9aX>L z{)jrH{s4Vc{iOD(AJsv1K>e%^t6vn4|G)6ghgw6Ew2*1?Hkl%mpwSt5)-f$0^Q>oB z$KS5?Y*$Mfr&}6*8YKR7-p5cnb7lSq)o-Z7Ves9negNnFsKp`hH(K|981;8y-r&B? z(ERR&th0vU-oF$5-O=LLPa|Wrz#MCA^K8PrPe6bF&uX{f{j0^Bv9NjnoXMNVBDdW| ztk1IeJq*lQyRcTfS4%wWoQLEHITYv*mV?j>OMyOX8dE?JtH4m1xAHnw*Eo&?b+(*nk4?PJE!!@GJe;j5j=EnR-q9#vS zvli>r=d{f*MSdzjm!Ez`zmwm~Z@~Kmq$W$&n5V&<``gGG^WLX1H*!vx?YQMW z^rFR$XX9rr4Q8w&V;!-*G{e#^#$q`vkIG-=LHUb3aMpGk%uOF0(3l?t_GWyWr@vz6 z=Xt?sOt!)nL2L2s$m8c#txZ{<&DIvv0?0S(@;~KY@(+1j{w|MMyiL20pV8m{&f7-G zmkc+y4_H61(BsEw&;@$7Fym>xwwB(O>tHKMTiR*(QB+(jkMdk$VF^}E(NCC{<&Ir^PI`Nmum}k1KPS8qlvk1m)qofvVaOw`Bh%c zJBFS`y1J?q^yaU!t6HUQ!pJGF+G51~q<+DvCqA!!w+yCsGDyvl->6aQ0Trz#sBcsO z`bph|-*3np=y{Cr>GG7^t=6l9vauYlUXi2KG}%uTqDg8v>abNdLAkx5iAz$tnl4k7 zTl7=!Q8%?&t*2t*CDoTcMcKd0&9qDHp(j*zyxWcQv@I!$-bYD(>StMqBB_MZjgSb72{;q!Bb-tsW9B*UVwH3hczlxJtvQ;N@Ayc2lDxiIx0WG$>Rn1?-KXX|K!W` zKDpIA)VMS3iKgmhoV8CO1)t6;Ola0aZ=CNp}OOx$1j0gNCW) zR88F|zE=}fvKmC?)pPWaYNOtlf2&1QKxD|(;PW6oMc+_6u|@8L<#dCZDdSZhF%l#G zN%=927E5Jb8maD71BJiHM>SPRN)w$_54D6Q&@h~7J|>@qjd4Uhfw}Kx>Z_`V1F8w? zzDLwiljN^z0wm~XIv|g$oocNLfo=8=jRFdH(jp-AhI&>u7e`Q!<4TB{K&BPV5esRr zswwuUZm?<>(=1gz$J`#GmwCG>s~@g=n7L+T$nlzx|;Xan6tZwfaJLf<`x9)6snQKPM@psFDrKyQC2 z2C2_vE43L`SQUCf#L>%Yyx64vqEFP_Kx&QJqMoItB1{ZcFRCxp7>X2qsR(UR+vIHM z^GS5K=&gdGgAQYCZIVeyF-peMcdD=Ir0%7ustWr023Y$`L;{6~C#eJaA&lzc$(!`T=}l6qR)LVrPK9;8w9G(9Hg!wDE89-$~X2@;wC8EFcc>L-t?>9kGd zm-kU0^m!>7Lkm@us!hG2r7F>PILq@O+E@Vn^9uQh$*Qp^1zmY3zNJt}Y*b2Yg5H=9 z84rS{Sx@btA!^e)wM6|b3#$mxRrH{J(BX;d1Wloy;J69?-2r) zO;&Sg2}WCK8mP)qs;Wz6Az>}m3!)x08^#t!$wI2b2#B{SQgxuhDit2nw?K6(y+eOM zW*(KF(nqvO)l_d|4Pub`S`83;)u*a86%`@)=7b;onuF}}U$*OX-yq9oVtdWl$i`+e z)(cy!Y|C@HlZyRq_Dzgu!d?N}%It}^(S8Yg4!39eYV0kr7tEFhTT|J28(vv{iLn^> zK?m>E7Q{YS5Bn@D^(bb3Ug0qO*b}nXKGSnKR94AyI5HgC3PPWMZg z8{23GZDTWWTYrK-!uC0P2)3PiQjN8I0ro+LSe^&3WR1r2XAmdob**W7y~X_g5_b7l z@DIL}d#rZ<1Nq?+jjzKTjpb&1V8fL?(1SqXpzd#eFW?(Y@bC@TT4xW0{e_8o1&!Bt zCS|T^vgN)v(>M6mk~Q1v_4G@)r?c$TeY&UjYvk>ApHj??J&(!YH4d`NmNIjghUdI` zYF1K>%|2IK?7v#R!6ErGc-wX=^D(^6Zl@YqGgj?U^f&tjFIy{C&%qBc2D*42XG97{SfA7)`dOoWnRmh zr>$pRxn(Qbtm*y(JMkaz{~I2P=lEv7ghv(gHY45C#jJT4IcHfjn&lAs+pH4Xt2rCt z9kB1gYg)!WH`KeZ_cp*g;NR>O_$y!7yFS3p6LZi0Hhw6t1+Z^m_czO(jk%z=EpEJ) z^Om;#dEJ=3pY@v4d-7e3=a1oUZ`U68`!WPpObC3FAXPx~{yVcY)7sPfJ4?41Z#0WH zuSGMKyo#{^TusZ_Gcl{xMvoZ3~uQ1o_Q_Emq{|W1Q9GBWAxBU_sTy&x>k> zI)LxY)KZVjM3mfAeW`eb`7eCe@0jWW`+tHOPd(KzRh}Bs8d$@-)gMTIoA^bwl=s7y z^@RmAK@F$HA`vLAKrJ%pOEn4}M;EGr9WN#Ji_NIn7S#vVRT_OSm&3k_7lqU^8VrRV^=^-n4(`l~Up50c~pdP=-bVQLcP7waMMZ(??j!l|MS@WjfhBQhV>{oaBF z_ybi@)3g`xwz?6v{C6}|&ZaQ2M!gM7ti5_q%@Q@mY-*;yQ{B+2m*fdZ`)pX9cVM1; zUZtq=sChA!kBXoMpVPPMF={P7$4v4nEmsfHN%63#3oCXho;Svmc5*MMm(*c7TYRU+ zs>W17?T`WTNpVQ6!K&j*1s_B{1`FvMHAw8FhhVjJhE2U+9#$nq36Vyt(0gI@0sR0A z?Gvn?_EL$W4&9?N)Guh$BC$XY5l^GuJ>-+ro(ch@f>cXvP@U*0HBwB2_s|eLzC`*> z@Iw^*k>ylUy+$43{Tzp7csEc_hE{$atsDgVG7WynBkDW41GCA~@N3=?zrjA+jrl%7 zEwN!nqim2k^T``j0gH_%Q*6Sw4zQ-KcSVM64 z4Lp&#u-_nsV!K);TET0XrXtl;c>+>Wokj>BNc$A5bq|M^T}`c4--*rWxpz#0T)E+rY!V8ytGjPWV&(;ModzE)UYzYMtCjyCL;M(9*f^asH5QQ3GED8jiFr z={Y(DYg@rz91I_J8Z7KX*v-5JCH@X{Ld09LAX?UtHmcF|Cw!Tk=tbz_?J`vci?8Vs z(FFE-Z4m{ZE=IMGvG9=Zq&s2TC#k|>9c=Ok(eE|jU-wa8({b@9&8IlgiT24#@HXm* z9q>>vJ~2`Tidt$SB%~cdZ(;{;1#IR4YJ>O^W4Ralp&Q0eTU7=AM4~z-N6BxXJx0L} zEse3fLEVa8`T!cDoV;1h$C#NxeZ+qC8l*0cc8gnti}oYsP0(ReA&s}G4

;>U#>u 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 literal 0 HcmV?d00001 diff --git a/profiles/optimcloud_d50-5g.yml b/profiles/optimcloud_d50-5g.yml index 0565ef0ee..5ac44a70e 100644 --- a/profiles/optimcloud_d50-5g.yml +++ b/profiles/optimcloud_d50-5g.yml @@ -1,15 +1,20 @@ profile: optimcloud_d50-5g -target: ipq50xx -subtarget: generic +target: ipq807x +subtarget: ipq50xx description: Build image for the OptimCloud D50-5G -image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-optimcloud_d50-5g-squashfs-sysupgrade.tar +image: bin/targets/ipq807x/ipq50xx/openwrt-ipq807x-optimcloud_d50-5g-squashfs-sysupgrade.tar feeds: - name: ipq807x - path: ../../feeds/ipq807x_v5.4 + path: ../../feeds/ipq807x include: - - wifi-ax-v54 + - wifi-ax - ucentral-ap + - turris + - safe-search + - parental + - cyber + - oqs packages: - - ipq50xx + - ipq807x diffconfig: | CONFIG_KERNEL_IPQ_MEM_PROFILE=512 diff --git a/profiles/optimcloud_d50.yml b/profiles/optimcloud_d50.yml index d182e9ea3..105656759 100644 --- a/profiles/optimcloud_d50.yml +++ b/profiles/optimcloud_d50.yml @@ -1,15 +1,20 @@ profile: optimcloud_d50 -target: ipq50xx -subtarget: generic +target: ipq807x +subtarget: ipq50xx description: Build image for the OptimCloud D50 -image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-optimcloud-d50-squashfs-sysupgrade.tar +image: bin/targets/ipq807x/ipq50xx/openwrt-ipq807x-optimcloud_d50-squashfs-sysupgrade.tar feeds: - name: ipq807x - path: ../../feeds/ipq807x_v5.4 + path: ../../feeds/ipq807x include: - - wifi-ax-v54 + - wifi-ax - ucentral-ap + - turris + - safe-search + - parental + - cyber + - oqs packages: - - ipq50xx + - ipq807x diffconfig: | CONFIG_KERNEL_IPQ_MEM_PROFILE=512 diff --git a/profiles/optimcloud_d60-5g.yml b/profiles/optimcloud_d60-5g.yml index 128344cc8..b2501bab4 100644 --- a/profiles/optimcloud_d60-5g.yml +++ b/profiles/optimcloud_d60-5g.yml @@ -1,15 +1,20 @@ profile: optimcloud_d60-5g -target: ipq50xx -subtarget: generic +target: ipq807x +subtarget: ipq50xx description: Build image for the OptimCloud D60-5G -image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-optimcloud_d60-5g-squashfs-sysupgrade.tar +image: bin/targets/ipq807x/ipq50xx/openwrt-ipq807x-optimcloud_d60-5g-squashfs-sysupgrade.tar feeds: - name: ipq807x - path: ../../feeds/ipq807x_v5.4 + path: ../../feeds/ipq807x include: - - wifi-ax-v54 + - wifi-ax - ucentral-ap + - turris + - safe-search + - parental + - cyber + - oqs packages: - - ipq50xx + - ipq807x diffconfig: | CONFIG_KERNEL_IPQ_MEM_PROFILE=512 diff --git a/profiles/optimcloud_d60.yml b/profiles/optimcloud_d60.yml index ec4374493..14539a788 100644 --- a/profiles/optimcloud_d60.yml +++ b/profiles/optimcloud_d60.yml @@ -1,15 +1,20 @@ profile: optimcloud_d60 -target: ipq50xx -subtarget: generic +target: ipq807x +subtarget: ipq50xx description: Build image for the OptimCloud D60 -image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-optimcloud-d60-squashfs-sysupgrade.tar +image: bin/targets/ipq807x/ipq50xx/openwrt-ipq807x-optimcloud_d60-squashfs-sysupgrade.tar feeds: - name: ipq807x - path: ../../feeds/ipq807x_v5.4 + path: ../../feeds/ipq807x include: - - wifi-ax-v54 + - wifi-ax - ucentral-ap + - turris + - safe-search + - parental + - cyber + - oqs packages: - - ipq50xx + - ipq807x diffconfig: | CONFIG_KERNEL_IPQ_MEM_PROFILE=512 From a29aadbc9018dc4e9a91a2d5dff28e1daeb6e562 Mon Sep 17 00:00:00 2001 From: Arif Alam Date: Thu, 7 Dec 2023 01:12:50 -0500 Subject: [PATCH 22/32] uspot: fix uam CHAP password and challenge Add missing last byte in uam CHAP password and challenge Fixes WIFI-13178 Signed-off-by: Arif Alam --- feeds/ucentral/uspot/src/radius.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/feeds/ucentral/uspot/src/radius.c b/feeds/ucentral/uspot/src/radius.c index 186cc80c4..ea57c7bcb 100644 --- a/feeds/ucentral/uspot/src/radius.c +++ b/feeds/ucentral/uspot/src/radius.c @@ -181,7 +181,7 @@ static int cb_chap_passwd(void *p, size_t s, struct blob_attr *b) int len; assert(s >= 17); - len = str_to_hex(blobmsg_get_string(b), str+1, 16); + len = str_to_hex(blobmsg_get_string(b), str+1, 17); return len+1; } @@ -192,7 +192,7 @@ static int cb_chap_challenge(void *p, size_t s, struct blob_attr *b) int len; assert(s >= 16); - len = str_to_hex(blobmsg_get_string(b), str, 16); + len = str_to_hex(blobmsg_get_string(b), str, 17); return len; } From 95dae950314a0eebc6cf8d55568eccb947aa9e9b Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 7 Dec 2023 16:09:53 +0100 Subject: [PATCH 23/32] ipq50xx: Add wf186h to CI builds Signed-off-by: John Crispin --- .github/workflows/build-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-dev.yml b/.github/workflows/build-dev.yml index 013916193..dccbe6804 100644 --- a/.github/workflows/build-dev.yml +++ b/.github/workflows/build-dev.yml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - target: [ 'cig_wf186w', 'cig_wf188n', 'cig_wf196', 'cig_wf660a', 'cybertan_eww622-a1', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap111', 'edgecore_ecw5211', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap102', 'hfcl_ion4','hfcl_ion4xi_wp', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4xi_w', 'hfcl_ion4xi_HMR', 'hfcl_ion4x_w', 'indio_um-305ax', 'indio_um-325ac', 'indio_um-510ac-v3', 'indio_um-550ac', 'indio_um-310ax-v1', 'indio_um-510axp-v1', 'indio_um-510axm-v1', 'udaya_a5-id2', 'wallys_dr40x9', 'wallys_dr6018', 'wallys_dr6018_v4', 'yuncore_ax820', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655' ] + target: [ 'cig_wf186h', 'cig_wf186w', 'cig_wf188n', 'cig_wf196', 'cig_wf660a', 'cybertan_eww622-a1', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap111', 'edgecore_ecw5211', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap102', 'hfcl_ion4','hfcl_ion4xi_wp', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4xi_w', 'hfcl_ion4xi_HMR', 'hfcl_ion4x_w', 'indio_um-305ax', 'indio_um-325ac', 'indio_um-510ac-v3', 'indio_um-550ac', 'indio_um-310ax-v1', 'indio_um-510axp-v1', 'indio_um-510axm-v1', 'udaya_a5-id2', 'wallys_dr40x9', 'wallys_dr6018', 'wallys_dr6018_v4', 'yuncore_ax820', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655' ] steps: - uses: actions/checkout@v3 From 9b77fb297c9c4d474405a0213d5829d7396a4817 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 7 Dec 2023 16:11:46 +0100 Subject: [PATCH 24/32] ipq807x: use US country code as default on wf196 Signed-off-by: John Crispin --- profiles/cig_wf196.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/profiles/cig_wf196.yml b/profiles/cig_wf196.yml index de8f1e445..542b903cd 100644 --- a/profiles/cig_wf196.yml +++ b/profiles/cig_wf196.yml @@ -1,9 +1,9 @@ --- -profile: cig_wf196_ca +profile: cig_wf196_us target: ipq807x subtarget: generic -description: Build image for the CIG WF196 (CA) -image: bin/targets/ipq807x/generic/openwrt-ipq807x-cig_wf196_ca-squashfs-sysupgrade.tar +description: Build image for the CIG WF196 (US) +image: bin/targets/ipq807x/generic/openwrt-ipq807x-cig_wf196_us-squashfs-sysupgrade.tar feeds: - name: ipq807x path: ../../feeds/ipq807x_v5.4 From c66a1f1fa6f2b56d1e9f5327095874a27e5a3e05 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 8 Dec 2023 06:53:59 +0100 Subject: [PATCH 25/32] ipq50xx: fix cig wf186h image path Signed-off-by: John Crispin --- profiles/cig_wf186h.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiles/cig_wf186h.yml b/profiles/cig_wf186h.yml index 249ad5cca..734644b90 100644 --- a/profiles/cig_wf186h.yml +++ b/profiles/cig_wf186h.yml @@ -3,7 +3,7 @@ profile: cig_wf186h target: ipq50xx subtarget: generic description: Build image for the Cigtech Wall Plate WF186h -image: bin/targets/ipq50xx/generic.openwrt-ipq50xx-cig_wf186h-squashfs-sysupgrade.tar +image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-cig_wf186h-squashfs-sysupgrade.tar feeds: - name: ipq807x path: ../../feeds/ipq807x_v5.4 From 559e67036d6d91dd9a36778009051e06102d6ba8 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Tue, 12 Dec 2023 15:26:45 +0100 Subject: [PATCH 26/32] ucentral-schema: update to latest HEAD 9338ea9 bridge-vlan: track wan ports behind swconfig Signed-off-by: John Crispin --- .../ucentral-event/files/ucentral-event | 26 +++++++++++- feeds/ucentral/ucentral-schema/Makefile | 4 +- .../etc/ucentral/examples/multi-psk.json | 42 +++++++++---------- .../ucentral-state/files/ucentral-state | 1 + 4 files changed, 49 insertions(+), 24 deletions(-) diff --git a/feeds/ucentral/ucentral-event/files/ucentral-event b/feeds/ucentral/ucentral-event/files/ucentral-event index 1c22baa4e..630b8d76d 100755 --- a/feeds/ucentral/ucentral-event/files/ucentral-event +++ b/feeds/ucentral/ucentral-event/files/ucentral-event @@ -78,7 +78,8 @@ function event(object, verb, payload) { }); } -let handlers = { +let handlers; +handlers = { 'sta-authorized': function(notify, hapd) { /* force FDB flush on QCA Wifi-6 silicon */ system(`echo ${notify.data.address} > /sys/kernel/debug/ssdk_flush_mac`); @@ -118,7 +119,30 @@ let handlers = { }); }, + vlan_add_swconfig: function(notify) { + let msg = { + name: notify.data.ifname, + 'link-ext': true, + vlan: [ `${notify.data.vlan_id}:u` ] + }; + ubus.call('network.interface.up_none', 'add_device', msg); + + msg = { + name: 'eth0.' + notify.data.vlan_id, + vlan: [ `${notify.data.vlan_id}:u` ] + }; + + ubus.call('network.interface.up_none', 'add_device', msg); + + let cmd = 'swconfig dev ' + config.config.swconfig + ' vlan ' + notify.data.vlan_id + ' set ports \"' + join(' ', config.config.swconfig_ports) + '\"'; + system(cmd); + system('swconfig dev ' + config.config.swconfig + ' set apply'); + }, + vlan_add: function(notify) { + if (config.config.swconfig) + return handlers.vlan_add_swconfig(notify); + for (let wan in wan_ports) { let msg = { name: wan, diff --git a/feeds/ucentral/ucentral-schema/Makefile b/feeds/ucentral/ucentral-schema/Makefile index 7abc3b7d0..7357dc867 100644 --- a/feeds/ucentral/ucentral-schema/Makefile +++ b/feeds/ucentral/ucentral-schema/Makefile @@ -4,10 +4,10 @@ PKG_NAME:=ucentral-schema PKG_RELEASE:=1 PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git -PKG_MIRROR_HASH:=e5f1001047a601d68c236be740470766dbeab40852093d3c57102a2edc761eb2 +PKG_MIRROR_HASH:=b755e945d2e50f2c3607d44492227b41c4d38026068ad7dd554be5c4412772ce PKG_SOURCE_PROTO:=git PKG_SOURCE_DATE:=2022-05-29 -PKG_SOURCE_VERSION:=75222fea7044e4b08a870aeb3284838efd7b6d9f +PKG_SOURCE_VERSION:=9338ea9cefeec3f4bf40cd1f7d0755f6caa131fb PKG_MAINTAINER:=John Crispin PKG_LICENSE:=BSD-3-Clause diff --git a/feeds/ucentral/ucentral-schema/files/etc/ucentral/examples/multi-psk.json b/feeds/ucentral/ucentral-schema/files/etc/ucentral/examples/multi-psk.json index 2cc552052..924098308 100644 --- a/feeds/ucentral/ucentral-schema/files/etc/ucentral/examples/multi-psk.json +++ b/feeds/ucentral/ucentral-schema/files/etc/ucentral/examples/multi-psk.json @@ -34,27 +34,6 @@ ], "ipv4": { "addressing": "dynamic" - } - }, - { - "name": "LAN", - "role": "downstream", - "services": [ "http", "ssh" ], - "ethernet": [ - { - "select-ports": [ - "LAN*" - ] - } - ], - "ipv4": { - "addressing": "static", - "subnet": "192.168.1.1/24", - "dhcp": { - "lease-first": 10, - "lease-count": 100, - "lease-time": "6h" - } }, "ssids": [ { @@ -84,6 +63,27 @@ } } ] + }, + { + "name": "LAN", + "role": "downstream", + "services": [ "http", "ssh" ], + "ethernet": [ + { + "select-ports": [ + "LAN*" + ] + } + ], + "ipv4": { + "addressing": "static", + "subnet": "192.168.1.1/24", + "dhcp": { + "lease-first": 10, + "lease-count": 100, + "lease-time": "6h" + } + } } ], "services": { diff --git a/feeds/ucentral/ucentral-state/files/ucentral-state b/feeds/ucentral/ucentral-state/files/ucentral-state index 428d39ad5..67a6edcbb 100755 --- a/feeds/ucentral/ucentral-state/files/ucentral-state +++ b/feeds/ucentral/ucentral-state/files/ucentral-state @@ -184,6 +184,7 @@ let state_handler = { let ubus_methods = { set: { call: function(req) { + ulog(LOG_INFO, 'state %s -> %s\n', current_state, req.args.state); if (current_state == req.args.state) return; if (!state_handler[req.args.state]) From 118dd7d224f847decff259df65282ad45402466e Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 13 Dec 2023 10:06:40 +0100 Subject: [PATCH 27/32] ucentral-client: upgrade to latest HEAD 6ca7b2e do not immediatley reply to upgrade commands Signed-off-by: John Crispin --- feeds/ucentral/ucentral-client/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/feeds/ucentral/ucentral-client/Makefile b/feeds/ucentral/ucentral-client/Makefile index e32f4f58c..98e1ea60f 100644 --- a/feeds/ucentral/ucentral-client/Makefile +++ b/feeds/ucentral/ucentral-client/Makefile @@ -4,10 +4,10 @@ PKG_NAME:=ucentral-client PKG_RELEASE:=1 PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-client.git -PKG_MIRROR_HASH:=bf8d2c105e8e7f91b7a3d44917a4024307a5ddf9fbafcd00c9830ec8a96ec1f7 +PKG_MIRROR_HASH:=279c58711c354372d570320651644bf75ce758c6197a7eb8dda481a925c82620 PKG_SOURCE_PROTO:=git PKG_SOURCE_DATE:=2022-06-22 -PKG_SOURCE_VERSION:=3025bf919e30cf201fe9a84feeaaf580b752fa95 +PKG_SOURCE_VERSION:=6ca7b2e43c20a92508bf408e586c310dfff38f51 PKG_LICENSE:=BSD-3-Clause PKG_MAINTAINER:=John Crispin From 5bf9d310017afcc344aa39a46bbdf201b6a582bf Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 13 Dec 2023 10:07:12 +0100 Subject: [PATCH 28/32] ucentral-schema: update to latest HEAD e2cef05 return a success message before triggering FW upgrade Signed-off-by: John Crispin --- feeds/ucentral/ucentral-schema/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/feeds/ucentral/ucentral-schema/Makefile b/feeds/ucentral/ucentral-schema/Makefile index 7357dc867..25604209a 100644 --- a/feeds/ucentral/ucentral-schema/Makefile +++ b/feeds/ucentral/ucentral-schema/Makefile @@ -4,10 +4,10 @@ PKG_NAME:=ucentral-schema PKG_RELEASE:=1 PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git -PKG_MIRROR_HASH:=b755e945d2e50f2c3607d44492227b41c4d38026068ad7dd554be5c4412772ce +PKG_MIRROR_HASH:=130815ed797e07def6a8cd901127791502040af86446bcc5cb3d6c8dad5fda43 PKG_SOURCE_PROTO:=git PKG_SOURCE_DATE:=2022-05-29 -PKG_SOURCE_VERSION:=9338ea9cefeec3f4bf40cd1f7d0755f6caa131fb +PKG_SOURCE_VERSION:=e2cef05c7880ee6daffd3b33760d177ae8f3cc47 PKG_MAINTAINER:=John Crispin PKG_LICENSE:=BSD-3-Clause From 00efc6f224f794da8de38f534b71ef2bca24b7a1 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 13 Dec 2023 10:57:35 +0100 Subject: [PATCH 29/32] uspot: terminate ACCT sessions upon logoff request Signed-off-by: John Crispin --- feeds/ucentral/uspot/files/usr/share/uspot/uspot.uc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/feeds/ucentral/uspot/files/usr/share/uspot/uspot.uc b/feeds/ucentral/uspot/files/usr/share/uspot/uspot.uc index acf7c4601..17badfbf1 100755 --- a/feeds/ucentral/uspot/files/usr/share/uspot/uspot.uc +++ b/feeds/ucentral/uspot/files/usr/share/uspot/uspot.uc @@ -460,8 +460,10 @@ function run_service() { address = uc(address); - if (interfaces[interface].clients[address]) + if (interfaces[interface].clients[address]) { + radius_terminate(interface, address, radtc_logout); client_remove(interface, address, 'client_remove event'); + } return 0; }, From 7fae3ebb90956a80105f1cff258784bf1873a759 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 13 Dec 2023 15:31:24 +0100 Subject: [PATCH 30/32] ucentral-schema: update to latest HEAD fd4d755 only check for port usage duplication on non-swconfig devices Signed-off-by: John Crispin --- feeds/ucentral/ucentral-schema/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/feeds/ucentral/ucentral-schema/Makefile b/feeds/ucentral/ucentral-schema/Makefile index 25604209a..5f1c91297 100644 --- a/feeds/ucentral/ucentral-schema/Makefile +++ b/feeds/ucentral/ucentral-schema/Makefile @@ -4,10 +4,10 @@ PKG_NAME:=ucentral-schema PKG_RELEASE:=1 PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git -PKG_MIRROR_HASH:=130815ed797e07def6a8cd901127791502040af86446bcc5cb3d6c8dad5fda43 +PKG_MIRROR_HASH:=dc1819d612a1264dbad9d0cda37e53a591066879940c400312d6cdb3a849fbe8 PKG_SOURCE_PROTO:=git PKG_SOURCE_DATE:=2022-05-29 -PKG_SOURCE_VERSION:=e2cef05c7880ee6daffd3b33760d177ae8f3cc47 +PKG_SOURCE_VERSION:=fd4d755498b772308763d3df22bb111362ccc353 PKG_MAINTAINER:=John Crispin PKG_LICENSE:=BSD-3-Clause From 01240ada80ef1f0224fe9dbe3eba7b369e518c3f Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 14 Dec 2023 12:14:32 +0100 Subject: [PATCH 31/32] ucentral-schema: update to latest HEAD e77cd3f radio: force auto channel if a STA is present Signed-off-by: John Crispin --- feeds/ucentral/ucentral-schema/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/feeds/ucentral/ucentral-schema/Makefile b/feeds/ucentral/ucentral-schema/Makefile index 5f1c91297..718219749 100644 --- a/feeds/ucentral/ucentral-schema/Makefile +++ b/feeds/ucentral/ucentral-schema/Makefile @@ -4,10 +4,10 @@ PKG_NAME:=ucentral-schema PKG_RELEASE:=1 PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git -PKG_MIRROR_HASH:=dc1819d612a1264dbad9d0cda37e53a591066879940c400312d6cdb3a849fbe8 +PKG_MIRROR_HASH:=8558ddc1b975a9b0bf1832c3277a99de95e9cf3682a671991d3125c04d375e96 PKG_SOURCE_PROTO:=git PKG_SOURCE_DATE:=2022-05-29 -PKG_SOURCE_VERSION:=fd4d755498b772308763d3df22bb111362ccc353 +PKG_SOURCE_VERSION:=e77cd3fa1ea727cbdfc64f78aff2401a869edc27 PKG_MAINTAINER:=John Crispin PKG_LICENSE:=BSD-3-Clause From 9e5d1ae848bba5290455eeb05aaa2f627934a079 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 15 Dec 2023 14:59:35 +0100 Subject: [PATCH 32/32] ip807x: backport bridge port forwarding patch Fixes: WIFI-13234 Signed-off-by: John Crispin --- ...e-allow-bcast-mcast-same-port-hairpinmode.patch | 14 ++++++++++++++ ...e-allow-bcast-mcast-same-port-hairpinmode.patch | 14 ++++++++++++++ ...e-allow-bcast-mcast-same-port-hairpinmode.patch | 14 ++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 feeds/ipq807x_v5.4/ipq50xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch create mode 100644 feeds/ipq807x_v5.4/ipq60xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch create mode 100644 feeds/ipq807x_v5.4/ipq807x/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch diff --git a/feeds/ipq807x_v5.4/ipq50xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch b/feeds/ipq807x_v5.4/ipq50xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch new file mode 100644 index 000000000..fd61d0c80 --- /dev/null +++ b/feeds/ipq807x_v5.4/ipq50xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch @@ -0,0 +1,14 @@ +Index: linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +=================================================================== +--- linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d.orig/net/bridge/br_forward.c ++++ linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +@@ -24,8 +24,7 @@ static inline int should_deliver(const s + struct net_bridge_vlan_group *vg; + + vg = nbp_vlan_group_rcu(p); +- return (((p->flags & BR_HAIRPIN_MODE) && !is_multicast_ether_addr(eth_hdr(skb)->h_dest)) +- || (skb->dev != p->dev)) && ++ return (((p->flags & BR_HAIRPIN_MODE)) || (skb->dev != p->dev)) && + br_allowed_egress(vg, skb) && (p->state == BR_STATE_FORWARDING) && + nbp_switchdev_allowed_egress(p, skb) && + !br_skb_isolated(p, skb); diff --git a/feeds/ipq807x_v5.4/ipq60xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch b/feeds/ipq807x_v5.4/ipq60xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch new file mode 100644 index 000000000..fd61d0c80 --- /dev/null +++ b/feeds/ipq807x_v5.4/ipq60xx/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch @@ -0,0 +1,14 @@ +Index: linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +=================================================================== +--- linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d.orig/net/bridge/br_forward.c ++++ linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +@@ -24,8 +24,7 @@ static inline int should_deliver(const s + struct net_bridge_vlan_group *vg; + + vg = nbp_vlan_group_rcu(p); +- return (((p->flags & BR_HAIRPIN_MODE) && !is_multicast_ether_addr(eth_hdr(skb)->h_dest)) +- || (skb->dev != p->dev)) && ++ return (((p->flags & BR_HAIRPIN_MODE)) || (skb->dev != p->dev)) && + br_allowed_egress(vg, skb) && (p->state == BR_STATE_FORWARDING) && + nbp_switchdev_allowed_egress(p, skb) && + !br_skb_isolated(p, skb); diff --git a/feeds/ipq807x_v5.4/ipq807x/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch b/feeds/ipq807x_v5.4/ipq807x/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch new file mode 100644 index 000000000..fd61d0c80 --- /dev/null +++ b/feeds/ipq807x_v5.4/ipq807x/patches/107-bridge-allow-bcast-mcast-same-port-hairpinmode.patch @@ -0,0 +1,14 @@ +Index: linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +=================================================================== +--- linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d.orig/net/bridge/br_forward.c ++++ linux-5.4.164-qsdk-26349818b464f8c7b52d59ce73579d9f3dd6bd5d/net/bridge/br_forward.c +@@ -24,8 +24,7 @@ static inline int should_deliver(const s + struct net_bridge_vlan_group *vg; + + vg = nbp_vlan_group_rcu(p); +- return (((p->flags & BR_HAIRPIN_MODE) && !is_multicast_ether_addr(eth_hdr(skb)->h_dest)) +- || (skb->dev != p->dev)) && ++ return (((p->flags & BR_HAIRPIN_MODE)) || (skb->dev != p->dev)) && + br_allowed_egress(vg, skb) && (p->state == BR_STATE_FORWARDING) && + nbp_switchdev_allowed_egress(p, skb) && + !br_skb_isolated(p, skb);