diff --git a/.github/workflows/build-dev.yml b/.github/workflows/build-dev.yml index fecb14187..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_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 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/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-cig-wf186h.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-cig-wf186h.dts index 5fb9e3469..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 @@ -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 = "gpio45"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + i2c_pins: i2c_pins { i2c_scl { pins = "gpio25"; @@ -758,14 +783,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"; + }; }; + }; &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..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 @@ -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 = "gpio45"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + i2c_pins: i2c_pins { i2c_scl { pins = "gpio25"; @@ -758,14 +783,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"; + }; }; + }; &usb3 { 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"; +}; 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/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/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-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,16 +572,32 @@ }; &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>; pinctrl-names = "default"; @@ -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,16 +572,32 @@ }; &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>; pinctrl-names = "default"; @@ -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-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/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..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; @@ -823,7 +823,7 @@ #else memory-region = <&q6_qcn6122_data1>; #endif - status = "disabled"; + status = "ok"; }; &wifi2 { 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/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); 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 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 4f60df19a..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:=8b8dfea69e4547a4169f4b095742b86d675988b03204577bcbb308619763579b +PKG_MIRROR_HASH:=8558ddc1b975a9b0bf1832c3277a99de95e9cf3682a671991d3125c04d375e96 PKG_SOURCE_PROTO:=git PKG_SOURCE_DATE:=2022-05-29 -PKG_SOURCE_VERSION:=f8608f6b21236a383b0c284d3b23d5710cbeccc4 +PKG_SOURCE_VERSION:=e77cd3fa1ea727cbdfc64f78aff2401a869edc27 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-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 } } } diff --git a/feeds/ucentral/ucentral-state/files/ucentral-state b/feeds/ucentral/ucentral-state/files/ucentral-state index 42a4afe22..67a6edcbb 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() { @@ -67,15 +68,19 @@ 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'); } 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() { @@ -140,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; }, @@ -175,8 +184,12 @@ 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]) return ubus.STATUS_INVALID_ARGUMENT; + current_state = req.args.state; blink_timeout(); ulog(LOG_INFO, 'set state -> ' + req.args.state + '\n'); 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; }, 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; } 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 000000000..b65d6bc71 Binary files /dev/null and b/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d50.bin.IPQ5018 differ 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 000000000..86c84f2e2 Binary files /dev/null and b/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d50.bin.QCN9074 differ 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 000000000..b65d6bc71 Binary files /dev/null and b/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d60.bin.IPQ5018 differ 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 000000000..86c84f2e2 Binary files /dev/null and b/feeds/wifi-ax/ath11k-wifi/board-optimcloud-d60.bin.QCN9074 differ 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 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 + 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 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 61% rename from profiles/cig_wf196 rename to profiles/cig_wf196.yml index de8f1e445..542b903cd 100644 --- a/profiles/cig_wf196 +++ 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 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_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 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_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 diff --git a/profiles/hfcl_ion4xi.yml b/profiles/hfcl_ion4xi.yml index e572df6c2..cc513d397 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-ipq60xx-hfcl_ion4xi-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_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 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 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 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