Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'icc-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/djakov/icc into char-misc-next

Georgi writes:

interconnect changes for 6.3

Here are the interconnect changes for the 6.3-rc1 merge window with the
significant part being new drivers.

Driver changes:
- New driver for Qualcomm SM8550
- New driver for Qualcomm QDU1000/QRU1000
- New driver for Qualcomm SDM670
- New driver for Qualcomm SA8775P
- Drop the IP0 interconnects and migrate them to RPMh clocks instead
- Misc improvements in the DT schema for some existing drivers

Signed-off-by: Georgi Djakov <djakov@kernel.org>

* tag 'icc-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/djakov/icc: (25 commits)
dt-bindings: interconnect: samsung,exynos-bus: allow opp-table
dt-bindings: interconnect: qcom,sa8775p-rpmh: fix a typo
dt-bindings: interconnect: Exclude all non msm8939 from snoc-mm
interconnect: qcom: add a driver for sa8775p
dt-bindings: interconnect: qcom: document the interconnects for sa8775p
interconnect: qcom: add sdm670 interconnects
dt-bindings: interconnect: add sdm670 interconnects
dt-bindings: interconnect: OSM L3: Add SM6350 OSM L3 compatible
dt-bindings: interconnect: qcom-bwmon: document SM8550 compatibles
dt-bindings: interconnect: split SM8450 to own schema
dt-bindings: interconnect: split SC8280XP to own schema
dt-bindings: interconnect: split SC7280 to own schema
dt-bindings: interconnect: qcom: drop IPA_CORE related defines
dt-bindings: interconnect: qcom: Remove ipa-virt compatibles
interconnect: qcom: sc8280xp: Drop IP0 interconnects
interconnect: qcom: sc8180x: Drop IP0 interconnects
interconnect: qcom: sm8250: Drop IP0 interconnects
interconnect: qcom: sm8150: Drop IP0 interconnects
interconnect: move ignore_list out of of_count_icc_providers()
interconnect: qcom: sc7180: drop IP0 remnants
...

+8071 -207
+2
Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml
··· 27 27 - qcom,sc7280-cpu-bwmon 28 28 - qcom,sc8280xp-cpu-bwmon 29 29 - qcom,sdm845-bwmon 30 + - qcom,sm8550-cpu-bwmon 30 31 - const: qcom,msm8998-bwmon 31 32 - const: qcom,msm8998-bwmon # BWMON v4 32 33 - items: 33 34 - enum: 34 35 - qcom,sc8280xp-llcc-bwmon 36 + - qcom,sm8550-llcc-bwmon 35 37 - const: qcom,sc7280-llcc-bwmon 36 38 - const: qcom,sc7280-llcc-bwmon # BWMON v5 37 39 - const: qcom,sdm845-llcc-bwmon # BWMON v5
+1
Documentation/devicetree/bindings/interconnect/qcom,osm-l3.yaml
··· 22 22 - qcom,sc7180-osm-l3 23 23 - qcom,sc8180x-osm-l3 24 24 - qcom,sdm845-osm-l3 25 + - qcom,sm6350-osm-l3 25 26 - qcom,sm8150-osm-l3 26 27 - const: qcom,osm-l3 27 28 - items:
+70
Documentation/devicetree/bindings/interconnect/qcom,qdu1000-rpmh.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/interconnect/qcom,qdu1000-rpmh.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm RPMh Network-On-Chip Interconnect on QDU1000 8 + 9 + maintainers: 10 + - Georgi Djakov <djakov@kernel.org> 11 + - Odelu Kukatla <quic_okukatla@quicinc.com> 12 + 13 + description: | 14 + RPMh interconnect providers support system bandwidth requirements through 15 + RPMh hardware accelerators known as Bus Clock Manager (BCM). The provider is 16 + able to communicate with the BCM through the Resource State Coordinator (RSC) 17 + associated with each execution environment. Provider nodes must point to at 18 + least one RPMh device child node pertaining to their RSC and each provider 19 + can map to multiple RPMh resources. 20 + 21 + properties: 22 + compatible: 23 + enum: 24 + - qcom,qdu1000-clk-virt 25 + - qcom,qdu1000-gem-noc 26 + - qcom,qdu1000-mc-virt 27 + - qcom,qdu1000-system-noc 28 + 29 + '#interconnect-cells': true 30 + 31 + reg: 32 + maxItems: 1 33 + 34 + allOf: 35 + - $ref: qcom,rpmh-common.yaml# 36 + - if: 37 + properties: 38 + compatible: 39 + contains: 40 + enum: 41 + - qcom,qdu1000-clk-virt 42 + - qcom,qdu1000-mc-virt 43 + then: 44 + properties: 45 + reg: false 46 + else: 47 + required: 48 + - reg 49 + 50 + required: 51 + - compatible 52 + 53 + unevaluatedProperties: false 54 + 55 + examples: 56 + - | 57 + #include <dt-bindings/interconnect/qcom,qdu1000-rpmh.h> 58 + 59 + system_noc: interconnect@1640000 { 60 + compatible = "qcom,qdu1000-system-noc"; 61 + reg = <0x1640000 0x45080>; 62 + #interconnect-cells = <2>; 63 + qcom,bcm-voters = <&apps_bcm_voter>; 64 + }; 65 + 66 + clk_virt: interconnect-0 { 67 + compatible = "qcom,qdu1000-clk-virt"; 68 + #interconnect-cells = <2>; 69 + qcom,bcm-voters = <&apps_bcm_voter>; 70 + };
+42 -31
Documentation/devicetree/bindings/interconnect/qcom,rpm.yaml
··· 62 62 power-domains: 63 63 maxItems: 1 64 64 65 + # Child node's properties 66 + patternProperties: 67 + '^interconnect-[a-z0-9]+$': 68 + type: object 69 + description: 70 + snoc-mm is a child of snoc, sharing snoc's register address space. 71 + 72 + properties: 73 + compatible: 74 + enum: 75 + - qcom,msm8939-snoc-mm 76 + 77 + '#interconnect-cells': 78 + const: 1 79 + 80 + clock-names: 81 + items: 82 + - const: bus 83 + - const: bus_a 84 + 85 + clocks: 86 + items: 87 + - description: Bus Clock 88 + - description: Bus A Clock 89 + 90 + required: 91 + - compatible 92 + - '#interconnect-cells' 93 + - clock-names 94 + - clocks 95 + 65 96 required: 66 97 - compatible 67 98 - reg ··· 138 107 items: 139 108 - description: Bus Clock 140 109 - description: Bus A Clock 141 - 142 - # Child node's properties 143 - patternProperties: 144 - '^interconnect-[a-z0-9]+$': 145 - type: object 146 - description: 147 - snoc-mm is a child of snoc, sharing snoc's register address space. 148 - 149 - properties: 150 - compatible: 151 - enum: 152 - - qcom,msm8939-snoc-mm 153 - 154 - '#interconnect-cells': 155 - const: 1 156 - 157 - clock-names: 158 - items: 159 - - const: bus 160 - - const: bus_a 161 - 162 - clocks: 163 - items: 164 - - description: Bus Clock 165 - - description: Bus A Clock 166 - 167 - required: 168 - - compatible 169 - - '#interconnect-cells' 170 - - clock-names 171 - - clocks 172 110 173 111 - if: 174 112 properties: ··· 236 236 - description: Aggregate2 UFS AXI Clock. 237 237 - description: Aggregate2 USB3 AXI Clock. 238 238 - description: Config NoC USB2 AXI Clock. 239 + 240 + - if: 241 + not: 242 + properties: 243 + compatible: 244 + contains: 245 + enum: 246 + - qcom,msm8939-snoc 247 + then: 248 + patternProperties: 249 + '^interconnect-[a-z0-9]+$': false 239 250 240 251 examples: 241 252 - |
+8 -38
Documentation/devicetree/bindings/interconnect/qcom,rpmh.yaml
··· 39 39 - qcom,sc7180-npu-noc 40 40 - qcom,sc7180-qup-virt 41 41 - qcom,sc7180-system-noc 42 - - qcom,sc7280-aggre1-noc 43 - - qcom,sc7280-aggre2-noc 44 - - qcom,sc7280-clk-virt 45 - - qcom,sc7280-cnoc2 46 - - qcom,sc7280-cnoc3 47 - - qcom,sc7280-dc-noc 48 - - qcom,sc7280-gem-noc 49 - - qcom,sc7280-lpass-ag-noc 50 - - qcom,sc7280-mc-virt 51 - - qcom,sc7280-mmss-noc 52 - - qcom,sc7280-nsp-noc 53 - - qcom,sc7280-system-noc 54 42 - qcom,sc8180x-aggre1-noc 55 43 - qcom,sc8180x-aggre2-noc 56 44 - qcom,sc8180x-camnoc-virt ··· 46 58 - qcom,sc8180x-config-noc 47 59 - qcom,sc8180x-dc-noc 48 60 - qcom,sc8180x-gem-noc 49 - - qcom,sc8180x-ipa-virt 50 61 - qcom,sc8180x-mc-virt 51 62 - qcom,sc8180x-mmss-noc 52 63 - qcom,sc8180x-qup-virt 53 64 - qcom,sc8180x-system-noc 54 - - qcom,sc8280xp-aggre1-noc 55 - - qcom,sc8280xp-aggre2-noc 56 - - qcom,sc8280xp-clk-virt 57 - - qcom,sc8280xp-config-noc 58 - - qcom,sc8280xp-dc-noc 59 - - qcom,sc8280xp-gem-noc 60 - - qcom,sc8280xp-lpass-ag-noc 61 - - qcom,sc8280xp-mc-virt 62 - - qcom,sc8280xp-mmss-noc 63 - - qcom,sc8280xp-nspa-noc 64 - - qcom,sc8280xp-nspb-noc 65 - - qcom,sc8280xp-system-noc 65 + - qcom,sdm670-aggre1-noc 66 + - qcom,sdm670-aggre2-noc 67 + - qcom,sdm670-config-noc 68 + - qcom,sdm670-dc-noc 69 + - qcom,sdm670-gladiator-noc 70 + - qcom,sdm670-mem-noc 71 + - qcom,sdm670-mmss-noc 72 + - qcom,sdm670-system-noc 66 73 - qcom,sdm845-aggre1-noc 67 74 - qcom,sdm845-aggre2-noc 68 75 - qcom,sdm845-config-noc ··· 79 96 - qcom,sm8150-config-noc 80 97 - qcom,sm8150-dc-noc 81 98 - qcom,sm8150-gem-noc 82 - - qcom,sm8150-ipa-virt 83 99 - qcom,sm8150-mc-virt 84 100 - qcom,sm8150-mmss-noc 85 101 - qcom,sm8150-system-noc ··· 88 106 - qcom,sm8250-config-noc 89 107 - qcom,sm8250-dc-noc 90 108 - qcom,sm8250-gem-noc 91 - - qcom,sm8250-ipa-virt 92 109 - qcom,sm8250-mc-virt 93 110 - qcom,sm8250-mmss-noc 94 111 - qcom,sm8250-npu-noc ··· 102 121 - qcom,sm8350-mmss-noc 103 122 - qcom,sm8350-compute-noc 104 123 - qcom,sm8350-system-noc 105 - - qcom,sm8450-aggre1-noc 106 - - qcom,sm8450-aggre2-noc 107 - - qcom,sm8450-clk-virt 108 - - qcom,sm8450-config-noc 109 - - qcom,sm8450-gem-noc 110 - - qcom,sm8450-lpass-ag-noc 111 - - qcom,sm8450-mc-virt 112 - - qcom,sm8450-mmss-noc 113 - - qcom,sm8450-nsp-noc 114 - - qcom,sm8450-pcie-anoc 115 - - qcom,sm8450-system-noc 116 124 117 125 '#interconnect-cells': true 118 126
+50
Documentation/devicetree/bindings/interconnect/qcom,sa8775p-rpmh.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/interconnect/qcom,sa8775p-rpmh.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm RPMh Network-On-Chip Interconnect on SA8775P 8 + 9 + maintainers: 10 + - Bartosz Golaszewski <bartosz.golaszewski@linaro.org> 11 + 12 + description: | 13 + RPMh interconnect providers support system bandwidth requirements through 14 + RPMh hardware accelerators known as Bus Clock Manager (BCM). 15 + 16 + See also:: include/dt-bindings/interconnect/qcom,sa8775p.h 17 + 18 + properties: 19 + compatible: 20 + enum: 21 + - qcom,sa8775p-aggre1-noc 22 + - qcom,sa8775p-aggre2-noc 23 + - qcom,sa8775p-clk-virt 24 + - qcom,sa8775p-config-noc 25 + - qcom,sa8775p-dc-noc 26 + - qcom,sa8775p-gem-noc 27 + - qcom,sa8775p-gpdsp-anoc 28 + - qcom,sa8775p-lpass-ag-noc 29 + - qcom,sa8775p-mc-virt 30 + - qcom,sa8775p-mmss-noc 31 + - qcom,sa8775p-nspa-noc 32 + - qcom,sa8775p-nspb-noc 33 + - qcom,sa8775p-pcie-anoc 34 + - qcom,sa8775p-system-noc 35 + 36 + required: 37 + - compatible 38 + 39 + allOf: 40 + - $ref: qcom,rpmh-common.yaml# 41 + 42 + unevaluatedProperties: false 43 + 44 + examples: 45 + - | 46 + aggre1_noc: interconnect-aggre1-noc { 47 + compatible = "qcom,sa8775p-aggre1-noc"; 48 + #interconnect-cells = <2>; 49 + qcom,bcm-voters = <&apps_bcm_voter>; 50 + };
+71
Documentation/devicetree/bindings/interconnect/qcom,sc7280-rpmh.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/interconnect/qcom,sc7280-rpmh.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm RPMh Network-On-Chip Interconnect on SC7280 8 + 9 + maintainers: 10 + - Bjorn Andersson <andersson@kernel.org> 11 + - Konrad Dybcio <konrad.dybcio@linaro.org> 12 + 13 + description: | 14 + RPMh interconnect providers support system bandwidth requirements through 15 + RPMh hardware accelerators known as Bus Clock Manager (BCM). 16 + 17 + See also:: include/dt-bindings/interconnect/qcom,sc7280.h 18 + 19 + properties: 20 + compatible: 21 + enum: 22 + - qcom,sc7280-aggre1-noc 23 + - qcom,sc7280-aggre2-noc 24 + - qcom,sc7280-clk-virt 25 + - qcom,sc7280-cnoc2 26 + - qcom,sc7280-cnoc3 27 + - qcom,sc7280-dc-noc 28 + - qcom,sc7280-gem-noc 29 + - qcom,sc7280-lpass-ag-noc 30 + - qcom,sc7280-mc-virt 31 + - qcom,sc7280-mmss-noc 32 + - qcom,sc7280-nsp-noc 33 + - qcom,sc7280-system-noc 34 + 35 + reg: 36 + maxItems: 1 37 + 38 + required: 39 + - compatible 40 + 41 + allOf: 42 + - $ref: qcom,rpmh-common.yaml# 43 + - if: 44 + properties: 45 + compatible: 46 + contains: 47 + enum: 48 + - qcom,sc7280-clk-virt 49 + then: 50 + properties: 51 + reg: false 52 + else: 53 + required: 54 + - reg 55 + 56 + unevaluatedProperties: false 57 + 58 + examples: 59 + - | 60 + interconnect { 61 + compatible = "qcom,sc7280-clk-virt"; 62 + #interconnect-cells = <2>; 63 + qcom,bcm-voters = <&apps_bcm_voter>; 64 + }; 65 + 66 + interconnect@9100000 { 67 + reg = <0x9100000 0xe2200>; 68 + compatible = "qcom,sc7280-gem-noc"; 69 + #interconnect-cells = <2>; 70 + qcom,bcm-voters = <&apps_bcm_voter>; 71 + };
+49
Documentation/devicetree/bindings/interconnect/qcom,sc8280xp-rpmh.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/interconnect/qcom,sc8280xp-rpmh.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm RPMh Network-On-Chip Interconnect on SC8280XP 8 + 9 + maintainers: 10 + - Bjorn Andersson <andersson@kernel.org> 11 + - Konrad Dybcio <konrad.dybcio@linaro.org> 12 + 13 + description: | 14 + RPMh interconnect providers support system bandwidth requirements through 15 + RPMh hardware accelerators known as Bus Clock Manager (BCM). 16 + 17 + See also:: include/dt-bindings/interconnect/qcom,sc8280xp.h 18 + 19 + properties: 20 + compatible: 21 + enum: 22 + - qcom,sc8280xp-aggre1-noc 23 + - qcom,sc8280xp-aggre2-noc 24 + - qcom,sc8280xp-clk-virt 25 + - qcom,sc8280xp-config-noc 26 + - qcom,sc8280xp-dc-noc 27 + - qcom,sc8280xp-gem-noc 28 + - qcom,sc8280xp-lpass-ag-noc 29 + - qcom,sc8280xp-mc-virt 30 + - qcom,sc8280xp-mmss-noc 31 + - qcom,sc8280xp-nspa-noc 32 + - qcom,sc8280xp-nspb-noc 33 + - qcom,sc8280xp-system-noc 34 + 35 + required: 36 + - compatible 37 + 38 + allOf: 39 + - $ref: qcom,rpmh-common.yaml# 40 + 41 + unevaluatedProperties: false 42 + 43 + examples: 44 + - | 45 + interconnect-0 { 46 + compatible = "qcom,sc8280xp-aggre1-noc"; 47 + #interconnect-cells = <2>; 48 + qcom,bcm-voters = <&apps_bcm_voter>; 49 + };
+124
Documentation/devicetree/bindings/interconnect/qcom,sm8450-rpmh.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/interconnect/qcom,sm8450-rpmh.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm RPMh Network-On-Chip Interconnect on SM8450 8 + 9 + maintainers: 10 + - Bjorn Andersson <andersson@kernel.org> 11 + - Konrad Dybcio <konrad.dybcio@linaro.org> 12 + 13 + description: | 14 + RPMh interconnect providers support system bandwidth requirements through 15 + RPMh hardware accelerators known as Bus Clock Manager (BCM). 16 + 17 + See also:: include/dt-bindings/interconnect/qcom,sm8450.h 18 + 19 + properties: 20 + compatible: 21 + enum: 22 + - qcom,sm8450-aggre1-noc 23 + - qcom,sm8450-aggre2-noc 24 + - qcom,sm8450-clk-virt 25 + - qcom,sm8450-config-noc 26 + - qcom,sm8450-gem-noc 27 + - qcom,sm8450-lpass-ag-noc 28 + - qcom,sm8450-mc-virt 29 + - qcom,sm8450-mmss-noc 30 + - qcom,sm8450-nsp-noc 31 + - qcom,sm8450-pcie-anoc 32 + - qcom,sm8450-system-noc 33 + 34 + reg: 35 + maxItems: 1 36 + 37 + clocks: 38 + minItems: 1 39 + maxItems: 4 40 + 41 + required: 42 + - compatible 43 + 44 + allOf: 45 + - $ref: qcom,rpmh-common.yaml# 46 + - if: 47 + properties: 48 + compatible: 49 + contains: 50 + enum: 51 + - qcom,sm8450-clk-virt 52 + - qcom,sm8450-mc-virt 53 + then: 54 + properties: 55 + reg: false 56 + else: 57 + required: 58 + - reg 59 + 60 + - if: 61 + properties: 62 + compatible: 63 + contains: 64 + enum: 65 + - qcom,sm8450-aggre1-noc 66 + then: 67 + properties: 68 + clocks: 69 + items: 70 + - description: aggre UFS PHY AXI clock 71 + - description: aggre USB3 PRIM AXI clock 72 + 73 + - if: 74 + properties: 75 + compatible: 76 + contains: 77 + enum: 78 + - qcom,sm8450-aggre2-noc 79 + then: 80 + properties: 81 + clocks: 82 + items: 83 + - description: aggre-NOC PCIe 0 AXI clock 84 + - description: aggre-NOC PCIe 1 AXI clock 85 + - description: aggre UFS PHY AXI clock 86 + - description: RPMH CC IPA clock 87 + 88 + - if: 89 + properties: 90 + compatible: 91 + contains: 92 + enum: 93 + - qcom,sm8450-aggre1-noc 94 + - qcom,sm8450-aggre2-noc 95 + then: 96 + required: 97 + - clocks 98 + else: 99 + properties: 100 + clocks: false 101 + 102 + unevaluatedProperties: false 103 + 104 + examples: 105 + - | 106 + #include <dt-bindings/clock/qcom,gcc-sm8450.h> 107 + #include <dt-bindings/clock/qcom,rpmh.h> 108 + 109 + interconnect-0 { 110 + compatible = "qcom,sm8450-clk-virt"; 111 + #interconnect-cells = <2>; 112 + qcom,bcm-voters = <&apps_bcm_voter>; 113 + }; 114 + 115 + interconnect@1700000 { 116 + compatible = "qcom,sm8450-aggre2-noc"; 117 + reg = <0x01700000 0x31080>; 118 + #interconnect-cells = <2>; 119 + qcom,bcm-voters = <&apps_bcm_voter>; 120 + clocks = <&gcc GCC_AGGRE_NOC_PCIE_0_AXI_CLK>, 121 + <&gcc GCC_AGGRE_NOC_PCIE_1_AXI_CLK>, 122 + <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, 123 + <&rpmhcc RPMH_IPA_CLK>; 124 + };
+139
Documentation/devicetree/bindings/interconnect/qcom,sm8550-rpmh.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/interconnect/qcom,sm8550-rpmh.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm RPMh Network-On-Chip Interconnect on SM8550 8 + 9 + maintainers: 10 + - Abel Vesa <abel.vesa@linaro.org> 11 + - Neil Armstrong <neil.armstrong@linaro.org> 12 + 13 + description: | 14 + RPMh interconnect providers support system bandwidth requirements through 15 + RPMh hardware accelerators known as Bus Clock Manager (BCM). The provider is 16 + able to communicate with the BCM through the Resource State Coordinator (RSC) 17 + associated with each execution environment. Provider nodes must point to at 18 + least one RPMh device child node pertaining to their RSC and each provider 19 + can map to multiple RPMh resources. 20 + 21 + See also:: include/dt-bindings/interconnect/qcom,sm8550-rpmh.h 22 + 23 + properties: 24 + compatible: 25 + enum: 26 + - qcom,sm8550-aggre1-noc 27 + - qcom,sm8550-aggre2-noc 28 + - qcom,sm8550-clk-virt 29 + - qcom,sm8550-cnoc-main 30 + - qcom,sm8550-config-noc 31 + - qcom,sm8550-gem-noc 32 + - qcom,sm8550-lpass-ag-noc 33 + - qcom,sm8550-lpass-lpiaon-noc 34 + - qcom,sm8550-lpass-lpicx-noc 35 + - qcom,sm8550-mc-virt 36 + - qcom,sm8550-mmss-noc 37 + - qcom,sm8550-nsp-noc 38 + - qcom,sm8550-pcie-anoc 39 + - qcom,sm8550-system-noc 40 + 41 + reg: 42 + maxItems: 1 43 + 44 + clocks: 45 + minItems: 1 46 + maxItems: 2 47 + 48 + allOf: 49 + - $ref: qcom,rpmh-common.yaml# 50 + - if: 51 + properties: 52 + compatible: 53 + contains: 54 + enum: 55 + - qcom,sm8550-clk-virt 56 + - qcom,sm8550-mc-virt 57 + then: 58 + properties: 59 + reg: false 60 + else: 61 + required: 62 + - reg 63 + 64 + - if: 65 + properties: 66 + compatible: 67 + contains: 68 + enum: 69 + - qcom,sm8550-pcie-anoc 70 + then: 71 + properties: 72 + clocks: 73 + items: 74 + - description: aggre-NOC PCIe AXI clock 75 + - description: cfg-NOC PCIe a-NOC AHB clock 76 + 77 + - if: 78 + properties: 79 + compatible: 80 + contains: 81 + enum: 82 + - qcom,sm8550-aggre1-noc 83 + then: 84 + properties: 85 + clocks: 86 + items: 87 + - description: aggre UFS PHY AXI clock 88 + - description: aggre USB3 PRIM AXI clock 89 + 90 + - if: 91 + properties: 92 + compatible: 93 + contains: 94 + enum: 95 + - qcom,sm8550-aggre2-noc 96 + then: 97 + properties: 98 + clocks: 99 + items: 100 + - description: RPMH CC IPA clock 101 + 102 + - if: 103 + properties: 104 + compatible: 105 + contains: 106 + enum: 107 + - qcom,sm8550-aggre1-noc 108 + - qcom,sm8550-aggre2-noc 109 + - qcom,sm8550-pcie-anoc 110 + then: 111 + required: 112 + - clocks 113 + else: 114 + properties: 115 + clocks: false 116 + 117 + required: 118 + - compatible 119 + 120 + unevaluatedProperties: false 121 + 122 + examples: 123 + - | 124 + #include <dt-bindings/clock/qcom,sm8550-gcc.h> 125 + 126 + clk_virt: interconnect-0 { 127 + compatible = "qcom,sm8550-clk-virt"; 128 + #interconnect-cells = <2>; 129 + qcom,bcm-voters = <&apps_bcm_voter>; 130 + }; 131 + 132 + aggre1_noc: interconnect@16e0000 { 133 + compatible = "qcom,sm8550-aggre1-noc"; 134 + reg = <0x016e0000 0x14400>; 135 + #interconnect-cells = <2>; 136 + clocks = <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>, 137 + <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>; 138 + qcom,bcm-voters = <&apps_bcm_voter>; 139 + };
+27
Documentation/devicetree/bindings/interconnect/samsung,exynos-bus.yaml
··· 196 196 maxItems: 2 197 197 198 198 operating-points-v2: true 199 + opp-table: 200 + type: object 199 201 200 202 samsung,data-clock-ratio: 201 203 $ref: /schemas/types.yaml#/definitions/uint32 ··· 229 227 operating-points-v2 = <&bus_dmc_opp_table>; 230 228 devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>; 231 229 vdd-supply = <&buck1_reg>; 230 + 231 + bus_dmc_opp_table: opp-table { 232 + compatible = "operating-points-v2"; 233 + 234 + opp-50000000 { 235 + opp-hz = /bits/ 64 <50000000>; 236 + opp-microvolt = <800000>; 237 + }; 238 + opp-100000000 { 239 + opp-hz = /bits/ 64 <100000000>; 240 + opp-microvolt = <800000>; 241 + }; 242 + opp-134000000 { 243 + opp-hz = /bits/ 64 <134000000>; 244 + opp-microvolt = <800000>; 245 + }; 246 + opp-200000000 { 247 + opp-hz = /bits/ 64 <200000000>; 248 + opp-microvolt = <825000>; 249 + }; 250 + opp-400000000 { 251 + opp-hz = /bits/ 64 <400000000>; 252 + opp-microvolt = <875000>; 253 + }; 254 + }; 232 255 }; 233 256 234 257 ppmu_dmc0: ppmu@106a0000 {
+9 -5
drivers/interconnect/core.c
··· 1079 1079 } 1080 1080 EXPORT_SYMBOL_GPL(icc_provider_del); 1081 1081 1082 + static const struct of_device_id __maybe_unused ignore_list[] = { 1083 + { .compatible = "qcom,sc7180-ipa-virt" }, 1084 + { .compatible = "qcom,sc8180x-ipa-virt" }, 1085 + { .compatible = "qcom,sdx55-ipa-virt" }, 1086 + { .compatible = "qcom,sm8150-ipa-virt" }, 1087 + { .compatible = "qcom,sm8250-ipa-virt" }, 1088 + {} 1089 + }; 1090 + 1082 1091 static int of_count_icc_providers(struct device_node *np) 1083 1092 { 1084 1093 struct device_node *child; 1085 1094 int count = 0; 1086 - const struct of_device_id __maybe_unused ignore_list[] = { 1087 - { .compatible = "qcom,sc7180-ipa-virt" }, 1088 - { .compatible = "qcom,sdx55-ipa-virt" }, 1089 - {} 1090 - }; 1091 1095 1092 1096 for_each_available_child_of_node(np, child) { 1093 1097 if (of_property_read_bool(child, "#interconnect-cells") &&
+36
drivers/interconnect/qcom/Kconfig
··· 69 69 This is a driver for the Qualcomm Network-on-Chip on qcs404-based 70 70 platforms. 71 71 72 + config INTERCONNECT_QCOM_QDU1000 73 + tristate "Qualcomm QDU1000/QRU1000 interconnect driver" 74 + depends on INTERCONNECT_QCOM_RPMH_POSSIBLE 75 + select INTERCONNECT_QCOM_RPMH 76 + select INTERCONNECT_QCOM_BCM_VOTER 77 + help 78 + This is a driver for the Qualcomm Network-on-Chip on QDU1000-based 79 + and QRU1000-based platforms. 80 + 72 81 config INTERCONNECT_QCOM_RPMH_POSSIBLE 73 82 tristate 74 83 default INTERCONNECT_QCOM ··· 91 82 92 83 config INTERCONNECT_QCOM_RPMH 93 84 tristate 85 + 86 + config INTERCONNECT_QCOM_SA8775P 87 + tristate "Qualcomm SA8775P interconnect driver" 88 + depends on INTERCONNECT_QCOM_RPMH_POSSIBLE 89 + select INTERCONNECT_QCOM_RPMH 90 + select INTERCONNECT_QCOM_BCM_VOTER 91 + help 92 + This is a driver for the Qualcomm Network-on-Chip on sa8775p-based 93 + platforms. 94 94 95 95 config INTERCONNECT_QCOM_SC7180 96 96 tristate "Qualcomm SC7180 interconnect driver" ··· 144 126 select INTERCONNECT_QCOM_SMD_RPM 145 127 help 146 128 This is a driver for the Qualcomm Network-on-Chip on sdm660-based 129 + platforms. 130 + 131 + config INTERCONNECT_QCOM_SDM670 132 + tristate "Qualcomm SDM670 interconnect driver" 133 + depends on INTERCONNECT_QCOM_RPMH_POSSIBLE 134 + select INTERCONNECT_QCOM_RPMH 135 + select INTERCONNECT_QCOM_BCM_VOTER 136 + help 137 + This is a driver for the Qualcomm Network-on-Chip on sdm670-based 147 138 platforms. 148 139 149 140 config INTERCONNECT_QCOM_SDM845 ··· 225 198 select INTERCONNECT_QCOM_BCM_VOTER 226 199 help 227 200 This is a driver for the Qualcomm Network-on-Chip on SM8450-based 201 + platforms. 202 + 203 + config INTERCONNECT_QCOM_SM8550 204 + tristate "Qualcomm SM8550 interconnect driver" 205 + depends on INTERCONNECT_QCOM_RPMH_POSSIBLE 206 + select INTERCONNECT_QCOM_RPMH 207 + select INTERCONNECT_QCOM_BCM_VOTER 208 + help 209 + This is a driver for the Qualcomm Network-on-Chip on SM8550-based 228 210 platforms. 229 211 230 212 config INTERCONNECT_QCOM_SMD_RPM
+8
drivers/interconnect/qcom/Makefile
··· 11 11 icc-osm-l3-objs := osm-l3.o 12 12 qnoc-qcm2290-objs := qcm2290.o 13 13 qnoc-qcs404-objs := qcs404.o 14 + qnoc-qdu1000-objs := qdu1000.o 14 15 icc-rpmh-obj := icc-rpmh.o 16 + qnoc-sa8775p-objs := sa8775p.o 15 17 qnoc-sc7180-objs := sc7180.o 16 18 qnoc-sc7280-objs := sc7280.o 17 19 qnoc-sc8180x-objs := sc8180x.o 18 20 qnoc-sc8280xp-objs := sc8280xp.o 19 21 qnoc-sdm660-objs := sdm660.o 22 + qnoc-sdm670-objs := sdm670.o 20 23 qnoc-sdm845-objs := sdm845.o 21 24 qnoc-sdx55-objs := sdx55.o 22 25 qnoc-sdx65-objs := sdx65.o ··· 28 25 qnoc-sm8250-objs := sm8250.o 29 26 qnoc-sm8350-objs := sm8350.o 30 27 qnoc-sm8450-objs := sm8450.o 28 + qnoc-sm8550-objs := sm8550.o 31 29 icc-smd-rpm-objs := smd-rpm.o icc-rpm.o 32 30 33 31 obj-$(CONFIG_INTERCONNECT_QCOM_BCM_VOTER) += icc-bcm-voter.o ··· 39 35 obj-$(CONFIG_INTERCONNECT_QCOM_OSM_L3) += icc-osm-l3.o 40 36 obj-$(CONFIG_INTERCONNECT_QCOM_QCM2290) += qnoc-qcm2290.o 41 37 obj-$(CONFIG_INTERCONNECT_QCOM_QCS404) += qnoc-qcs404.o 38 + obj-$(CONFIG_INTERCONNECT_QCOM_QDU1000) += qnoc-qdu1000.o 42 39 obj-$(CONFIG_INTERCONNECT_QCOM_RPMH) += icc-rpmh.o 40 + obj-$(CONFIG_INTERCONNECT_QCOM_SA8775P) += qnoc-sa8775p.o 43 41 obj-$(CONFIG_INTERCONNECT_QCOM_SC7180) += qnoc-sc7180.o 44 42 obj-$(CONFIG_INTERCONNECT_QCOM_SC7280) += qnoc-sc7280.o 45 43 obj-$(CONFIG_INTERCONNECT_QCOM_SC8180X) += qnoc-sc8180x.o 46 44 obj-$(CONFIG_INTERCONNECT_QCOM_SC8280XP) += qnoc-sc8280xp.o 47 45 obj-$(CONFIG_INTERCONNECT_QCOM_SDM660) += qnoc-sdm660.o 46 + obj-$(CONFIG_INTERCONNECT_QCOM_SDM670) += qnoc-sdm670.o 48 47 obj-$(CONFIG_INTERCONNECT_QCOM_SDM845) += qnoc-sdm845.o 49 48 obj-$(CONFIG_INTERCONNECT_QCOM_SDX55) += qnoc-sdx55.o 50 49 obj-$(CONFIG_INTERCONNECT_QCOM_SDX65) += qnoc-sdx65.o ··· 56 49 obj-$(CONFIG_INTERCONNECT_QCOM_SM8250) += qnoc-sm8250.o 57 50 obj-$(CONFIG_INTERCONNECT_QCOM_SM8350) += qnoc-sm8350.o 58 51 obj-$(CONFIG_INTERCONNECT_QCOM_SM8450) += qnoc-sm8450.o 52 + obj-$(CONFIG_INTERCONNECT_QCOM_SM8550) += qnoc-sm8550.o 59 53 obj-$(CONFIG_INTERCONNECT_QCOM_SMD_RPM) += icc-smd-rpm.o
+1067
drivers/interconnect/qcom/qdu1000.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-only 2 + /* 3 + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. 4 + * 5 + */ 6 + 7 + #include <linux/device.h> 8 + #include <linux/interconnect.h> 9 + #include <linux/interconnect-provider.h> 10 + #include <linux/module.h> 11 + #include <linux/of_platform.h> 12 + #include <dt-bindings/interconnect/qcom,qdu1000-rpmh.h> 13 + 14 + #include "bcm-voter.h" 15 + #include "icc-common.h" 16 + #include "icc-rpmh.h" 17 + #include "qdu1000.h" 18 + 19 + static struct qcom_icc_node qup0_core_master = { 20 + .name = "qup0_core_master", 21 + .id = QDU1000_MASTER_QUP_CORE_0, 22 + .channels = 1, 23 + .buswidth = 4, 24 + .num_links = 1, 25 + .links = { QDU1000_SLAVE_QUP_CORE_0 }, 26 + }; 27 + 28 + static struct qcom_icc_node qup1_core_master = { 29 + .name = "qup1_core_master", 30 + .id = QDU1000_MASTER_QUP_CORE_1, 31 + .channels = 1, 32 + .buswidth = 4, 33 + .num_links = 1, 34 + .links = { QDU1000_SLAVE_QUP_CORE_1 }, 35 + }; 36 + 37 + static struct qcom_icc_node alm_sys_tcu = { 38 + .name = "alm_sys_tcu", 39 + .id = QDU1000_MASTER_SYS_TCU, 40 + .channels = 1, 41 + .buswidth = 8, 42 + .num_links = 2, 43 + .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC }, 44 + }; 45 + 46 + static struct qcom_icc_node chm_apps = { 47 + .name = "chm_apps", 48 + .id = QDU1000_MASTER_APPSS_PROC, 49 + .channels = 1, 50 + .buswidth = 16, 51 + .num_links = 4, 52 + .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC, 53 + QDU1000_SLAVE_GEMNOC_MODEM_CNOC, QDU1000_SLAVE_MEM_NOC_PCIE_SNOC 54 + }, 55 + }; 56 + 57 + static struct qcom_icc_node qnm_ecpri_dma = { 58 + .name = "qnm_ecpri_dma", 59 + .id = QDU1000_MASTER_GEMNOC_ECPRI_DMA, 60 + .channels = 2, 61 + .buswidth = 32, 62 + .num_links = 2, 63 + .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC }, 64 + }; 65 + 66 + static struct qcom_icc_node qnm_fec_2_gemnoc = { 67 + .name = "qnm_fec_2_gemnoc", 68 + .id = QDU1000_MASTER_FEC_2_GEMNOC, 69 + .channels = 2, 70 + .buswidth = 32, 71 + .num_links = 2, 72 + .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC }, 73 + }; 74 + 75 + static struct qcom_icc_node qnm_pcie = { 76 + .name = "qnm_pcie", 77 + .id = QDU1000_MASTER_ANOC_PCIE_GEM_NOC, 78 + .channels = 1, 79 + .buswidth = 64, 80 + .num_links = 3, 81 + .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC, 82 + QDU1000_SLAVE_GEMNOC_MODEM_CNOC 83 + }, 84 + }; 85 + 86 + static struct qcom_icc_node qnm_snoc_gc = { 87 + .name = "qnm_snoc_gc", 88 + .id = QDU1000_MASTER_SNOC_GC_MEM_NOC, 89 + .channels = 1, 90 + .buswidth = 8, 91 + .num_links = 1, 92 + .links = { QDU1000_SLAVE_LLCC }, 93 + }; 94 + 95 + static struct qcom_icc_node qnm_snoc_sf = { 96 + .name = "qnm_snoc_sf", 97 + .id = QDU1000_MASTER_SNOC_SF_MEM_NOC, 98 + .channels = 1, 99 + .buswidth = 16, 100 + .num_links = 4, 101 + .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC, 102 + QDU1000_SLAVE_GEMNOC_MODEM_CNOC, QDU1000_SLAVE_MEM_NOC_PCIE_SNOC 103 + }, 104 + }; 105 + 106 + static struct qcom_icc_node qxm_mdsp = { 107 + .name = "qxm_mdsp", 108 + .id = QDU1000_MASTER_MSS_PROC, 109 + .channels = 1, 110 + .buswidth = 16, 111 + .num_links = 3, 112 + .links = { QDU1000_SLAVE_GEM_NOC_CNOC, QDU1000_SLAVE_LLCC, 113 + QDU1000_SLAVE_MEM_NOC_PCIE_SNOC 114 + }, 115 + }; 116 + 117 + static struct qcom_icc_node llcc_mc = { 118 + .name = "llcc_mc", 119 + .id = QDU1000_MASTER_LLCC, 120 + .channels = 8, 121 + .buswidth = 4, 122 + .num_links = 1, 123 + .links = { QDU1000_SLAVE_EBI1 }, 124 + }; 125 + 126 + static struct qcom_icc_node qhm_gic = { 127 + .name = "qhm_gic", 128 + .id = QDU1000_MASTER_GIC_AHB, 129 + .channels = 1, 130 + .buswidth = 4, 131 + .num_links = 1, 132 + .links = { QDU1000_SLAVE_SNOC_GEM_NOC_SF }, 133 + }; 134 + 135 + static struct qcom_icc_node qhm_qdss_bam = { 136 + .name = "qhm_qdss_bam", 137 + .id = QDU1000_MASTER_QDSS_BAM, 138 + .channels = 1, 139 + .buswidth = 4, 140 + .num_links = 1, 141 + .links = { QDU1000_SLAVE_SNOC_GEM_NOC_SF }, 142 + }; 143 + 144 + static struct qcom_icc_node qhm_qpic = { 145 + .name = "qhm_qpic", 146 + .id = QDU1000_MASTER_QPIC, 147 + .channels = 1, 148 + .buswidth = 4, 149 + .num_links = 1, 150 + .links = { QDU1000_SLAVE_A1NOC_SNOC }, 151 + }; 152 + 153 + static struct qcom_icc_node qhm_qspi = { 154 + .name = "qhm_qspi", 155 + .id = QDU1000_MASTER_QSPI_0, 156 + .channels = 1, 157 + .buswidth = 4, 158 + .num_links = 1, 159 + .links = { QDU1000_SLAVE_A1NOC_SNOC }, 160 + }; 161 + 162 + static struct qcom_icc_node qhm_qup0 = { 163 + .name = "qhm_qup0", 164 + .id = QDU1000_MASTER_QUP_0, 165 + .channels = 1, 166 + .buswidth = 4, 167 + .num_links = 1, 168 + .links = { QDU1000_SLAVE_A1NOC_SNOC }, 169 + }; 170 + 171 + static struct qcom_icc_node qhm_qup1 = { 172 + .name = "qhm_qup1", 173 + .id = QDU1000_MASTER_QUP_1, 174 + .channels = 1, 175 + .buswidth = 4, 176 + .num_links = 1, 177 + .links = { QDU1000_SLAVE_A1NOC_SNOC }, 178 + }; 179 + 180 + static struct qcom_icc_node qhm_system_noc_cfg = { 181 + .name = "qhm_system_noc_cfg", 182 + .id = QDU1000_MASTER_SNOC_CFG, 183 + .channels = 1, 184 + .buswidth = 4, 185 + .num_links = 1, 186 + .links = { QDU1000_SLAVE_SERVICE_SNOC }, 187 + }; 188 + 189 + static struct qcom_icc_node qnm_aggre_noc = { 190 + .name = "qnm_aggre_noc", 191 + .id = QDU1000_MASTER_ANOC_SNOC, 192 + .channels = 1, 193 + .buswidth = 8, 194 + .num_links = 1, 195 + .links = { QDU1000_SLAVE_SNOC_GEM_NOC_SF }, 196 + }; 197 + 198 + static struct qcom_icc_node qnm_aggre_noc_gsi = { 199 + .name = "qnm_aggre_noc_gsi", 200 + .id = QDU1000_MASTER_ANOC_GSI, 201 + .channels = 1, 202 + .buswidth = 8, 203 + .num_links = 1, 204 + .links = { QDU1000_SLAVE_SNOC_GEM_NOC_GC }, 205 + }; 206 + 207 + static struct qcom_icc_node qnm_gemnoc_cnoc = { 208 + .name = "qnm_gemnoc_cnoc", 209 + .id = QDU1000_MASTER_GEM_NOC_CNOC, 210 + .channels = 1, 211 + .buswidth = 16, 212 + .num_links = 36, 213 + .links = { QDU1000_SLAVE_AHB2PHY_SOUTH, QDU1000_SLAVE_AHB2PHY_NORTH, 214 + QDU1000_SLAVE_AHB2PHY_EAST, QDU1000_SLAVE_AOSS, 215 + QDU1000_SLAVE_CLK_CTL, QDU1000_SLAVE_RBCPR_CX_CFG, 216 + QDU1000_SLAVE_RBCPR_MX_CFG, QDU1000_SLAVE_CRYPTO_0_CFG, 217 + QDU1000_SLAVE_ECPRI_CFG, QDU1000_SLAVE_IMEM_CFG, 218 + QDU1000_SLAVE_IPC_ROUTER_CFG, QDU1000_SLAVE_CNOC_MSS, 219 + QDU1000_SLAVE_PCIE_CFG, QDU1000_SLAVE_PDM, 220 + QDU1000_SLAVE_PIMEM_CFG, QDU1000_SLAVE_PRNG, 221 + QDU1000_SLAVE_QDSS_CFG, QDU1000_SLAVE_QPIC, 222 + QDU1000_SLAVE_QSPI_0, QDU1000_SLAVE_QUP_0, 223 + QDU1000_SLAVE_QUP_1, QDU1000_SLAVE_SDCC_2, 224 + QDU1000_SLAVE_SMBUS_CFG, QDU1000_SLAVE_SNOC_CFG, 225 + QDU1000_SLAVE_TCSR, QDU1000_SLAVE_TLMM, 226 + QDU1000_SLAVE_TME_CFG, QDU1000_SLAVE_TSC_CFG, 227 + QDU1000_SLAVE_USB3_0, QDU1000_SLAVE_VSENSE_CTRL_CFG, 228 + QDU1000_SLAVE_DDRSS_CFG, QDU1000_SLAVE_IMEM, 229 + QDU1000_SLAVE_PIMEM, QDU1000_SLAVE_ETHERNET_SS, 230 + QDU1000_SLAVE_QDSS_STM, QDU1000_SLAVE_TCU 231 + }, 232 + }; 233 + 234 + static struct qcom_icc_node qnm_gemnoc_modem_slave = { 235 + .name = "qnm_gemnoc_modem_slave", 236 + .id = QDU1000_MASTER_GEMNOC_MODEM_CNOC, 237 + .channels = 1, 238 + .buswidth = 16, 239 + .num_links = 1, 240 + .links = { QDU1000_SLAVE_MODEM_OFFLINE }, 241 + }; 242 + 243 + static struct qcom_icc_node qnm_gemnoc_pcie = { 244 + .name = "qnm_gemnoc_pcie", 245 + .id = QDU1000_MASTER_GEM_NOC_PCIE_SNOC, 246 + .channels = 1, 247 + .buswidth = 16, 248 + .num_links = 1, 249 + .links = { QDU1000_SLAVE_PCIE_0 }, 250 + }; 251 + 252 + static struct qcom_icc_node qxm_crypto = { 253 + .name = "qxm_crypto", 254 + .id = QDU1000_MASTER_CRYPTO, 255 + .channels = 1, 256 + .buswidth = 8, 257 + .num_links = 1, 258 + .links = { QDU1000_SLAVE_A1NOC_SNOC }, 259 + }; 260 + 261 + static struct qcom_icc_node qxm_ecpri_gsi = { 262 + .name = "qxm_ecpri_gsi", 263 + .id = QDU1000_MASTER_ECPRI_GSI, 264 + .channels = 1, 265 + .buswidth = 8, 266 + .num_links = 2, 267 + .links = { QDU1000_SLAVE_ANOC_SNOC_GSI, QDU1000_SLAVE_PCIE_0 }, 268 + }; 269 + 270 + static struct qcom_icc_node qxm_pimem = { 271 + .name = "qxm_pimem", 272 + .id = QDU1000_MASTER_PIMEM, 273 + .channels = 1, 274 + .buswidth = 8, 275 + .num_links = 1, 276 + .links = { QDU1000_SLAVE_SNOC_GEM_NOC_GC }, 277 + }; 278 + 279 + static struct qcom_icc_node xm_ecpri_dma = { 280 + .name = "xm_ecpri_dma", 281 + .id = QDU1000_MASTER_SNOC_ECPRI_DMA, 282 + .channels = 2, 283 + .buswidth = 32, 284 + .num_links = 2, 285 + .links = { QDU1000_SLAVE_ECPRI_GEMNOC, QDU1000_SLAVE_PCIE_0 }, 286 + }; 287 + 288 + static struct qcom_icc_node xm_gic = { 289 + .name = "xm_gic", 290 + .id = QDU1000_MASTER_GIC, 291 + .channels = 1, 292 + .buswidth = 8, 293 + .num_links = 1, 294 + .links = { QDU1000_SLAVE_SNOC_GEM_NOC_GC }, 295 + }; 296 + 297 + static struct qcom_icc_node xm_pcie = { 298 + .name = "xm_pcie", 299 + .id = QDU1000_MASTER_PCIE, 300 + .channels = 1, 301 + .buswidth = 64, 302 + .num_links = 1, 303 + .links = { QDU1000_SLAVE_ANOC_PCIE_GEM_NOC }, 304 + }; 305 + 306 + static struct qcom_icc_node xm_qdss_etr0 = { 307 + .name = "xm_qdss_etr0", 308 + .id = QDU1000_MASTER_QDSS_ETR, 309 + .channels = 1, 310 + .buswidth = 8, 311 + .num_links = 1, 312 + .links = { QDU1000_SLAVE_SNOC_GEM_NOC_SF }, 313 + }; 314 + 315 + static struct qcom_icc_node xm_qdss_etr1 = { 316 + .name = "xm_qdss_etr1", 317 + .id = QDU1000_MASTER_QDSS_ETR_1, 318 + .channels = 1, 319 + .buswidth = 8, 320 + .num_links = 1, 321 + .links = { QDU1000_SLAVE_SNOC_GEM_NOC_SF }, 322 + }; 323 + 324 + static struct qcom_icc_node xm_sdc = { 325 + .name = "xm_sdc", 326 + .id = QDU1000_MASTER_SDCC_1, 327 + .channels = 1, 328 + .buswidth = 8, 329 + .num_links = 1, 330 + .links = { QDU1000_SLAVE_A1NOC_SNOC }, 331 + }; 332 + 333 + static struct qcom_icc_node xm_usb3 = { 334 + .name = "xm_usb3", 335 + .id = QDU1000_MASTER_USB3, 336 + .channels = 1, 337 + .buswidth = 8, 338 + .num_links = 1, 339 + .links = { QDU1000_SLAVE_A1NOC_SNOC }, 340 + }; 341 + 342 + static struct qcom_icc_node qup0_core_slave = { 343 + .name = "qup0_core_slave", 344 + .id = QDU1000_SLAVE_QUP_CORE_0, 345 + .channels = 1, 346 + .buswidth = 4, 347 + .num_links = 0, 348 + }; 349 + 350 + static struct qcom_icc_node qup1_core_slave = { 351 + .name = "qup1_core_slave", 352 + .id = QDU1000_SLAVE_QUP_CORE_1, 353 + .channels = 1, 354 + .buswidth = 4, 355 + .num_links = 0, 356 + }; 357 + 358 + static struct qcom_icc_node qns_gem_noc_cnoc = { 359 + .name = "qns_gem_noc_cnoc", 360 + .id = QDU1000_SLAVE_GEM_NOC_CNOC, 361 + .channels = 1, 362 + .buswidth = 16, 363 + .num_links = 1, 364 + .links = { QDU1000_MASTER_GEM_NOC_CNOC }, 365 + }; 366 + 367 + static struct qcom_icc_node qns_llcc = { 368 + .name = "qns_llcc", 369 + .id = QDU1000_SLAVE_LLCC, 370 + .channels = 8, 371 + .buswidth = 16, 372 + .num_links = 1, 373 + .links = { QDU1000_MASTER_LLCC }, 374 + }; 375 + 376 + static struct qcom_icc_node qns_modem_slave = { 377 + .name = "qns_modem_slave", 378 + .id = QDU1000_SLAVE_GEMNOC_MODEM_CNOC, 379 + .channels = 1, 380 + .buswidth = 16, 381 + .num_links = 1, 382 + .links = { QDU1000_MASTER_GEMNOC_MODEM_CNOC }, 383 + }; 384 + 385 + static struct qcom_icc_node qns_pcie = { 386 + .name = "qns_pcie", 387 + .id = QDU1000_SLAVE_MEM_NOC_PCIE_SNOC, 388 + .channels = 1, 389 + .buswidth = 16, 390 + .num_links = 1, 391 + .links = { QDU1000_MASTER_GEM_NOC_PCIE_SNOC }, 392 + }; 393 + 394 + static struct qcom_icc_node ebi = { 395 + .name = "ebi", 396 + .id = QDU1000_SLAVE_EBI1, 397 + .channels = 8, 398 + .buswidth = 4, 399 + .num_links = 0, 400 + }; 401 + 402 + static struct qcom_icc_node qhs_ahb2phy0_south = { 403 + .name = "qhs_ahb2phy0_south", 404 + .id = QDU1000_SLAVE_AHB2PHY_SOUTH, 405 + .channels = 1, 406 + .buswidth = 4, 407 + .num_links = 0, 408 + }; 409 + 410 + static struct qcom_icc_node qhs_ahb2phy1_north = { 411 + .name = "qhs_ahb2phy1_north", 412 + .id = QDU1000_SLAVE_AHB2PHY_NORTH, 413 + .channels = 1, 414 + .buswidth = 4, 415 + .num_links = 0, 416 + }; 417 + 418 + static struct qcom_icc_node qhs_ahb2phy2_east = { 419 + .name = "qhs_ahb2phy2_east", 420 + .id = QDU1000_SLAVE_AHB2PHY_EAST, 421 + .channels = 1, 422 + .buswidth = 4, 423 + .num_links = 0, 424 + }; 425 + 426 + static struct qcom_icc_node qhs_aoss = { 427 + .name = "qhs_aoss", 428 + .id = QDU1000_SLAVE_AOSS, 429 + .channels = 1, 430 + .buswidth = 4, 431 + .num_links = 0, 432 + }; 433 + 434 + static struct qcom_icc_node qhs_clk_ctl = { 435 + .name = "qhs_clk_ctl", 436 + .id = QDU1000_SLAVE_CLK_CTL, 437 + .channels = 1, 438 + .buswidth = 4, 439 + .num_links = 0, 440 + }; 441 + 442 + static struct qcom_icc_node qhs_cpr_cx = { 443 + .name = "qhs_cpr_cx", 444 + .id = QDU1000_SLAVE_RBCPR_CX_CFG, 445 + .channels = 1, 446 + .buswidth = 4, 447 + .num_links = 0, 448 + }; 449 + 450 + static struct qcom_icc_node qhs_cpr_mx = { 451 + .name = "qhs_cpr_mx", 452 + .id = QDU1000_SLAVE_RBCPR_MX_CFG, 453 + .channels = 1, 454 + .buswidth = 4, 455 + .num_links = 0, 456 + }; 457 + 458 + static struct qcom_icc_node qhs_crypto_cfg = { 459 + .name = "qhs_crypto_cfg", 460 + .id = QDU1000_SLAVE_CRYPTO_0_CFG, 461 + .channels = 1, 462 + .buswidth = 4, 463 + .num_links = 0, 464 + }; 465 + 466 + static struct qcom_icc_node qhs_ecpri_cfg = { 467 + .name = "qhs_ecpri_cfg", 468 + .id = QDU1000_SLAVE_ECPRI_CFG, 469 + .channels = 1, 470 + .buswidth = 4, 471 + .num_links = 0, 472 + }; 473 + 474 + static struct qcom_icc_node qhs_imem_cfg = { 475 + .name = "qhs_imem_cfg", 476 + .id = QDU1000_SLAVE_IMEM_CFG, 477 + .channels = 1, 478 + .buswidth = 4, 479 + .num_links = 0, 480 + }; 481 + 482 + static struct qcom_icc_node qhs_ipc_router = { 483 + .name = "qhs_ipc_router", 484 + .id = QDU1000_SLAVE_IPC_ROUTER_CFG, 485 + .channels = 1, 486 + .buswidth = 4, 487 + .num_links = 0, 488 + }; 489 + 490 + static struct qcom_icc_node qhs_mss_cfg = { 491 + .name = "qhs_mss_cfg", 492 + .id = QDU1000_SLAVE_CNOC_MSS, 493 + .channels = 1, 494 + .buswidth = 4, 495 + .num_links = 0, 496 + }; 497 + 498 + static struct qcom_icc_node qhs_pcie_cfg = { 499 + .name = "qhs_pcie_cfg", 500 + .id = QDU1000_SLAVE_PCIE_CFG, 501 + .channels = 1, 502 + .buswidth = 4, 503 + .num_links = 0, 504 + }; 505 + 506 + static struct qcom_icc_node qhs_pdm = { 507 + .name = "qhs_pdm", 508 + .id = QDU1000_SLAVE_PDM, 509 + .channels = 1, 510 + .buswidth = 4, 511 + .num_links = 0, 512 + }; 513 + 514 + static struct qcom_icc_node qhs_pimem_cfg = { 515 + .name = "qhs_pimem_cfg", 516 + .id = QDU1000_SLAVE_PIMEM_CFG, 517 + .channels = 1, 518 + .buswidth = 4, 519 + .num_links = 0, 520 + }; 521 + 522 + static struct qcom_icc_node qhs_prng = { 523 + .name = "qhs_prng", 524 + .id = QDU1000_SLAVE_PRNG, 525 + .channels = 1, 526 + .buswidth = 4, 527 + .num_links = 0, 528 + }; 529 + 530 + static struct qcom_icc_node qhs_qdss_cfg = { 531 + .name = "qhs_qdss_cfg", 532 + .id = QDU1000_SLAVE_QDSS_CFG, 533 + .channels = 1, 534 + .buswidth = 4, 535 + .num_links = 0, 536 + }; 537 + 538 + static struct qcom_icc_node qhs_qpic = { 539 + .name = "qhs_qpic", 540 + .id = QDU1000_SLAVE_QPIC, 541 + .channels = 1, 542 + .buswidth = 4, 543 + .num_links = 0, 544 + }; 545 + 546 + static struct qcom_icc_node qhs_qspi = { 547 + .name = "qhs_qspi", 548 + .id = QDU1000_SLAVE_QSPI_0, 549 + .channels = 1, 550 + .buswidth = 4, 551 + .num_links = 0, 552 + }; 553 + 554 + static struct qcom_icc_node qhs_qup0 = { 555 + .name = "qhs_qup0", 556 + .id = QDU1000_SLAVE_QUP_0, 557 + .channels = 1, 558 + .buswidth = 4, 559 + .num_links = 0, 560 + }; 561 + 562 + static struct qcom_icc_node qhs_qup1 = { 563 + .name = "qhs_qup1", 564 + .id = QDU1000_SLAVE_QUP_1, 565 + .channels = 1, 566 + .buswidth = 4, 567 + .num_links = 0, 568 + }; 569 + 570 + static struct qcom_icc_node qhs_sdc2 = { 571 + .name = "qhs_sdc2", 572 + .id = QDU1000_SLAVE_SDCC_2, 573 + .channels = 1, 574 + .buswidth = 4, 575 + .num_links = 0, 576 + }; 577 + 578 + static struct qcom_icc_node qhs_smbus_cfg = { 579 + .name = "qhs_smbus_cfg", 580 + .id = QDU1000_SLAVE_SMBUS_CFG, 581 + .channels = 1, 582 + .buswidth = 4, 583 + .num_links = 0, 584 + }; 585 + 586 + static struct qcom_icc_node qhs_system_noc_cfg = { 587 + .name = "qhs_system_noc_cfg", 588 + .id = QDU1000_SLAVE_SNOC_CFG, 589 + .channels = 1, 590 + .buswidth = 4, 591 + .num_links = 1, 592 + .links = { QDU1000_MASTER_SNOC_CFG }, 593 + }; 594 + 595 + static struct qcom_icc_node qhs_tcsr = { 596 + .name = "qhs_tcsr", 597 + .id = QDU1000_SLAVE_TCSR, 598 + .channels = 1, 599 + .buswidth = 4, 600 + .num_links = 0, 601 + }; 602 + 603 + static struct qcom_icc_node qhs_tlmm = { 604 + .name = "qhs_tlmm", 605 + .id = QDU1000_SLAVE_TLMM, 606 + .channels = 1, 607 + .buswidth = 4, 608 + .num_links = 0, 609 + }; 610 + 611 + static struct qcom_icc_node qhs_tme_cfg = { 612 + .name = "qhs_tme_cfg", 613 + .id = QDU1000_SLAVE_TME_CFG, 614 + .channels = 1, 615 + .buswidth = 4, 616 + .num_links = 0, 617 + }; 618 + 619 + static struct qcom_icc_node qhs_tsc_cfg = { 620 + .name = "qhs_tsc_cfg", 621 + .id = QDU1000_SLAVE_TSC_CFG, 622 + .channels = 1, 623 + .buswidth = 4, 624 + .num_links = 0, 625 + }; 626 + 627 + static struct qcom_icc_node qhs_usb3 = { 628 + .name = "qhs_usb3", 629 + .id = QDU1000_SLAVE_USB3_0, 630 + .channels = 1, 631 + .buswidth = 4, 632 + .num_links = 0, 633 + }; 634 + 635 + static struct qcom_icc_node qhs_vsense_ctrl_cfg = { 636 + .name = "qhs_vsense_ctrl_cfg", 637 + .id = QDU1000_SLAVE_VSENSE_CTRL_CFG, 638 + .channels = 1, 639 + .buswidth = 4, 640 + .num_links = 0, 641 + }; 642 + 643 + static struct qcom_icc_node qns_a1noc_snoc = { 644 + .name = "qns_a1noc_snoc", 645 + .id = QDU1000_SLAVE_A1NOC_SNOC, 646 + .channels = 1, 647 + .buswidth = 8, 648 + .num_links = 1, 649 + .links = { QDU1000_MASTER_ANOC_SNOC }, 650 + }; 651 + 652 + static struct qcom_icc_node qns_anoc_snoc_gsi = { 653 + .name = "qns_anoc_snoc_gsi", 654 + .id = QDU1000_SLAVE_ANOC_SNOC_GSI, 655 + .channels = 1, 656 + .buswidth = 8, 657 + .num_links = 1, 658 + .links = { QDU1000_MASTER_ANOC_GSI }, 659 + }; 660 + 661 + static struct qcom_icc_node qns_ddrss_cfg = { 662 + .name = "qns_ddrss_cfg", 663 + .id = QDU1000_SLAVE_DDRSS_CFG, 664 + .channels = 1, 665 + .buswidth = 4, 666 + .num_links = 0, 667 + }; 668 + 669 + static struct qcom_icc_node qns_ecpri_gemnoc = { 670 + .name = "qns_ecpri_gemnoc", 671 + .id = QDU1000_SLAVE_ECPRI_GEMNOC, 672 + .channels = 2, 673 + .buswidth = 32, 674 + .num_links = 1, 675 + .links = { QDU1000_MASTER_GEMNOC_ECPRI_DMA }, 676 + }; 677 + 678 + static struct qcom_icc_node qns_gemnoc_gc = { 679 + .name = "qns_gemnoc_gc", 680 + .id = QDU1000_SLAVE_SNOC_GEM_NOC_GC, 681 + .channels = 1, 682 + .buswidth = 8, 683 + .num_links = 1, 684 + .links = { QDU1000_MASTER_SNOC_GC_MEM_NOC }, 685 + }; 686 + 687 + static struct qcom_icc_node qns_gemnoc_sf = { 688 + .name = "qns_gemnoc_sf", 689 + .id = QDU1000_SLAVE_SNOC_GEM_NOC_SF, 690 + .channels = 1, 691 + .buswidth = 16, 692 + .num_links = 1, 693 + .links = { QDU1000_MASTER_SNOC_SF_MEM_NOC }, 694 + }; 695 + 696 + static struct qcom_icc_node qns_modem = { 697 + .name = "qns_modem", 698 + .id = QDU1000_SLAVE_MODEM_OFFLINE, 699 + .channels = 1, 700 + .buswidth = 32, 701 + .num_links = 0, 702 + }; 703 + 704 + static struct qcom_icc_node qns_pcie_gemnoc = { 705 + .name = "qns_pcie_gemnoc", 706 + .id = QDU1000_SLAVE_ANOC_PCIE_GEM_NOC, 707 + .channels = 1, 708 + .buswidth = 64, 709 + .num_links = 1, 710 + .links = { QDU1000_MASTER_ANOC_PCIE_GEM_NOC }, 711 + }; 712 + 713 + static struct qcom_icc_node qxs_imem = { 714 + .name = "qxs_imem", 715 + .id = QDU1000_SLAVE_IMEM, 716 + .channels = 1, 717 + .buswidth = 8, 718 + .num_links = 0, 719 + }; 720 + 721 + static struct qcom_icc_node qxs_pimem = { 722 + .name = "qxs_pimem", 723 + .id = QDU1000_SLAVE_PIMEM, 724 + .channels = 1, 725 + .buswidth = 8, 726 + .num_links = 0, 727 + }; 728 + 729 + static struct qcom_icc_node srvc_system_noc = { 730 + .name = "srvc_system_noc", 731 + .id = QDU1000_SLAVE_SERVICE_SNOC, 732 + .channels = 1, 733 + .buswidth = 4, 734 + .num_links = 0, 735 + }; 736 + 737 + static struct qcom_icc_node xs_ethernet_ss = { 738 + .name = "xs_ethernet_ss", 739 + .id = QDU1000_SLAVE_ETHERNET_SS, 740 + .channels = 1, 741 + .buswidth = 32, 742 + .num_links = 0, 743 + }; 744 + 745 + static struct qcom_icc_node xs_pcie = { 746 + .name = "xs_pcie", 747 + .id = QDU1000_SLAVE_PCIE_0, 748 + .channels = 1, 749 + .buswidth = 64, 750 + .num_links = 0, 751 + }; 752 + 753 + static struct qcom_icc_node xs_qdss_stm = { 754 + .name = "xs_qdss_stm", 755 + .id = QDU1000_SLAVE_QDSS_STM, 756 + .channels = 1, 757 + .buswidth = 4, 758 + .num_links = 0, 759 + }; 760 + 761 + static struct qcom_icc_node xs_sys_tcu_cfg = { 762 + .name = "xs_sys_tcu_cfg", 763 + .id = QDU1000_SLAVE_TCU, 764 + .channels = 1, 765 + .buswidth = 8, 766 + .num_links = 0, 767 + }; 768 + 769 + static struct qcom_icc_bcm bcm_acv = { 770 + .name = "ACV", 771 + .num_nodes = 1, 772 + .nodes = { &ebi }, 773 + }; 774 + 775 + static struct qcom_icc_bcm bcm_ce0 = { 776 + .name = "CE0", 777 + .num_nodes = 1, 778 + .nodes = { &qxm_crypto }, 779 + }; 780 + 781 + static struct qcom_icc_bcm bcm_cn0 = { 782 + .name = "CN0", 783 + .num_nodes = 44, 784 + .nodes = { &qhm_qpic, &qhm_qspi, 785 + &qnm_gemnoc_cnoc, &qnm_gemnoc_modem_slave, 786 + &qnm_gemnoc_pcie, &xm_sdc, 787 + &xm_usb3, &qhs_ahb2phy0_south, 788 + &qhs_ahb2phy1_north, &qhs_ahb2phy2_east, 789 + &qhs_aoss, &qhs_clk_ctl, 790 + &qhs_cpr_cx, &qhs_cpr_mx, 791 + &qhs_crypto_cfg, &qhs_ecpri_cfg, 792 + &qhs_imem_cfg, &qhs_ipc_router, 793 + &qhs_mss_cfg, &qhs_pcie_cfg, 794 + &qhs_pdm, &qhs_pimem_cfg, 795 + &qhs_prng, &qhs_qdss_cfg, 796 + &qhs_qpic, &qhs_qspi, 797 + &qhs_qup0, &qhs_qup1, 798 + &qhs_sdc2, &qhs_smbus_cfg, 799 + &qhs_system_noc_cfg, &qhs_tcsr, 800 + &qhs_tlmm, &qhs_tme_cfg, 801 + &qhs_tsc_cfg, &qhs_usb3, 802 + &qhs_vsense_ctrl_cfg, &qns_ddrss_cfg, 803 + &qns_modem, &qxs_imem, 804 + &qxs_pimem, &xs_ethernet_ss, 805 + &xs_qdss_stm, &xs_sys_tcu_cfg 806 + }, 807 + }; 808 + 809 + static struct qcom_icc_bcm bcm_mc0 = { 810 + .name = "MC0", 811 + .num_nodes = 1, 812 + .nodes = { &ebi }, 813 + }; 814 + 815 + static struct qcom_icc_bcm bcm_qup0 = { 816 + .name = "QUP0", 817 + .num_nodes = 2, 818 + .nodes = { &qup0_core_slave, &qup1_core_slave }, 819 + }; 820 + 821 + static struct qcom_icc_bcm bcm_sh0 = { 822 + .name = "SH0", 823 + .num_nodes = 1, 824 + .nodes = { &qns_llcc }, 825 + }; 826 + 827 + static struct qcom_icc_bcm bcm_sh1 = { 828 + .name = "SH1", 829 + .num_nodes = 11, 830 + .nodes = { &alm_sys_tcu, &chm_apps, 831 + &qnm_ecpri_dma, &qnm_fec_2_gemnoc, 832 + &qnm_pcie, &qnm_snoc_gc, 833 + &qnm_snoc_sf, &qxm_mdsp, 834 + &qns_gem_noc_cnoc, &qns_modem_slave, 835 + &qns_pcie 836 + }, 837 + }; 838 + 839 + static struct qcom_icc_bcm bcm_sn0 = { 840 + .name = "SN0", 841 + .num_nodes = 1, 842 + .nodes = { &qns_gemnoc_sf }, 843 + }; 844 + 845 + static struct qcom_icc_bcm bcm_sn1 = { 846 + .name = "SN1", 847 + .num_nodes = 6, 848 + .nodes = { &qhm_gic, &qxm_pimem, 849 + &xm_gic, &xm_qdss_etr0, 850 + &xm_qdss_etr1, &qns_gemnoc_gc 851 + }, 852 + }; 853 + 854 + static struct qcom_icc_bcm bcm_sn2 = { 855 + .name = "SN2", 856 + .num_nodes = 5, 857 + .nodes = { &qnm_aggre_noc, &qxm_ecpri_gsi, 858 + &xm_ecpri_dma, &qns_anoc_snoc_gsi, 859 + &qns_ecpri_gemnoc 860 + }, 861 + }; 862 + 863 + static struct qcom_icc_bcm bcm_sn7 = { 864 + .name = "SN7", 865 + .num_nodes = 2, 866 + .nodes = { &qns_pcie_gemnoc, &xs_pcie }, 867 + }; 868 + 869 + static struct qcom_icc_bcm * const clk_virt_bcms[] = { 870 + &bcm_qup0, 871 + }; 872 + 873 + static struct qcom_icc_node * const clk_virt_nodes[] = { 874 + [MASTER_QUP_CORE_0] = &qup0_core_master, 875 + [MASTER_QUP_CORE_1] = &qup1_core_master, 876 + [SLAVE_QUP_CORE_0] = &qup0_core_slave, 877 + [SLAVE_QUP_CORE_1] = &qup1_core_slave, 878 + }; 879 + 880 + static const struct qcom_icc_desc qdu1000_clk_virt = { 881 + .nodes = clk_virt_nodes, 882 + .num_nodes = ARRAY_SIZE(clk_virt_nodes), 883 + .bcms = clk_virt_bcms, 884 + .num_bcms = ARRAY_SIZE(clk_virt_bcms), 885 + }; 886 + 887 + static struct qcom_icc_bcm * const gem_noc_bcms[] = { 888 + &bcm_sh0, 889 + &bcm_sh1, 890 + }; 891 + 892 + static struct qcom_icc_node * const gem_noc_nodes[] = { 893 + [MASTER_SYS_TCU] = &alm_sys_tcu, 894 + [MASTER_APPSS_PROC] = &chm_apps, 895 + [MASTER_GEMNOC_ECPRI_DMA] = &qnm_ecpri_dma, 896 + [MASTER_FEC_2_GEMNOC] = &qnm_fec_2_gemnoc, 897 + [MASTER_ANOC_PCIE_GEM_NOC] = &qnm_pcie, 898 + [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc, 899 + [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf, 900 + [MASTER_MSS_PROC] = &qxm_mdsp, 901 + [SLAVE_GEM_NOC_CNOC] = &qns_gem_noc_cnoc, 902 + [SLAVE_LLCC] = &qns_llcc, 903 + [SLAVE_GEMNOC_MODEM_CNOC] = &qns_modem_slave, 904 + [SLAVE_MEM_NOC_PCIE_SNOC] = &qns_pcie, 905 + }; 906 + 907 + static const struct qcom_icc_desc qdu1000_gem_noc = { 908 + .nodes = gem_noc_nodes, 909 + .num_nodes = ARRAY_SIZE(gem_noc_nodes), 910 + .bcms = gem_noc_bcms, 911 + .num_bcms = ARRAY_SIZE(gem_noc_bcms), 912 + }; 913 + 914 + static struct qcom_icc_bcm * const mc_virt_bcms[] = { 915 + &bcm_acv, 916 + &bcm_mc0, 917 + }; 918 + 919 + static struct qcom_icc_node * const mc_virt_nodes[] = { 920 + [MASTER_LLCC] = &llcc_mc, 921 + [SLAVE_EBI1] = &ebi, 922 + }; 923 + 924 + static const struct qcom_icc_desc qdu1000_mc_virt = { 925 + .nodes = mc_virt_nodes, 926 + .num_nodes = ARRAY_SIZE(mc_virt_nodes), 927 + .bcms = mc_virt_bcms, 928 + .num_bcms = ARRAY_SIZE(mc_virt_bcms), 929 + }; 930 + 931 + static struct qcom_icc_bcm * const system_noc_bcms[] = { 932 + &bcm_ce0, 933 + &bcm_cn0, 934 + &bcm_sn0, 935 + &bcm_sn1, 936 + &bcm_sn2, 937 + &bcm_sn7, 938 + }; 939 + 940 + static struct qcom_icc_node * const system_noc_nodes[] = { 941 + [MASTER_GIC_AHB] = &qhm_gic, 942 + [MASTER_QDSS_BAM] = &qhm_qdss_bam, 943 + [MASTER_QPIC] = &qhm_qpic, 944 + [MASTER_QSPI_0] = &qhm_qspi, 945 + [MASTER_QUP_0] = &qhm_qup0, 946 + [MASTER_QUP_1] = &qhm_qup1, 947 + [MASTER_SNOC_CFG] = &qhm_system_noc_cfg, 948 + [MASTER_ANOC_SNOC] = &qnm_aggre_noc, 949 + [MASTER_ANOC_GSI] = &qnm_aggre_noc_gsi, 950 + [MASTER_GEM_NOC_CNOC] = &qnm_gemnoc_cnoc, 951 + [MASTER_GEMNOC_MODEM_CNOC] = &qnm_gemnoc_modem_slave, 952 + [MASTER_GEM_NOC_PCIE_SNOC] = &qnm_gemnoc_pcie, 953 + [MASTER_CRYPTO] = &qxm_crypto, 954 + [MASTER_ECPRI_GSI] = &qxm_ecpri_gsi, 955 + [MASTER_PIMEM] = &qxm_pimem, 956 + [MASTER_SNOC_ECPRI_DMA] = &xm_ecpri_dma, 957 + [MASTER_GIC] = &xm_gic, 958 + [MASTER_PCIE] = &xm_pcie, 959 + [MASTER_QDSS_ETR] = &xm_qdss_etr0, 960 + [MASTER_QDSS_ETR_1] = &xm_qdss_etr1, 961 + [MASTER_SDCC_1] = &xm_sdc, 962 + [MASTER_USB3] = &xm_usb3, 963 + [SLAVE_AHB2PHY_SOUTH] = &qhs_ahb2phy0_south, 964 + [SLAVE_AHB2PHY_NORTH] = &qhs_ahb2phy1_north, 965 + [SLAVE_AHB2PHY_EAST] = &qhs_ahb2phy2_east, 966 + [SLAVE_AOSS] = &qhs_aoss, 967 + [SLAVE_CLK_CTL] = &qhs_clk_ctl, 968 + [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx, 969 + [SLAVE_RBCPR_MX_CFG] = &qhs_cpr_mx, 970 + [SLAVE_CRYPTO_0_CFG] = &qhs_crypto_cfg, 971 + [SLAVE_ECPRI_CFG] = &qhs_ecpri_cfg, 972 + [SLAVE_IMEM_CFG] = &qhs_imem_cfg, 973 + [SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router, 974 + [SLAVE_CNOC_MSS] = &qhs_mss_cfg, 975 + [SLAVE_PCIE_CFG] = &qhs_pcie_cfg, 976 + [SLAVE_PDM] = &qhs_pdm, 977 + [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg, 978 + [SLAVE_PRNG] = &qhs_prng, 979 + [SLAVE_QDSS_CFG] = &qhs_qdss_cfg, 980 + [SLAVE_QPIC] = &qhs_qpic, 981 + [SLAVE_QSPI_0] = &qhs_qspi, 982 + [SLAVE_QUP_0] = &qhs_qup0, 983 + [SLAVE_QUP_1] = &qhs_qup1, 984 + [SLAVE_SDCC_2] = &qhs_sdc2, 985 + [SLAVE_SMBUS_CFG] = &qhs_smbus_cfg, 986 + [SLAVE_SNOC_CFG] = &qhs_system_noc_cfg, 987 + [SLAVE_TCSR] = &qhs_tcsr, 988 + [SLAVE_TLMM] = &qhs_tlmm, 989 + [SLAVE_TME_CFG] = &qhs_tme_cfg, 990 + [SLAVE_TSC_CFG] = &qhs_tsc_cfg, 991 + [SLAVE_USB3_0] = &qhs_usb3, 992 + [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg, 993 + [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc, 994 + [SLAVE_ANOC_SNOC_GSI] = &qns_anoc_snoc_gsi, 995 + [SLAVE_DDRSS_CFG] = &qns_ddrss_cfg, 996 + [SLAVE_ECPRI_GEMNOC] = &qns_ecpri_gemnoc, 997 + [SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc, 998 + [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf, 999 + [SLAVE_MODEM_OFFLINE] = &qns_modem, 1000 + [SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_gemnoc, 1001 + [SLAVE_IMEM] = &qxs_imem, 1002 + [SLAVE_PIMEM] = &qxs_pimem, 1003 + [SLAVE_SERVICE_SNOC] = &srvc_system_noc, 1004 + [SLAVE_ETHERNET_SS] = &xs_ethernet_ss, 1005 + [SLAVE_PCIE_0] = &xs_pcie, 1006 + [SLAVE_QDSS_STM] = &xs_qdss_stm, 1007 + [SLAVE_TCU] = &xs_sys_tcu_cfg, 1008 + }; 1009 + 1010 + static const struct qcom_icc_desc qdu1000_system_noc = { 1011 + .nodes = system_noc_nodes, 1012 + .num_nodes = ARRAY_SIZE(system_noc_nodes), 1013 + .bcms = system_noc_bcms, 1014 + .num_bcms = ARRAY_SIZE(system_noc_bcms), 1015 + }; 1016 + 1017 + static int qnoc_probe(struct platform_device *pdev) 1018 + { 1019 + int ret; 1020 + 1021 + ret = qcom_icc_rpmh_probe(pdev); 1022 + if (ret) 1023 + dev_err(&pdev->dev, "failed to register ICC provider\n"); 1024 + 1025 + return ret; 1026 + } 1027 + 1028 + static const struct of_device_id qnoc_of_match[] = { 1029 + { .compatible = "qcom,qdu1000-clk-virt", 1030 + .data = &qdu1000_clk_virt 1031 + }, 1032 + { .compatible = "qcom,qdu1000-gem-noc", 1033 + .data = &qdu1000_gem_noc 1034 + }, 1035 + { .compatible = "qcom,qdu1000-mc-virt", 1036 + .data = &qdu1000_mc_virt 1037 + }, 1038 + { .compatible = "qcom,qdu1000-system-noc", 1039 + .data = &qdu1000_system_noc 1040 + }, 1041 + { } 1042 + }; 1043 + MODULE_DEVICE_TABLE(of, qnoc_of_match); 1044 + 1045 + static struct platform_driver qnoc_driver = { 1046 + .probe = qnoc_probe, 1047 + .remove = qcom_icc_rpmh_remove, 1048 + .driver = { 1049 + .name = "qnoc-qdu1000", 1050 + .of_match_table = qnoc_of_match, 1051 + }, 1052 + }; 1053 + 1054 + static int __init qnoc_driver_init(void) 1055 + { 1056 + return platform_driver_register(&qnoc_driver); 1057 + } 1058 + core_initcall(qnoc_driver_init); 1059 + 1060 + static void __exit qnoc_driver_exit(void) 1061 + { 1062 + platform_driver_unregister(&qnoc_driver); 1063 + } 1064 + module_exit(qnoc_driver_exit); 1065 + 1066 + MODULE_DESCRIPTION("QDU1000 NoC driver"); 1067 + MODULE_LICENSE("GPL");
+95
drivers/interconnect/qcom/qdu1000.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-only */ 2 + /* 3 + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. 4 + */ 5 + 6 + #ifndef __DRIVERS_INTERCONNECT_QCOM_QDU1000_H 7 + #define __DRIVERS_INTERCONNECT_QCOM_QDU1000_H 8 + 9 + #define QDU1000_MASTER_SYS_TCU 0 10 + #define QDU1000_MASTER_APPSS_PROC 1 11 + #define QDU1000_MASTER_LLCC 2 12 + #define QDU1000_MASTER_GIC_AHB 3 13 + #define QDU1000_MASTER_QDSS_BAM 4 14 + #define QDU1000_MASTER_QPIC 5 15 + #define QDU1000_MASTER_QSPI_0 6 16 + #define QDU1000_MASTER_QUP_0 7 17 + #define QDU1000_MASTER_QUP_1 8 18 + #define QDU1000_MASTER_SNOC_CFG 9 19 + #define QDU1000_MASTER_ANOC_SNOC 10 20 + #define QDU1000_MASTER_ANOC_GSI 11 21 + #define QDU1000_MASTER_GEMNOC_ECPRI_DMA 12 22 + #define QDU1000_MASTER_FEC_2_GEMNOC 13 23 + #define QDU1000_MASTER_GEM_NOC_CNOC 14 24 + #define QDU1000_MASTER_GEMNOC_MODEM_CNOC 15 25 + #define QDU1000_MASTER_GEM_NOC_PCIE_SNOC 16 26 + #define QDU1000_MASTER_ANOC_PCIE_GEM_NOC 17 27 + #define QDU1000_MASTER_SNOC_GC_MEM_NOC 18 28 + #define QDU1000_MASTER_SNOC_SF_MEM_NOC 19 29 + #define QDU1000_MASTER_QUP_CORE_0 20 30 + #define QDU1000_MASTER_QUP_CORE_1 21 31 + #define QDU1000_MASTER_CRYPTO 22 32 + #define QDU1000_MASTER_ECPRI_GSI 23 33 + #define QDU1000_MASTER_MSS_PROC 24 34 + #define QDU1000_MASTER_PIMEM 25 35 + #define QDU1000_MASTER_SNOC_ECPRI_DMA 26 36 + #define QDU1000_MASTER_GIC 27 37 + #define QDU1000_MASTER_PCIE 28 38 + #define QDU1000_MASTER_QDSS_ETR 29 39 + #define QDU1000_MASTER_QDSS_ETR_1 30 40 + #define QDU1000_MASTER_SDCC_1 31 41 + #define QDU1000_MASTER_USB3 32 42 + #define QDU1000_SLAVE_EBI1 512 43 + #define QDU1000_SLAVE_AHB2PHY_SOUTH 513 44 + #define QDU1000_SLAVE_AHB2PHY_NORTH 514 45 + #define QDU1000_SLAVE_AHB2PHY_EAST 515 46 + #define QDU1000_SLAVE_AOSS 516 47 + #define QDU1000_SLAVE_CLK_CTL 517 48 + #define QDU1000_SLAVE_RBCPR_CX_CFG 518 49 + #define QDU1000_SLAVE_RBCPR_MX_CFG 519 50 + #define QDU1000_SLAVE_CRYPTO_0_CFG 520 51 + #define QDU1000_SLAVE_ECPRI_CFG 521 52 + #define QDU1000_SLAVE_IMEM_CFG 522 53 + #define QDU1000_SLAVE_IPC_ROUTER_CFG 523 54 + #define QDU1000_SLAVE_CNOC_MSS 524 55 + #define QDU1000_SLAVE_PCIE_CFG 525 56 + #define QDU1000_SLAVE_PDM 526 57 + #define QDU1000_SLAVE_PIMEM_CFG 527 58 + #define QDU1000_SLAVE_PRNG 528 59 + #define QDU1000_SLAVE_QDSS_CFG 529 60 + #define QDU1000_SLAVE_QPIC 530 61 + #define QDU1000_SLAVE_QSPI_0 531 62 + #define QDU1000_SLAVE_QUP_0 532 63 + #define QDU1000_SLAVE_QUP_1 533 64 + #define QDU1000_SLAVE_SDCC_2 534 65 + #define QDU1000_SLAVE_SMBUS_CFG 535 66 + #define QDU1000_SLAVE_SNOC_CFG 536 67 + #define QDU1000_SLAVE_TCSR 537 68 + #define QDU1000_SLAVE_TLMM 538 69 + #define QDU1000_SLAVE_TME_CFG 539 70 + #define QDU1000_SLAVE_TSC_CFG 540 71 + #define QDU1000_SLAVE_USB3_0 541 72 + #define QDU1000_SLAVE_VSENSE_CTRL_CFG 542 73 + #define QDU1000_SLAVE_A1NOC_SNOC 543 74 + #define QDU1000_SLAVE_ANOC_SNOC_GSI 544 75 + #define QDU1000_SLAVE_DDRSS_CFG 545 76 + #define QDU1000_SLAVE_ECPRI_GEMNOC 546 77 + #define QDU1000_SLAVE_GEM_NOC_CNOC 547 78 + #define QDU1000_SLAVE_SNOC_GEM_NOC_GC 548 79 + #define QDU1000_SLAVE_SNOC_GEM_NOC_SF 549 80 + #define QDU1000_SLAVE_LLCC 550 81 + #define QDU1000_SLAVE_MODEM_OFFLINE 551 82 + #define QDU1000_SLAVE_GEMNOC_MODEM_CNOC 552 83 + #define QDU1000_SLAVE_MEM_NOC_PCIE_SNOC 553 84 + #define QDU1000_SLAVE_ANOC_PCIE_GEM_NOC 554 85 + #define QDU1000_SLAVE_QUP_CORE_0 555 86 + #define QDU1000_SLAVE_QUP_CORE_1 556 87 + #define QDU1000_SLAVE_IMEM 557 88 + #define QDU1000_SLAVE_PIMEM 558 89 + #define QDU1000_SLAVE_SERVICE_SNOC 559 90 + #define QDU1000_SLAVE_ETHERNET_SS 560 91 + #define QDU1000_SLAVE_PCIE_0 561 92 + #define QDU1000_SLAVE_QDSS_STM 562 93 + #define QDU1000_SLAVE_TCU 563 94 + 95 + #endif
+2541
drivers/interconnect/qcom/sa8775p.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-only 2 + /* 3 + * Copyright (c) 2021-2022, Qualcomm Innovation Center, Inc. All rights reserved. 4 + * Copyright (c) 2023, Linaro Limited 5 + */ 6 + 7 + #include <linux/device.h> 8 + #include <linux/interconnect.h> 9 + #include <linux/interconnect-provider.h> 10 + #include <linux/module.h> 11 + #include <linux/of_platform.h> 12 + #include <dt-bindings/interconnect/qcom,sa8775p-rpmh.h> 13 + 14 + #include "bcm-voter.h" 15 + #include "icc-rpmh.h" 16 + 17 + #define SA8775P_MASTER_GPU_TCU 0 18 + #define SA8775P_MASTER_PCIE_TCU 1 19 + #define SA8775P_MASTER_SYS_TCU 2 20 + #define SA8775P_MASTER_APPSS_PROC 3 21 + #define SA8775P_MASTER_LLCC 4 22 + #define SA8775P_MASTER_CNOC_LPASS_AG_NOC 5 23 + #define SA8775P_MASTER_GIC_AHB 6 24 + #define SA8775P_MASTER_CDSP_NOC_CFG 7 25 + #define SA8775P_MASTER_CDSPB_NOC_CFG 8 26 + #define SA8775P_MASTER_QDSS_BAM 9 27 + #define SA8775P_MASTER_QUP_0 10 28 + #define SA8775P_MASTER_QUP_1 11 29 + #define SA8775P_MASTER_QUP_2 12 30 + #define SA8775P_MASTER_A1NOC_SNOC 13 31 + #define SA8775P_MASTER_A2NOC_SNOC 14 32 + #define SA8775P_MASTER_CAMNOC_HF 15 33 + #define SA8775P_MASTER_CAMNOC_ICP 16 34 + #define SA8775P_MASTER_CAMNOC_SF 17 35 + #define SA8775P_MASTER_COMPUTE_NOC 18 36 + #define SA8775P_MASTER_COMPUTE_NOC_1 19 37 + #define SA8775P_MASTER_CNOC_A2NOC 20 38 + #define SA8775P_MASTER_CNOC_DC_NOC 21 39 + #define SA8775P_MASTER_GEM_NOC_CFG 22 40 + #define SA8775P_MASTER_GEM_NOC_CNOC 23 41 + #define SA8775P_MASTER_GEM_NOC_PCIE_SNOC 24 42 + #define SA8775P_MASTER_GPDSP_SAIL 25 43 + #define SA8775P_MASTER_GFX3D 26 44 + #define SA8775P_MASTER_LPASS_ANOC 27 45 + #define SA8775P_MASTER_MDP0 28 46 + #define SA8775P_MASTER_MDP1 29 47 + #define SA8775P_MASTER_MDP_CORE1_0 30 48 + #define SA8775P_MASTER_MDP_CORE1_1 31 49 + #define SA8775P_MASTER_MNOC_HF_MEM_NOC 32 50 + #define SA8775P_MASTER_CNOC_MNOC_HF_CFG 33 51 + #define SA8775P_MASTER_MNOC_SF_MEM_NOC 34 52 + #define SA8775P_MASTER_CNOC_MNOC_SF_CFG 35 53 + #define SA8775P_MASTER_ANOC_PCIE_GEM_NOC 36 54 + #define SA8775P_MASTER_SNOC_CFG 37 55 + #define SA8775P_MASTER_SNOC_GC_MEM_NOC 38 56 + #define SA8775P_MASTER_SNOC_SF_MEM_NOC 39 57 + #define SA8775P_MASTER_VIDEO_P0 40 58 + #define SA8775P_MASTER_VIDEO_P1 41 59 + #define SA8775P_MASTER_VIDEO_PROC 42 60 + #define SA8775P_MASTER_VIDEO_V_PROC 43 61 + #define SA8775P_MASTER_QUP_CORE_0 44 62 + #define SA8775P_MASTER_QUP_CORE_1 45 63 + #define SA8775P_MASTER_QUP_CORE_2 46 64 + #define SA8775P_MASTER_QUP_CORE_3 47 65 + #define SA8775P_MASTER_CRYPTO_CORE0 48 66 + #define SA8775P_MASTER_CRYPTO_CORE1 49 67 + #define SA8775P_MASTER_DSP0 50 68 + #define SA8775P_MASTER_DSP1 51 69 + #define SA8775P_MASTER_IPA 52 70 + #define SA8775P_MASTER_LPASS_PROC 53 71 + #define SA8775P_MASTER_CDSP_PROC 54 72 + #define SA8775P_MASTER_CDSP_PROC_B 55 73 + #define SA8775P_MASTER_PIMEM 56 74 + #define SA8775P_MASTER_QUP_3 57 75 + #define SA8775P_MASTER_EMAC 58 76 + #define SA8775P_MASTER_EMAC_1 59 77 + #define SA8775P_MASTER_GIC 60 78 + #define SA8775P_MASTER_PCIE_0 61 79 + #define SA8775P_MASTER_PCIE_1 62 80 + #define SA8775P_MASTER_QDSS_ETR_0 63 81 + #define SA8775P_MASTER_QDSS_ETR_1 64 82 + #define SA8775P_MASTER_SDC 65 83 + #define SA8775P_MASTER_UFS_CARD 66 84 + #define SA8775P_MASTER_UFS_MEM 67 85 + #define SA8775P_MASTER_USB2 68 86 + #define SA8775P_MASTER_USB3_0 69 87 + #define SA8775P_MASTER_USB3_1 70 88 + #define SA8775P_SLAVE_EBI1 512 89 + #define SA8775P_SLAVE_AHB2PHY_0 513 90 + #define SA8775P_SLAVE_AHB2PHY_1 514 91 + #define SA8775P_SLAVE_AHB2PHY_2 515 92 + #define SA8775P_SLAVE_AHB2PHY_3 516 93 + #define SA8775P_SLAVE_ANOC_THROTTLE_CFG 517 94 + #define SA8775P_SLAVE_AOSS 518 95 + #define SA8775P_SLAVE_APPSS 519 96 + #define SA8775P_SLAVE_BOOT_ROM 520 97 + #define SA8775P_SLAVE_CAMERA_CFG 521 98 + #define SA8775P_SLAVE_CAMERA_NRT_THROTTLE_CFG 522 99 + #define SA8775P_SLAVE_CAMERA_RT_THROTTLE_CFG 523 100 + #define SA8775P_SLAVE_CLK_CTL 524 101 + #define SA8775P_SLAVE_CDSP_CFG 525 102 + #define SA8775P_SLAVE_CDSP1_CFG 526 103 + #define SA8775P_SLAVE_RBCPR_CX_CFG 527 104 + #define SA8775P_SLAVE_RBCPR_MMCX_CFG 528 105 + #define SA8775P_SLAVE_RBCPR_MX_CFG 529 106 + #define SA8775P_SLAVE_CPR_NSPCX 530 107 + #define SA8775P_SLAVE_CRYPTO_0_CFG 531 108 + #define SA8775P_SLAVE_CX_RDPM 532 109 + #define SA8775P_SLAVE_DISPLAY_CFG 533 110 + #define SA8775P_SLAVE_DISPLAY_RT_THROTTLE_CFG 534 111 + #define SA8775P_SLAVE_DISPLAY1_CFG 535 112 + #define SA8775P_SLAVE_DISPLAY1_RT_THROTTLE_CFG 536 113 + #define SA8775P_SLAVE_EMAC_CFG 537 114 + #define SA8775P_SLAVE_EMAC1_CFG 538 115 + #define SA8775P_SLAVE_GP_DSP0_CFG 539 116 + #define SA8775P_SLAVE_GP_DSP1_CFG 540 117 + #define SA8775P_SLAVE_GPDSP0_THROTTLE_CFG 541 118 + #define SA8775P_SLAVE_GPDSP1_THROTTLE_CFG 542 119 + #define SA8775P_SLAVE_GPU_TCU_THROTTLE_CFG 543 120 + #define SA8775P_SLAVE_GFX3D_CFG 544 121 + #define SA8775P_SLAVE_HWKM 545 122 + #define SA8775P_SLAVE_IMEM_CFG 546 123 + #define SA8775P_SLAVE_IPA_CFG 547 124 + #define SA8775P_SLAVE_IPC_ROUTER_CFG 548 125 + #define SA8775P_SLAVE_LLCC_CFG 549 126 + #define SA8775P_SLAVE_LPASS 550 127 + #define SA8775P_SLAVE_LPASS_CORE_CFG 551 128 + #define SA8775P_SLAVE_LPASS_LPI_CFG 552 129 + #define SA8775P_SLAVE_LPASS_MPU_CFG 553 130 + #define SA8775P_SLAVE_LPASS_THROTTLE_CFG 554 131 + #define SA8775P_SLAVE_LPASS_TOP_CFG 555 132 + #define SA8775P_SLAVE_MX_RDPM 556 133 + #define SA8775P_SLAVE_MXC_RDPM 557 134 + #define SA8775P_SLAVE_PCIE_0_CFG 558 135 + #define SA8775P_SLAVE_PCIE_1_CFG 559 136 + #define SA8775P_SLAVE_PCIE_RSC_CFG 560 137 + #define SA8775P_SLAVE_PCIE_TCU_THROTTLE_CFG 561 138 + #define SA8775P_SLAVE_PCIE_THROTTLE_CFG 562 139 + #define SA8775P_SLAVE_PDM 563 140 + #define SA8775P_SLAVE_PIMEM_CFG 564 141 + #define SA8775P_SLAVE_PKA_WRAPPER_CFG 565 142 + #define SA8775P_SLAVE_QDSS_CFG 566 143 + #define SA8775P_SLAVE_QM_CFG 567 144 + #define SA8775P_SLAVE_QM_MPU_CFG 568 145 + #define SA8775P_SLAVE_QUP_0 569 146 + #define SA8775P_SLAVE_QUP_1 570 147 + #define SA8775P_SLAVE_QUP_2 571 148 + #define SA8775P_SLAVE_QUP_3 572 149 + #define SA8775P_SLAVE_SAIL_THROTTLE_CFG 573 150 + #define SA8775P_SLAVE_SDC1 574 151 + #define SA8775P_SLAVE_SECURITY 575 152 + #define SA8775P_SLAVE_SNOC_THROTTLE_CFG 576 153 + #define SA8775P_SLAVE_TCSR 577 154 + #define SA8775P_SLAVE_TLMM 578 155 + #define SA8775P_SLAVE_TSC_CFG 579 156 + #define SA8775P_SLAVE_UFS_CARD_CFG 580 157 + #define SA8775P_SLAVE_UFS_MEM_CFG 581 158 + #define SA8775P_SLAVE_USB2 582 159 + #define SA8775P_SLAVE_USB3_0 583 160 + #define SA8775P_SLAVE_USB3_1 584 161 + #define SA8775P_SLAVE_VENUS_CFG 585 162 + #define SA8775P_SLAVE_VENUS_CVP_THROTTLE_CFG 586 163 + #define SA8775P_SLAVE_VENUS_V_CPU_THROTTLE_CFG 587 164 + #define SA8775P_SLAVE_VENUS_VCODEC_THROTTLE_CFG 588 165 + #define SA8775P_SLAVE_A1NOC_SNOC 589 166 + #define SA8775P_SLAVE_A2NOC_SNOC 590 167 + #define SA8775P_SLAVE_DDRSS_CFG 591 168 + #define SA8775P_SLAVE_GEM_NOC_CNOC 592 169 + #define SA8775P_SLAVE_GEM_NOC_CFG 593 170 + #define SA8775P_SLAVE_SNOC_GEM_NOC_GC 594 171 + #define SA8775P_SLAVE_SNOC_GEM_NOC_SF 595 172 + #define SA8775P_SLAVE_GP_DSP_SAIL_NOC 596 173 + #define SA8775P_SLAVE_GPDSP_NOC_CFG 597 174 + #define SA8775P_SLAVE_HCP_A 598 175 + #define SA8775P_SLAVE_LLCC 599 176 + #define SA8775P_SLAVE_MNOC_HF_MEM_NOC 600 177 + #define SA8775P_SLAVE_MNOC_SF_MEM_NOC 601 178 + #define SA8775P_SLAVE_CNOC_MNOC_HF_CFG 602 179 + #define SA8775P_SLAVE_CNOC_MNOC_SF_CFG 603 180 + #define SA8775P_SLAVE_CDSP_MEM_NOC 604 181 + #define SA8775P_SLAVE_CDSPB_MEM_NOC 605 182 + #define SA8775P_SLAVE_HCP_B 606 183 + #define SA8775P_SLAVE_GEM_NOC_PCIE_CNOC 607 184 + #define SA8775P_SLAVE_PCIE_ANOC_CFG 608 185 + #define SA8775P_SLAVE_ANOC_PCIE_GEM_NOC 609 186 + #define SA8775P_SLAVE_SNOC_CFG 610 187 + #define SA8775P_SLAVE_LPASS_SNOC 611 188 + #define SA8775P_SLAVE_QUP_CORE_0 612 189 + #define SA8775P_SLAVE_QUP_CORE_1 613 190 + #define SA8775P_SLAVE_QUP_CORE_2 614 191 + #define SA8775P_SLAVE_QUP_CORE_3 615 192 + #define SA8775P_SLAVE_BOOT_IMEM 616 193 + #define SA8775P_SLAVE_IMEM 617 194 + #define SA8775P_SLAVE_PIMEM 618 195 + #define SA8775P_SLAVE_SERVICE_NSP_NOC 619 196 + #define SA8775P_SLAVE_SERVICE_NSPB_NOC 620 197 + #define SA8775P_SLAVE_SERVICE_GEM_NOC_1 621 198 + #define SA8775P_SLAVE_SERVICE_MNOC_HF 622 199 + #define SA8775P_SLAVE_SERVICE_MNOC_SF 623 200 + #define SA8775P_SLAVE_SERVICES_LPASS_AML_NOC 624 201 + #define SA8775P_SLAVE_SERVICE_LPASS_AG_NOC 625 202 + #define SA8775P_SLAVE_SERVICE_GEM_NOC_2 626 203 + #define SA8775P_SLAVE_SERVICE_SNOC 627 204 + #define SA8775P_SLAVE_SERVICE_GEM_NOC 628 205 + #define SA8775P_SLAVE_SERVICE_GEM_NOC2 629 206 + #define SA8775P_SLAVE_PCIE_0 630 207 + #define SA8775P_SLAVE_PCIE_1 631 208 + #define SA8775P_SLAVE_QDSS_STM 632 209 + #define SA8775P_SLAVE_TCU 633 210 + 211 + static struct qcom_icc_node qxm_qup3 = { 212 + .name = "qxm_qup3", 213 + .id = SA8775P_MASTER_QUP_3, 214 + .channels = 1, 215 + .buswidth = 8, 216 + .num_links = 1, 217 + .links = { SA8775P_SLAVE_A1NOC_SNOC }, 218 + }; 219 + 220 + static struct qcom_icc_node xm_emac_0 = { 221 + .name = "xm_emac_0", 222 + .id = SA8775P_MASTER_EMAC, 223 + .channels = 1, 224 + .buswidth = 8, 225 + .num_links = 1, 226 + .links = { SA8775P_SLAVE_A1NOC_SNOC }, 227 + }; 228 + 229 + static struct qcom_icc_node xm_emac_1 = { 230 + .name = "xm_emac_1", 231 + .id = SA8775P_MASTER_EMAC_1, 232 + .channels = 1, 233 + .buswidth = 8, 234 + .num_links = 1, 235 + .links = { SA8775P_SLAVE_A1NOC_SNOC }, 236 + }; 237 + 238 + static struct qcom_icc_node xm_sdc1 = { 239 + .name = "xm_sdc1", 240 + .id = SA8775P_MASTER_SDC, 241 + .channels = 1, 242 + .buswidth = 8, 243 + .num_links = 1, 244 + .links = { SA8775P_SLAVE_A1NOC_SNOC }, 245 + }; 246 + 247 + static struct qcom_icc_node xm_ufs_mem = { 248 + .name = "xm_ufs_mem", 249 + .id = SA8775P_MASTER_UFS_MEM, 250 + .channels = 1, 251 + .buswidth = 8, 252 + .num_links = 1, 253 + .links = { SA8775P_SLAVE_A1NOC_SNOC }, 254 + }; 255 + 256 + static struct qcom_icc_node xm_usb2_2 = { 257 + .name = "xm_usb2_2", 258 + .id = SA8775P_MASTER_USB2, 259 + .channels = 1, 260 + .buswidth = 8, 261 + .num_links = 1, 262 + .links = { SA8775P_SLAVE_A1NOC_SNOC }, 263 + }; 264 + 265 + static struct qcom_icc_node xm_usb3_0 = { 266 + .name = "xm_usb3_0", 267 + .id = SA8775P_MASTER_USB3_0, 268 + .channels = 1, 269 + .buswidth = 8, 270 + .num_links = 1, 271 + .links = { SA8775P_SLAVE_A1NOC_SNOC }, 272 + }; 273 + 274 + static struct qcom_icc_node xm_usb3_1 = { 275 + .name = "xm_usb3_1", 276 + .id = SA8775P_MASTER_USB3_1, 277 + .channels = 1, 278 + .buswidth = 8, 279 + .num_links = 1, 280 + .links = { SA8775P_SLAVE_A1NOC_SNOC }, 281 + }; 282 + 283 + static struct qcom_icc_node qhm_qdss_bam = { 284 + .name = "qhm_qdss_bam", 285 + .id = SA8775P_MASTER_QDSS_BAM, 286 + .channels = 1, 287 + .buswidth = 4, 288 + .num_links = 1, 289 + .links = { SA8775P_SLAVE_A2NOC_SNOC }, 290 + }; 291 + 292 + static struct qcom_icc_node qhm_qup0 = { 293 + .name = "qhm_qup0", 294 + .id = SA8775P_MASTER_QUP_0, 295 + .channels = 1, 296 + .buswidth = 4, 297 + .num_links = 1, 298 + .links = { SA8775P_SLAVE_A2NOC_SNOC }, 299 + }; 300 + 301 + static struct qcom_icc_node qhm_qup1 = { 302 + .name = "qhm_qup1", 303 + .id = SA8775P_MASTER_QUP_1, 304 + .channels = 1, 305 + .buswidth = 4, 306 + .num_links = 1, 307 + .links = { SA8775P_SLAVE_A2NOC_SNOC }, 308 + }; 309 + 310 + static struct qcom_icc_node qhm_qup2 = { 311 + .name = "qhm_qup2", 312 + .id = SA8775P_MASTER_QUP_2, 313 + .channels = 1, 314 + .buswidth = 4, 315 + .num_links = 1, 316 + .links = { SA8775P_SLAVE_A2NOC_SNOC }, 317 + }; 318 + 319 + static struct qcom_icc_node qnm_cnoc_datapath = { 320 + .name = "qnm_cnoc_datapath", 321 + .id = SA8775P_MASTER_CNOC_A2NOC, 322 + .channels = 1, 323 + .buswidth = 8, 324 + .num_links = 1, 325 + .links = { SA8775P_SLAVE_A2NOC_SNOC }, 326 + }; 327 + 328 + static struct qcom_icc_node qxm_crypto_0 = { 329 + .name = "qxm_crypto_0", 330 + .id = SA8775P_MASTER_CRYPTO_CORE0, 331 + .channels = 1, 332 + .buswidth = 8, 333 + .num_links = 1, 334 + .links = { SA8775P_SLAVE_A2NOC_SNOC }, 335 + }; 336 + 337 + static struct qcom_icc_node qxm_crypto_1 = { 338 + .name = "qxm_crypto_1", 339 + .id = SA8775P_MASTER_CRYPTO_CORE1, 340 + .channels = 1, 341 + .buswidth = 8, 342 + .num_links = 1, 343 + .links = { SA8775P_SLAVE_A2NOC_SNOC }, 344 + }; 345 + 346 + static struct qcom_icc_node qxm_ipa = { 347 + .name = "qxm_ipa", 348 + .id = SA8775P_MASTER_IPA, 349 + .channels = 1, 350 + .buswidth = 8, 351 + .num_links = 1, 352 + .links = { SA8775P_SLAVE_A2NOC_SNOC }, 353 + }; 354 + 355 + static struct qcom_icc_node xm_qdss_etr_0 = { 356 + .name = "xm_qdss_etr_0", 357 + .id = SA8775P_MASTER_QDSS_ETR_0, 358 + .channels = 1, 359 + .buswidth = 8, 360 + .num_links = 1, 361 + .links = { SA8775P_SLAVE_A2NOC_SNOC }, 362 + }; 363 + 364 + static struct qcom_icc_node xm_qdss_etr_1 = { 365 + .name = "xm_qdss_etr_1", 366 + .id = SA8775P_MASTER_QDSS_ETR_1, 367 + .channels = 1, 368 + .buswidth = 8, 369 + .num_links = 1, 370 + .links = { SA8775P_SLAVE_A2NOC_SNOC }, 371 + }; 372 + 373 + static struct qcom_icc_node xm_ufs_card = { 374 + .name = "xm_ufs_card", 375 + .id = SA8775P_MASTER_UFS_CARD, 376 + .channels = 1, 377 + .buswidth = 8, 378 + .num_links = 1, 379 + .links = { SA8775P_SLAVE_A2NOC_SNOC }, 380 + }; 381 + 382 + static struct qcom_icc_node qup0_core_master = { 383 + .name = "qup0_core_master", 384 + .id = SA8775P_MASTER_QUP_CORE_0, 385 + .channels = 1, 386 + .buswidth = 4, 387 + .num_links = 1, 388 + .links = { SA8775P_SLAVE_QUP_CORE_0 }, 389 + }; 390 + 391 + static struct qcom_icc_node qup1_core_master = { 392 + .name = "qup1_core_master", 393 + .id = SA8775P_MASTER_QUP_CORE_1, 394 + .channels = 1, 395 + .buswidth = 4, 396 + .num_links = 1, 397 + .links = { SA8775P_SLAVE_QUP_CORE_1 }, 398 + }; 399 + 400 + static struct qcom_icc_node qup2_core_master = { 401 + .name = "qup2_core_master", 402 + .id = SA8775P_MASTER_QUP_CORE_2, 403 + .channels = 1, 404 + .buswidth = 4, 405 + .num_links = 1, 406 + .links = { SA8775P_SLAVE_QUP_CORE_2 }, 407 + }; 408 + 409 + static struct qcom_icc_node qup3_core_master = { 410 + .name = "qup3_core_master", 411 + .id = SA8775P_MASTER_QUP_CORE_3, 412 + .channels = 1, 413 + .buswidth = 4, 414 + .num_links = 1, 415 + .links = { SA8775P_SLAVE_QUP_CORE_3 }, 416 + }; 417 + 418 + static struct qcom_icc_node qnm_gemnoc_cnoc = { 419 + .name = "qnm_gemnoc_cnoc", 420 + .id = SA8775P_MASTER_GEM_NOC_CNOC, 421 + .channels = 1, 422 + .buswidth = 16, 423 + .num_links = 82, 424 + .links = { SA8775P_SLAVE_AHB2PHY_0, 425 + SA8775P_SLAVE_AHB2PHY_1, 426 + SA8775P_SLAVE_AHB2PHY_2, 427 + SA8775P_SLAVE_AHB2PHY_3, 428 + SA8775P_SLAVE_ANOC_THROTTLE_CFG, 429 + SA8775P_SLAVE_AOSS, 430 + SA8775P_SLAVE_APPSS, 431 + SA8775P_SLAVE_BOOT_ROM, 432 + SA8775P_SLAVE_CAMERA_CFG, 433 + SA8775P_SLAVE_CAMERA_NRT_THROTTLE_CFG, 434 + SA8775P_SLAVE_CAMERA_RT_THROTTLE_CFG, 435 + SA8775P_SLAVE_CLK_CTL, 436 + SA8775P_SLAVE_CDSP_CFG, 437 + SA8775P_SLAVE_CDSP1_CFG, 438 + SA8775P_SLAVE_RBCPR_CX_CFG, 439 + SA8775P_SLAVE_RBCPR_MMCX_CFG, 440 + SA8775P_SLAVE_RBCPR_MX_CFG, 441 + SA8775P_SLAVE_CPR_NSPCX, 442 + SA8775P_SLAVE_CRYPTO_0_CFG, 443 + SA8775P_SLAVE_CX_RDPM, 444 + SA8775P_SLAVE_DISPLAY_CFG, 445 + SA8775P_SLAVE_DISPLAY_RT_THROTTLE_CFG, 446 + SA8775P_SLAVE_DISPLAY1_CFG, 447 + SA8775P_SLAVE_DISPLAY1_RT_THROTTLE_CFG, 448 + SA8775P_SLAVE_EMAC_CFG, 449 + SA8775P_SLAVE_EMAC1_CFG, 450 + SA8775P_SLAVE_GP_DSP0_CFG, 451 + SA8775P_SLAVE_GP_DSP1_CFG, 452 + SA8775P_SLAVE_GPDSP0_THROTTLE_CFG, 453 + SA8775P_SLAVE_GPDSP1_THROTTLE_CFG, 454 + SA8775P_SLAVE_GPU_TCU_THROTTLE_CFG, 455 + SA8775P_SLAVE_GFX3D_CFG, 456 + SA8775P_SLAVE_HWKM, 457 + SA8775P_SLAVE_IMEM_CFG, 458 + SA8775P_SLAVE_IPA_CFG, 459 + SA8775P_SLAVE_IPC_ROUTER_CFG, 460 + SA8775P_SLAVE_LPASS, 461 + SA8775P_SLAVE_LPASS_THROTTLE_CFG, 462 + SA8775P_SLAVE_MX_RDPM, 463 + SA8775P_SLAVE_MXC_RDPM, 464 + SA8775P_SLAVE_PCIE_0_CFG, 465 + SA8775P_SLAVE_PCIE_1_CFG, 466 + SA8775P_SLAVE_PCIE_RSC_CFG, 467 + SA8775P_SLAVE_PCIE_TCU_THROTTLE_CFG, 468 + SA8775P_SLAVE_PCIE_THROTTLE_CFG, 469 + SA8775P_SLAVE_PDM, 470 + SA8775P_SLAVE_PIMEM_CFG, 471 + SA8775P_SLAVE_PKA_WRAPPER_CFG, 472 + SA8775P_SLAVE_QDSS_CFG, 473 + SA8775P_SLAVE_QM_CFG, 474 + SA8775P_SLAVE_QM_MPU_CFG, 475 + SA8775P_SLAVE_QUP_0, 476 + SA8775P_SLAVE_QUP_1, 477 + SA8775P_SLAVE_QUP_2, 478 + SA8775P_SLAVE_QUP_3, 479 + SA8775P_SLAVE_SAIL_THROTTLE_CFG, 480 + SA8775P_SLAVE_SDC1, 481 + SA8775P_SLAVE_SECURITY, 482 + SA8775P_SLAVE_SNOC_THROTTLE_CFG, 483 + SA8775P_SLAVE_TCSR, 484 + SA8775P_SLAVE_TLMM, 485 + SA8775P_SLAVE_TSC_CFG, 486 + SA8775P_SLAVE_UFS_CARD_CFG, 487 + SA8775P_SLAVE_UFS_MEM_CFG, 488 + SA8775P_SLAVE_USB2, 489 + SA8775P_SLAVE_USB3_0, 490 + SA8775P_SLAVE_USB3_1, 491 + SA8775P_SLAVE_VENUS_CFG, 492 + SA8775P_SLAVE_VENUS_CVP_THROTTLE_CFG, 493 + SA8775P_SLAVE_VENUS_V_CPU_THROTTLE_CFG, 494 + SA8775P_SLAVE_VENUS_VCODEC_THROTTLE_CFG, 495 + SA8775P_SLAVE_DDRSS_CFG, 496 + SA8775P_SLAVE_GPDSP_NOC_CFG, 497 + SA8775P_SLAVE_CNOC_MNOC_HF_CFG, 498 + SA8775P_SLAVE_CNOC_MNOC_SF_CFG, 499 + SA8775P_SLAVE_PCIE_ANOC_CFG, 500 + SA8775P_SLAVE_SNOC_CFG, 501 + SA8775P_SLAVE_BOOT_IMEM, 502 + SA8775P_SLAVE_IMEM, 503 + SA8775P_SLAVE_PIMEM, 504 + SA8775P_SLAVE_QDSS_STM, 505 + SA8775P_SLAVE_TCU 506 + }, 507 + }; 508 + 509 + static struct qcom_icc_node qnm_gemnoc_pcie = { 510 + .name = "qnm_gemnoc_pcie", 511 + .id = SA8775P_MASTER_GEM_NOC_PCIE_SNOC, 512 + .channels = 1, 513 + .buswidth = 16, 514 + .num_links = 2, 515 + .links = { SA8775P_SLAVE_PCIE_0, 516 + SA8775P_SLAVE_PCIE_1 517 + }, 518 + }; 519 + 520 + static struct qcom_icc_node qnm_cnoc_dc_noc = { 521 + .name = "qnm_cnoc_dc_noc", 522 + .id = SA8775P_MASTER_CNOC_DC_NOC, 523 + .channels = 1, 524 + .buswidth = 4, 525 + .num_links = 2, 526 + .links = { SA8775P_SLAVE_LLCC_CFG, 527 + SA8775P_SLAVE_GEM_NOC_CFG 528 + }, 529 + }; 530 + 531 + static struct qcom_icc_node alm_gpu_tcu = { 532 + .name = "alm_gpu_tcu", 533 + .id = SA8775P_MASTER_GPU_TCU, 534 + .channels = 1, 535 + .buswidth = 8, 536 + .num_links = 2, 537 + .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 538 + SA8775P_SLAVE_LLCC 539 + }, 540 + }; 541 + 542 + static struct qcom_icc_node alm_pcie_tcu = { 543 + .name = "alm_pcie_tcu", 544 + .id = SA8775P_MASTER_PCIE_TCU, 545 + .channels = 1, 546 + .buswidth = 8, 547 + .num_links = 2, 548 + .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 549 + SA8775P_SLAVE_LLCC 550 + }, 551 + }; 552 + 553 + static struct qcom_icc_node alm_sys_tcu = { 554 + .name = "alm_sys_tcu", 555 + .id = SA8775P_MASTER_SYS_TCU, 556 + .channels = 1, 557 + .buswidth = 8, 558 + .num_links = 2, 559 + .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 560 + SA8775P_SLAVE_LLCC 561 + }, 562 + }; 563 + 564 + static struct qcom_icc_node chm_apps = { 565 + .name = "chm_apps", 566 + .id = SA8775P_MASTER_APPSS_PROC, 567 + .channels = 4, 568 + .buswidth = 32, 569 + .num_links = 3, 570 + .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 571 + SA8775P_SLAVE_LLCC, 572 + SA8775P_SLAVE_GEM_NOC_PCIE_CNOC 573 + }, 574 + }; 575 + 576 + static struct qcom_icc_node qnm_cmpnoc0 = { 577 + .name = "qnm_cmpnoc0", 578 + .id = SA8775P_MASTER_COMPUTE_NOC, 579 + .channels = 2, 580 + .buswidth = 32, 581 + .num_links = 2, 582 + .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 583 + SA8775P_SLAVE_LLCC 584 + }, 585 + }; 586 + 587 + static struct qcom_icc_node qnm_cmpnoc1 = { 588 + .name = "qnm_cmpnoc1", 589 + .id = SA8775P_MASTER_COMPUTE_NOC_1, 590 + .channels = 2, 591 + .buswidth = 32, 592 + .num_links = 2, 593 + .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 594 + SA8775P_SLAVE_LLCC 595 + }, 596 + }; 597 + 598 + static struct qcom_icc_node qnm_gemnoc_cfg = { 599 + .name = "qnm_gemnoc_cfg", 600 + .id = SA8775P_MASTER_GEM_NOC_CFG, 601 + .channels = 1, 602 + .buswidth = 4, 603 + .num_links = 4, 604 + .links = { SA8775P_SLAVE_SERVICE_GEM_NOC_1, 605 + SA8775P_SLAVE_SERVICE_GEM_NOC_2, 606 + SA8775P_SLAVE_SERVICE_GEM_NOC, 607 + SA8775P_SLAVE_SERVICE_GEM_NOC2 608 + }, 609 + }; 610 + 611 + static struct qcom_icc_node qnm_gpdsp_sail = { 612 + .name = "qnm_gpdsp_sail", 613 + .id = SA8775P_MASTER_GPDSP_SAIL, 614 + .channels = 1, 615 + .buswidth = 16, 616 + .num_links = 2, 617 + .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 618 + SA8775P_SLAVE_LLCC 619 + }, 620 + }; 621 + 622 + static struct qcom_icc_node qnm_gpu = { 623 + .name = "qnm_gpu", 624 + .id = SA8775P_MASTER_GFX3D, 625 + .channels = 2, 626 + .buswidth = 32, 627 + .num_links = 2, 628 + .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 629 + SA8775P_SLAVE_LLCC 630 + }, 631 + }; 632 + 633 + static struct qcom_icc_node qnm_mnoc_hf = { 634 + .name = "qnm_mnoc_hf", 635 + .id = SA8775P_MASTER_MNOC_HF_MEM_NOC, 636 + .channels = 2, 637 + .buswidth = 32, 638 + .num_links = 2, 639 + .links = { SA8775P_SLAVE_LLCC, 640 + SA8775P_SLAVE_GEM_NOC_PCIE_CNOC 641 + }, 642 + }; 643 + 644 + static struct qcom_icc_node qnm_mnoc_sf = { 645 + .name = "qnm_mnoc_sf", 646 + .id = SA8775P_MASTER_MNOC_SF_MEM_NOC, 647 + .channels = 2, 648 + .buswidth = 32, 649 + .num_links = 3, 650 + .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 651 + SA8775P_SLAVE_LLCC, 652 + SA8775P_SLAVE_GEM_NOC_PCIE_CNOC 653 + }, 654 + }; 655 + 656 + static struct qcom_icc_node qnm_pcie = { 657 + .name = "qnm_pcie", 658 + .id = SA8775P_MASTER_ANOC_PCIE_GEM_NOC, 659 + .channels = 1, 660 + .buswidth = 32, 661 + .num_links = 2, 662 + .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 663 + SA8775P_SLAVE_LLCC 664 + }, 665 + }; 666 + 667 + static struct qcom_icc_node qnm_snoc_gc = { 668 + .name = "qnm_snoc_gc", 669 + .id = SA8775P_MASTER_SNOC_GC_MEM_NOC, 670 + .channels = 1, 671 + .buswidth = 8, 672 + .num_links = 1, 673 + .links = { SA8775P_SLAVE_LLCC }, 674 + }; 675 + 676 + static struct qcom_icc_node qnm_snoc_sf = { 677 + .name = "qnm_snoc_sf", 678 + .id = SA8775P_MASTER_SNOC_SF_MEM_NOC, 679 + .channels = 1, 680 + .buswidth = 16, 681 + .num_links = 3, 682 + .links = { SA8775P_SLAVE_GEM_NOC_CNOC, 683 + SA8775P_SLAVE_LLCC, 684 + SA8775P_SLAVE_GEM_NOC_PCIE_CNOC }, 685 + }; 686 + 687 + static struct qcom_icc_node qxm_dsp0 = { 688 + .name = "qxm_dsp0", 689 + .id = SA8775P_MASTER_DSP0, 690 + .channels = 1, 691 + .buswidth = 16, 692 + .num_links = 1, 693 + .links = { SA8775P_SLAVE_GP_DSP_SAIL_NOC }, 694 + }; 695 + 696 + static struct qcom_icc_node qxm_dsp1 = { 697 + .name = "qxm_dsp1", 698 + .id = SA8775P_MASTER_DSP1, 699 + .channels = 1, 700 + .buswidth = 16, 701 + .num_links = 1, 702 + .links = { SA8775P_SLAVE_GP_DSP_SAIL_NOC }, 703 + }; 704 + 705 + static struct qcom_icc_node qhm_config_noc = { 706 + .name = "qhm_config_noc", 707 + .id = SA8775P_MASTER_CNOC_LPASS_AG_NOC, 708 + .channels = 1, 709 + .buswidth = 4, 710 + .num_links = 6, 711 + .links = { SA8775P_SLAVE_LPASS_CORE_CFG, 712 + SA8775P_SLAVE_LPASS_LPI_CFG, 713 + SA8775P_SLAVE_LPASS_MPU_CFG, 714 + SA8775P_SLAVE_LPASS_TOP_CFG, 715 + SA8775P_SLAVE_SERVICES_LPASS_AML_NOC, 716 + SA8775P_SLAVE_SERVICE_LPASS_AG_NOC 717 + }, 718 + }; 719 + 720 + static struct qcom_icc_node qxm_lpass_dsp = { 721 + .name = "qxm_lpass_dsp", 722 + .id = SA8775P_MASTER_LPASS_PROC, 723 + .channels = 1, 724 + .buswidth = 8, 725 + .num_links = 4, 726 + .links = { SA8775P_SLAVE_LPASS_TOP_CFG, 727 + SA8775P_SLAVE_LPASS_SNOC, 728 + SA8775P_SLAVE_SERVICES_LPASS_AML_NOC, 729 + SA8775P_SLAVE_SERVICE_LPASS_AG_NOC 730 + }, 731 + }; 732 + 733 + static struct qcom_icc_node llcc_mc = { 734 + .name = "llcc_mc", 735 + .id = SA8775P_MASTER_LLCC, 736 + .channels = 8, 737 + .buswidth = 4, 738 + .num_links = 1, 739 + .links = { SA8775P_SLAVE_EBI1 }, 740 + }; 741 + 742 + static struct qcom_icc_node qnm_camnoc_hf = { 743 + .name = "qnm_camnoc_hf", 744 + .id = SA8775P_MASTER_CAMNOC_HF, 745 + .channels = 1, 746 + .buswidth = 32, 747 + .num_links = 1, 748 + .links = { SA8775P_SLAVE_MNOC_HF_MEM_NOC }, 749 + }; 750 + 751 + static struct qcom_icc_node qnm_camnoc_icp = { 752 + .name = "qnm_camnoc_icp", 753 + .id = SA8775P_MASTER_CAMNOC_ICP, 754 + .channels = 1, 755 + .buswidth = 8, 756 + .num_links = 1, 757 + .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 758 + }; 759 + 760 + static struct qcom_icc_node qnm_camnoc_sf = { 761 + .name = "qnm_camnoc_sf", 762 + .id = SA8775P_MASTER_CAMNOC_SF, 763 + .channels = 1, 764 + .buswidth = 32, 765 + .num_links = 1, 766 + .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 767 + }; 768 + 769 + static struct qcom_icc_node qnm_mdp0_0 = { 770 + .name = "qnm_mdp0_0", 771 + .id = SA8775P_MASTER_MDP0, 772 + .channels = 1, 773 + .buswidth = 32, 774 + .num_links = 1, 775 + .links = { SA8775P_SLAVE_MNOC_HF_MEM_NOC }, 776 + }; 777 + 778 + static struct qcom_icc_node qnm_mdp0_1 = { 779 + .name = "qnm_mdp0_1", 780 + .id = SA8775P_MASTER_MDP1, 781 + .channels = 1, 782 + .buswidth = 32, 783 + .num_links = 1, 784 + .links = { SA8775P_SLAVE_MNOC_HF_MEM_NOC }, 785 + }; 786 + 787 + static struct qcom_icc_node qnm_mdp1_0 = { 788 + .name = "qnm_mdp1_0", 789 + .id = SA8775P_MASTER_MDP_CORE1_0, 790 + .channels = 1, 791 + .buswidth = 32, 792 + .num_links = 1, 793 + .links = { SA8775P_SLAVE_MNOC_HF_MEM_NOC }, 794 + }; 795 + 796 + static struct qcom_icc_node qnm_mdp1_1 = { 797 + .name = "qnm_mdp1_1", 798 + .id = SA8775P_MASTER_MDP_CORE1_1, 799 + .channels = 1, 800 + .buswidth = 32, 801 + .num_links = 1, 802 + .links = { SA8775P_SLAVE_MNOC_HF_MEM_NOC }, 803 + }; 804 + 805 + static struct qcom_icc_node qnm_mnoc_hf_cfg = { 806 + .name = "qnm_mnoc_hf_cfg", 807 + .id = SA8775P_MASTER_CNOC_MNOC_HF_CFG, 808 + .channels = 1, 809 + .buswidth = 4, 810 + .num_links = 1, 811 + .links = { SA8775P_SLAVE_SERVICE_MNOC_HF }, 812 + }; 813 + 814 + static struct qcom_icc_node qnm_mnoc_sf_cfg = { 815 + .name = "qnm_mnoc_sf_cfg", 816 + .id = SA8775P_MASTER_CNOC_MNOC_SF_CFG, 817 + .channels = 1, 818 + .buswidth = 4, 819 + .num_links = 1, 820 + .links = { SA8775P_SLAVE_SERVICE_MNOC_SF }, 821 + }; 822 + 823 + static struct qcom_icc_node qnm_video0 = { 824 + .name = "qnm_video0", 825 + .id = SA8775P_MASTER_VIDEO_P0, 826 + .channels = 1, 827 + .buswidth = 32, 828 + .num_links = 1, 829 + .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 830 + }; 831 + 832 + static struct qcom_icc_node qnm_video1 = { 833 + .name = "qnm_video1", 834 + .id = SA8775P_MASTER_VIDEO_P1, 835 + .channels = 1, 836 + .buswidth = 32, 837 + .num_links = 1, 838 + .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 839 + }; 840 + 841 + static struct qcom_icc_node qnm_video_cvp = { 842 + .name = "qnm_video_cvp", 843 + .id = SA8775P_MASTER_VIDEO_PROC, 844 + .channels = 1, 845 + .buswidth = 32, 846 + .num_links = 1, 847 + .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 848 + }; 849 + 850 + static struct qcom_icc_node qnm_video_v_cpu = { 851 + .name = "qnm_video_v_cpu", 852 + .id = SA8775P_MASTER_VIDEO_V_PROC, 853 + .channels = 1, 854 + .buswidth = 8, 855 + .num_links = 1, 856 + .links = { SA8775P_SLAVE_MNOC_SF_MEM_NOC }, 857 + }; 858 + 859 + static struct qcom_icc_node qhm_nsp_noc_config = { 860 + .name = "qhm_nsp_noc_config", 861 + .id = SA8775P_MASTER_CDSP_NOC_CFG, 862 + .channels = 1, 863 + .buswidth = 4, 864 + .num_links = 1, 865 + .links = { SA8775P_SLAVE_SERVICE_NSP_NOC }, 866 + }; 867 + 868 + static struct qcom_icc_node qxm_nsp = { 869 + .name = "qxm_nsp", 870 + .id = SA8775P_MASTER_CDSP_PROC, 871 + .channels = 2, 872 + .buswidth = 32, 873 + .num_links = 2, 874 + .links = { SA8775P_SLAVE_HCP_A, SLAVE_CDSP_MEM_NOC }, 875 + }; 876 + 877 + static struct qcom_icc_node qhm_nspb_noc_config = { 878 + .name = "qhm_nspb_noc_config", 879 + .id = SA8775P_MASTER_CDSPB_NOC_CFG, 880 + .channels = 1, 881 + .buswidth = 4, 882 + .num_links = 1, 883 + .links = { SA8775P_SLAVE_SERVICE_NSPB_NOC }, 884 + }; 885 + 886 + static struct qcom_icc_node qxm_nspb = { 887 + .name = "qxm_nspb", 888 + .id = SA8775P_MASTER_CDSP_PROC_B, 889 + .channels = 2, 890 + .buswidth = 32, 891 + .num_links = 2, 892 + .links = { SA8775P_SLAVE_HCP_B, SLAVE_CDSPB_MEM_NOC }, 893 + }; 894 + 895 + static struct qcom_icc_node xm_pcie3_0 = { 896 + .name = "xm_pcie3_0", 897 + .id = SA8775P_MASTER_PCIE_0, 898 + .channels = 1, 899 + .buswidth = 16, 900 + .num_links = 1, 901 + .links = { SA8775P_SLAVE_ANOC_PCIE_GEM_NOC }, 902 + }; 903 + 904 + static struct qcom_icc_node xm_pcie3_1 = { 905 + .name = "xm_pcie3_1", 906 + .id = SA8775P_MASTER_PCIE_1, 907 + .channels = 1, 908 + .buswidth = 32, 909 + .num_links = 1, 910 + .links = { SA8775P_SLAVE_ANOC_PCIE_GEM_NOC }, 911 + }; 912 + 913 + static struct qcom_icc_node qhm_gic = { 914 + .name = "qhm_gic", 915 + .id = SA8775P_MASTER_GIC_AHB, 916 + .channels = 1, 917 + .buswidth = 4, 918 + .num_links = 1, 919 + .links = { SA8775P_SLAVE_SNOC_GEM_NOC_SF }, 920 + }; 921 + 922 + static struct qcom_icc_node qnm_aggre1_noc = { 923 + .name = "qnm_aggre1_noc", 924 + .id = SA8775P_MASTER_A1NOC_SNOC, 925 + .channels = 1, 926 + .buswidth = 32, 927 + .num_links = 1, 928 + .links = { SA8775P_SLAVE_SNOC_GEM_NOC_SF }, 929 + }; 930 + 931 + static struct qcom_icc_node qnm_aggre2_noc = { 932 + .name = "qnm_aggre2_noc", 933 + .id = SA8775P_MASTER_A2NOC_SNOC, 934 + .channels = 1, 935 + .buswidth = 16, 936 + .num_links = 1, 937 + .links = { SA8775P_SLAVE_SNOC_GEM_NOC_SF }, 938 + }; 939 + 940 + static struct qcom_icc_node qnm_lpass_noc = { 941 + .name = "qnm_lpass_noc", 942 + .id = SA8775P_MASTER_LPASS_ANOC, 943 + .channels = 1, 944 + .buswidth = 16, 945 + .num_links = 1, 946 + .links = { SA8775P_SLAVE_SNOC_GEM_NOC_SF }, 947 + }; 948 + 949 + static struct qcom_icc_node qnm_snoc_cfg = { 950 + .name = "qnm_snoc_cfg", 951 + .id = SA8775P_MASTER_SNOC_CFG, 952 + .channels = 1, 953 + .buswidth = 4, 954 + .num_links = 1, 955 + .links = { SA8775P_SLAVE_SERVICE_SNOC }, 956 + }; 957 + 958 + static struct qcom_icc_node qxm_pimem = { 959 + .name = "qxm_pimem", 960 + .id = SA8775P_MASTER_PIMEM, 961 + .channels = 1, 962 + .buswidth = 8, 963 + .num_links = 1, 964 + .links = { SA8775P_SLAVE_SNOC_GEM_NOC_GC }, 965 + }; 966 + 967 + static struct qcom_icc_node xm_gic = { 968 + .name = "xm_gic", 969 + .id = SA8775P_MASTER_GIC, 970 + .channels = 1, 971 + .buswidth = 8, 972 + .num_links = 1, 973 + .links = { SA8775P_SLAVE_SNOC_GEM_NOC_GC }, 974 + }; 975 + 976 + static struct qcom_icc_node qns_a1noc_snoc = { 977 + .name = "qns_a1noc_snoc", 978 + .id = SA8775P_SLAVE_A1NOC_SNOC, 979 + .channels = 1, 980 + .buswidth = 32, 981 + .num_links = 1, 982 + .links = { SA8775P_MASTER_A1NOC_SNOC }, 983 + }; 984 + 985 + static struct qcom_icc_node qns_a2noc_snoc = { 986 + .name = "qns_a2noc_snoc", 987 + .id = SA8775P_SLAVE_A2NOC_SNOC, 988 + .channels = 1, 989 + .buswidth = 16, 990 + .num_links = 1, 991 + .links = { SA8775P_MASTER_A2NOC_SNOC }, 992 + }; 993 + 994 + static struct qcom_icc_node qup0_core_slave = { 995 + .name = "qup0_core_slave", 996 + .id = SA8775P_SLAVE_QUP_CORE_0, 997 + .channels = 1, 998 + .buswidth = 4, 999 + }; 1000 + 1001 + static struct qcom_icc_node qup1_core_slave = { 1002 + .name = "qup1_core_slave", 1003 + .id = SA8775P_SLAVE_QUP_CORE_1, 1004 + .channels = 1, 1005 + .buswidth = 4, 1006 + }; 1007 + 1008 + static struct qcom_icc_node qup2_core_slave = { 1009 + .name = "qup2_core_slave", 1010 + .id = SA8775P_SLAVE_QUP_CORE_2, 1011 + .channels = 1, 1012 + .buswidth = 4, 1013 + }; 1014 + 1015 + static struct qcom_icc_node qup3_core_slave = { 1016 + .name = "qup3_core_slave", 1017 + .id = SA8775P_SLAVE_QUP_CORE_3, 1018 + .channels = 1, 1019 + .buswidth = 4, 1020 + }; 1021 + 1022 + static struct qcom_icc_node qhs_ahb2phy0 = { 1023 + .name = "qhs_ahb2phy0", 1024 + .id = SA8775P_SLAVE_AHB2PHY_0, 1025 + .channels = 1, 1026 + .buswidth = 4, 1027 + }; 1028 + 1029 + static struct qcom_icc_node qhs_ahb2phy1 = { 1030 + .name = "qhs_ahb2phy1", 1031 + .id = SA8775P_SLAVE_AHB2PHY_1, 1032 + .channels = 1, 1033 + .buswidth = 4, 1034 + }; 1035 + 1036 + static struct qcom_icc_node qhs_ahb2phy2 = { 1037 + .name = "qhs_ahb2phy2", 1038 + .id = SA8775P_SLAVE_AHB2PHY_2, 1039 + .channels = 1, 1040 + .buswidth = 4, 1041 + }; 1042 + 1043 + static struct qcom_icc_node qhs_ahb2phy3 = { 1044 + .name = "qhs_ahb2phy3", 1045 + .id = SA8775P_SLAVE_AHB2PHY_3, 1046 + .channels = 1, 1047 + .buswidth = 4, 1048 + }; 1049 + 1050 + static struct qcom_icc_node qhs_anoc_throttle_cfg = { 1051 + .name = "qhs_anoc_throttle_cfg", 1052 + .id = SA8775P_SLAVE_ANOC_THROTTLE_CFG, 1053 + .channels = 1, 1054 + .buswidth = 4, 1055 + }; 1056 + 1057 + static struct qcom_icc_node qhs_aoss = { 1058 + .name = "qhs_aoss", 1059 + .id = SA8775P_SLAVE_AOSS, 1060 + .channels = 1, 1061 + .buswidth = 4, 1062 + }; 1063 + 1064 + static struct qcom_icc_node qhs_apss = { 1065 + .name = "qhs_apss", 1066 + .id = SA8775P_SLAVE_APPSS, 1067 + .channels = 1, 1068 + .buswidth = 8, 1069 + }; 1070 + 1071 + static struct qcom_icc_node qhs_boot_rom = { 1072 + .name = "qhs_boot_rom", 1073 + .id = SA8775P_SLAVE_BOOT_ROM, 1074 + .channels = 1, 1075 + .buswidth = 4, 1076 + }; 1077 + 1078 + static struct qcom_icc_node qhs_camera_cfg = { 1079 + .name = "qhs_camera_cfg", 1080 + .id = SA8775P_SLAVE_CAMERA_CFG, 1081 + .channels = 1, 1082 + .buswidth = 4, 1083 + }; 1084 + 1085 + static struct qcom_icc_node qhs_camera_nrt_throttle_cfg = { 1086 + .name = "qhs_camera_nrt_throttle_cfg", 1087 + .id = SA8775P_SLAVE_CAMERA_NRT_THROTTLE_CFG, 1088 + .channels = 1, 1089 + .buswidth = 4, 1090 + }; 1091 + 1092 + static struct qcom_icc_node qhs_camera_rt_throttle_cfg = { 1093 + .name = "qhs_camera_rt_throttle_cfg", 1094 + .id = SA8775P_SLAVE_CAMERA_RT_THROTTLE_CFG, 1095 + .channels = 1, 1096 + .buswidth = 4, 1097 + }; 1098 + 1099 + static struct qcom_icc_node qhs_clk_ctl = { 1100 + .name = "qhs_clk_ctl", 1101 + .id = SA8775P_SLAVE_CLK_CTL, 1102 + .channels = 1, 1103 + .buswidth = 4, 1104 + }; 1105 + 1106 + static struct qcom_icc_node qhs_compute0_cfg = { 1107 + .name = "qhs_compute0_cfg", 1108 + .id = SA8775P_SLAVE_CDSP_CFG, 1109 + .channels = 1, 1110 + .buswidth = 4, 1111 + .num_links = 1, 1112 + .links = { SA8775P_MASTER_CDSP_NOC_CFG }, 1113 + }; 1114 + 1115 + static struct qcom_icc_node qhs_compute1_cfg = { 1116 + .name = "qhs_compute1_cfg", 1117 + .id = SA8775P_SLAVE_CDSP1_CFG, 1118 + .channels = 1, 1119 + .buswidth = 4, 1120 + .num_links = 1, 1121 + .links = { SA8775P_MASTER_CDSPB_NOC_CFG }, 1122 + }; 1123 + 1124 + static struct qcom_icc_node qhs_cpr_cx = { 1125 + .name = "qhs_cpr_cx", 1126 + .id = SA8775P_SLAVE_RBCPR_CX_CFG, 1127 + .channels = 1, 1128 + .buswidth = 4, 1129 + }; 1130 + 1131 + static struct qcom_icc_node qhs_cpr_mmcx = { 1132 + .name = "qhs_cpr_mmcx", 1133 + .id = SA8775P_SLAVE_RBCPR_MMCX_CFG, 1134 + .channels = 1, 1135 + .buswidth = 4, 1136 + }; 1137 + 1138 + static struct qcom_icc_node qhs_cpr_mx = { 1139 + .name = "qhs_cpr_mx", 1140 + .id = SA8775P_SLAVE_RBCPR_MX_CFG, 1141 + .channels = 1, 1142 + .buswidth = 4, 1143 + }; 1144 + 1145 + static struct qcom_icc_node qhs_cpr_nspcx = { 1146 + .name = "qhs_cpr_nspcx", 1147 + .id = SA8775P_SLAVE_CPR_NSPCX, 1148 + .channels = 1, 1149 + .buswidth = 4, 1150 + }; 1151 + 1152 + static struct qcom_icc_node qhs_crypto0_cfg = { 1153 + .name = "qhs_crypto0_cfg", 1154 + .id = SA8775P_SLAVE_CRYPTO_0_CFG, 1155 + .channels = 1, 1156 + .buswidth = 4, 1157 + }; 1158 + 1159 + static struct qcom_icc_node qhs_cx_rdpm = { 1160 + .name = "qhs_cx_rdpm", 1161 + .id = SA8775P_SLAVE_CX_RDPM, 1162 + .channels = 1, 1163 + .buswidth = 4, 1164 + }; 1165 + 1166 + static struct qcom_icc_node qhs_display0_cfg = { 1167 + .name = "qhs_display0_cfg", 1168 + .id = SA8775P_SLAVE_DISPLAY_CFG, 1169 + .channels = 1, 1170 + .buswidth = 4, 1171 + }; 1172 + 1173 + static struct qcom_icc_node qhs_display0_rt_throttle_cfg = { 1174 + .name = "qhs_display0_rt_throttle_cfg", 1175 + .id = SA8775P_SLAVE_DISPLAY_RT_THROTTLE_CFG, 1176 + .channels = 1, 1177 + .buswidth = 4, 1178 + }; 1179 + 1180 + static struct qcom_icc_node qhs_display1_cfg = { 1181 + .name = "qhs_display1_cfg", 1182 + .id = SA8775P_SLAVE_DISPLAY1_CFG, 1183 + .channels = 1, 1184 + .buswidth = 4, 1185 + }; 1186 + 1187 + static struct qcom_icc_node qhs_display1_rt_throttle_cfg = { 1188 + .name = "qhs_display1_rt_throttle_cfg", 1189 + .id = SA8775P_SLAVE_DISPLAY1_RT_THROTTLE_CFG, 1190 + .channels = 1, 1191 + .buswidth = 4, 1192 + }; 1193 + 1194 + static struct qcom_icc_node qhs_emac0_cfg = { 1195 + .name = "qhs_emac0_cfg", 1196 + .id = SA8775P_SLAVE_EMAC_CFG, 1197 + .channels = 1, 1198 + .buswidth = 4, 1199 + }; 1200 + 1201 + static struct qcom_icc_node qhs_emac1_cfg = { 1202 + .name = "qhs_emac1_cfg", 1203 + .id = SA8775P_SLAVE_EMAC1_CFG, 1204 + .channels = 1, 1205 + .buswidth = 4, 1206 + }; 1207 + 1208 + static struct qcom_icc_node qhs_gp_dsp0_cfg = { 1209 + .name = "qhs_gp_dsp0_cfg", 1210 + .id = SA8775P_SLAVE_GP_DSP0_CFG, 1211 + .channels = 1, 1212 + .buswidth = 4, 1213 + }; 1214 + 1215 + static struct qcom_icc_node qhs_gp_dsp1_cfg = { 1216 + .name = "qhs_gp_dsp1_cfg", 1217 + .id = SA8775P_SLAVE_GP_DSP1_CFG, 1218 + .channels = 1, 1219 + .buswidth = 4, 1220 + }; 1221 + 1222 + static struct qcom_icc_node qhs_gpdsp0_throttle_cfg = { 1223 + .name = "qhs_gpdsp0_throttle_cfg", 1224 + .id = SA8775P_SLAVE_GPDSP0_THROTTLE_CFG, 1225 + .channels = 1, 1226 + .buswidth = 4, 1227 + }; 1228 + 1229 + static struct qcom_icc_node qhs_gpdsp1_throttle_cfg = { 1230 + .name = "qhs_gpdsp1_throttle_cfg", 1231 + .id = SA8775P_SLAVE_GPDSP1_THROTTLE_CFG, 1232 + .channels = 1, 1233 + .buswidth = 4, 1234 + }; 1235 + 1236 + static struct qcom_icc_node qhs_gpu_tcu_throttle_cfg = { 1237 + .name = "qhs_gpu_tcu_throttle_cfg", 1238 + .id = SA8775P_SLAVE_GPU_TCU_THROTTLE_CFG, 1239 + .channels = 1, 1240 + .buswidth = 4, 1241 + }; 1242 + 1243 + static struct qcom_icc_node qhs_gpuss_cfg = { 1244 + .name = "qhs_gpuss_cfg", 1245 + .id = SA8775P_SLAVE_GFX3D_CFG, 1246 + .channels = 1, 1247 + .buswidth = 8, 1248 + }; 1249 + 1250 + static struct qcom_icc_node qhs_hwkm = { 1251 + .name = "qhs_hwkm", 1252 + .id = SA8775P_SLAVE_HWKM, 1253 + .channels = 1, 1254 + .buswidth = 4, 1255 + }; 1256 + 1257 + static struct qcom_icc_node qhs_imem_cfg = { 1258 + .name = "qhs_imem_cfg", 1259 + .id = SA8775P_SLAVE_IMEM_CFG, 1260 + .channels = 1, 1261 + .buswidth = 4, 1262 + }; 1263 + 1264 + static struct qcom_icc_node qhs_ipa = { 1265 + .name = "qhs_ipa", 1266 + .id = SA8775P_SLAVE_IPA_CFG, 1267 + .channels = 1, 1268 + .buswidth = 4, 1269 + }; 1270 + 1271 + static struct qcom_icc_node qhs_ipc_router = { 1272 + .name = "qhs_ipc_router", 1273 + .id = SA8775P_SLAVE_IPC_ROUTER_CFG, 1274 + .channels = 1, 1275 + .buswidth = 4, 1276 + }; 1277 + 1278 + static struct qcom_icc_node qhs_lpass_cfg = { 1279 + .name = "qhs_lpass_cfg", 1280 + .id = SA8775P_SLAVE_LPASS, 1281 + .channels = 1, 1282 + .buswidth = 4, 1283 + .num_links = 1, 1284 + .links = { SA8775P_MASTER_CNOC_LPASS_AG_NOC }, 1285 + }; 1286 + 1287 + static struct qcom_icc_node qhs_lpass_throttle_cfg = { 1288 + .name = "qhs_lpass_throttle_cfg", 1289 + .id = SA8775P_SLAVE_LPASS_THROTTLE_CFG, 1290 + .channels = 1, 1291 + .buswidth = 4, 1292 + }; 1293 + 1294 + static struct qcom_icc_node qhs_mx_rdpm = { 1295 + .name = "qhs_mx_rdpm", 1296 + .id = SA8775P_SLAVE_MX_RDPM, 1297 + .channels = 1, 1298 + .buswidth = 4, 1299 + }; 1300 + 1301 + static struct qcom_icc_node qhs_mxc_rdpm = { 1302 + .name = "qhs_mxc_rdpm", 1303 + .id = SA8775P_SLAVE_MXC_RDPM, 1304 + .channels = 1, 1305 + .buswidth = 4, 1306 + }; 1307 + 1308 + static struct qcom_icc_node qhs_pcie0_cfg = { 1309 + .name = "qhs_pcie0_cfg", 1310 + .id = SA8775P_SLAVE_PCIE_0_CFG, 1311 + .channels = 1, 1312 + .buswidth = 4, 1313 + }; 1314 + 1315 + static struct qcom_icc_node qhs_pcie1_cfg = { 1316 + .name = "qhs_pcie1_cfg", 1317 + .id = SA8775P_SLAVE_PCIE_1_CFG, 1318 + .channels = 1, 1319 + .buswidth = 4, 1320 + }; 1321 + 1322 + static struct qcom_icc_node qhs_pcie_rsc_cfg = { 1323 + .name = "qhs_pcie_rsc_cfg", 1324 + .id = SA8775P_SLAVE_PCIE_RSC_CFG, 1325 + .channels = 1, 1326 + .buswidth = 4, 1327 + }; 1328 + 1329 + static struct qcom_icc_node qhs_pcie_tcu_throttle_cfg = { 1330 + .name = "qhs_pcie_tcu_throttle_cfg", 1331 + .id = SA8775P_SLAVE_PCIE_TCU_THROTTLE_CFG, 1332 + .channels = 1, 1333 + .buswidth = 4, 1334 + }; 1335 + 1336 + static struct qcom_icc_node qhs_pcie_throttle_cfg = { 1337 + .name = "qhs_pcie_throttle_cfg", 1338 + .id = SA8775P_SLAVE_PCIE_THROTTLE_CFG, 1339 + .channels = 1, 1340 + .buswidth = 4, 1341 + }; 1342 + 1343 + static struct qcom_icc_node qhs_pdm = { 1344 + .name = "qhs_pdm", 1345 + .id = SA8775P_SLAVE_PDM, 1346 + .channels = 1, 1347 + .buswidth = 4, 1348 + }; 1349 + 1350 + static struct qcom_icc_node qhs_pimem_cfg = { 1351 + .name = "qhs_pimem_cfg", 1352 + .id = SA8775P_SLAVE_PIMEM_CFG, 1353 + .channels = 1, 1354 + .buswidth = 4, 1355 + }; 1356 + 1357 + static struct qcom_icc_node qhs_pke_wrapper_cfg = { 1358 + .name = "qhs_pke_wrapper_cfg", 1359 + .id = SA8775P_SLAVE_PKA_WRAPPER_CFG, 1360 + .channels = 1, 1361 + .buswidth = 4, 1362 + }; 1363 + 1364 + static struct qcom_icc_node qhs_qdss_cfg = { 1365 + .name = "qhs_qdss_cfg", 1366 + .id = SA8775P_SLAVE_QDSS_CFG, 1367 + .channels = 1, 1368 + .buswidth = 4, 1369 + }; 1370 + 1371 + static struct qcom_icc_node qhs_qm_cfg = { 1372 + .name = "qhs_qm_cfg", 1373 + .id = SA8775P_SLAVE_QM_CFG, 1374 + .channels = 1, 1375 + .buswidth = 4, 1376 + }; 1377 + 1378 + static struct qcom_icc_node qhs_qm_mpu_cfg = { 1379 + .name = "qhs_qm_mpu_cfg", 1380 + .id = SA8775P_SLAVE_QM_MPU_CFG, 1381 + .channels = 1, 1382 + .buswidth = 4, 1383 + }; 1384 + 1385 + static struct qcom_icc_node qhs_qup0 = { 1386 + .name = "qhs_qup0", 1387 + .id = SA8775P_SLAVE_QUP_0, 1388 + .channels = 1, 1389 + .buswidth = 4, 1390 + }; 1391 + 1392 + static struct qcom_icc_node qhs_qup1 = { 1393 + .name = "qhs_qup1", 1394 + .id = SA8775P_SLAVE_QUP_1, 1395 + .channels = 1, 1396 + .buswidth = 4, 1397 + }; 1398 + 1399 + static struct qcom_icc_node qhs_qup2 = { 1400 + .name = "qhs_qup2", 1401 + .id = SA8775P_SLAVE_QUP_2, 1402 + .channels = 1, 1403 + .buswidth = 4, 1404 + }; 1405 + 1406 + static struct qcom_icc_node qhs_qup3 = { 1407 + .name = "qhs_qup3", 1408 + .id = SA8775P_SLAVE_QUP_3, 1409 + .channels = 1, 1410 + .buswidth = 4, 1411 + }; 1412 + 1413 + static struct qcom_icc_node qhs_sail_throttle_cfg = { 1414 + .name = "qhs_sail_throttle_cfg", 1415 + .id = SA8775P_SLAVE_SAIL_THROTTLE_CFG, 1416 + .channels = 1, 1417 + .buswidth = 4, 1418 + }; 1419 + 1420 + static struct qcom_icc_node qhs_sdc1 = { 1421 + .name = "qhs_sdc1", 1422 + .id = SA8775P_SLAVE_SDC1, 1423 + .channels = 1, 1424 + .buswidth = 4, 1425 + }; 1426 + 1427 + static struct qcom_icc_node qhs_security = { 1428 + .name = "qhs_security", 1429 + .id = SA8775P_SLAVE_SECURITY, 1430 + .channels = 1, 1431 + .buswidth = 4, 1432 + }; 1433 + 1434 + static struct qcom_icc_node qhs_snoc_throttle_cfg = { 1435 + .name = "qhs_snoc_throttle_cfg", 1436 + .id = SA8775P_SLAVE_SNOC_THROTTLE_CFG, 1437 + .channels = 1, 1438 + .buswidth = 4, 1439 + }; 1440 + 1441 + static struct qcom_icc_node qhs_tcsr = { 1442 + .name = "qhs_tcsr", 1443 + .id = SA8775P_SLAVE_TCSR, 1444 + .channels = 1, 1445 + .buswidth = 4, 1446 + }; 1447 + 1448 + static struct qcom_icc_node qhs_tlmm = { 1449 + .name = "qhs_tlmm", 1450 + .id = SA8775P_SLAVE_TLMM, 1451 + .channels = 1, 1452 + .buswidth = 4, 1453 + }; 1454 + 1455 + static struct qcom_icc_node qhs_tsc_cfg = { 1456 + .name = "qhs_tsc_cfg", 1457 + .id = SA8775P_SLAVE_TSC_CFG, 1458 + .channels = 1, 1459 + .buswidth = 4, 1460 + }; 1461 + 1462 + static struct qcom_icc_node qhs_ufs_card_cfg = { 1463 + .name = "qhs_ufs_card_cfg", 1464 + .id = SA8775P_SLAVE_UFS_CARD_CFG, 1465 + .channels = 1, 1466 + .buswidth = 4, 1467 + }; 1468 + 1469 + static struct qcom_icc_node qhs_ufs_mem_cfg = { 1470 + .name = "qhs_ufs_mem_cfg", 1471 + .id = SA8775P_SLAVE_UFS_MEM_CFG, 1472 + .channels = 1, 1473 + .buswidth = 4, 1474 + }; 1475 + 1476 + static struct qcom_icc_node qhs_usb2_0 = { 1477 + .name = "qhs_usb2_0", 1478 + .id = SA8775P_SLAVE_USB2, 1479 + .channels = 1, 1480 + .buswidth = 4, 1481 + }; 1482 + 1483 + static struct qcom_icc_node qhs_usb3_0 = { 1484 + .name = "qhs_usb3_0", 1485 + .id = SA8775P_SLAVE_USB3_0, 1486 + .channels = 1, 1487 + .buswidth = 4, 1488 + }; 1489 + 1490 + static struct qcom_icc_node qhs_usb3_1 = { 1491 + .name = "qhs_usb3_1", 1492 + .id = SA8775P_SLAVE_USB3_1, 1493 + .channels = 1, 1494 + .buswidth = 4, 1495 + }; 1496 + 1497 + static struct qcom_icc_node qhs_venus_cfg = { 1498 + .name = "qhs_venus_cfg", 1499 + .id = SA8775P_SLAVE_VENUS_CFG, 1500 + .channels = 1, 1501 + .buswidth = 4, 1502 + }; 1503 + 1504 + static struct qcom_icc_node qhs_venus_cvp_throttle_cfg = { 1505 + .name = "qhs_venus_cvp_throttle_cfg", 1506 + .id = SA8775P_SLAVE_VENUS_CVP_THROTTLE_CFG, 1507 + .channels = 1, 1508 + .buswidth = 4, 1509 + }; 1510 + 1511 + static struct qcom_icc_node qhs_venus_v_cpu_throttle_cfg = { 1512 + .name = "qhs_venus_v_cpu_throttle_cfg", 1513 + .id = SA8775P_SLAVE_VENUS_V_CPU_THROTTLE_CFG, 1514 + .channels = 1, 1515 + .buswidth = 4, 1516 + }; 1517 + 1518 + static struct qcom_icc_node qhs_venus_vcodec_throttle_cfg = { 1519 + .name = "qhs_venus_vcodec_throttle_cfg", 1520 + .id = SA8775P_SLAVE_VENUS_VCODEC_THROTTLE_CFG, 1521 + .channels = 1, 1522 + .buswidth = 4, 1523 + }; 1524 + 1525 + static struct qcom_icc_node qns_ddrss_cfg = { 1526 + .name = "qns_ddrss_cfg", 1527 + .id = SA8775P_SLAVE_DDRSS_CFG, 1528 + .channels = 1, 1529 + .buswidth = 4, 1530 + .num_links = 1, 1531 + .links = { SA8775P_MASTER_CNOC_DC_NOC }, 1532 + }; 1533 + 1534 + static struct qcom_icc_node qns_gpdsp_noc_cfg = { 1535 + .name = "qns_gpdsp_noc_cfg", 1536 + .id = SA8775P_SLAVE_GPDSP_NOC_CFG, 1537 + .channels = 1, 1538 + .buswidth = 4, 1539 + }; 1540 + 1541 + static struct qcom_icc_node qns_mnoc_hf_cfg = { 1542 + .name = "qns_mnoc_hf_cfg", 1543 + .id = SA8775P_SLAVE_CNOC_MNOC_HF_CFG, 1544 + .channels = 1, 1545 + .buswidth = 4, 1546 + .num_links = 1, 1547 + .links = { SA8775P_MASTER_CNOC_MNOC_HF_CFG }, 1548 + }; 1549 + 1550 + static struct qcom_icc_node qns_mnoc_sf_cfg = { 1551 + .name = "qns_mnoc_sf_cfg", 1552 + .id = SA8775P_SLAVE_CNOC_MNOC_SF_CFG, 1553 + .channels = 1, 1554 + .buswidth = 4, 1555 + .num_links = 1, 1556 + .links = { SA8775P_MASTER_CNOC_MNOC_SF_CFG }, 1557 + }; 1558 + 1559 + static struct qcom_icc_node qns_pcie_anoc_cfg = { 1560 + .name = "qns_pcie_anoc_cfg", 1561 + .id = SA8775P_SLAVE_PCIE_ANOC_CFG, 1562 + .channels = 1, 1563 + .buswidth = 4, 1564 + }; 1565 + 1566 + static struct qcom_icc_node qns_snoc_cfg = { 1567 + .name = "qns_snoc_cfg", 1568 + .id = SA8775P_SLAVE_SNOC_CFG, 1569 + .channels = 1, 1570 + .buswidth = 4, 1571 + .num_links = 1, 1572 + .links = { SA8775P_MASTER_SNOC_CFG }, 1573 + }; 1574 + 1575 + static struct qcom_icc_node qxs_boot_imem = { 1576 + .name = "qxs_boot_imem", 1577 + .id = SA8775P_SLAVE_BOOT_IMEM, 1578 + .channels = 1, 1579 + .buswidth = 16, 1580 + }; 1581 + 1582 + static struct qcom_icc_node qxs_imem = { 1583 + .name = "qxs_imem", 1584 + .id = SA8775P_SLAVE_IMEM, 1585 + .channels = 1, 1586 + .buswidth = 8, 1587 + }; 1588 + 1589 + static struct qcom_icc_node qxs_pimem = { 1590 + .name = "qxs_pimem", 1591 + .id = SA8775P_SLAVE_PIMEM, 1592 + .channels = 1, 1593 + .buswidth = 8, 1594 + }; 1595 + 1596 + static struct qcom_icc_node xs_pcie_0 = { 1597 + .name = "xs_pcie_0", 1598 + .id = SA8775P_SLAVE_PCIE_0, 1599 + .channels = 1, 1600 + .buswidth = 16, 1601 + }; 1602 + 1603 + static struct qcom_icc_node xs_pcie_1 = { 1604 + .name = "xs_pcie_1", 1605 + .id = SA8775P_SLAVE_PCIE_1, 1606 + .channels = 1, 1607 + .buswidth = 32, 1608 + }; 1609 + 1610 + static struct qcom_icc_node xs_qdss_stm = { 1611 + .name = "xs_qdss_stm", 1612 + .id = SA8775P_SLAVE_QDSS_STM, 1613 + .channels = 1, 1614 + .buswidth = 4, 1615 + }; 1616 + 1617 + static struct qcom_icc_node xs_sys_tcu_cfg = { 1618 + .name = "xs_sys_tcu_cfg", 1619 + .id = SA8775P_SLAVE_TCU, 1620 + .channels = 1, 1621 + .buswidth = 8, 1622 + }; 1623 + 1624 + static struct qcom_icc_node qhs_llcc = { 1625 + .name = "qhs_llcc", 1626 + .id = SA8775P_SLAVE_LLCC_CFG, 1627 + .channels = 1, 1628 + .buswidth = 4, 1629 + }; 1630 + 1631 + static struct qcom_icc_node qns_gemnoc = { 1632 + .name = "qns_gemnoc", 1633 + .id = SA8775P_SLAVE_GEM_NOC_CFG, 1634 + .channels = 1, 1635 + .buswidth = 4, 1636 + .num_links = 1, 1637 + .links = { SA8775P_MASTER_GEM_NOC_CFG }, 1638 + }; 1639 + 1640 + static struct qcom_icc_node qns_gem_noc_cnoc = { 1641 + .name = "qns_gem_noc_cnoc", 1642 + .id = SA8775P_SLAVE_GEM_NOC_CNOC, 1643 + .channels = 1, 1644 + .buswidth = 16, 1645 + .num_links = 1, 1646 + .links = { SA8775P_MASTER_GEM_NOC_CNOC }, 1647 + }; 1648 + 1649 + static struct qcom_icc_node qns_llcc = { 1650 + .name = "qns_llcc", 1651 + .id = SA8775P_SLAVE_LLCC, 1652 + .channels = 6, 1653 + .buswidth = 16, 1654 + .num_links = 1, 1655 + .links = { SA8775P_MASTER_LLCC }, 1656 + }; 1657 + 1658 + static struct qcom_icc_node qns_pcie = { 1659 + .name = "qns_pcie", 1660 + .id = SA8775P_SLAVE_GEM_NOC_PCIE_CNOC, 1661 + .channels = 1, 1662 + .buswidth = 16, 1663 + .num_links = 1, 1664 + .links = { SA8775P_MASTER_GEM_NOC_PCIE_SNOC }, 1665 + }; 1666 + 1667 + static struct qcom_icc_node srvc_even_gemnoc = { 1668 + .name = "srvc_even_gemnoc", 1669 + .id = SA8775P_SLAVE_SERVICE_GEM_NOC_1, 1670 + .channels = 1, 1671 + .buswidth = 4, 1672 + }; 1673 + 1674 + static struct qcom_icc_node srvc_odd_gemnoc = { 1675 + .name = "srvc_odd_gemnoc", 1676 + .id = SA8775P_SLAVE_SERVICE_GEM_NOC_2, 1677 + .channels = 1, 1678 + .buswidth = 4, 1679 + }; 1680 + 1681 + static struct qcom_icc_node srvc_sys_gemnoc = { 1682 + .name = "srvc_sys_gemnoc", 1683 + .id = SA8775P_SLAVE_SERVICE_GEM_NOC, 1684 + .channels = 1, 1685 + .buswidth = 4, 1686 + }; 1687 + 1688 + static struct qcom_icc_node srvc_sys_gemnoc_2 = { 1689 + .name = "srvc_sys_gemnoc_2", 1690 + .id = SA8775P_SLAVE_SERVICE_GEM_NOC2, 1691 + .channels = 1, 1692 + .buswidth = 4, 1693 + }; 1694 + 1695 + static struct qcom_icc_node qns_gp_dsp_sail_noc = { 1696 + .name = "qns_gp_dsp_sail_noc", 1697 + .id = SA8775P_SLAVE_GP_DSP_SAIL_NOC, 1698 + .channels = 1, 1699 + .buswidth = 16, 1700 + .num_links = 1, 1701 + .links = { SA8775P_MASTER_GPDSP_SAIL }, 1702 + }; 1703 + 1704 + static struct qcom_icc_node qhs_lpass_core = { 1705 + .name = "qhs_lpass_core", 1706 + .id = SA8775P_SLAVE_LPASS_CORE_CFG, 1707 + .channels = 1, 1708 + .buswidth = 4, 1709 + }; 1710 + 1711 + static struct qcom_icc_node qhs_lpass_lpi = { 1712 + .name = "qhs_lpass_lpi", 1713 + .id = SA8775P_SLAVE_LPASS_LPI_CFG, 1714 + .channels = 1, 1715 + .buswidth = 4, 1716 + }; 1717 + 1718 + static struct qcom_icc_node qhs_lpass_mpu = { 1719 + .name = "qhs_lpass_mpu", 1720 + .id = SA8775P_SLAVE_LPASS_MPU_CFG, 1721 + .channels = 1, 1722 + .buswidth = 4, 1723 + }; 1724 + 1725 + static struct qcom_icc_node qhs_lpass_top = { 1726 + .name = "qhs_lpass_top", 1727 + .id = SA8775P_SLAVE_LPASS_TOP_CFG, 1728 + .channels = 1, 1729 + .buswidth = 4, 1730 + }; 1731 + 1732 + static struct qcom_icc_node qns_sysnoc = { 1733 + .name = "qns_sysnoc", 1734 + .id = SA8775P_SLAVE_LPASS_SNOC, 1735 + .channels = 1, 1736 + .buswidth = 16, 1737 + .num_links = 1, 1738 + .links = { SA8775P_MASTER_LPASS_ANOC }, 1739 + }; 1740 + 1741 + static struct qcom_icc_node srvc_niu_aml_noc = { 1742 + .name = "srvc_niu_aml_noc", 1743 + .id = SA8775P_SLAVE_SERVICES_LPASS_AML_NOC, 1744 + .channels = 1, 1745 + .buswidth = 4, 1746 + }; 1747 + 1748 + static struct qcom_icc_node srvc_niu_lpass_agnoc = { 1749 + .name = "srvc_niu_lpass_agnoc", 1750 + .id = SA8775P_SLAVE_SERVICE_LPASS_AG_NOC, 1751 + .channels = 1, 1752 + .buswidth = 4, 1753 + }; 1754 + 1755 + static struct qcom_icc_node ebi = { 1756 + .name = "ebi", 1757 + .id = SA8775P_SLAVE_EBI1, 1758 + .channels = 8, 1759 + .buswidth = 4, 1760 + }; 1761 + 1762 + static struct qcom_icc_node qns_mem_noc_hf = { 1763 + .name = "qns_mem_noc_hf", 1764 + .id = SA8775P_SLAVE_MNOC_HF_MEM_NOC, 1765 + .channels = 2, 1766 + .buswidth = 32, 1767 + .num_links = 1, 1768 + .links = { SA8775P_MASTER_MNOC_HF_MEM_NOC }, 1769 + }; 1770 + 1771 + static struct qcom_icc_node qns_mem_noc_sf = { 1772 + .name = "qns_mem_noc_sf", 1773 + .id = SA8775P_SLAVE_MNOC_SF_MEM_NOC, 1774 + .channels = 2, 1775 + .buswidth = 32, 1776 + .num_links = 1, 1777 + .links = { SA8775P_MASTER_MNOC_SF_MEM_NOC }, 1778 + }; 1779 + 1780 + static struct qcom_icc_node srvc_mnoc_hf = { 1781 + .name = "srvc_mnoc_hf", 1782 + .id = SA8775P_SLAVE_SERVICE_MNOC_HF, 1783 + .channels = 1, 1784 + .buswidth = 4, 1785 + }; 1786 + 1787 + static struct qcom_icc_node srvc_mnoc_sf = { 1788 + .name = "srvc_mnoc_sf", 1789 + .id = SA8775P_SLAVE_SERVICE_MNOC_SF, 1790 + .channels = 1, 1791 + .buswidth = 4, 1792 + }; 1793 + 1794 + static struct qcom_icc_node qns_hcp = { 1795 + .name = "qns_hcp", 1796 + .id = SA8775P_SLAVE_HCP_A, 1797 + .channels = 2, 1798 + .buswidth = 32, 1799 + }; 1800 + 1801 + static struct qcom_icc_node qns_nsp_gemnoc = { 1802 + .name = "qns_nsp_gemnoc", 1803 + .id = SA8775P_SLAVE_CDSP_MEM_NOC, 1804 + .channels = 2, 1805 + .buswidth = 32, 1806 + .num_links = 1, 1807 + .links = { SA8775P_MASTER_COMPUTE_NOC }, 1808 + }; 1809 + 1810 + static struct qcom_icc_node service_nsp_noc = { 1811 + .name = "service_nsp_noc", 1812 + .id = SA8775P_SLAVE_SERVICE_NSP_NOC, 1813 + .channels = 1, 1814 + .buswidth = 4, 1815 + }; 1816 + 1817 + static struct qcom_icc_node qns_nspb_gemnoc = { 1818 + .name = "qns_nspb_gemnoc", 1819 + .id = SA8775P_SLAVE_CDSPB_MEM_NOC, 1820 + .channels = 2, 1821 + .buswidth = 32, 1822 + .num_links = 1, 1823 + .links = { SA8775P_MASTER_COMPUTE_NOC_1 }, 1824 + }; 1825 + 1826 + static struct qcom_icc_node qns_nspb_hcp = { 1827 + .name = "qns_nspb_hcp", 1828 + .id = SA8775P_SLAVE_HCP_B, 1829 + .channels = 2, 1830 + .buswidth = 32, 1831 + }; 1832 + 1833 + static struct qcom_icc_node service_nspb_noc = { 1834 + .name = "service_nspb_noc", 1835 + .id = SA8775P_SLAVE_SERVICE_NSPB_NOC, 1836 + .channels = 1, 1837 + .buswidth = 4, 1838 + }; 1839 + 1840 + static struct qcom_icc_node qns_pcie_mem_noc = { 1841 + .name = "qns_pcie_mem_noc", 1842 + .id = SA8775P_SLAVE_ANOC_PCIE_GEM_NOC, 1843 + .channels = 1, 1844 + .buswidth = 32, 1845 + .num_links = 1, 1846 + .links = { SA8775P_MASTER_ANOC_PCIE_GEM_NOC }, 1847 + }; 1848 + 1849 + static struct qcom_icc_node qns_gemnoc_gc = { 1850 + .name = "qns_gemnoc_gc", 1851 + .id = SA8775P_SLAVE_SNOC_GEM_NOC_GC, 1852 + .channels = 1, 1853 + .buswidth = 8, 1854 + .num_links = 1, 1855 + .links = { SA8775P_MASTER_SNOC_GC_MEM_NOC }, 1856 + }; 1857 + 1858 + static struct qcom_icc_node qns_gemnoc_sf = { 1859 + .name = "qns_gemnoc_sf", 1860 + .id = SA8775P_SLAVE_SNOC_GEM_NOC_SF, 1861 + .channels = 1, 1862 + .buswidth = 16, 1863 + .num_links = 1, 1864 + .links = { SA8775P_MASTER_SNOC_SF_MEM_NOC }, 1865 + }; 1866 + 1867 + static struct qcom_icc_node srvc_snoc = { 1868 + .name = "srvc_snoc", 1869 + .id = SA8775P_SLAVE_SERVICE_SNOC, 1870 + .channels = 1, 1871 + .buswidth = 4, 1872 + }; 1873 + 1874 + static struct qcom_icc_bcm bcm_acv = { 1875 + .name = "ACV", 1876 + .num_nodes = 1, 1877 + .nodes = { &ebi }, 1878 + }; 1879 + 1880 + static struct qcom_icc_bcm bcm_ce0 = { 1881 + .name = "CE0", 1882 + .num_nodes = 2, 1883 + .nodes = { &qxm_crypto_0, &qxm_crypto_1 }, 1884 + }; 1885 + 1886 + static struct qcom_icc_bcm bcm_cn0 = { 1887 + .name = "CN0", 1888 + .keepalive = true, 1889 + .num_nodes = 2, 1890 + .nodes = { &qnm_gemnoc_cnoc, &qnm_gemnoc_pcie }, 1891 + }; 1892 + 1893 + static struct qcom_icc_bcm bcm_cn1 = { 1894 + .name = "CN1", 1895 + .num_nodes = 76, 1896 + .nodes = { &qhs_ahb2phy0, &qhs_ahb2phy1, 1897 + &qhs_ahb2phy2, &qhs_ahb2phy3, 1898 + &qhs_anoc_throttle_cfg, &qhs_aoss, 1899 + &qhs_apss, &qhs_boot_rom, 1900 + &qhs_camera_cfg, &qhs_camera_nrt_throttle_cfg, 1901 + &qhs_camera_rt_throttle_cfg, &qhs_clk_ctl, 1902 + &qhs_compute0_cfg, &qhs_compute1_cfg, 1903 + &qhs_cpr_cx, &qhs_cpr_mmcx, 1904 + &qhs_cpr_mx, &qhs_cpr_nspcx, 1905 + &qhs_crypto0_cfg, &qhs_cx_rdpm, 1906 + &qhs_display0_cfg, &qhs_display0_rt_throttle_cfg, 1907 + &qhs_display1_cfg, &qhs_display1_rt_throttle_cfg, 1908 + &qhs_emac0_cfg, &qhs_emac1_cfg, 1909 + &qhs_gp_dsp0_cfg, &qhs_gp_dsp1_cfg, 1910 + &qhs_gpdsp0_throttle_cfg, &qhs_gpdsp1_throttle_cfg, 1911 + &qhs_gpu_tcu_throttle_cfg, &qhs_gpuss_cfg, 1912 + &qhs_hwkm, &qhs_imem_cfg, 1913 + &qhs_ipa, &qhs_ipc_router, 1914 + &qhs_lpass_cfg, &qhs_lpass_throttle_cfg, 1915 + &qhs_mx_rdpm, &qhs_mxc_rdpm, 1916 + &qhs_pcie0_cfg, &qhs_pcie1_cfg, 1917 + &qhs_pcie_rsc_cfg, &qhs_pcie_tcu_throttle_cfg, 1918 + &qhs_pcie_throttle_cfg, &qhs_pdm, 1919 + &qhs_pimem_cfg, &qhs_pke_wrapper_cfg, 1920 + &qhs_qdss_cfg, &qhs_qm_cfg, 1921 + &qhs_qm_mpu_cfg, &qhs_sail_throttle_cfg, 1922 + &qhs_sdc1, &qhs_security, 1923 + &qhs_snoc_throttle_cfg, &qhs_tcsr, 1924 + &qhs_tlmm, &qhs_tsc_cfg, 1925 + &qhs_ufs_card_cfg, &qhs_ufs_mem_cfg, 1926 + &qhs_usb2_0, &qhs_usb3_0, 1927 + &qhs_usb3_1, &qhs_venus_cfg, 1928 + &qhs_venus_cvp_throttle_cfg, &qhs_venus_v_cpu_throttle_cfg, 1929 + &qhs_venus_vcodec_throttle_cfg, &qns_ddrss_cfg, 1930 + &qns_gpdsp_noc_cfg, &qns_mnoc_hf_cfg, 1931 + &qns_mnoc_sf_cfg, &qns_pcie_anoc_cfg, 1932 + &qns_snoc_cfg, &qxs_boot_imem, 1933 + &qxs_imem, &xs_sys_tcu_cfg }, 1934 + }; 1935 + 1936 + static struct qcom_icc_bcm bcm_cn2 = { 1937 + .name = "CN2", 1938 + .num_nodes = 4, 1939 + .nodes = { &qhs_qup0, &qhs_qup1, 1940 + &qhs_qup2, &qhs_qup3 }, 1941 + }; 1942 + 1943 + static struct qcom_icc_bcm bcm_cn3 = { 1944 + .name = "CN3", 1945 + .num_nodes = 2, 1946 + .nodes = { &xs_pcie_0, &xs_pcie_1 }, 1947 + }; 1948 + 1949 + static struct qcom_icc_bcm bcm_gna0 = { 1950 + .name = "GNA0", 1951 + .num_nodes = 1, 1952 + .nodes = { &qxm_dsp0 }, 1953 + }; 1954 + 1955 + static struct qcom_icc_bcm bcm_gnb0 = { 1956 + .name = "GNB0", 1957 + .num_nodes = 1, 1958 + .nodes = { &qxm_dsp1 }, 1959 + }; 1960 + 1961 + static struct qcom_icc_bcm bcm_mc0 = { 1962 + .name = "MC0", 1963 + .keepalive = true, 1964 + .num_nodes = 1, 1965 + .nodes = { &ebi }, 1966 + }; 1967 + 1968 + static struct qcom_icc_bcm bcm_mm0 = { 1969 + .name = "MM0", 1970 + .keepalive = true, 1971 + .num_nodes = 5, 1972 + .nodes = { &qnm_camnoc_hf, &qnm_mdp0_0, 1973 + &qnm_mdp0_1, &qnm_mdp1_0, 1974 + &qns_mem_noc_hf }, 1975 + }; 1976 + 1977 + static struct qcom_icc_bcm bcm_mm1 = { 1978 + .name = "MM1", 1979 + .num_nodes = 7, 1980 + .nodes = { &qnm_camnoc_icp, &qnm_camnoc_sf, 1981 + &qnm_video0, &qnm_video1, 1982 + &qnm_video_cvp, &qnm_video_v_cpu, 1983 + &qns_mem_noc_sf }, 1984 + }; 1985 + 1986 + static struct qcom_icc_bcm bcm_nsa0 = { 1987 + .name = "NSA0", 1988 + .num_nodes = 2, 1989 + .nodes = { &qns_hcp, &qns_nsp_gemnoc }, 1990 + }; 1991 + 1992 + static struct qcom_icc_bcm bcm_nsa1 = { 1993 + .name = "NSA1", 1994 + .num_nodes = 1, 1995 + .nodes = { &qxm_nsp }, 1996 + }; 1997 + 1998 + static struct qcom_icc_bcm bcm_nsb0 = { 1999 + .name = "NSB0", 2000 + .num_nodes = 2, 2001 + .nodes = { &qns_nspb_gemnoc, &qns_nspb_hcp }, 2002 + }; 2003 + 2004 + static struct qcom_icc_bcm bcm_nsb1 = { 2005 + .name = "NSB1", 2006 + .num_nodes = 1, 2007 + .nodes = { &qxm_nspb }, 2008 + }; 2009 + 2010 + static struct qcom_icc_bcm bcm_pci0 = { 2011 + .name = "PCI0", 2012 + .num_nodes = 1, 2013 + .nodes = { &qns_pcie_mem_noc }, 2014 + }; 2015 + 2016 + static struct qcom_icc_bcm bcm_qup0 = { 2017 + .name = "QUP0", 2018 + .vote_scale = 1, 2019 + .num_nodes = 1, 2020 + .nodes = { &qup0_core_slave }, 2021 + }; 2022 + 2023 + static struct qcom_icc_bcm bcm_qup1 = { 2024 + .name = "QUP1", 2025 + .vote_scale = 1, 2026 + .num_nodes = 1, 2027 + .nodes = { &qup1_core_slave }, 2028 + }; 2029 + 2030 + static struct qcom_icc_bcm bcm_qup2 = { 2031 + .name = "QUP2", 2032 + .vote_scale = 1, 2033 + .num_nodes = 2, 2034 + .nodes = { &qup2_core_slave, &qup3_core_slave }, 2035 + }; 2036 + 2037 + static struct qcom_icc_bcm bcm_sh0 = { 2038 + .name = "SH0", 2039 + .keepalive = true, 2040 + .num_nodes = 1, 2041 + .nodes = { &qns_llcc }, 2042 + }; 2043 + 2044 + static struct qcom_icc_bcm bcm_sh2 = { 2045 + .name = "SH2", 2046 + .num_nodes = 1, 2047 + .nodes = { &chm_apps }, 2048 + }; 2049 + 2050 + static struct qcom_icc_bcm bcm_sn0 = { 2051 + .name = "SN0", 2052 + .keepalive = true, 2053 + .num_nodes = 1, 2054 + .nodes = { &qns_gemnoc_sf }, 2055 + }; 2056 + 2057 + static struct qcom_icc_bcm bcm_sn1 = { 2058 + .name = "SN1", 2059 + .num_nodes = 1, 2060 + .nodes = { &qns_gemnoc_gc }, 2061 + }; 2062 + 2063 + static struct qcom_icc_bcm bcm_sn2 = { 2064 + .name = "SN2", 2065 + .num_nodes = 1, 2066 + .nodes = { &qxs_pimem }, 2067 + }; 2068 + 2069 + static struct qcom_icc_bcm bcm_sn3 = { 2070 + .name = "SN3", 2071 + .num_nodes = 2, 2072 + .nodes = { &qns_a1noc_snoc, &qnm_aggre1_noc }, 2073 + }; 2074 + 2075 + static struct qcom_icc_bcm bcm_sn4 = { 2076 + .name = "SN4", 2077 + .num_nodes = 2, 2078 + .nodes = { &qns_a2noc_snoc, &qnm_aggre2_noc }, 2079 + }; 2080 + 2081 + static struct qcom_icc_bcm bcm_sn9 = { 2082 + .name = "SN9", 2083 + .num_nodes = 2, 2084 + .nodes = { &qns_sysnoc, &qnm_lpass_noc }, 2085 + }; 2086 + 2087 + static struct qcom_icc_bcm bcm_sn10 = { 2088 + .name = "SN10", 2089 + .num_nodes = 1, 2090 + .nodes = { &xs_qdss_stm }, 2091 + }; 2092 + 2093 + static struct qcom_icc_bcm *aggre1_noc_bcms[] = { 2094 + &bcm_sn3, 2095 + }; 2096 + 2097 + static struct qcom_icc_node *aggre1_noc_nodes[] = { 2098 + [MASTER_QUP_3] = &qxm_qup3, 2099 + [MASTER_EMAC] = &xm_emac_0, 2100 + [MASTER_EMAC_1] = &xm_emac_1, 2101 + [MASTER_SDC] = &xm_sdc1, 2102 + [MASTER_UFS_MEM] = &xm_ufs_mem, 2103 + [MASTER_USB2] = &xm_usb2_2, 2104 + [MASTER_USB3_0] = &xm_usb3_0, 2105 + [MASTER_USB3_1] = &xm_usb3_1, 2106 + [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc, 2107 + }; 2108 + 2109 + static const struct qcom_icc_desc sa8775p_aggre1_noc = { 2110 + .nodes = aggre1_noc_nodes, 2111 + .num_nodes = ARRAY_SIZE(aggre1_noc_nodes), 2112 + .bcms = aggre1_noc_bcms, 2113 + .num_bcms = ARRAY_SIZE(aggre1_noc_bcms), 2114 + }; 2115 + 2116 + static struct qcom_icc_bcm *aggre2_noc_bcms[] = { 2117 + &bcm_ce0, 2118 + &bcm_sn4, 2119 + }; 2120 + 2121 + static struct qcom_icc_node *aggre2_noc_nodes[] = { 2122 + [MASTER_QDSS_BAM] = &qhm_qdss_bam, 2123 + [MASTER_QUP_0] = &qhm_qup0, 2124 + [MASTER_QUP_1] = &qhm_qup1, 2125 + [MASTER_QUP_2] = &qhm_qup2, 2126 + [MASTER_CNOC_A2NOC] = &qnm_cnoc_datapath, 2127 + [MASTER_CRYPTO_CORE0] = &qxm_crypto_0, 2128 + [MASTER_CRYPTO_CORE1] = &qxm_crypto_1, 2129 + [MASTER_IPA] = &qxm_ipa, 2130 + [MASTER_QDSS_ETR_0] = &xm_qdss_etr_0, 2131 + [MASTER_QDSS_ETR_1] = &xm_qdss_etr_1, 2132 + [MASTER_UFS_CARD] = &xm_ufs_card, 2133 + [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc, 2134 + }; 2135 + 2136 + static const struct qcom_icc_desc sa8775p_aggre2_noc = { 2137 + .nodes = aggre2_noc_nodes, 2138 + .num_nodes = ARRAY_SIZE(aggre2_noc_nodes), 2139 + .bcms = aggre2_noc_bcms, 2140 + .num_bcms = ARRAY_SIZE(aggre2_noc_bcms), 2141 + }; 2142 + 2143 + static struct qcom_icc_bcm *clk_virt_bcms[] = { 2144 + &bcm_qup0, 2145 + &bcm_qup1, 2146 + &bcm_qup2, 2147 + }; 2148 + 2149 + static struct qcom_icc_node *clk_virt_nodes[] = { 2150 + [MASTER_QUP_CORE_0] = &qup0_core_master, 2151 + [MASTER_QUP_CORE_1] = &qup1_core_master, 2152 + [MASTER_QUP_CORE_2] = &qup2_core_master, 2153 + [MASTER_QUP_CORE_3] = &qup3_core_master, 2154 + [SLAVE_QUP_CORE_0] = &qup0_core_slave, 2155 + [SLAVE_QUP_CORE_1] = &qup1_core_slave, 2156 + [SLAVE_QUP_CORE_2] = &qup2_core_slave, 2157 + [SLAVE_QUP_CORE_3] = &qup3_core_slave, 2158 + }; 2159 + 2160 + static const struct qcom_icc_desc sa8775p_clk_virt = { 2161 + .nodes = clk_virt_nodes, 2162 + .num_nodes = ARRAY_SIZE(clk_virt_nodes), 2163 + .bcms = clk_virt_bcms, 2164 + .num_bcms = ARRAY_SIZE(clk_virt_bcms), 2165 + }; 2166 + 2167 + static struct qcom_icc_bcm *config_noc_bcms[] = { 2168 + &bcm_cn0, 2169 + &bcm_cn1, 2170 + &bcm_cn2, 2171 + &bcm_cn3, 2172 + &bcm_sn2, 2173 + &bcm_sn10, 2174 + }; 2175 + 2176 + static struct qcom_icc_node *config_noc_nodes[] = { 2177 + [MASTER_GEM_NOC_CNOC] = &qnm_gemnoc_cnoc, 2178 + [MASTER_GEM_NOC_PCIE_SNOC] = &qnm_gemnoc_pcie, 2179 + [SLAVE_AHB2PHY_0] = &qhs_ahb2phy0, 2180 + [SLAVE_AHB2PHY_1] = &qhs_ahb2phy1, 2181 + [SLAVE_AHB2PHY_2] = &qhs_ahb2phy2, 2182 + [SLAVE_AHB2PHY_3] = &qhs_ahb2phy3, 2183 + [SLAVE_ANOC_THROTTLE_CFG] = &qhs_anoc_throttle_cfg, 2184 + [SLAVE_AOSS] = &qhs_aoss, 2185 + [SLAVE_APPSS] = &qhs_apss, 2186 + [SLAVE_BOOT_ROM] = &qhs_boot_rom, 2187 + [SLAVE_CAMERA_CFG] = &qhs_camera_cfg, 2188 + [SLAVE_CAMERA_NRT_THROTTLE_CFG] = &qhs_camera_nrt_throttle_cfg, 2189 + [SLAVE_CAMERA_RT_THROTTLE_CFG] = &qhs_camera_rt_throttle_cfg, 2190 + [SLAVE_CLK_CTL] = &qhs_clk_ctl, 2191 + [SLAVE_CDSP_CFG] = &qhs_compute0_cfg, 2192 + [SLAVE_CDSP1_CFG] = &qhs_compute1_cfg, 2193 + [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx, 2194 + [SLAVE_RBCPR_MMCX_CFG] = &qhs_cpr_mmcx, 2195 + [SLAVE_RBCPR_MX_CFG] = &qhs_cpr_mx, 2196 + [SLAVE_CPR_NSPCX] = &qhs_cpr_nspcx, 2197 + [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg, 2198 + [SLAVE_CX_RDPM] = &qhs_cx_rdpm, 2199 + [SLAVE_DISPLAY_CFG] = &qhs_display0_cfg, 2200 + [SLAVE_DISPLAY_RT_THROTTLE_CFG] = &qhs_display0_rt_throttle_cfg, 2201 + [SLAVE_DISPLAY1_CFG] = &qhs_display1_cfg, 2202 + [SLAVE_DISPLAY1_RT_THROTTLE_CFG] = &qhs_display1_rt_throttle_cfg, 2203 + [SLAVE_EMAC_CFG] = &qhs_emac0_cfg, 2204 + [SLAVE_EMAC1_CFG] = &qhs_emac1_cfg, 2205 + [SLAVE_GP_DSP0_CFG] = &qhs_gp_dsp0_cfg, 2206 + [SLAVE_GP_DSP1_CFG] = &qhs_gp_dsp1_cfg, 2207 + [SLAVE_GPDSP0_THROTTLE_CFG] = &qhs_gpdsp0_throttle_cfg, 2208 + [SLAVE_GPDSP1_THROTTLE_CFG] = &qhs_gpdsp1_throttle_cfg, 2209 + [SLAVE_GPU_TCU_THROTTLE_CFG] = &qhs_gpu_tcu_throttle_cfg, 2210 + [SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg, 2211 + [SLAVE_HWKM] = &qhs_hwkm, 2212 + [SLAVE_IMEM_CFG] = &qhs_imem_cfg, 2213 + [SLAVE_IPA_CFG] = &qhs_ipa, 2214 + [SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router, 2215 + [SLAVE_LPASS] = &qhs_lpass_cfg, 2216 + [SLAVE_LPASS_THROTTLE_CFG] = &qhs_lpass_throttle_cfg, 2217 + [SLAVE_MX_RDPM] = &qhs_mx_rdpm, 2218 + [SLAVE_MXC_RDPM] = &qhs_mxc_rdpm, 2219 + [SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg, 2220 + [SLAVE_PCIE_1_CFG] = &qhs_pcie1_cfg, 2221 + [SLAVE_PCIE_RSC_CFG] = &qhs_pcie_rsc_cfg, 2222 + [SLAVE_PCIE_TCU_THROTTLE_CFG] = &qhs_pcie_tcu_throttle_cfg, 2223 + [SLAVE_PCIE_THROTTLE_CFG] = &qhs_pcie_throttle_cfg, 2224 + [SLAVE_PDM] = &qhs_pdm, 2225 + [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg, 2226 + [SLAVE_PKA_WRAPPER_CFG] = &qhs_pke_wrapper_cfg, 2227 + [SLAVE_QDSS_CFG] = &qhs_qdss_cfg, 2228 + [SLAVE_QM_CFG] = &qhs_qm_cfg, 2229 + [SLAVE_QM_MPU_CFG] = &qhs_qm_mpu_cfg, 2230 + [SLAVE_QUP_0] = &qhs_qup0, 2231 + [SLAVE_QUP_1] = &qhs_qup1, 2232 + [SLAVE_QUP_2] = &qhs_qup2, 2233 + [SLAVE_QUP_3] = &qhs_qup3, 2234 + [SLAVE_SAIL_THROTTLE_CFG] = &qhs_sail_throttle_cfg, 2235 + [SLAVE_SDC1] = &qhs_sdc1, 2236 + [SLAVE_SECURITY] = &qhs_security, 2237 + [SLAVE_SNOC_THROTTLE_CFG] = &qhs_snoc_throttle_cfg, 2238 + [SLAVE_TCSR] = &qhs_tcsr, 2239 + [SLAVE_TLMM] = &qhs_tlmm, 2240 + [SLAVE_TSC_CFG] = &qhs_tsc_cfg, 2241 + [SLAVE_UFS_CARD_CFG] = &qhs_ufs_card_cfg, 2242 + [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg, 2243 + [SLAVE_USB2] = &qhs_usb2_0, 2244 + [SLAVE_USB3_0] = &qhs_usb3_0, 2245 + [SLAVE_USB3_1] = &qhs_usb3_1, 2246 + [SLAVE_VENUS_CFG] = &qhs_venus_cfg, 2247 + [SLAVE_VENUS_CVP_THROTTLE_CFG] = &qhs_venus_cvp_throttle_cfg, 2248 + [SLAVE_VENUS_V_CPU_THROTTLE_CFG] = &qhs_venus_v_cpu_throttle_cfg, 2249 + [SLAVE_VENUS_VCODEC_THROTTLE_CFG] = &qhs_venus_vcodec_throttle_cfg, 2250 + [SLAVE_DDRSS_CFG] = &qns_ddrss_cfg, 2251 + [SLAVE_GPDSP_NOC_CFG] = &qns_gpdsp_noc_cfg, 2252 + [SLAVE_CNOC_MNOC_HF_CFG] = &qns_mnoc_hf_cfg, 2253 + [SLAVE_CNOC_MNOC_SF_CFG] = &qns_mnoc_sf_cfg, 2254 + [SLAVE_PCIE_ANOC_CFG] = &qns_pcie_anoc_cfg, 2255 + [SLAVE_SNOC_CFG] = &qns_snoc_cfg, 2256 + [SLAVE_BOOT_IMEM] = &qxs_boot_imem, 2257 + [SLAVE_IMEM] = &qxs_imem, 2258 + [SLAVE_PIMEM] = &qxs_pimem, 2259 + [SLAVE_PCIE_0] = &xs_pcie_0, 2260 + [SLAVE_PCIE_1] = &xs_pcie_1, 2261 + [SLAVE_QDSS_STM] = &xs_qdss_stm, 2262 + [SLAVE_TCU] = &xs_sys_tcu_cfg, 2263 + }; 2264 + 2265 + static const struct qcom_icc_desc sa8775p_config_noc = { 2266 + .nodes = config_noc_nodes, 2267 + .num_nodes = ARRAY_SIZE(config_noc_nodes), 2268 + .bcms = config_noc_bcms, 2269 + .num_bcms = ARRAY_SIZE(config_noc_bcms), 2270 + }; 2271 + 2272 + static struct qcom_icc_bcm *dc_noc_bcms[] = { 2273 + }; 2274 + 2275 + static struct qcom_icc_node *dc_noc_nodes[] = { 2276 + [MASTER_CNOC_DC_NOC] = &qnm_cnoc_dc_noc, 2277 + [SLAVE_LLCC_CFG] = &qhs_llcc, 2278 + [SLAVE_GEM_NOC_CFG] = &qns_gemnoc, 2279 + }; 2280 + 2281 + static const struct qcom_icc_desc sa8775p_dc_noc = { 2282 + .nodes = dc_noc_nodes, 2283 + .num_nodes = ARRAY_SIZE(dc_noc_nodes), 2284 + .bcms = dc_noc_bcms, 2285 + .num_bcms = ARRAY_SIZE(dc_noc_bcms), 2286 + }; 2287 + 2288 + static struct qcom_icc_bcm *gem_noc_bcms[] = { 2289 + &bcm_sh0, 2290 + &bcm_sh2, 2291 + }; 2292 + 2293 + static struct qcom_icc_node *gem_noc_nodes[] = { 2294 + [MASTER_GPU_TCU] = &alm_gpu_tcu, 2295 + [MASTER_PCIE_TCU] = &alm_pcie_tcu, 2296 + [MASTER_SYS_TCU] = &alm_sys_tcu, 2297 + [MASTER_APPSS_PROC] = &chm_apps, 2298 + [MASTER_COMPUTE_NOC] = &qnm_cmpnoc0, 2299 + [MASTER_COMPUTE_NOC_1] = &qnm_cmpnoc1, 2300 + [MASTER_GEM_NOC_CFG] = &qnm_gemnoc_cfg, 2301 + [MASTER_GPDSP_SAIL] = &qnm_gpdsp_sail, 2302 + [MASTER_GFX3D] = &qnm_gpu, 2303 + [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf, 2304 + [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf, 2305 + [MASTER_ANOC_PCIE_GEM_NOC] = &qnm_pcie, 2306 + [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc, 2307 + [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf, 2308 + [SLAVE_GEM_NOC_CNOC] = &qns_gem_noc_cnoc, 2309 + [SLAVE_LLCC] = &qns_llcc, 2310 + [SLAVE_GEM_NOC_PCIE_CNOC] = &qns_pcie, 2311 + [SLAVE_SERVICE_GEM_NOC_1] = &srvc_even_gemnoc, 2312 + [SLAVE_SERVICE_GEM_NOC_2] = &srvc_odd_gemnoc, 2313 + [SLAVE_SERVICE_GEM_NOC] = &srvc_sys_gemnoc, 2314 + [SLAVE_SERVICE_GEM_NOC2] = &srvc_sys_gemnoc_2, 2315 + }; 2316 + 2317 + static const struct qcom_icc_desc sa8775p_gem_noc = { 2318 + .nodes = gem_noc_nodes, 2319 + .num_nodes = ARRAY_SIZE(gem_noc_nodes), 2320 + .bcms = gem_noc_bcms, 2321 + .num_bcms = ARRAY_SIZE(gem_noc_bcms), 2322 + }; 2323 + 2324 + static struct qcom_icc_bcm *gpdsp_anoc_bcms[] = { 2325 + &bcm_gna0, 2326 + &bcm_gnb0, 2327 + }; 2328 + 2329 + static struct qcom_icc_node *gpdsp_anoc_nodes[] = { 2330 + [MASTER_DSP0] = &qxm_dsp0, 2331 + [MASTER_DSP1] = &qxm_dsp1, 2332 + [SLAVE_GP_DSP_SAIL_NOC] = &qns_gp_dsp_sail_noc, 2333 + }; 2334 + 2335 + static const struct qcom_icc_desc sa8775p_gpdsp_anoc = { 2336 + .nodes = gpdsp_anoc_nodes, 2337 + .num_nodes = ARRAY_SIZE(gpdsp_anoc_nodes), 2338 + .bcms = gpdsp_anoc_bcms, 2339 + .num_bcms = ARRAY_SIZE(gpdsp_anoc_bcms), 2340 + }; 2341 + 2342 + static struct qcom_icc_bcm *lpass_ag_noc_bcms[] = { 2343 + &bcm_sn9, 2344 + }; 2345 + 2346 + static struct qcom_icc_node *lpass_ag_noc_nodes[] = { 2347 + [MASTER_CNOC_LPASS_AG_NOC] = &qhm_config_noc, 2348 + [MASTER_LPASS_PROC] = &qxm_lpass_dsp, 2349 + [SLAVE_LPASS_CORE_CFG] = &qhs_lpass_core, 2350 + [SLAVE_LPASS_LPI_CFG] = &qhs_lpass_lpi, 2351 + [SLAVE_LPASS_MPU_CFG] = &qhs_lpass_mpu, 2352 + [SLAVE_LPASS_TOP_CFG] = &qhs_lpass_top, 2353 + [SLAVE_LPASS_SNOC] = &qns_sysnoc, 2354 + [SLAVE_SERVICES_LPASS_AML_NOC] = &srvc_niu_aml_noc, 2355 + [SLAVE_SERVICE_LPASS_AG_NOC] = &srvc_niu_lpass_agnoc, 2356 + }; 2357 + 2358 + static const struct qcom_icc_desc sa8775p_lpass_ag_noc = { 2359 + .nodes = lpass_ag_noc_nodes, 2360 + .num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes), 2361 + .bcms = lpass_ag_noc_bcms, 2362 + .num_bcms = ARRAY_SIZE(lpass_ag_noc_bcms), 2363 + }; 2364 + 2365 + static struct qcom_icc_bcm *mc_virt_bcms[] = { 2366 + &bcm_acv, 2367 + &bcm_mc0, 2368 + }; 2369 + 2370 + static struct qcom_icc_node *mc_virt_nodes[] = { 2371 + [MASTER_LLCC] = &llcc_mc, 2372 + [SLAVE_EBI1] = &ebi, 2373 + }; 2374 + 2375 + static const struct qcom_icc_desc sa8775p_mc_virt = { 2376 + .nodes = mc_virt_nodes, 2377 + .num_nodes = ARRAY_SIZE(mc_virt_nodes), 2378 + .bcms = mc_virt_bcms, 2379 + .num_bcms = ARRAY_SIZE(mc_virt_bcms), 2380 + }; 2381 + 2382 + static struct qcom_icc_bcm *mmss_noc_bcms[] = { 2383 + &bcm_mm0, 2384 + &bcm_mm1, 2385 + }; 2386 + 2387 + static struct qcom_icc_node *mmss_noc_nodes[] = { 2388 + [MASTER_CAMNOC_HF] = &qnm_camnoc_hf, 2389 + [MASTER_CAMNOC_ICP] = &qnm_camnoc_icp, 2390 + [MASTER_CAMNOC_SF] = &qnm_camnoc_sf, 2391 + [MASTER_MDP0] = &qnm_mdp0_0, 2392 + [MASTER_MDP1] = &qnm_mdp0_1, 2393 + [MASTER_MDP_CORE1_0] = &qnm_mdp1_0, 2394 + [MASTER_MDP_CORE1_1] = &qnm_mdp1_1, 2395 + [MASTER_CNOC_MNOC_HF_CFG] = &qnm_mnoc_hf_cfg, 2396 + [MASTER_CNOC_MNOC_SF_CFG] = &qnm_mnoc_sf_cfg, 2397 + [MASTER_VIDEO_P0] = &qnm_video0, 2398 + [MASTER_VIDEO_P1] = &qnm_video1, 2399 + [MASTER_VIDEO_PROC] = &qnm_video_cvp, 2400 + [MASTER_VIDEO_V_PROC] = &qnm_video_v_cpu, 2401 + [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf, 2402 + [SLAVE_MNOC_SF_MEM_NOC] = &qns_mem_noc_sf, 2403 + [SLAVE_SERVICE_MNOC_HF] = &srvc_mnoc_hf, 2404 + [SLAVE_SERVICE_MNOC_SF] = &srvc_mnoc_sf, 2405 + }; 2406 + 2407 + static const struct qcom_icc_desc sa8775p_mmss_noc = { 2408 + .nodes = mmss_noc_nodes, 2409 + .num_nodes = ARRAY_SIZE(mmss_noc_nodes), 2410 + .bcms = mmss_noc_bcms, 2411 + .num_bcms = ARRAY_SIZE(mmss_noc_bcms), 2412 + }; 2413 + 2414 + static struct qcom_icc_bcm *nspa_noc_bcms[] = { 2415 + &bcm_nsa0, 2416 + &bcm_nsa1, 2417 + }; 2418 + 2419 + static struct qcom_icc_node *nspa_noc_nodes[] = { 2420 + [MASTER_CDSP_NOC_CFG] = &qhm_nsp_noc_config, 2421 + [MASTER_CDSP_PROC] = &qxm_nsp, 2422 + [SLAVE_HCP_A] = &qns_hcp, 2423 + [SLAVE_CDSP_MEM_NOC] = &qns_nsp_gemnoc, 2424 + [SLAVE_SERVICE_NSP_NOC] = &service_nsp_noc, 2425 + }; 2426 + 2427 + static const struct qcom_icc_desc sa8775p_nspa_noc = { 2428 + .nodes = nspa_noc_nodes, 2429 + .num_nodes = ARRAY_SIZE(nspa_noc_nodes), 2430 + .bcms = nspa_noc_bcms, 2431 + .num_bcms = ARRAY_SIZE(nspa_noc_bcms), 2432 + }; 2433 + 2434 + static struct qcom_icc_bcm *nspb_noc_bcms[] = { 2435 + &bcm_nsb0, 2436 + &bcm_nsb1, 2437 + }; 2438 + 2439 + static struct qcom_icc_node *nspb_noc_nodes[] = { 2440 + [MASTER_CDSPB_NOC_CFG] = &qhm_nspb_noc_config, 2441 + [MASTER_CDSP_PROC_B] = &qxm_nspb, 2442 + [SLAVE_CDSPB_MEM_NOC] = &qns_nspb_gemnoc, 2443 + [SLAVE_HCP_B] = &qns_nspb_hcp, 2444 + [SLAVE_SERVICE_NSPB_NOC] = &service_nspb_noc, 2445 + }; 2446 + 2447 + static const struct qcom_icc_desc sa8775p_nspb_noc = { 2448 + .nodes = nspb_noc_nodes, 2449 + .num_nodes = ARRAY_SIZE(nspb_noc_nodes), 2450 + .bcms = nspb_noc_bcms, 2451 + .num_bcms = ARRAY_SIZE(nspb_noc_bcms), 2452 + }; 2453 + 2454 + static struct qcom_icc_bcm *pcie_anoc_bcms[] = { 2455 + &bcm_pci0, 2456 + }; 2457 + 2458 + static struct qcom_icc_node *pcie_anoc_nodes[] = { 2459 + [MASTER_PCIE_0] = &xm_pcie3_0, 2460 + [MASTER_PCIE_1] = &xm_pcie3_1, 2461 + [SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_mem_noc, 2462 + }; 2463 + 2464 + static const struct qcom_icc_desc sa8775p_pcie_anoc = { 2465 + .nodes = pcie_anoc_nodes, 2466 + .num_nodes = ARRAY_SIZE(pcie_anoc_nodes), 2467 + .bcms = pcie_anoc_bcms, 2468 + .num_bcms = ARRAY_SIZE(pcie_anoc_bcms), 2469 + }; 2470 + 2471 + static struct qcom_icc_bcm *system_noc_bcms[] = { 2472 + &bcm_sn0, 2473 + &bcm_sn1, 2474 + &bcm_sn3, 2475 + &bcm_sn4, 2476 + &bcm_sn9, 2477 + }; 2478 + 2479 + static struct qcom_icc_node *system_noc_nodes[] = { 2480 + [MASTER_GIC_AHB] = &qhm_gic, 2481 + [MASTER_A1NOC_SNOC] = &qnm_aggre1_noc, 2482 + [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc, 2483 + [MASTER_LPASS_ANOC] = &qnm_lpass_noc, 2484 + [MASTER_SNOC_CFG] = &qnm_snoc_cfg, 2485 + [MASTER_PIMEM] = &qxm_pimem, 2486 + [MASTER_GIC] = &xm_gic, 2487 + [SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc, 2488 + [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf, 2489 + [SLAVE_SERVICE_SNOC] = &srvc_snoc, 2490 + }; 2491 + 2492 + static const struct qcom_icc_desc sa8775p_system_noc = { 2493 + .nodes = system_noc_nodes, 2494 + .num_nodes = ARRAY_SIZE(system_noc_nodes), 2495 + .bcms = system_noc_bcms, 2496 + .num_bcms = ARRAY_SIZE(system_noc_bcms), 2497 + }; 2498 + 2499 + static const struct of_device_id qnoc_of_match[] = { 2500 + { .compatible = "qcom,sa8775p-aggre1-noc", .data = &sa8775p_aggre1_noc, }, 2501 + { .compatible = "qcom,sa8775p-aggre2-noc", .data = &sa8775p_aggre2_noc, }, 2502 + { .compatible = "qcom,sa8775p-clk-virt", .data = &sa8775p_clk_virt, }, 2503 + { .compatible = "qcom,sa8775p-config-noc", .data = &sa8775p_config_noc, }, 2504 + { .compatible = "qcom,sa8775p-dc-noc", .data = &sa8775p_dc_noc, }, 2505 + { .compatible = "qcom,sa8775p-gem-noc", .data = &sa8775p_gem_noc, }, 2506 + { .compatible = "qcom,sa8775p-gpdsp-anoc", .data = &sa8775p_gpdsp_anoc, }, 2507 + { .compatible = "qcom,sa8775p-lpass-ag-noc", .data = &sa8775p_lpass_ag_noc, }, 2508 + { .compatible = "qcom,sa8775p-mc-virt", .data = &sa8775p_mc_virt, }, 2509 + { .compatible = "qcom,sa8775p-mmss-noc", .data = &sa8775p_mmss_noc, }, 2510 + { .compatible = "qcom,sa8775p-nspa-noc", .data = &sa8775p_nspa_noc, }, 2511 + { .compatible = "qcom,sa8775p-nspb-noc", .data = &sa8775p_nspb_noc, }, 2512 + { .compatible = "qcom,sa8775p-pcie-anoc", .data = &sa8775p_pcie_anoc, }, 2513 + { .compatible = "qcom,sa8775p-system-noc", .data = &sa8775p_system_noc, }, 2514 + { } 2515 + }; 2516 + MODULE_DEVICE_TABLE(of, qnoc_of_match); 2517 + 2518 + static struct platform_driver qnoc_driver = { 2519 + .probe = qcom_icc_rpmh_probe, 2520 + .remove = qcom_icc_rpmh_remove, 2521 + .driver = { 2522 + .name = "qnoc-sa8775p", 2523 + .of_match_table = qnoc_of_match, 2524 + .sync_state = icc_sync_state, 2525 + }, 2526 + }; 2527 + 2528 + static int __init qnoc_driver_init(void) 2529 + { 2530 + return platform_driver_register(&qnoc_driver); 2531 + } 2532 + core_initcall(qnoc_driver_init); 2533 + 2534 + static void __exit qnoc_driver_exit(void) 2535 + { 2536 + platform_driver_unregister(&qnoc_driver); 2537 + } 2538 + module_exit(qnoc_driver_exit); 2539 + 2540 + MODULE_DESCRIPTION("Qualcomm Technologies, Inc. SA8775P NoC driver"); 2541 + MODULE_LICENSE("GPL");
+2 -2
drivers/interconnect/qcom/sc7180.h
··· 11 11 #define SC7180_MASTER_APPSS_PROC 0 12 12 #define SC7180_MASTER_SYS_TCU 1 13 13 #define SC7180_MASTER_NPU_SYS 2 14 - #define SC7180_MASTER_IPA_CORE 3 14 + /* 3 was used by MASTER_IPA_CORE, now represented as RPMh clock */ 15 15 #define SC7180_MASTER_LLCC 4 16 16 #define SC7180_MASTER_A1NOC_CFG 5 17 17 #define SC7180_MASTER_A2NOC_CFG 6 ··· 58 58 #define SC7180_MASTER_USB3 47 59 59 #define SC7180_MASTER_EMMC 48 60 60 #define SC7180_SLAVE_EBI1 49 61 - #define SC7180_SLAVE_IPA_CORE 50 61 + /* 50 was used by SLAVE_IPA_CORE, now represented as RPMh clock */ 62 62 #define SC7180_SLAVE_A1NOC_CFG 51 63 63 #define SC7180_SLAVE_A2NOC_CFG 52 64 64 #define SC7180_SLAVE_AHB2PHY_SOUTH 53
-38
drivers/interconnect/qcom/sc8180x.c
··· 469 469 .links = { SC8180X_SLAVE_LLCC } 470 470 }; 471 471 472 - static struct qcom_icc_node mas_ipa_core_master = { 473 - .name = "mas_ipa_core_master", 474 - .id = SC8180X_MASTER_IPA_CORE, 475 - .channels = 1, 476 - .buswidth = 8, 477 - .num_links = 1, 478 - .links = { SC8180X_SLAVE_IPA_CORE } 479 - }; 480 - 481 472 static struct qcom_icc_node mas_llcc_mc = { 482 473 .name = "mas_llcc_mc", 483 474 .id = SC8180X_MASTER_LLCC, ··· 1192 1201 .buswidth = 4 1193 1202 }; 1194 1203 1195 - static struct qcom_icc_node slv_ipa_core_slave = { 1196 - .name = "slv_ipa_core_slave", 1197 - .id = SC8180X_SLAVE_IPA_CORE, 1198 - .channels = 1, 1199 - .buswidth = 8 1200 - }; 1201 - 1202 1204 static struct qcom_icc_node slv_ebi = { 1203 1205 .name = "slv_ebi", 1204 1206 .id = SC8180X_SLAVE_EBI_CH0, ··· 1508 1524 .nodes = { &mas_qnm_npu } 1509 1525 }; 1510 1526 1511 - static struct qcom_icc_bcm bcm_ip0 = { 1512 - .name = "IP0", 1513 - .nodes = { &slv_ipa_core_slave } 1514 - }; 1515 - 1516 1527 static struct qcom_icc_bcm bcm_sn3 = { 1517 1528 .name = "SN3", 1518 1529 .keepalive = true, ··· 1581 1602 &bcm_sh0, 1582 1603 &bcm_sh2, 1583 1604 &bcm_sh3, 1584 - }; 1585 - 1586 - static struct qcom_icc_bcm * const ipa_virt_bcms[] = { 1587 - &bcm_ip0, 1588 1605 }; 1589 1606 1590 1607 static struct qcom_icc_bcm * const mc_virt_bcms[] = { ··· 1741 1766 [SLAVE_SERVICE_GEM_NOC_1] = &slv_srvc_gemnoc1, 1742 1767 }; 1743 1768 1744 - static struct qcom_icc_node * const ipa_virt_nodes[] = { 1745 - [MASTER_IPA_CORE] = &mas_ipa_core_master, 1746 - [SLAVE_IPA_CORE] = &slv_ipa_core_slave, 1747 - }; 1748 - 1749 1769 static struct qcom_icc_node * const mc_virt_nodes[] = { 1750 1770 [MASTER_LLCC] = &mas_llcc_mc, 1751 1771 [SLAVE_EBI_CH0] = &slv_ebi, ··· 1827 1857 .num_bcms = ARRAY_SIZE(gem_noc_bcms), 1828 1858 }; 1829 1859 1830 - static const struct qcom_icc_desc sc8180x_ipa_virt = { 1831 - .nodes = ipa_virt_nodes, 1832 - .num_nodes = ARRAY_SIZE(ipa_virt_nodes), 1833 - .bcms = ipa_virt_bcms, 1834 - .num_bcms = ARRAY_SIZE(ipa_virt_bcms), 1835 - }; 1836 - 1837 1860 static const struct qcom_icc_desc sc8180x_mc_virt = { 1838 1861 .nodes = mc_virt_nodes, 1839 1862 .num_nodes = ARRAY_SIZE(mc_virt_nodes), ··· 1876 1913 { .compatible = "qcom,sc8180x-config-noc", .data = &sc8180x_config_noc }, 1877 1914 { .compatible = "qcom,sc8180x-dc-noc", .data = &sc8180x_dc_noc }, 1878 1915 { .compatible = "qcom,sc8180x-gem-noc", .data = &sc8180x_gem_noc }, 1879 - { .compatible = "qcom,sc8180x-ipa-virt", .data = &sc8180x_ipa_virt }, 1880 1916 { .compatible = "qcom,sc8180x-mc-virt", .data = &sc8180x_mc_virt }, 1881 1917 { .compatible = "qcom,sc8180x-mmss-noc", .data = &sc8180x_mmss_noc }, 1882 1918 { .compatible = "qcom,sc8180x-qup-virt", .data = &sc8180x_qup_virt },
+2 -2
drivers/interconnect/qcom/sc8180x.h
··· 51 51 #define SC8180X_MASTER_SNOC_GC_MEM_NOC 41 52 52 #define SC8180X_MASTER_SNOC_SF_MEM_NOC 42 53 53 #define SC8180X_MASTER_ECC 43 54 - #define SC8180X_MASTER_IPA_CORE 44 54 + /* 44 was used by MASTER_IPA_CORE, now represented as RPMh clock */ 55 55 #define SC8180X_MASTER_LLCC 45 56 56 #define SC8180X_MASTER_CNOC_MNOC_CFG 46 57 57 #define SC8180X_MASTER_CAMNOC_HF0 47 ··· 146 146 #define SC8180X_SLAVE_LLCC 136 147 147 #define SC8180X_SLAVE_SERVICE_GEM_NOC 137 148 148 #define SC8180X_SLAVE_SERVICE_GEM_NOC_1 138 149 - #define SC8180X_SLAVE_IPA_CORE 139 149 + /* 139 was used by SLAVE_IPA_CORE, now represented as RPMh clock */ 150 150 #define SC8180X_SLAVE_EBI_CH0 140 151 151 #define SC8180X_SLAVE_MNOC_SF_MEM_NOC 141 152 152 #define SC8180X_SLAVE_MNOC_HF_MEM_NOC 142
-25
drivers/interconnect/qcom/sc8280xp.c
··· 284 284 .links = { SC8280XP_SLAVE_A2NOC_SNOC }, 285 285 }; 286 286 287 - static struct qcom_icc_node ipa_core_master = { 288 - .name = "ipa_core_master", 289 - .id = SC8280XP_MASTER_IPA_CORE, 290 - .channels = 1, 291 - .buswidth = 8, 292 - .num_links = 1, 293 - .links = { SC8280XP_SLAVE_IPA_CORE }, 294 - }; 295 - 296 287 static struct qcom_icc_node qup0_core_master = { 297 288 .name = "qup0_core_master", 298 289 .id = SC8280XP_MASTER_QUP_CORE_0, ··· 871 880 .id = SC8280XP_SLAVE_SERVICE_A2NOC, 872 881 .channels = 1, 873 882 .buswidth = 4, 874 - }; 875 - 876 - static struct qcom_icc_node ipa_core_slave = { 877 - .name = "ipa_core_slave", 878 - .id = SC8280XP_SLAVE_IPA_CORE, 879 - .channels = 1, 880 - .buswidth = 8, 881 883 }; 882 884 883 885 static struct qcom_icc_node qup0_core_slave = { ··· 1829 1845 }, 1830 1846 }; 1831 1847 1832 - static struct qcom_icc_bcm bcm_ip0 = { 1833 - .name = "IP0", 1834 - .num_nodes = 1, 1835 - .nodes = { &ipa_core_slave }, 1836 - }; 1837 - 1838 1848 static struct qcom_icc_bcm bcm_mc0 = { 1839 1849 .name = "MC0", 1840 1850 .keepalive = true, ··· 2055 2077 }; 2056 2078 2057 2079 static struct qcom_icc_bcm * const clk_virt_bcms[] = { 2058 - &bcm_ip0, 2059 2080 &bcm_qup0, 2060 2081 &bcm_qup1, 2061 2082 &bcm_qup2, 2062 2083 }; 2063 2084 2064 2085 static struct qcom_icc_node * const clk_virt_nodes[] = { 2065 - [MASTER_IPA_CORE] = &ipa_core_master, 2066 2086 [MASTER_QUP_CORE_0] = &qup0_core_master, 2067 2087 [MASTER_QUP_CORE_1] = &qup1_core_master, 2068 2088 [MASTER_QUP_CORE_2] = &qup2_core_master, 2069 - [SLAVE_IPA_CORE] = &ipa_core_slave, 2070 2089 [SLAVE_QUP_CORE_0] = &qup0_core_slave, 2071 2090 [SLAVE_QUP_CORE_1] = &qup1_core_slave, 2072 2091 [SLAVE_QUP_CORE_2] = &qup2_core_slave,
+2 -2
drivers/interconnect/qcom/sc8280xp.h
··· 10 10 #define SC8280XP_MASTER_PCIE_TCU 1 11 11 #define SC8280XP_MASTER_SYS_TCU 2 12 12 #define SC8280XP_MASTER_APPSS_PROC 3 13 - #define SC8280XP_MASTER_IPA_CORE 4 13 + /* 4 was used by SLAVE_IPA_CORE, now represented as RPMh clock */ 14 14 #define SC8280XP_MASTER_LLCC 5 15 15 #define SC8280XP_MASTER_CNOC_LPASS_AG_NOC 6 16 16 #define SC8280XP_MASTER_CDSP_NOC_CFG 7 ··· 84 84 #define SC8280XP_MASTER_USB4_0 75 85 85 #define SC8280XP_MASTER_USB4_1 76 86 86 #define SC8280XP_SLAVE_EBI1 512 87 - #define SC8280XP_SLAVE_IPA_CORE 513 87 + /* 513 was used by SLAVE_IPA_CORE, now represented as RPMh clock */ 88 88 #define SC8280XP_SLAVE_AHB2PHY_0 514 89 89 #define SC8280XP_SLAVE_AHB2PHY_1 515 90 90 #define SC8280XP_SLAVE_AHB2PHY_2 516
+440
drivers/interconnect/qcom/sdm670.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-only 2 + /* 3 + * Copyright (c) 2022, The Linux Foundation. All rights reserved. 4 + */ 5 + 6 + #include <linux/device.h> 7 + #include <linux/interconnect.h> 8 + #include <linux/interconnect-provider.h> 9 + #include <linux/module.h> 10 + #include <linux/of_platform.h> 11 + #include <dt-bindings/interconnect/qcom,sdm670-rpmh.h> 12 + 13 + #include "bcm-voter.h" 14 + #include "icc-rpmh.h" 15 + #include "sdm670.h" 16 + 17 + DEFINE_QNODE(qhm_a1noc_cfg, SDM670_MASTER_A1NOC_CFG, 1, 4, SDM670_SLAVE_SERVICE_A1NOC); 18 + DEFINE_QNODE(qhm_qup1, SDM670_MASTER_BLSP_1, 1, 4, SDM670_SLAVE_A1NOC_SNOC); 19 + DEFINE_QNODE(qhm_tsif, SDM670_MASTER_TSIF, 1, 4, SDM670_SLAVE_A1NOC_SNOC); 20 + DEFINE_QNODE(xm_emmc, SDM670_MASTER_EMMC, 1, 8, SDM670_SLAVE_A1NOC_SNOC); 21 + DEFINE_QNODE(xm_sdc2, SDM670_MASTER_SDCC_2, 1, 8, SDM670_SLAVE_A1NOC_SNOC); 22 + DEFINE_QNODE(xm_sdc4, SDM670_MASTER_SDCC_4, 1, 8, SDM670_SLAVE_A1NOC_SNOC); 23 + DEFINE_QNODE(xm_ufs_mem, SDM670_MASTER_UFS_MEM, 1, 8, SDM670_SLAVE_A1NOC_SNOC); 24 + DEFINE_QNODE(qhm_a2noc_cfg, SDM670_MASTER_A2NOC_CFG, 1, 4, SDM670_SLAVE_SERVICE_A2NOC); 25 + DEFINE_QNODE(qhm_qdss_bam, SDM670_MASTER_QDSS_BAM, 1, 4, SDM670_SLAVE_A2NOC_SNOC); 26 + DEFINE_QNODE(qhm_qup2, SDM670_MASTER_BLSP_2, 1, 4, SDM670_SLAVE_A2NOC_SNOC); 27 + DEFINE_QNODE(qnm_cnoc, SDM670_MASTER_CNOC_A2NOC, 1, 8, SDM670_SLAVE_A2NOC_SNOC); 28 + DEFINE_QNODE(qxm_crypto, SDM670_MASTER_CRYPTO_CORE_0, 1, 8, SDM670_SLAVE_A2NOC_SNOC); 29 + DEFINE_QNODE(qxm_ipa, SDM670_MASTER_IPA, 1, 8, SDM670_SLAVE_A2NOC_SNOC); 30 + DEFINE_QNODE(xm_qdss_etr, SDM670_MASTER_QDSS_ETR, 1, 8, SDM670_SLAVE_A2NOC_SNOC); 31 + DEFINE_QNODE(xm_usb3_0, SDM670_MASTER_USB3, 1, 8, SDM670_SLAVE_A2NOC_SNOC); 32 + DEFINE_QNODE(qxm_camnoc_hf0_uncomp, SDM670_MASTER_CAMNOC_HF0_UNCOMP, 1, 32, SDM670_SLAVE_CAMNOC_UNCOMP); 33 + DEFINE_QNODE(qxm_camnoc_hf1_uncomp, SDM670_MASTER_CAMNOC_HF1_UNCOMP, 1, 32, SDM670_SLAVE_CAMNOC_UNCOMP); 34 + DEFINE_QNODE(qxm_camnoc_sf_uncomp, SDM670_MASTER_CAMNOC_SF_UNCOMP, 1, 32, SDM670_SLAVE_CAMNOC_UNCOMP); 35 + DEFINE_QNODE(qhm_spdm, SDM670_MASTER_SPDM, 1, 4, SDM670_SLAVE_CNOC_A2NOC); 36 + DEFINE_QNODE(qnm_snoc, SDM670_MASTER_SNOC_CNOC, 1, 8, SDM670_SLAVE_TLMM_SOUTH, SDM670_SLAVE_CAMERA_CFG, SDM670_SLAVE_SDCC_4, SDM670_SLAVE_SDCC_2, SDM670_SLAVE_CNOC_MNOC_CFG, SDM670_SLAVE_UFS_MEM_CFG, SDM670_SLAVE_GLM, SDM670_SLAVE_PDM, SDM670_SLAVE_A2NOC_CFG, SDM670_SLAVE_QDSS_CFG, SDM670_SLAVE_DISPLAY_CFG, SDM670_SLAVE_TCSR, SDM670_SLAVE_DCC_CFG, SDM670_SLAVE_CNOC_DDRSS, SDM670_SLAVE_SNOC_CFG, SDM670_SLAVE_SOUTH_PHY_CFG, SDM670_SLAVE_GRAPHICS_3D_CFG, SDM670_SLAVE_VENUS_CFG, SDM670_SLAVE_TSIF, SDM670_SLAVE_CDSP_CFG, SDM670_SLAVE_AOP, SDM670_SLAVE_BLSP_2, SDM670_SLAVE_SERVICE_CNOC, SDM670_SLAVE_USB3, SDM670_SLAVE_IPA_CFG, SDM670_SLAVE_RBCPR_CX_CFG, SDM670_SLAVE_A1NOC_CFG, SDM670_SLAVE_AOSS, SDM670_SLAVE_PRNG, SDM670_SLAVE_VSENSE_CTRL_CFG, SDM670_SLAVE_EMMC_CFG, SDM670_SLAVE_BLSP_1, SDM670_SLAVE_SPDM_WRAPPER, SDM670_SLAVE_CRYPTO_0_CFG, SDM670_SLAVE_PIMEM_CFG, SDM670_SLAVE_TLMM_NORTH, SDM670_SLAVE_CLK_CTL, SDM670_SLAVE_IMEM_CFG); 37 + DEFINE_QNODE(qhm_cnoc, SDM670_MASTER_CNOC_DC_NOC, 1, 4, SDM670_SLAVE_MEM_NOC_CFG, SDM670_SLAVE_LLCC_CFG); 38 + DEFINE_QNODE(acm_l3, SDM670_MASTER_AMPSS_M0, 1, 16, SDM670_SLAVE_SERVICE_GNOC, SDM670_SLAVE_GNOC_SNOC, SDM670_SLAVE_GNOC_MEM_NOC); 39 + DEFINE_QNODE(pm_gnoc_cfg, SDM670_MASTER_GNOC_CFG, 1, 4, SDM670_SLAVE_SERVICE_GNOC); 40 + DEFINE_QNODE(llcc_mc, SDM670_MASTER_LLCC, 2, 4, SDM670_SLAVE_EBI_CH0); 41 + DEFINE_QNODE(acm_tcu, SDM670_MASTER_TCU_0, 1, 8, SDM670_SLAVE_MEM_NOC_GNOC, SDM670_SLAVE_LLCC, SDM670_SLAVE_MEM_NOC_SNOC); 42 + DEFINE_QNODE(qhm_memnoc_cfg, SDM670_MASTER_MEM_NOC_CFG, 1, 4, SDM670_SLAVE_SERVICE_MEM_NOC, SDM670_SLAVE_MSS_PROC_MS_MPU_CFG); 43 + DEFINE_QNODE(qnm_apps, SDM670_MASTER_GNOC_MEM_NOC, 2, 32, SDM670_SLAVE_LLCC); 44 + DEFINE_QNODE(qnm_mnoc_hf, SDM670_MASTER_MNOC_HF_MEM_NOC, 2, 32, SDM670_SLAVE_LLCC); 45 + DEFINE_QNODE(qnm_mnoc_sf, SDM670_MASTER_MNOC_SF_MEM_NOC, 1, 32, SDM670_SLAVE_MEM_NOC_GNOC, SDM670_SLAVE_LLCC, SDM670_SLAVE_MEM_NOC_SNOC); 46 + DEFINE_QNODE(qnm_snoc_gc, SDM670_MASTER_SNOC_GC_MEM_NOC, 1, 8, SDM670_SLAVE_LLCC); 47 + DEFINE_QNODE(qnm_snoc_sf, SDM670_MASTER_SNOC_SF_MEM_NOC, 1, 16, SDM670_SLAVE_MEM_NOC_GNOC, SDM670_SLAVE_LLCC); 48 + DEFINE_QNODE(qxm_gpu, SDM670_MASTER_GRAPHICS_3D, 2, 32, SDM670_SLAVE_MEM_NOC_GNOC, SDM670_SLAVE_LLCC, SDM670_SLAVE_MEM_NOC_SNOC); 49 + DEFINE_QNODE(qhm_mnoc_cfg, SDM670_MASTER_CNOC_MNOC_CFG, 1, 4, SDM670_SLAVE_SERVICE_MNOC); 50 + DEFINE_QNODE(qxm_camnoc_hf0, SDM670_MASTER_CAMNOC_HF0, 1, 32, SDM670_SLAVE_MNOC_HF_MEM_NOC); 51 + DEFINE_QNODE(qxm_camnoc_hf1, SDM670_MASTER_CAMNOC_HF1, 1, 32, SDM670_SLAVE_MNOC_HF_MEM_NOC); 52 + DEFINE_QNODE(qxm_camnoc_sf, SDM670_MASTER_CAMNOC_SF, 1, 32, SDM670_SLAVE_MNOC_SF_MEM_NOC); 53 + DEFINE_QNODE(qxm_mdp0, SDM670_MASTER_MDP_PORT0, 1, 32, SDM670_SLAVE_MNOC_HF_MEM_NOC); 54 + DEFINE_QNODE(qxm_mdp1, SDM670_MASTER_MDP_PORT1, 1, 32, SDM670_SLAVE_MNOC_HF_MEM_NOC); 55 + DEFINE_QNODE(qxm_rot, SDM670_MASTER_ROTATOR, 1, 32, SDM670_SLAVE_MNOC_SF_MEM_NOC); 56 + DEFINE_QNODE(qxm_venus0, SDM670_MASTER_VIDEO_P0, 1, 32, SDM670_SLAVE_MNOC_SF_MEM_NOC); 57 + DEFINE_QNODE(qxm_venus1, SDM670_MASTER_VIDEO_P1, 1, 32, SDM670_SLAVE_MNOC_SF_MEM_NOC); 58 + DEFINE_QNODE(qxm_venus_arm9, SDM670_MASTER_VIDEO_PROC, 1, 8, SDM670_SLAVE_MNOC_SF_MEM_NOC); 59 + DEFINE_QNODE(qhm_snoc_cfg, SDM670_MASTER_SNOC_CFG, 1, 4, SDM670_SLAVE_SERVICE_SNOC); 60 + DEFINE_QNODE(qnm_aggre1_noc, SDM670_MASTER_A1NOC_SNOC, 1, 16, SDM670_SLAVE_PIMEM, SDM670_SLAVE_SNOC_MEM_NOC_SF, SDM670_SLAVE_OCIMEM, SDM670_SLAVE_APPSS, SDM670_SLAVE_SNOC_CNOC, SDM670_SLAVE_QDSS_STM); 61 + DEFINE_QNODE(qnm_aggre2_noc, SDM670_MASTER_A2NOC_SNOC, 1, 16, SDM670_SLAVE_PIMEM, SDM670_SLAVE_SNOC_MEM_NOC_SF, SDM670_SLAVE_OCIMEM, SDM670_SLAVE_APPSS, SDM670_SLAVE_SNOC_CNOC, SDM670_SLAVE_TCU, SDM670_SLAVE_QDSS_STM); 62 + DEFINE_QNODE(qnm_gladiator_sodv, SDM670_MASTER_GNOC_SNOC, 1, 8, SDM670_SLAVE_PIMEM, SDM670_SLAVE_OCIMEM, SDM670_SLAVE_APPSS, SDM670_SLAVE_SNOC_CNOC, SDM670_SLAVE_TCU, SDM670_SLAVE_QDSS_STM); 63 + DEFINE_QNODE(qnm_memnoc, SDM670_MASTER_MEM_NOC_SNOC, 1, 8, SDM670_SLAVE_OCIMEM, SDM670_SLAVE_APPSS, SDM670_SLAVE_PIMEM, SDM670_SLAVE_SNOC_CNOC, SDM670_SLAVE_QDSS_STM); 64 + DEFINE_QNODE(qxm_pimem, SDM670_MASTER_PIMEM, 1, 8, SDM670_SLAVE_OCIMEM, SDM670_SLAVE_SNOC_MEM_NOC_GC); 65 + DEFINE_QNODE(xm_gic, SDM670_MASTER_GIC, 1, 8, SDM670_SLAVE_OCIMEM, SDM670_SLAVE_SNOC_MEM_NOC_GC); 66 + DEFINE_QNODE(qns_a1noc_snoc, SDM670_SLAVE_A1NOC_SNOC, 1, 16, SDM670_MASTER_A1NOC_SNOC); 67 + DEFINE_QNODE(srvc_aggre1_noc, SDM670_SLAVE_SERVICE_A1NOC, 1, 4); 68 + DEFINE_QNODE(qns_a2noc_snoc, SDM670_SLAVE_A2NOC_SNOC, 1, 16, SDM670_MASTER_A2NOC_SNOC); 69 + DEFINE_QNODE(srvc_aggre2_noc, SDM670_SLAVE_SERVICE_A2NOC, 1, 4); 70 + DEFINE_QNODE(qns_camnoc_uncomp, SDM670_SLAVE_CAMNOC_UNCOMP, 1, 32); 71 + DEFINE_QNODE(qhs_a1_noc_cfg, SDM670_SLAVE_A1NOC_CFG, 1, 4, SDM670_MASTER_A1NOC_CFG); 72 + DEFINE_QNODE(qhs_a2_noc_cfg, SDM670_SLAVE_A2NOC_CFG, 1, 4, SDM670_MASTER_A2NOC_CFG); 73 + DEFINE_QNODE(qhs_aop, SDM670_SLAVE_AOP, 1, 4); 74 + DEFINE_QNODE(qhs_aoss, SDM670_SLAVE_AOSS, 1, 4); 75 + DEFINE_QNODE(qhs_camera_cfg, SDM670_SLAVE_CAMERA_CFG, 1, 4); 76 + DEFINE_QNODE(qhs_clk_ctl, SDM670_SLAVE_CLK_CTL, 1, 4); 77 + DEFINE_QNODE(qhs_compute_dsp_cfg, SDM670_SLAVE_CDSP_CFG, 1, 4); 78 + DEFINE_QNODE(qhs_cpr_cx, SDM670_SLAVE_RBCPR_CX_CFG, 1, 4); 79 + DEFINE_QNODE(qhs_crypto0_cfg, SDM670_SLAVE_CRYPTO_0_CFG, 1, 4); 80 + DEFINE_QNODE(qhs_dcc_cfg, SDM670_SLAVE_DCC_CFG, 1, 4, SDM670_MASTER_CNOC_DC_NOC); 81 + DEFINE_QNODE(qhs_ddrss_cfg, SDM670_SLAVE_CNOC_DDRSS, 1, 4); 82 + DEFINE_QNODE(qhs_display_cfg, SDM670_SLAVE_DISPLAY_CFG, 1, 4); 83 + DEFINE_QNODE(qhs_emmc_cfg, SDM670_SLAVE_EMMC_CFG, 1, 4); 84 + DEFINE_QNODE(qhs_glm, SDM670_SLAVE_GLM, 1, 4); 85 + DEFINE_QNODE(qhs_gpuss_cfg, SDM670_SLAVE_GRAPHICS_3D_CFG, 1, 8); 86 + DEFINE_QNODE(qhs_imem_cfg, SDM670_SLAVE_IMEM_CFG, 1, 4); 87 + DEFINE_QNODE(qhs_ipa, SDM670_SLAVE_IPA_CFG, 1, 4); 88 + DEFINE_QNODE(qhs_mnoc_cfg, SDM670_SLAVE_CNOC_MNOC_CFG, 1, 4, SDM670_MASTER_CNOC_MNOC_CFG); 89 + DEFINE_QNODE(qhs_pdm, SDM670_SLAVE_PDM, 1, 4); 90 + DEFINE_QNODE(qhs_phy_refgen_south, SDM670_SLAVE_SOUTH_PHY_CFG, 1, 4); 91 + DEFINE_QNODE(qhs_pimem_cfg, SDM670_SLAVE_PIMEM_CFG, 1, 4); 92 + DEFINE_QNODE(qhs_prng, SDM670_SLAVE_PRNG, 1, 4); 93 + DEFINE_QNODE(qhs_qdss_cfg, SDM670_SLAVE_QDSS_CFG, 1, 4); 94 + DEFINE_QNODE(qhs_qupv3_north, SDM670_SLAVE_BLSP_2, 1, 4); 95 + DEFINE_QNODE(qhs_qupv3_south, SDM670_SLAVE_BLSP_1, 1, 4); 96 + DEFINE_QNODE(qhs_sdc2, SDM670_SLAVE_SDCC_2, 1, 4); 97 + DEFINE_QNODE(qhs_sdc4, SDM670_SLAVE_SDCC_4, 1, 4); 98 + DEFINE_QNODE(qhs_snoc_cfg, SDM670_SLAVE_SNOC_CFG, 1, 4, SDM670_MASTER_SNOC_CFG); 99 + DEFINE_QNODE(qhs_spdm, SDM670_SLAVE_SPDM_WRAPPER, 1, 4); 100 + DEFINE_QNODE(qhs_tcsr, SDM670_SLAVE_TCSR, 1, 4); 101 + DEFINE_QNODE(qhs_tlmm_north, SDM670_SLAVE_TLMM_NORTH, 1, 4); 102 + DEFINE_QNODE(qhs_tlmm_south, SDM670_SLAVE_TLMM_SOUTH, 1, 4); 103 + DEFINE_QNODE(qhs_tsif, SDM670_SLAVE_TSIF, 1, 4); 104 + DEFINE_QNODE(qhs_ufs_mem_cfg, SDM670_SLAVE_UFS_MEM_CFG, 1, 4); 105 + DEFINE_QNODE(qhs_usb3_0, SDM670_SLAVE_USB3, 1, 4); 106 + DEFINE_QNODE(qhs_venus_cfg, SDM670_SLAVE_VENUS_CFG, 1, 4); 107 + DEFINE_QNODE(qhs_vsense_ctrl_cfg, SDM670_SLAVE_VSENSE_CTRL_CFG, 1, 4); 108 + DEFINE_QNODE(qns_cnoc_a2noc, SDM670_SLAVE_CNOC_A2NOC, 1, 8, SDM670_MASTER_CNOC_A2NOC); 109 + DEFINE_QNODE(srvc_cnoc, SDM670_SLAVE_SERVICE_CNOC, 1, 4); 110 + DEFINE_QNODE(qhs_llcc, SDM670_SLAVE_LLCC_CFG, 1, 4); 111 + DEFINE_QNODE(qhs_memnoc, SDM670_SLAVE_MEM_NOC_CFG, 1, 4, SDM670_MASTER_MEM_NOC_CFG); 112 + DEFINE_QNODE(qns_gladiator_sodv, SDM670_SLAVE_GNOC_SNOC, 1, 8, SDM670_MASTER_GNOC_SNOC); 113 + DEFINE_QNODE(qns_gnoc_memnoc, SDM670_SLAVE_GNOC_MEM_NOC, 2, 32, SDM670_MASTER_GNOC_MEM_NOC); 114 + DEFINE_QNODE(srvc_gnoc, SDM670_SLAVE_SERVICE_GNOC, 1, 4); 115 + DEFINE_QNODE(ebi, SDM670_SLAVE_EBI_CH0, 2, 4); 116 + DEFINE_QNODE(qhs_mdsp_ms_mpu_cfg, SDM670_SLAVE_MSS_PROC_MS_MPU_CFG, 1, 4); 117 + DEFINE_QNODE(qns_apps_io, SDM670_SLAVE_MEM_NOC_GNOC, 1, 32); 118 + DEFINE_QNODE(qns_llcc, SDM670_SLAVE_LLCC, 2, 16, SDM670_MASTER_LLCC); 119 + DEFINE_QNODE(qns_memnoc_snoc, SDM670_SLAVE_MEM_NOC_SNOC, 1, 8, SDM670_MASTER_MEM_NOC_SNOC); 120 + DEFINE_QNODE(srvc_memnoc, SDM670_SLAVE_SERVICE_MEM_NOC, 1, 4); 121 + DEFINE_QNODE(qns2_mem_noc, SDM670_SLAVE_MNOC_SF_MEM_NOC, 1, 32, SDM670_MASTER_MNOC_SF_MEM_NOC); 122 + DEFINE_QNODE(qns_mem_noc_hf, SDM670_SLAVE_MNOC_HF_MEM_NOC, 2, 32, SDM670_MASTER_MNOC_HF_MEM_NOC); 123 + DEFINE_QNODE(srvc_mnoc, SDM670_SLAVE_SERVICE_MNOC, 1, 4); 124 + DEFINE_QNODE(qhs_apss, SDM670_SLAVE_APPSS, 1, 8); 125 + DEFINE_QNODE(qns_cnoc, SDM670_SLAVE_SNOC_CNOC, 1, 8, SDM670_MASTER_SNOC_CNOC); 126 + DEFINE_QNODE(qns_memnoc_gc, SDM670_SLAVE_SNOC_MEM_NOC_GC, 1, 8, SDM670_MASTER_SNOC_GC_MEM_NOC); 127 + DEFINE_QNODE(qns_memnoc_sf, SDM670_SLAVE_SNOC_MEM_NOC_SF, 1, 16, SDM670_MASTER_SNOC_SF_MEM_NOC); 128 + DEFINE_QNODE(qxs_imem, SDM670_SLAVE_OCIMEM, 1, 8); 129 + DEFINE_QNODE(qxs_pimem, SDM670_SLAVE_PIMEM, 1, 8); 130 + DEFINE_QNODE(srvc_snoc, SDM670_SLAVE_SERVICE_SNOC, 1, 4); 131 + DEFINE_QNODE(xs_qdss_stm, SDM670_SLAVE_QDSS_STM, 1, 4); 132 + DEFINE_QNODE(xs_sys_tcu_cfg, SDM670_SLAVE_TCU, 1, 8); 133 + 134 + DEFINE_QBCM(bcm_acv, "ACV", false, &ebi); 135 + DEFINE_QBCM(bcm_mc0, "MC0", true, &ebi); 136 + DEFINE_QBCM(bcm_sh0, "SH0", true, &qns_llcc); 137 + DEFINE_QBCM(bcm_mm0, "MM0", true, &qns_mem_noc_hf); 138 + DEFINE_QBCM(bcm_sh1, "SH1", false, &qns_apps_io); 139 + DEFINE_QBCM(bcm_mm1, "MM1", true, &qxm_camnoc_hf0_uncomp, &qxm_camnoc_hf1_uncomp, &qxm_camnoc_sf_uncomp, &qxm_camnoc_hf0, &qxm_camnoc_hf1, &qxm_mdp0, &qxm_mdp1); 140 + DEFINE_QBCM(bcm_sh2, "SH2", false, &qns_memnoc_snoc); 141 + DEFINE_QBCM(bcm_mm2, "MM2", false, &qns2_mem_noc); 142 + DEFINE_QBCM(bcm_sh3, "SH3", false, &acm_tcu); 143 + DEFINE_QBCM(bcm_mm3, "MM3", false, &qxm_camnoc_sf, &qxm_rot, &qxm_venus0, &qxm_venus1, &qxm_venus_arm9); 144 + DEFINE_QBCM(bcm_sh5, "SH5", false, &qnm_apps); 145 + DEFINE_QBCM(bcm_sn0, "SN0", true, &qns_memnoc_sf); 146 + DEFINE_QBCM(bcm_ce0, "CE0", false, &qxm_crypto); 147 + DEFINE_QBCM(bcm_cn0, "CN0", true, &qhm_spdm, &qnm_snoc, &qhs_a1_noc_cfg, &qhs_a2_noc_cfg, &qhs_aop, &qhs_aoss, &qhs_camera_cfg, &qhs_clk_ctl, &qhs_compute_dsp_cfg, &qhs_cpr_cx, &qhs_crypto0_cfg, &qhs_dcc_cfg, &qhs_ddrss_cfg, &qhs_display_cfg, &qhs_emmc_cfg, &qhs_glm, &qhs_gpuss_cfg, &qhs_imem_cfg, &qhs_ipa, &qhs_mnoc_cfg, &qhs_pdm, &qhs_phy_refgen_south, &qhs_pimem_cfg, &qhs_prng, &qhs_qdss_cfg, &qhs_qupv3_north, &qhs_qupv3_south, &qhs_sdc2, &qhs_sdc4, &qhs_snoc_cfg, &qhs_spdm, &qhs_tcsr, &qhs_tlmm_north, &qhs_tlmm_south, &qhs_tsif, &qhs_ufs_mem_cfg, &qhs_usb3_0, &qhs_venus_cfg, &qhs_vsense_ctrl_cfg, &qns_cnoc_a2noc, &srvc_cnoc); 148 + DEFINE_QBCM(bcm_qup0, "QUP0", false, &qhm_qup1, &qhm_qup2); 149 + DEFINE_QBCM(bcm_sn1, "SN1", false, &qxs_imem); 150 + DEFINE_QBCM(bcm_sn2, "SN2", false, &qns_memnoc_gc); 151 + DEFINE_QBCM(bcm_sn3, "SN3", false, &qns_cnoc); 152 + DEFINE_QBCM(bcm_sn4, "SN4", false, &qxm_pimem, &qxs_pimem); 153 + DEFINE_QBCM(bcm_sn5, "SN5", false, &xs_qdss_stm); 154 + DEFINE_QBCM(bcm_sn8, "SN8", false, &qnm_aggre1_noc, &srvc_aggre1_noc); 155 + DEFINE_QBCM(bcm_sn10, "SN10", false, &qnm_aggre2_noc, &srvc_aggre2_noc); 156 + DEFINE_QBCM(bcm_sn11, "SN11", false, &qnm_gladiator_sodv, &xm_gic); 157 + DEFINE_QBCM(bcm_sn13, "SN13", false, &qnm_memnoc); 158 + 159 + static struct qcom_icc_bcm * const aggre1_noc_bcms[] = { 160 + &bcm_qup0, 161 + &bcm_sn8, 162 + }; 163 + 164 + static struct qcom_icc_node * const aggre1_noc_nodes[] = { 165 + [MASTER_A1NOC_CFG] = &qhm_a1noc_cfg, 166 + [MASTER_BLSP_1] = &qhm_qup1, 167 + [MASTER_TSIF] = &qhm_tsif, 168 + [MASTER_EMMC] = &xm_emmc, 169 + [MASTER_SDCC_2] = &xm_sdc2, 170 + [MASTER_SDCC_4] = &xm_sdc4, 171 + [MASTER_UFS_MEM] = &xm_ufs_mem, 172 + [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc, 173 + [SLAVE_SERVICE_A1NOC] = &srvc_aggre1_noc, 174 + }; 175 + 176 + static const struct qcom_icc_desc sdm670_aggre1_noc = { 177 + .nodes = aggre1_noc_nodes, 178 + .num_nodes = ARRAY_SIZE(aggre1_noc_nodes), 179 + .bcms = aggre1_noc_bcms, 180 + .num_bcms = ARRAY_SIZE(aggre1_noc_bcms), 181 + }; 182 + 183 + static struct qcom_icc_bcm * const aggre2_noc_bcms[] = { 184 + &bcm_ce0, 185 + &bcm_qup0, 186 + &bcm_sn10, 187 + }; 188 + 189 + static struct qcom_icc_node * const aggre2_noc_nodes[] = { 190 + [MASTER_A2NOC_CFG] = &qhm_a2noc_cfg, 191 + [MASTER_QDSS_BAM] = &qhm_qdss_bam, 192 + [MASTER_BLSP_2] = &qhm_qup2, 193 + [MASTER_CNOC_A2NOC] = &qnm_cnoc, 194 + [MASTER_CRYPTO_CORE_0] = &qxm_crypto, 195 + [MASTER_IPA] = &qxm_ipa, 196 + [MASTER_QDSS_ETR] = &xm_qdss_etr, 197 + [MASTER_USB3] = &xm_usb3_0, 198 + [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc, 199 + [SLAVE_SERVICE_A2NOC] = &srvc_aggre2_noc, 200 + }; 201 + 202 + static const struct qcom_icc_desc sdm670_aggre2_noc = { 203 + .nodes = aggre2_noc_nodes, 204 + .num_nodes = ARRAY_SIZE(aggre2_noc_nodes), 205 + .bcms = aggre2_noc_bcms, 206 + .num_bcms = ARRAY_SIZE(aggre2_noc_bcms), 207 + }; 208 + 209 + static struct qcom_icc_bcm * const config_noc_bcms[] = { 210 + &bcm_cn0, 211 + }; 212 + 213 + static struct qcom_icc_node * const config_noc_nodes[] = { 214 + [MASTER_SPDM] = &qhm_spdm, 215 + [MASTER_SNOC_CNOC] = &qnm_snoc, 216 + [SLAVE_A1NOC_CFG] = &qhs_a1_noc_cfg, 217 + [SLAVE_A2NOC_CFG] = &qhs_a2_noc_cfg, 218 + [SLAVE_AOP] = &qhs_aop, 219 + [SLAVE_AOSS] = &qhs_aoss, 220 + [SLAVE_CAMERA_CFG] = &qhs_camera_cfg, 221 + [SLAVE_CLK_CTL] = &qhs_clk_ctl, 222 + [SLAVE_CDSP_CFG] = &qhs_compute_dsp_cfg, 223 + [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx, 224 + [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg, 225 + [SLAVE_DCC_CFG] = &qhs_dcc_cfg, 226 + [SLAVE_CNOC_DDRSS] = &qhs_ddrss_cfg, 227 + [SLAVE_DISPLAY_CFG] = &qhs_display_cfg, 228 + [SLAVE_EMMC_CFG] = &qhs_emmc_cfg, 229 + [SLAVE_GLM] = &qhs_glm, 230 + [SLAVE_GRAPHICS_3D_CFG] = &qhs_gpuss_cfg, 231 + [SLAVE_IMEM_CFG] = &qhs_imem_cfg, 232 + [SLAVE_IPA_CFG] = &qhs_ipa, 233 + [SLAVE_CNOC_MNOC_CFG] = &qhs_mnoc_cfg, 234 + [SLAVE_PDM] = &qhs_pdm, 235 + [SLAVE_SOUTH_PHY_CFG] = &qhs_phy_refgen_south, 236 + [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg, 237 + [SLAVE_PRNG] = &qhs_prng, 238 + [SLAVE_QDSS_CFG] = &qhs_qdss_cfg, 239 + [SLAVE_BLSP_2] = &qhs_qupv3_north, 240 + [SLAVE_BLSP_1] = &qhs_qupv3_south, 241 + [SLAVE_SDCC_2] = &qhs_sdc2, 242 + [SLAVE_SDCC_4] = &qhs_sdc4, 243 + [SLAVE_SNOC_CFG] = &qhs_snoc_cfg, 244 + [SLAVE_SPDM_WRAPPER] = &qhs_spdm, 245 + [SLAVE_TCSR] = &qhs_tcsr, 246 + [SLAVE_TLMM_NORTH] = &qhs_tlmm_north, 247 + [SLAVE_TLMM_SOUTH] = &qhs_tlmm_south, 248 + [SLAVE_TSIF] = &qhs_tsif, 249 + [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg, 250 + [SLAVE_USB3] = &qhs_usb3_0, 251 + [SLAVE_VENUS_CFG] = &qhs_venus_cfg, 252 + [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg, 253 + [SLAVE_CNOC_A2NOC] = &qns_cnoc_a2noc, 254 + [SLAVE_SERVICE_CNOC] = &srvc_cnoc, 255 + }; 256 + 257 + static const struct qcom_icc_desc sdm670_config_noc = { 258 + .nodes = config_noc_nodes, 259 + .num_nodes = ARRAY_SIZE(config_noc_nodes), 260 + .bcms = config_noc_bcms, 261 + .num_bcms = ARRAY_SIZE(config_noc_bcms), 262 + }; 263 + 264 + static struct qcom_icc_bcm * const dc_noc_bcms[] = { 265 + }; 266 + 267 + static struct qcom_icc_node * const dc_noc_nodes[] = { 268 + [MASTER_CNOC_DC_NOC] = &qhm_cnoc, 269 + [SLAVE_LLCC_CFG] = &qhs_llcc, 270 + [SLAVE_MEM_NOC_CFG] = &qhs_memnoc, 271 + }; 272 + 273 + static const struct qcom_icc_desc sdm670_dc_noc = { 274 + .nodes = dc_noc_nodes, 275 + .num_nodes = ARRAY_SIZE(dc_noc_nodes), 276 + .bcms = dc_noc_bcms, 277 + .num_bcms = ARRAY_SIZE(dc_noc_bcms), 278 + }; 279 + 280 + static struct qcom_icc_bcm * const gladiator_noc_bcms[] = { 281 + }; 282 + 283 + static struct qcom_icc_node * const gladiator_noc_nodes[] = { 284 + [MASTER_AMPSS_M0] = &acm_l3, 285 + [MASTER_GNOC_CFG] = &pm_gnoc_cfg, 286 + [SLAVE_GNOC_SNOC] = &qns_gladiator_sodv, 287 + [SLAVE_GNOC_MEM_NOC] = &qns_gnoc_memnoc, 288 + [SLAVE_SERVICE_GNOC] = &srvc_gnoc, 289 + }; 290 + 291 + static const struct qcom_icc_desc sdm670_gladiator_noc = { 292 + .nodes = gladiator_noc_nodes, 293 + .num_nodes = ARRAY_SIZE(gladiator_noc_nodes), 294 + .bcms = gladiator_noc_bcms, 295 + .num_bcms = ARRAY_SIZE(gladiator_noc_bcms), 296 + }; 297 + 298 + static struct qcom_icc_bcm * const mem_noc_bcms[] = { 299 + &bcm_acv, 300 + &bcm_mc0, 301 + &bcm_sh0, 302 + &bcm_sh1, 303 + &bcm_sh2, 304 + &bcm_sh3, 305 + &bcm_sh5, 306 + }; 307 + 308 + static struct qcom_icc_node * const mem_noc_nodes[] = { 309 + [MASTER_TCU_0] = &acm_tcu, 310 + [MASTER_MEM_NOC_CFG] = &qhm_memnoc_cfg, 311 + [MASTER_GNOC_MEM_NOC] = &qnm_apps, 312 + [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf, 313 + [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf, 314 + [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc, 315 + [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf, 316 + [MASTER_GRAPHICS_3D] = &qxm_gpu, 317 + [SLAVE_MSS_PROC_MS_MPU_CFG] = &qhs_mdsp_ms_mpu_cfg, 318 + [SLAVE_MEM_NOC_GNOC] = &qns_apps_io, 319 + [SLAVE_LLCC] = &qns_llcc, 320 + [SLAVE_MEM_NOC_SNOC] = &qns_memnoc_snoc, 321 + [SLAVE_SERVICE_MEM_NOC] = &srvc_memnoc, 322 + [MASTER_LLCC] = &llcc_mc, 323 + [SLAVE_EBI_CH0] = &ebi, 324 + }; 325 + 326 + static const struct qcom_icc_desc sdm670_mem_noc = { 327 + .nodes = mem_noc_nodes, 328 + .num_nodes = ARRAY_SIZE(mem_noc_nodes), 329 + .bcms = mem_noc_bcms, 330 + .num_bcms = ARRAY_SIZE(mem_noc_bcms), 331 + }; 332 + 333 + static struct qcom_icc_bcm * const mmss_noc_bcms[] = { 334 + &bcm_mm0, 335 + &bcm_mm1, 336 + &bcm_mm2, 337 + &bcm_mm3, 338 + }; 339 + 340 + static struct qcom_icc_node * const mmss_noc_nodes[] = { 341 + [MASTER_CNOC_MNOC_CFG] = &qhm_mnoc_cfg, 342 + [MASTER_CAMNOC_HF0] = &qxm_camnoc_hf0, 343 + [MASTER_CAMNOC_HF1] = &qxm_camnoc_hf1, 344 + [MASTER_CAMNOC_SF] = &qxm_camnoc_sf, 345 + [MASTER_MDP_PORT0] = &qxm_mdp0, 346 + [MASTER_MDP_PORT1] = &qxm_mdp1, 347 + [MASTER_ROTATOR] = &qxm_rot, 348 + [MASTER_VIDEO_P0] = &qxm_venus0, 349 + [MASTER_VIDEO_P1] = &qxm_venus1, 350 + [MASTER_VIDEO_PROC] = &qxm_venus_arm9, 351 + [SLAVE_MNOC_SF_MEM_NOC] = &qns2_mem_noc, 352 + [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf, 353 + [SLAVE_SERVICE_MNOC] = &srvc_mnoc, 354 + }; 355 + 356 + static const struct qcom_icc_desc sdm670_mmss_noc = { 357 + .nodes = mmss_noc_nodes, 358 + .num_nodes = ARRAY_SIZE(mmss_noc_nodes), 359 + .bcms = mmss_noc_bcms, 360 + .num_bcms = ARRAY_SIZE(mmss_noc_bcms), 361 + }; 362 + 363 + static struct qcom_icc_bcm * const system_noc_bcms[] = { 364 + &bcm_mm1, 365 + &bcm_sn0, 366 + &bcm_sn1, 367 + &bcm_sn10, 368 + &bcm_sn11, 369 + &bcm_sn13, 370 + &bcm_sn2, 371 + &bcm_sn3, 372 + &bcm_sn4, 373 + &bcm_sn5, 374 + &bcm_sn8, 375 + }; 376 + 377 + static struct qcom_icc_node * const system_noc_nodes[] = { 378 + [MASTER_SNOC_CFG] = &qhm_snoc_cfg, 379 + [MASTER_A1NOC_SNOC] = &qnm_aggre1_noc, 380 + [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc, 381 + [MASTER_GNOC_SNOC] = &qnm_gladiator_sodv, 382 + [MASTER_MEM_NOC_SNOC] = &qnm_memnoc, 383 + [MASTER_PIMEM] = &qxm_pimem, 384 + [MASTER_GIC] = &xm_gic, 385 + [SLAVE_APPSS] = &qhs_apss, 386 + [SLAVE_SNOC_CNOC] = &qns_cnoc, 387 + [SLAVE_SNOC_MEM_NOC_GC] = &qns_memnoc_gc, 388 + [SLAVE_SNOC_MEM_NOC_SF] = &qns_memnoc_sf, 389 + [SLAVE_OCIMEM] = &qxs_imem, 390 + [SLAVE_PIMEM] = &qxs_pimem, 391 + [SLAVE_SERVICE_SNOC] = &srvc_snoc, 392 + [SLAVE_QDSS_STM] = &xs_qdss_stm, 393 + [SLAVE_TCU] = &xs_sys_tcu_cfg, 394 + [MASTER_CAMNOC_HF0_UNCOMP] = &qxm_camnoc_hf0_uncomp, 395 + [MASTER_CAMNOC_HF1_UNCOMP] = &qxm_camnoc_hf1_uncomp, 396 + [MASTER_CAMNOC_SF_UNCOMP] = &qxm_camnoc_sf_uncomp, 397 + [SLAVE_CAMNOC_UNCOMP] = &qns_camnoc_uncomp, 398 + }; 399 + 400 + static const struct qcom_icc_desc sdm670_system_noc = { 401 + .nodes = system_noc_nodes, 402 + .num_nodes = ARRAY_SIZE(system_noc_nodes), 403 + .bcms = system_noc_bcms, 404 + .num_bcms = ARRAY_SIZE(system_noc_bcms), 405 + }; 406 + 407 + static const struct of_device_id qnoc_of_match[] = { 408 + { .compatible = "qcom,sdm670-aggre1-noc", 409 + .data = &sdm670_aggre1_noc}, 410 + { .compatible = "qcom,sdm670-aggre2-noc", 411 + .data = &sdm670_aggre2_noc}, 412 + { .compatible = "qcom,sdm670-config-noc", 413 + .data = &sdm670_config_noc}, 414 + { .compatible = "qcom,sdm670-dc-noc", 415 + .data = &sdm670_dc_noc}, 416 + { .compatible = "qcom,sdm670-gladiator-noc", 417 + .data = &sdm670_gladiator_noc}, 418 + { .compatible = "qcom,sdm670-mem-noc", 419 + .data = &sdm670_mem_noc}, 420 + { .compatible = "qcom,sdm670-mmss-noc", 421 + .data = &sdm670_mmss_noc}, 422 + { .compatible = "qcom,sdm670-system-noc", 423 + .data = &sdm670_system_noc}, 424 + { } 425 + }; 426 + MODULE_DEVICE_TABLE(of, qnoc_of_match); 427 + 428 + static struct platform_driver qnoc_driver = { 429 + .probe = qcom_icc_rpmh_probe, 430 + .remove = qcom_icc_rpmh_remove, 431 + .driver = { 432 + .name = "qnoc-sdm670", 433 + .of_match_table = qnoc_of_match, 434 + .sync_state = icc_sync_state, 435 + }, 436 + }; 437 + module_platform_driver(qnoc_driver); 438 + 439 + MODULE_DESCRIPTION("Qualcomm SDM670 NoC driver"); 440 + MODULE_LICENSE("GPL");
+128
drivers/interconnect/qcom/sdm670.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + /* 3 + * Qualcomm #define SDM670 interconnect IDs 4 + * 5 + * Copyright (c) 2020, The Linux Foundation. All rights reserved. 6 + */ 7 + 8 + #ifndef __DRIVERS_INTERCONNECT_QCOM_SDM670_H 9 + #define __DRIVERS_INTERCONNECT_QCOM_SDM670_H 10 + 11 + #define SDM670_MASTER_A1NOC_CFG 0 12 + #define SDM670_MASTER_A1NOC_SNOC 1 13 + #define SDM670_MASTER_A2NOC_CFG 2 14 + #define SDM670_MASTER_A2NOC_SNOC 3 15 + #define SDM670_MASTER_AMPSS_M0 4 16 + #define SDM670_MASTER_BLSP_1 5 17 + #define SDM670_MASTER_BLSP_2 6 18 + #define SDM670_MASTER_CAMNOC_HF0 7 19 + #define SDM670_MASTER_CAMNOC_HF0_UNCOMP 8 20 + #define SDM670_MASTER_CAMNOC_HF1 9 21 + #define SDM670_MASTER_CAMNOC_HF1_UNCOMP 10 22 + #define SDM670_MASTER_CAMNOC_SF 11 23 + #define SDM670_MASTER_CAMNOC_SF_UNCOMP 12 24 + #define SDM670_MASTER_CNOC_A2NOC 13 25 + #define SDM670_MASTER_CNOC_DC_NOC 14 26 + #define SDM670_MASTER_CNOC_MNOC_CFG 15 27 + #define SDM670_MASTER_CRYPTO_CORE_0 16 28 + #define SDM670_MASTER_EMMC 17 29 + #define SDM670_MASTER_GIC 18 30 + #define SDM670_MASTER_GNOC_CFG 19 31 + #define SDM670_MASTER_GNOC_MEM_NOC 20 32 + #define SDM670_MASTER_GNOC_SNOC 21 33 + #define SDM670_MASTER_GRAPHICS_3D 22 34 + #define SDM670_MASTER_IPA 23 35 + #define SDM670_MASTER_LLCC 24 36 + #define SDM670_MASTER_MDP_PORT0 25 37 + #define SDM670_MASTER_MDP_PORT1 26 38 + #define SDM670_MASTER_MEM_NOC_CFG 27 39 + #define SDM670_MASTER_MEM_NOC_SNOC 28 40 + #define SDM670_MASTER_MNOC_HF_MEM_NOC 29 41 + #define SDM670_MASTER_MNOC_SF_MEM_NOC 30 42 + #define SDM670_MASTER_PIMEM 31 43 + #define SDM670_MASTER_QDSS_BAM 32 44 + #define SDM670_MASTER_QDSS_ETR 33 45 + #define SDM670_MASTER_ROTATOR 34 46 + #define SDM670_MASTER_SDCC_2 35 47 + #define SDM670_MASTER_SDCC_4 36 48 + #define SDM670_MASTER_SNOC_CFG 37 49 + #define SDM670_MASTER_SNOC_CNOC 38 50 + #define SDM670_MASTER_SNOC_GC_MEM_NOC 39 51 + #define SDM670_MASTER_SNOC_SF_MEM_NOC 40 52 + #define SDM670_MASTER_SPDM 41 53 + #define SDM670_MASTER_TCU_0 42 54 + #define SDM670_MASTER_TSIF 43 55 + #define SDM670_MASTER_UFS_MEM 44 56 + #define SDM670_MASTER_USB3 45 57 + #define SDM670_MASTER_VIDEO_P0 46 58 + #define SDM670_MASTER_VIDEO_P1 47 59 + #define SDM670_MASTER_VIDEO_PROC 48 60 + #define SDM670_SLAVE_A1NOC_CFG 49 61 + #define SDM670_SLAVE_A1NOC_SNOC 50 62 + #define SDM670_SLAVE_A2NOC_CFG 51 63 + #define SDM670_SLAVE_A2NOC_SNOC 52 64 + #define SDM670_SLAVE_AOP 53 65 + #define SDM670_SLAVE_AOSS 54 66 + #define SDM670_SLAVE_APPSS 55 67 + #define SDM670_SLAVE_BLSP_1 56 68 + #define SDM670_SLAVE_BLSP_2 57 69 + #define SDM670_SLAVE_CAMERA_CFG 58 70 + #define SDM670_SLAVE_CAMNOC_UNCOMP 59 71 + #define SDM670_SLAVE_CDSP_CFG 60 72 + #define SDM670_SLAVE_CLK_CTL 61 73 + #define SDM670_SLAVE_CNOC_A2NOC 62 74 + #define SDM670_SLAVE_CNOC_DDRSS 63 75 + #define SDM670_SLAVE_CNOC_MNOC_CFG 64 76 + #define SDM670_SLAVE_CRYPTO_0_CFG 65 77 + #define SDM670_SLAVE_DCC_CFG 66 78 + #define SDM670_SLAVE_DISPLAY_CFG 67 79 + #define SDM670_SLAVE_EBI_CH0 68 80 + #define SDM670_SLAVE_EMMC_CFG 69 81 + #define SDM670_SLAVE_GLM 70 82 + #define SDM670_SLAVE_GNOC_MEM_NOC 71 83 + #define SDM670_SLAVE_GNOC_SNOC 72 84 + #define SDM670_SLAVE_GRAPHICS_3D_CFG 73 85 + #define SDM670_SLAVE_IMEM_CFG 74 86 + #define SDM670_SLAVE_IPA_CFG 75 87 + #define SDM670_SLAVE_LLCC 76 88 + #define SDM670_SLAVE_LLCC_CFG 77 89 + #define SDM670_SLAVE_MEM_NOC_CFG 78 90 + #define SDM670_SLAVE_MEM_NOC_GNOC 79 91 + #define SDM670_SLAVE_MEM_NOC_SNOC 80 92 + #define SDM670_SLAVE_MNOC_HF_MEM_NOC 81 93 + #define SDM670_SLAVE_MNOC_SF_MEM_NOC 82 94 + #define SDM670_SLAVE_MSS_PROC_MS_MPU_CFG 83 95 + #define SDM670_SLAVE_OCIMEM 84 96 + #define SDM670_SLAVE_PDM 85 97 + #define SDM670_SLAVE_PIMEM 86 98 + #define SDM670_SLAVE_PIMEM_CFG 87 99 + #define SDM670_SLAVE_PRNG 88 100 + #define SDM670_SLAVE_QDSS_CFG 89 101 + #define SDM670_SLAVE_QDSS_STM 90 102 + #define SDM670_SLAVE_RBCPR_CX_CFG 91 103 + #define SDM670_SLAVE_SDCC_2 92 104 + #define SDM670_SLAVE_SDCC_4 93 105 + #define SDM670_SLAVE_SERVICE_A1NOC 94 106 + #define SDM670_SLAVE_SERVICE_A2NOC 95 107 + #define SDM670_SLAVE_SERVICE_CNOC 96 108 + #define SDM670_SLAVE_SERVICE_GNOC 97 109 + #define SDM670_SLAVE_SERVICE_MEM_NOC 98 110 + #define SDM670_SLAVE_SERVICE_MNOC 99 111 + #define SDM670_SLAVE_SERVICE_SNOC 100 112 + #define SDM670_SLAVE_SNOC_CFG 101 113 + #define SDM670_SLAVE_SNOC_CNOC 102 114 + #define SDM670_SLAVE_SNOC_MEM_NOC_GC 103 115 + #define SDM670_SLAVE_SNOC_MEM_NOC_SF 104 116 + #define SDM670_SLAVE_SOUTH_PHY_CFG 105 117 + #define SDM670_SLAVE_SPDM_WRAPPER 106 118 + #define SDM670_SLAVE_TCSR 107 119 + #define SDM670_SLAVE_TCU 108 120 + #define SDM670_SLAVE_TLMM_NORTH 109 121 + #define SDM670_SLAVE_TLMM_SOUTH 110 122 + #define SDM670_SLAVE_TSIF 111 123 + #define SDM670_SLAVE_UFS_MEM_CFG 112 124 + #define SDM670_SLAVE_USB3 113 125 + #define SDM670_SLAVE_VENUS_CFG 114 126 + #define SDM670_SLAVE_VSENSE_CTRL_CFG 115 127 + 128 + #endif
+2 -2
drivers/interconnect/qcom/sdx55.h
··· 6 6 #ifndef __DRIVERS_INTERCONNECT_QCOM_SDX55_H 7 7 #define __DRIVERS_INTERCONNECT_QCOM_SDX55_H 8 8 9 - #define SDX55_MASTER_IPA_CORE 0 9 + /* 0 was used by MASTER_IPA_CORE, now represented as RPMh clock */ 10 10 #define SDX55_MASTER_LLCC 1 11 11 #define SDX55_MASTER_TCU_0 2 12 12 #define SDX55_MASTER_SNOC_GC_MEM_NOC 3 ··· 28 28 #define SDX55_MASTER_QDSS_ETR 19 29 29 #define SDX55_MASTER_SDCC_1 20 30 30 #define SDX55_MASTER_USB3 21 31 - #define SDX55_SLAVE_IPA_CORE 22 31 + /* 22 was used by SLAVE_IPA_CORE, now represented as RPMh clock */ 32 32 #define SDX55_SLAVE_EBI_CH0 23 33 33 #define SDX55_SLAVE_LLCC 24 34 34 #define SDX55_SLAVE_MEM_NOC_SNOC 25
-21
drivers/interconnect/qcom/sm8150.c
··· 56 56 DEFINE_QNODE(qnm_snoc_gc, SM8150_MASTER_SNOC_GC_MEM_NOC, 1, 8, SM8150_SLAVE_LLCC); 57 57 DEFINE_QNODE(qnm_snoc_sf, SM8150_MASTER_SNOC_SF_MEM_NOC, 1, 16, SM8150_SLAVE_LLCC); 58 58 DEFINE_QNODE(qxm_ecc, SM8150_MASTER_ECC, 2, 32, SM8150_SLAVE_LLCC); 59 - DEFINE_QNODE(ipa_core_master, SM8150_MASTER_IPA_CORE, 1, 8, SM8150_SLAVE_IPA_CORE); 60 59 DEFINE_QNODE(llcc_mc, SM8150_MASTER_LLCC, 4, 4, SM8150_SLAVE_EBI_CH0); 61 60 DEFINE_QNODE(qhm_mnoc_cfg, SM8150_MASTER_CNOC_MNOC_CFG, 1, 4, SM8150_SLAVE_SERVICE_MNOC); 62 61 DEFINE_QNODE(qxm_camnoc_hf0, SM8150_MASTER_CAMNOC_HF0, 1, 32, SM8150_SLAVE_MNOC_HF_MEM_NOC); ··· 138 139 DEFINE_QNODE(qns_gem_noc_snoc, SM8150_SLAVE_GEM_NOC_SNOC, 1, 8, SM8150_MASTER_GEM_NOC_SNOC); 139 140 DEFINE_QNODE(qns_llcc, SM8150_SLAVE_LLCC, 4, 16, SM8150_MASTER_LLCC); 140 141 DEFINE_QNODE(srvc_gemnoc, SM8150_SLAVE_SERVICE_GEM_NOC, 1, 4); 141 - DEFINE_QNODE(ipa_core_slave, SM8150_SLAVE_IPA_CORE, 1, 8); 142 142 DEFINE_QNODE(ebi, SM8150_SLAVE_EBI_CH0, 4, 4); 143 143 DEFINE_QNODE(qns2_mem_noc, SM8150_SLAVE_MNOC_SF_MEM_NOC, 1, 32, SM8150_MASTER_MNOC_SF_MEM_NOC); 144 144 DEFINE_QNODE(qns_mem_noc_hf, SM8150_SLAVE_MNOC_HF_MEM_NOC, 2, 32, SM8150_MASTER_MNOC_HF_MEM_NOC); ··· 170 172 DEFINE_QBCM(bcm_ce0, "CE0", false, &qxm_crypto); 171 173 DEFINE_QBCM(bcm_sn1, "SN1", false, &qxs_imem); 172 174 DEFINE_QBCM(bcm_co1, "CO1", false, &qnm_npu); 173 - DEFINE_QBCM(bcm_ip0, "IP0", false, &ipa_core_slave); 174 175 DEFINE_QBCM(bcm_cn0, "CN0", true, &qhm_spdm, &qnm_snoc, &qhs_a1_noc_cfg, &qhs_a2_noc_cfg, &qhs_ahb2phy_south, &qhs_aop, &qhs_aoss, &qhs_camera_cfg, &qhs_clk_ctl, &qhs_compute_dsp, &qhs_cpr_cx, &qhs_cpr_mmcx, &qhs_cpr_mx, &qhs_crypto0_cfg, &qhs_ddrss_cfg, &qhs_display_cfg, &qhs_emac_cfg, &qhs_glm, &qhs_gpuss_cfg, &qhs_imem_cfg, &qhs_ipa, &qhs_mnoc_cfg, &qhs_npu_cfg, &qhs_pcie0_cfg, &qhs_pcie1_cfg, &qhs_phy_refgen_north, &qhs_pimem_cfg, &qhs_prng, &qhs_qdss_cfg, &qhs_qspi, &qhs_qupv3_east, &qhs_qupv3_north, &qhs_qupv3_south, &qhs_sdc2, &qhs_sdc4, &qhs_snoc_cfg, &qhs_spdm, &qhs_spss_cfg, &qhs_ssc_cfg, &qhs_tcsr, &qhs_tlmm_east, &qhs_tlmm_north, &qhs_tlmm_south, &qhs_tlmm_west, &qhs_tsif, &qhs_ufs_card_cfg, &qhs_ufs_mem_cfg, &qhs_usb3_0, &qhs_usb3_1, &qhs_venus_cfg, &qhs_vsense_ctrl_cfg, &qns_cnoc_a2noc, &srvc_cnoc); 175 176 DEFINE_QBCM(bcm_qup0, "QUP0", false, &qhm_qup0, &qhm_qup1, &qhm_qup2); 176 177 DEFINE_QBCM(bcm_sn2, "SN2", false, &qns_gemnoc_gc); ··· 395 398 .num_bcms = ARRAY_SIZE(gem_noc_bcms), 396 399 }; 397 400 398 - static struct qcom_icc_bcm * const ipa_virt_bcms[] = { 399 - &bcm_ip0, 400 - }; 401 - 402 - static struct qcom_icc_node * const ipa_virt_nodes[] = { 403 - [MASTER_IPA_CORE] = &ipa_core_master, 404 - [SLAVE_IPA_CORE] = &ipa_core_slave, 405 - }; 406 - 407 - static const struct qcom_icc_desc sm8150_ipa_virt = { 408 - .nodes = ipa_virt_nodes, 409 - .num_nodes = ARRAY_SIZE(ipa_virt_nodes), 410 - .bcms = ipa_virt_bcms, 411 - .num_bcms = ARRAY_SIZE(ipa_virt_bcms), 412 - }; 413 - 414 401 static struct qcom_icc_bcm * const mc_virt_bcms[] = { 415 402 &bcm_acv, 416 403 &bcm_mc0, ··· 498 517 .data = &sm8150_dc_noc}, 499 518 { .compatible = "qcom,sm8150-gem-noc", 500 519 .data = &sm8150_gem_noc}, 501 - { .compatible = "qcom,sm8150-ipa-virt", 502 - .data = &sm8150_ipa_virt}, 503 520 { .compatible = "qcom,sm8150-mc-virt", 504 521 .data = &sm8150_mc_virt}, 505 522 { .compatible = "qcom,sm8150-mmss-noc",
+2 -2
drivers/interconnect/qcom/sm8150.h
··· 35 35 #define SM8150_MASTER_GPU_TCU 24 36 36 #define SM8150_MASTER_GRAPHICS_3D 25 37 37 #define SM8150_MASTER_IPA 26 38 - #define SM8150_MASTER_IPA_CORE 27 38 + /* 27 was used by SLAVE_IPA_CORE, now represented as RPMh clock */ 39 39 #define SM8150_MASTER_LLCC 28 40 40 #define SM8150_MASTER_MDP_PORT0 29 41 41 #define SM8150_MASTER_MDP_PORT1 30 ··· 94 94 #define SM8150_SLAVE_GRAPHICS_3D_CFG 83 95 95 #define SM8150_SLAVE_IMEM_CFG 84 96 96 #define SM8150_SLAVE_IPA_CFG 85 97 - #define SM8150_SLAVE_IPA_CORE 86 97 + /* 86 was used by SLAVE_IPA_CORE, now represented as RPMh clock */ 98 98 #define SM8150_SLAVE_LLCC 87 99 99 #define SM8150_SLAVE_LLCC_CFG 88 100 100 #define SM8150_SLAVE_MNOC_HF_MEM_NOC 89
-21
drivers/interconnect/qcom/sm8250.c
··· 51 51 DEFINE_QNODE(qnm_pcie, SM8250_MASTER_ANOC_PCIE_GEM_NOC, 1, 16, SM8250_SLAVE_LLCC, SM8250_SLAVE_GEM_NOC_SNOC); 52 52 DEFINE_QNODE(qnm_snoc_gc, SM8250_MASTER_SNOC_GC_MEM_NOC, 1, 8, SM8250_SLAVE_LLCC); 53 53 DEFINE_QNODE(qnm_snoc_sf, SM8250_MASTER_SNOC_SF_MEM_NOC, 1, 16, SM8250_SLAVE_LLCC, SM8250_SLAVE_GEM_NOC_SNOC, SM8250_SLAVE_MEM_NOC_PCIE_SNOC); 54 - DEFINE_QNODE(ipa_core_master, SM8250_MASTER_IPA_CORE, 1, 8, SM8250_SLAVE_IPA_CORE); 55 54 DEFINE_QNODE(llcc_mc, SM8250_MASTER_LLCC, 4, 4, SM8250_SLAVE_EBI_CH0); 56 55 DEFINE_QNODE(qhm_mnoc_cfg, SM8250_MASTER_CNOC_MNOC_CFG, 1, 4, SM8250_SLAVE_SERVICE_MNOC); 57 56 DEFINE_QNODE(qnm_camnoc_hf, SM8250_MASTER_CAMNOC_HF, 2, 32, SM8250_SLAVE_MNOC_HF_MEM_NOC); ··· 137 138 DEFINE_QNODE(srvc_even_gemnoc, SM8250_SLAVE_SERVICE_GEM_NOC_1, 1, 4); 138 139 DEFINE_QNODE(srvc_odd_gemnoc, SM8250_SLAVE_SERVICE_GEM_NOC_2, 1, 4); 139 140 DEFINE_QNODE(srvc_sys_gemnoc, SM8250_SLAVE_SERVICE_GEM_NOC, 1, 4); 140 - DEFINE_QNODE(ipa_core_slave, SM8250_SLAVE_IPA_CORE, 1, 8); 141 141 DEFINE_QNODE(ebi, SM8250_SLAVE_EBI_CH0, 4, 4); 142 142 DEFINE_QNODE(qns_mem_noc_hf, SM8250_SLAVE_MNOC_HF_MEM_NOC, 2, 32, SM8250_MASTER_MNOC_HF_MEM_NOC); 143 143 DEFINE_QNODE(qns_mem_noc_sf, SM8250_SLAVE_MNOC_SF_MEM_NOC, 2, 32, SM8250_MASTER_MNOC_SF_MEM_NOC); ··· 169 171 DEFINE_QBCM(bcm_sh0, "SH0", true, &qns_llcc); 170 172 DEFINE_QBCM(bcm_mm0, "MM0", true, &qns_mem_noc_hf); 171 173 DEFINE_QBCM(bcm_ce0, "CE0", false, &qxm_crypto); 172 - DEFINE_QBCM(bcm_ip0, "IP0", false, &ipa_core_slave); 173 174 DEFINE_QBCM(bcm_mm1, "MM1", false, &qnm_camnoc_hf, &qxm_mdp0, &qxm_mdp1); 174 175 DEFINE_QBCM(bcm_sh2, "SH2", false, &alm_gpu_tcu, &alm_sys_tcu); 175 176 DEFINE_QBCM(bcm_mm2, "MM2", false, &qns_mem_noc_sf); ··· 383 386 .num_bcms = ARRAY_SIZE(gem_noc_bcms), 384 387 }; 385 388 386 - static struct qcom_icc_bcm * const ipa_virt_bcms[] = { 387 - &bcm_ip0, 388 - }; 389 - 390 - static struct qcom_icc_node * const ipa_virt_nodes[] = { 391 - [MASTER_IPA_CORE] = &ipa_core_master, 392 - [SLAVE_IPA_CORE] = &ipa_core_slave, 393 - }; 394 - 395 - static const struct qcom_icc_desc sm8250_ipa_virt = { 396 - .nodes = ipa_virt_nodes, 397 - .num_nodes = ARRAY_SIZE(ipa_virt_nodes), 398 - .bcms = ipa_virt_bcms, 399 - .num_bcms = ARRAY_SIZE(ipa_virt_bcms), 400 - }; 401 - 402 389 static struct qcom_icc_bcm * const mc_virt_bcms[] = { 403 390 &bcm_acv, 404 391 &bcm_mc0, ··· 512 531 .data = &sm8250_dc_noc}, 513 532 { .compatible = "qcom,sm8250-gem-noc", 514 533 .data = &sm8250_gem_noc}, 515 - { .compatible = "qcom,sm8250-ipa-virt", 516 - .data = &sm8250_ipa_virt}, 517 534 { .compatible = "qcom,sm8250-mc-virt", 518 535 .data = &sm8250_mc_virt}, 519 536 { .compatible = "qcom,sm8250-mmss-noc",
+2 -2
drivers/interconnect/qcom/sm8250.h
··· 31 31 #define SM8250_MASTER_GPU_TCU 20 32 32 #define SM8250_MASTER_GRAPHICS_3D 21 33 33 #define SM8250_MASTER_IPA 22 34 - #define SM8250_MASTER_IPA_CORE 23 34 + /* 23 was used by MASTER_IPA_CORE, now represented as RPMh clock */ 35 35 #define SM8250_MASTER_LLCC 24 36 36 #define SM8250_MASTER_MDP_PORT0 25 37 37 #define SM8250_MASTER_MDP_PORT1 26 ··· 92 92 #define SM8250_SLAVE_GRAPHICS_3D_CFG 81 93 93 #define SM8250_SLAVE_IMEM_CFG 82 94 94 #define SM8250_SLAVE_IPA_CFG 83 95 - #define SM8250_SLAVE_IPA_CORE 84 95 + /* 84 was used by SLAVE_IPA_CORE, now represented as RPMh clock */ 96 96 #define SM8250_SLAVE_IPC_ROUTER_CFG 85 97 97 #define SM8250_SLAVE_ISENSE_CFG 86 98 98 #define SM8250_SLAVE_LLCC 87
+2318
drivers/interconnect/qcom/sm8550.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-only 2 + /* 3 + * Copyright (c) 2021, The Linux Foundation. All rights reserved. 4 + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. 5 + * Copyright (c) 2022, Linaro Limited 6 + * 7 + */ 8 + 9 + #include <linux/device.h> 10 + #include <linux/interconnect.h> 11 + #include <linux/interconnect-provider.h> 12 + #include <linux/module.h> 13 + #include <linux/of_platform.h> 14 + #include <dt-bindings/interconnect/qcom,sm8550-rpmh.h> 15 + 16 + #include "bcm-voter.h" 17 + #include "icc-common.h" 18 + #include "icc-rpmh.h" 19 + #include "sm8550.h" 20 + 21 + static struct qcom_icc_node qhm_qspi = { 22 + .name = "qhm_qspi", 23 + .id = SM8550_MASTER_QSPI_0, 24 + .channels = 1, 25 + .buswidth = 4, 26 + .num_links = 1, 27 + .links = { SM8550_SLAVE_A1NOC_SNOC }, 28 + }; 29 + 30 + static struct qcom_icc_node qhm_qup1 = { 31 + .name = "qhm_qup1", 32 + .id = SM8550_MASTER_QUP_1, 33 + .channels = 1, 34 + .buswidth = 4, 35 + .num_links = 1, 36 + .links = { SM8550_SLAVE_A1NOC_SNOC }, 37 + }; 38 + 39 + static struct qcom_icc_node xm_sdc4 = { 40 + .name = "xm_sdc4", 41 + .id = SM8550_MASTER_SDCC_4, 42 + .channels = 1, 43 + .buswidth = 8, 44 + .num_links = 1, 45 + .links = { SM8550_SLAVE_A1NOC_SNOC }, 46 + }; 47 + 48 + static struct qcom_icc_node xm_ufs_mem = { 49 + .name = "xm_ufs_mem", 50 + .id = SM8550_MASTER_UFS_MEM, 51 + .channels = 1, 52 + .buswidth = 16, 53 + .num_links = 1, 54 + .links = { SM8550_SLAVE_A1NOC_SNOC }, 55 + }; 56 + 57 + static struct qcom_icc_node xm_usb3_0 = { 58 + .name = "xm_usb3_0", 59 + .id = SM8550_MASTER_USB3_0, 60 + .channels = 1, 61 + .buswidth = 8, 62 + .num_links = 1, 63 + .links = { SM8550_SLAVE_A1NOC_SNOC }, 64 + }; 65 + 66 + static struct qcom_icc_node qhm_qdss_bam = { 67 + .name = "qhm_qdss_bam", 68 + .id = SM8550_MASTER_QDSS_BAM, 69 + .channels = 1, 70 + .buswidth = 4, 71 + .num_links = 1, 72 + .links = { SM8550_SLAVE_A2NOC_SNOC }, 73 + }; 74 + 75 + static struct qcom_icc_node qhm_qup2 = { 76 + .name = "qhm_qup2", 77 + .id = SM8550_MASTER_QUP_2, 78 + .channels = 1, 79 + .buswidth = 4, 80 + .num_links = 1, 81 + .links = { SM8550_SLAVE_A2NOC_SNOC }, 82 + }; 83 + 84 + static struct qcom_icc_node qxm_crypto = { 85 + .name = "qxm_crypto", 86 + .id = SM8550_MASTER_CRYPTO, 87 + .channels = 1, 88 + .buswidth = 8, 89 + .num_links = 1, 90 + .links = { SM8550_SLAVE_A2NOC_SNOC }, 91 + }; 92 + 93 + static struct qcom_icc_node qxm_ipa = { 94 + .name = "qxm_ipa", 95 + .id = SM8550_MASTER_IPA, 96 + .channels = 1, 97 + .buswidth = 8, 98 + .num_links = 1, 99 + .links = { SM8550_SLAVE_A2NOC_SNOC }, 100 + }; 101 + 102 + static struct qcom_icc_node qxm_sp = { 103 + .name = "qxm_sp", 104 + .id = SM8550_MASTER_SP, 105 + .channels = 1, 106 + .buswidth = 8, 107 + .num_links = 1, 108 + .links = { SM8550_SLAVE_A2NOC_SNOC }, 109 + }; 110 + 111 + static struct qcom_icc_node xm_qdss_etr_0 = { 112 + .name = "xm_qdss_etr_0", 113 + .id = SM8550_MASTER_QDSS_ETR, 114 + .channels = 1, 115 + .buswidth = 8, 116 + .num_links = 1, 117 + .links = { SM8550_SLAVE_A2NOC_SNOC }, 118 + }; 119 + 120 + static struct qcom_icc_node xm_qdss_etr_1 = { 121 + .name = "xm_qdss_etr_1", 122 + .id = SM8550_MASTER_QDSS_ETR_1, 123 + .channels = 1, 124 + .buswidth = 8, 125 + .num_links = 1, 126 + .links = { SM8550_SLAVE_A2NOC_SNOC }, 127 + }; 128 + 129 + static struct qcom_icc_node xm_sdc2 = { 130 + .name = "xm_sdc2", 131 + .id = SM8550_MASTER_SDCC_2, 132 + .channels = 1, 133 + .buswidth = 8, 134 + .num_links = 1, 135 + .links = { SM8550_SLAVE_A2NOC_SNOC }, 136 + }; 137 + 138 + static struct qcom_icc_node qup0_core_master = { 139 + .name = "qup0_core_master", 140 + .id = SM8550_MASTER_QUP_CORE_0, 141 + .channels = 1, 142 + .buswidth = 4, 143 + .num_links = 1, 144 + .links = { SM8550_SLAVE_QUP_CORE_0 }, 145 + }; 146 + 147 + static struct qcom_icc_node qup1_core_master = { 148 + .name = "qup1_core_master", 149 + .id = SM8550_MASTER_QUP_CORE_1, 150 + .channels = 1, 151 + .buswidth = 4, 152 + .num_links = 1, 153 + .links = { SM8550_SLAVE_QUP_CORE_1 }, 154 + }; 155 + 156 + static struct qcom_icc_node qup2_core_master = { 157 + .name = "qup2_core_master", 158 + .id = SM8550_MASTER_QUP_CORE_2, 159 + .channels = 1, 160 + .buswidth = 4, 161 + .num_links = 1, 162 + .links = { SM8550_SLAVE_QUP_CORE_2 }, 163 + }; 164 + 165 + static struct qcom_icc_node qsm_cfg = { 166 + .name = "qsm_cfg", 167 + .id = SM8550_MASTER_CNOC_CFG, 168 + .channels = 1, 169 + .buswidth = 4, 170 + .num_links = 44, 171 + .links = { SM8550_SLAVE_AHB2PHY_SOUTH, SM8550_SLAVE_AHB2PHY_NORTH, 172 + SM8550_SLAVE_APPSS, SM8550_SLAVE_CAMERA_CFG, 173 + SM8550_SLAVE_CLK_CTL, SM8550_SLAVE_RBCPR_CX_CFG, 174 + SM8550_SLAVE_RBCPR_MMCX_CFG, SM8550_SLAVE_RBCPR_MXA_CFG, 175 + SM8550_SLAVE_RBCPR_MXC_CFG, SM8550_SLAVE_CPR_NSPCX, 176 + SM8550_SLAVE_CRYPTO_0_CFG, SM8550_SLAVE_CX_RDPM, 177 + SM8550_SLAVE_DISPLAY_CFG, SM8550_SLAVE_GFX3D_CFG, 178 + SM8550_SLAVE_I2C, SM8550_SLAVE_IMEM_CFG, 179 + SM8550_SLAVE_IPA_CFG, SM8550_SLAVE_IPC_ROUTER_CFG, 180 + SM8550_SLAVE_CNOC_MSS, SM8550_SLAVE_MX_RDPM, 181 + SM8550_SLAVE_PCIE_0_CFG, SM8550_SLAVE_PCIE_1_CFG, 182 + SM8550_SLAVE_PDM, SM8550_SLAVE_PIMEM_CFG, 183 + SM8550_SLAVE_PRNG, SM8550_SLAVE_QDSS_CFG, 184 + SM8550_SLAVE_QSPI_0, SM8550_SLAVE_QUP_1, 185 + SM8550_SLAVE_QUP_2, SM8550_SLAVE_SDCC_2, 186 + SM8550_SLAVE_SDCC_4, SM8550_SLAVE_SPSS_CFG, 187 + SM8550_SLAVE_TCSR, SM8550_SLAVE_TLMM, 188 + SM8550_SLAVE_UFS_MEM_CFG, SM8550_SLAVE_USB3_0, 189 + SM8550_SLAVE_VENUS_CFG, SM8550_SLAVE_VSENSE_CTRL_CFG, 190 + SM8550_SLAVE_LPASS_QTB_CFG, SM8550_SLAVE_CNOC_MNOC_CFG, 191 + SM8550_SLAVE_NSP_QTB_CFG, SM8550_SLAVE_PCIE_ANOC_CFG, 192 + SM8550_SLAVE_QDSS_STM, SM8550_SLAVE_TCU }, 193 + }; 194 + 195 + static struct qcom_icc_node qnm_gemnoc_cnoc = { 196 + .name = "qnm_gemnoc_cnoc", 197 + .id = SM8550_MASTER_GEM_NOC_CNOC, 198 + .channels = 1, 199 + .buswidth = 16, 200 + .num_links = 6, 201 + .links = { SM8550_SLAVE_AOSS, SM8550_SLAVE_TME_CFG, 202 + SM8550_SLAVE_CNOC_CFG, SM8550_SLAVE_DDRSS_CFG, 203 + SM8550_SLAVE_BOOT_IMEM, SM8550_SLAVE_IMEM }, 204 + }; 205 + 206 + static struct qcom_icc_node qnm_gemnoc_pcie = { 207 + .name = "qnm_gemnoc_pcie", 208 + .id = SM8550_MASTER_GEM_NOC_PCIE_SNOC, 209 + .channels = 1, 210 + .buswidth = 8, 211 + .num_links = 2, 212 + .links = { SM8550_SLAVE_PCIE_0, SM8550_SLAVE_PCIE_1 }, 213 + }; 214 + 215 + static struct qcom_icc_node alm_gpu_tcu = { 216 + .name = "alm_gpu_tcu", 217 + .id = SM8550_MASTER_GPU_TCU, 218 + .channels = 1, 219 + .buswidth = 8, 220 + .num_links = 2, 221 + .links = { SM8550_SLAVE_GEM_NOC_CNOC, SM8550_SLAVE_LLCC }, 222 + }; 223 + 224 + static struct qcom_icc_node alm_sys_tcu = { 225 + .name = "alm_sys_tcu", 226 + .id = SM8550_MASTER_SYS_TCU, 227 + .channels = 1, 228 + .buswidth = 8, 229 + .num_links = 2, 230 + .links = { SM8550_SLAVE_GEM_NOC_CNOC, SM8550_SLAVE_LLCC }, 231 + }; 232 + 233 + static struct qcom_icc_node chm_apps = { 234 + .name = "chm_apps", 235 + .id = SM8550_MASTER_APPSS_PROC, 236 + .channels = 3, 237 + .buswidth = 32, 238 + .num_links = 3, 239 + .links = { SM8550_SLAVE_GEM_NOC_CNOC, SM8550_SLAVE_LLCC, 240 + SM8550_SLAVE_MEM_NOC_PCIE_SNOC }, 241 + }; 242 + 243 + static struct qcom_icc_node qnm_gpu = { 244 + .name = "qnm_gpu", 245 + .id = SM8550_MASTER_GFX3D, 246 + .channels = 2, 247 + .buswidth = 32, 248 + .num_links = 2, 249 + .links = { SM8550_SLAVE_GEM_NOC_CNOC, SM8550_SLAVE_LLCC }, 250 + }; 251 + 252 + static struct qcom_icc_node qnm_lpass_gemnoc = { 253 + .name = "qnm_lpass_gemnoc", 254 + .id = SM8550_MASTER_LPASS_GEM_NOC, 255 + .channels = 1, 256 + .buswidth = 16, 257 + .num_links = 3, 258 + .links = { SM8550_SLAVE_GEM_NOC_CNOC, SM8550_SLAVE_LLCC, 259 + SM8550_SLAVE_MEM_NOC_PCIE_SNOC }, 260 + }; 261 + 262 + static struct qcom_icc_node qnm_mdsp = { 263 + .name = "qnm_mdsp", 264 + .id = SM8550_MASTER_MSS_PROC, 265 + .channels = 1, 266 + .buswidth = 16, 267 + .num_links = 3, 268 + .links = { SM8550_SLAVE_GEM_NOC_CNOC, SM8550_SLAVE_LLCC, 269 + SM8550_SLAVE_MEM_NOC_PCIE_SNOC }, 270 + }; 271 + 272 + static struct qcom_icc_node qnm_mnoc_hf = { 273 + .name = "qnm_mnoc_hf", 274 + .id = SM8550_MASTER_MNOC_HF_MEM_NOC, 275 + .channels = 2, 276 + .buswidth = 32, 277 + .num_links = 2, 278 + .links = { SM8550_SLAVE_GEM_NOC_CNOC, SM8550_SLAVE_LLCC }, 279 + }; 280 + 281 + static struct qcom_icc_node qnm_mnoc_sf = { 282 + .name = "qnm_mnoc_sf", 283 + .id = SM8550_MASTER_MNOC_SF_MEM_NOC, 284 + .channels = 2, 285 + .buswidth = 32, 286 + .num_links = 2, 287 + .links = { SM8550_SLAVE_GEM_NOC_CNOC, SM8550_SLAVE_LLCC }, 288 + }; 289 + 290 + static struct qcom_icc_node qnm_nsp_gemnoc = { 291 + .name = "qnm_nsp_gemnoc", 292 + .id = SM8550_MASTER_COMPUTE_NOC, 293 + .channels = 2, 294 + .buswidth = 32, 295 + .num_links = 2, 296 + .links = { SM8550_SLAVE_GEM_NOC_CNOC, SM8550_SLAVE_LLCC }, 297 + }; 298 + 299 + static struct qcom_icc_node qnm_pcie = { 300 + .name = "qnm_pcie", 301 + .id = SM8550_MASTER_ANOC_PCIE_GEM_NOC, 302 + .channels = 1, 303 + .buswidth = 16, 304 + .num_links = 2, 305 + .links = { SM8550_SLAVE_GEM_NOC_CNOC, SM8550_SLAVE_LLCC }, 306 + }; 307 + 308 + static struct qcom_icc_node qnm_snoc_gc = { 309 + .name = "qnm_snoc_gc", 310 + .id = SM8550_MASTER_SNOC_GC_MEM_NOC, 311 + .channels = 1, 312 + .buswidth = 8, 313 + .num_links = 1, 314 + .links = { SM8550_SLAVE_LLCC }, 315 + }; 316 + 317 + static struct qcom_icc_node qnm_snoc_sf = { 318 + .name = "qnm_snoc_sf", 319 + .id = SM8550_MASTER_SNOC_SF_MEM_NOC, 320 + .channels = 1, 321 + .buswidth = 16, 322 + .num_links = 3, 323 + .links = { SM8550_SLAVE_GEM_NOC_CNOC, SM8550_SLAVE_LLCC, 324 + SM8550_SLAVE_MEM_NOC_PCIE_SNOC }, 325 + }; 326 + 327 + static struct qcom_icc_node qnm_lpiaon_noc = { 328 + .name = "qnm_lpiaon_noc", 329 + .id = SM8550_MASTER_LPIAON_NOC, 330 + .channels = 1, 331 + .buswidth = 16, 332 + .num_links = 1, 333 + .links = { SM8550_SLAVE_LPASS_GEM_NOC }, 334 + }; 335 + 336 + static struct qcom_icc_node qnm_lpass_lpinoc = { 337 + .name = "qnm_lpass_lpinoc", 338 + .id = SM8550_MASTER_LPASS_LPINOC, 339 + .channels = 1, 340 + .buswidth = 16, 341 + .num_links = 1, 342 + .links = { SM8550_SLAVE_LPIAON_NOC_LPASS_AG_NOC }, 343 + }; 344 + 345 + static struct qcom_icc_node qxm_lpinoc_dsp_axim = { 346 + .name = "qxm_lpinoc_dsp_axim", 347 + .id = SM8550_MASTER_LPASS_PROC, 348 + .channels = 1, 349 + .buswidth = 16, 350 + .num_links = 1, 351 + .links = { SM8550_SLAVE_LPICX_NOC_LPIAON_NOC }, 352 + }; 353 + 354 + static struct qcom_icc_node llcc_mc = { 355 + .name = "llcc_mc", 356 + .id = SM8550_MASTER_LLCC, 357 + .channels = 4, 358 + .buswidth = 4, 359 + .num_links = 1, 360 + .links = { SM8550_SLAVE_EBI1 }, 361 + }; 362 + 363 + static struct qcom_icc_node qnm_camnoc_hf = { 364 + .name = "qnm_camnoc_hf", 365 + .id = SM8550_MASTER_CAMNOC_HF, 366 + .channels = 2, 367 + .buswidth = 32, 368 + .num_links = 1, 369 + .links = { SM8550_SLAVE_MNOC_HF_MEM_NOC }, 370 + }; 371 + 372 + static struct qcom_icc_node qnm_camnoc_icp = { 373 + .name = "qnm_camnoc_icp", 374 + .id = SM8550_MASTER_CAMNOC_ICP, 375 + .channels = 1, 376 + .buswidth = 8, 377 + .num_links = 1, 378 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC }, 379 + }; 380 + 381 + static struct qcom_icc_node qnm_camnoc_sf = { 382 + .name = "qnm_camnoc_sf", 383 + .id = SM8550_MASTER_CAMNOC_SF, 384 + .channels = 2, 385 + .buswidth = 32, 386 + .num_links = 1, 387 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC }, 388 + }; 389 + 390 + static struct qcom_icc_node qnm_mdp = { 391 + .name = "qnm_mdp", 392 + .id = SM8550_MASTER_MDP, 393 + .channels = 2, 394 + .buswidth = 32, 395 + .num_links = 1, 396 + .links = { SM8550_SLAVE_MNOC_HF_MEM_NOC }, 397 + }; 398 + 399 + static struct qcom_icc_node qnm_vapss_hcp = { 400 + .name = "qnm_vapss_hcp", 401 + .id = SM8550_MASTER_CDSP_HCP, 402 + .channels = 1, 403 + .buswidth = 32, 404 + .num_links = 1, 405 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC }, 406 + }; 407 + 408 + static struct qcom_icc_node qnm_video = { 409 + .name = "qnm_video", 410 + .id = SM8550_MASTER_VIDEO, 411 + .channels = 2, 412 + .buswidth = 32, 413 + .num_links = 1, 414 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC }, 415 + }; 416 + 417 + static struct qcom_icc_node qnm_video_cv_cpu = { 418 + .name = "qnm_video_cv_cpu", 419 + .id = SM8550_MASTER_VIDEO_CV_PROC, 420 + .channels = 1, 421 + .buswidth = 8, 422 + .num_links = 1, 423 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC }, 424 + }; 425 + 426 + static struct qcom_icc_node qnm_video_cvp = { 427 + .name = "qnm_video_cvp", 428 + .id = SM8550_MASTER_VIDEO_PROC, 429 + .channels = 1, 430 + .buswidth = 32, 431 + .num_links = 1, 432 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC }, 433 + }; 434 + 435 + static struct qcom_icc_node qnm_video_v_cpu = { 436 + .name = "qnm_video_v_cpu", 437 + .id = SM8550_MASTER_VIDEO_V_PROC, 438 + .channels = 1, 439 + .buswidth = 8, 440 + .num_links = 1, 441 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC }, 442 + }; 443 + 444 + static struct qcom_icc_node qsm_mnoc_cfg = { 445 + .name = "qsm_mnoc_cfg", 446 + .id = SM8550_MASTER_CNOC_MNOC_CFG, 447 + .channels = 1, 448 + .buswidth = 4, 449 + .num_links = 1, 450 + .links = { SM8550_SLAVE_SERVICE_MNOC }, 451 + }; 452 + 453 + static struct qcom_icc_node qxm_nsp = { 454 + .name = "qxm_nsp", 455 + .id = SM8550_MASTER_CDSP_PROC, 456 + .channels = 2, 457 + .buswidth = 32, 458 + .num_links = 1, 459 + .links = { SM8550_SLAVE_CDSP_MEM_NOC }, 460 + }; 461 + 462 + static struct qcom_icc_node qsm_pcie_anoc_cfg = { 463 + .name = "qsm_pcie_anoc_cfg", 464 + .id = SM8550_MASTER_PCIE_ANOC_CFG, 465 + .channels = 1, 466 + .buswidth = 4, 467 + .num_links = 1, 468 + .links = { SM8550_SLAVE_SERVICE_PCIE_ANOC }, 469 + }; 470 + 471 + static struct qcom_icc_node xm_pcie3_0 = { 472 + .name = "xm_pcie3_0", 473 + .id = SM8550_MASTER_PCIE_0, 474 + .channels = 1, 475 + .buswidth = 8, 476 + .num_links = 1, 477 + .links = { SM8550_SLAVE_ANOC_PCIE_GEM_NOC }, 478 + }; 479 + 480 + static struct qcom_icc_node xm_pcie3_1 = { 481 + .name = "xm_pcie3_1", 482 + .id = SM8550_MASTER_PCIE_1, 483 + .channels = 1, 484 + .buswidth = 16, 485 + .num_links = 1, 486 + .links = { SM8550_SLAVE_ANOC_PCIE_GEM_NOC }, 487 + }; 488 + 489 + static struct qcom_icc_node qhm_gic = { 490 + .name = "qhm_gic", 491 + .id = SM8550_MASTER_GIC_AHB, 492 + .channels = 1, 493 + .buswidth = 4, 494 + .num_links = 1, 495 + .links = { SM8550_SLAVE_SNOC_GEM_NOC_SF }, 496 + }; 497 + 498 + static struct qcom_icc_node qnm_aggre1_noc = { 499 + .name = "qnm_aggre1_noc", 500 + .id = SM8550_MASTER_A1NOC_SNOC, 501 + .channels = 1, 502 + .buswidth = 16, 503 + .num_links = 1, 504 + .links = { SM8550_SLAVE_SNOC_GEM_NOC_SF }, 505 + }; 506 + 507 + static struct qcom_icc_node qnm_aggre2_noc = { 508 + .name = "qnm_aggre2_noc", 509 + .id = SM8550_MASTER_A2NOC_SNOC, 510 + .channels = 1, 511 + .buswidth = 16, 512 + .num_links = 1, 513 + .links = { SM8550_SLAVE_SNOC_GEM_NOC_SF }, 514 + }; 515 + 516 + static struct qcom_icc_node xm_gic = { 517 + .name = "xm_gic", 518 + .id = SM8550_MASTER_GIC, 519 + .channels = 1, 520 + .buswidth = 8, 521 + .num_links = 1, 522 + .links = { SM8550_SLAVE_SNOC_GEM_NOC_GC }, 523 + }; 524 + 525 + static struct qcom_icc_node qnm_mnoc_hf_disp = { 526 + .name = "qnm_mnoc_hf_disp", 527 + .id = SM8550_MASTER_MNOC_HF_MEM_NOC_DISP, 528 + .channels = 2, 529 + .buswidth = 32, 530 + .num_links = 1, 531 + .links = { SM8550_SLAVE_LLCC_DISP }, 532 + }; 533 + 534 + static struct qcom_icc_node qnm_pcie_disp = { 535 + .name = "qnm_pcie_disp", 536 + .id = SM8550_MASTER_ANOC_PCIE_GEM_NOC_DISP, 537 + .channels = 1, 538 + .buswidth = 16, 539 + .num_links = 1, 540 + .links = { SM8550_SLAVE_LLCC_DISP }, 541 + }; 542 + 543 + static struct qcom_icc_node llcc_mc_disp = { 544 + .name = "llcc_mc_disp", 545 + .id = SM8550_MASTER_LLCC_DISP, 546 + .channels = 4, 547 + .buswidth = 4, 548 + .num_links = 1, 549 + .links = { SM8550_SLAVE_EBI1_DISP }, 550 + }; 551 + 552 + static struct qcom_icc_node qnm_mdp_disp = { 553 + .name = "qnm_mdp_disp", 554 + .id = SM8550_MASTER_MDP_DISP, 555 + .channels = 2, 556 + .buswidth = 32, 557 + .num_links = 1, 558 + .links = { SM8550_SLAVE_MNOC_HF_MEM_NOC_DISP }, 559 + }; 560 + 561 + static struct qcom_icc_node qnm_mnoc_hf_cam_ife_0 = { 562 + .name = "qnm_mnoc_hf_cam_ife_0", 563 + .id = SM8550_MASTER_MNOC_HF_MEM_NOC_CAM_IFE_0, 564 + .channels = 2, 565 + .buswidth = 32, 566 + .num_links = 1, 567 + .links = { SM8550_SLAVE_LLCC_CAM_IFE_0 }, 568 + }; 569 + 570 + static struct qcom_icc_node qnm_mnoc_sf_cam_ife_0 = { 571 + .name = "qnm_mnoc_sf_cam_ife_0", 572 + .id = SM8550_MASTER_MNOC_SF_MEM_NOC_CAM_IFE_0, 573 + .channels = 2, 574 + .buswidth = 32, 575 + .num_links = 1, 576 + .links = { SM8550_SLAVE_LLCC_CAM_IFE_0 }, 577 + }; 578 + 579 + static struct qcom_icc_node qnm_pcie_cam_ife_0 = { 580 + .name = "qnm_pcie_cam_ife_0", 581 + .id = SM8550_MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_0, 582 + .channels = 1, 583 + .buswidth = 16, 584 + .num_links = 1, 585 + .links = { SM8550_SLAVE_LLCC_CAM_IFE_0 }, 586 + }; 587 + 588 + static struct qcom_icc_node llcc_mc_cam_ife_0 = { 589 + .name = "llcc_mc_cam_ife_0", 590 + .id = SM8550_MASTER_LLCC_CAM_IFE_0, 591 + .channels = 4, 592 + .buswidth = 4, 593 + .num_links = 1, 594 + .links = { SM8550_SLAVE_EBI1_CAM_IFE_0 }, 595 + }; 596 + 597 + static struct qcom_icc_node qnm_camnoc_hf_cam_ife_0 = { 598 + .name = "qnm_camnoc_hf_cam_ife_0", 599 + .id = SM8550_MASTER_CAMNOC_HF_CAM_IFE_0, 600 + .channels = 2, 601 + .buswidth = 32, 602 + .num_links = 1, 603 + .links = { SM8550_SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_0 }, 604 + }; 605 + 606 + static struct qcom_icc_node qnm_camnoc_icp_cam_ife_0 = { 607 + .name = "qnm_camnoc_icp_cam_ife_0", 608 + .id = SM8550_MASTER_CAMNOC_ICP_CAM_IFE_0, 609 + .channels = 1, 610 + .buswidth = 8, 611 + .num_links = 1, 612 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_0 }, 613 + }; 614 + 615 + static struct qcom_icc_node qnm_camnoc_sf_cam_ife_0 = { 616 + .name = "qnm_camnoc_sf_cam_ife_0", 617 + .id = SM8550_MASTER_CAMNOC_SF_CAM_IFE_0, 618 + .channels = 2, 619 + .buswidth = 32, 620 + .num_links = 1, 621 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_0 }, 622 + }; 623 + 624 + static struct qcom_icc_node qnm_mnoc_hf_cam_ife_1 = { 625 + .name = "qnm_mnoc_hf_cam_ife_1", 626 + .id = SM8550_MASTER_MNOC_HF_MEM_NOC_CAM_IFE_1, 627 + .channels = 2, 628 + .buswidth = 32, 629 + .num_links = 1, 630 + .links = { SM8550_SLAVE_LLCC_CAM_IFE_1 }, 631 + }; 632 + 633 + static struct qcom_icc_node qnm_mnoc_sf_cam_ife_1 = { 634 + .name = "qnm_mnoc_sf_cam_ife_1", 635 + .id = SM8550_MASTER_MNOC_SF_MEM_NOC_CAM_IFE_1, 636 + .channels = 2, 637 + .buswidth = 32, 638 + .num_links = 1, 639 + .links = { SM8550_SLAVE_LLCC_CAM_IFE_1 }, 640 + }; 641 + 642 + static struct qcom_icc_node qnm_pcie_cam_ife_1 = { 643 + .name = "qnm_pcie_cam_ife_1", 644 + .id = SM8550_MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_1, 645 + .channels = 1, 646 + .buswidth = 16, 647 + .num_links = 1, 648 + .links = { SM8550_SLAVE_LLCC_CAM_IFE_1 }, 649 + }; 650 + 651 + static struct qcom_icc_node llcc_mc_cam_ife_1 = { 652 + .name = "llcc_mc_cam_ife_1", 653 + .id = SM8550_MASTER_LLCC_CAM_IFE_1, 654 + .channels = 4, 655 + .buswidth = 4, 656 + .num_links = 1, 657 + .links = { SM8550_SLAVE_EBI1_CAM_IFE_1 }, 658 + }; 659 + 660 + static struct qcom_icc_node qnm_camnoc_hf_cam_ife_1 = { 661 + .name = "qnm_camnoc_hf_cam_ife_1", 662 + .id = SM8550_MASTER_CAMNOC_HF_CAM_IFE_1, 663 + .channels = 2, 664 + .buswidth = 32, 665 + .num_links = 1, 666 + .links = { SM8550_SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_1 }, 667 + }; 668 + 669 + static struct qcom_icc_node qnm_camnoc_icp_cam_ife_1 = { 670 + .name = "qnm_camnoc_icp_cam_ife_1", 671 + .id = SM8550_MASTER_CAMNOC_ICP_CAM_IFE_1, 672 + .channels = 1, 673 + .buswidth = 8, 674 + .num_links = 1, 675 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_1 }, 676 + }; 677 + 678 + static struct qcom_icc_node qnm_camnoc_sf_cam_ife_1 = { 679 + .name = "qnm_camnoc_sf_cam_ife_1", 680 + .id = SM8550_MASTER_CAMNOC_SF_CAM_IFE_1, 681 + .channels = 2, 682 + .buswidth = 32, 683 + .num_links = 1, 684 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_1 }, 685 + }; 686 + 687 + static struct qcom_icc_node qnm_mnoc_hf_cam_ife_2 = { 688 + .name = "qnm_mnoc_hf_cam_ife_2", 689 + .id = SM8550_MASTER_MNOC_HF_MEM_NOC_CAM_IFE_2, 690 + .channels = 2, 691 + .buswidth = 32, 692 + .num_links = 1, 693 + .links = { SM8550_SLAVE_LLCC_CAM_IFE_2 }, 694 + }; 695 + 696 + static struct qcom_icc_node qnm_mnoc_sf_cam_ife_2 = { 697 + .name = "qnm_mnoc_sf_cam_ife_2", 698 + .id = SM8550_MASTER_MNOC_SF_MEM_NOC_CAM_IFE_2, 699 + .channels = 2, 700 + .buswidth = 32, 701 + .num_links = 1, 702 + .links = { SM8550_SLAVE_LLCC_CAM_IFE_2 }, 703 + }; 704 + 705 + static struct qcom_icc_node qnm_pcie_cam_ife_2 = { 706 + .name = "qnm_pcie_cam_ife_2", 707 + .id = SM8550_MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_2, 708 + .channels = 1, 709 + .buswidth = 16, 710 + .num_links = 1, 711 + .links = { SM8550_SLAVE_LLCC_CAM_IFE_2 }, 712 + }; 713 + 714 + static struct qcom_icc_node llcc_mc_cam_ife_2 = { 715 + .name = "llcc_mc_cam_ife_2", 716 + .id = SM8550_MASTER_LLCC_CAM_IFE_2, 717 + .channels = 4, 718 + .buswidth = 4, 719 + .num_links = 1, 720 + .links = { SM8550_SLAVE_EBI1_CAM_IFE_2 }, 721 + }; 722 + 723 + static struct qcom_icc_node qnm_camnoc_hf_cam_ife_2 = { 724 + .name = "qnm_camnoc_hf_cam_ife_2", 725 + .id = SM8550_MASTER_CAMNOC_HF_CAM_IFE_2, 726 + .channels = 2, 727 + .buswidth = 32, 728 + .num_links = 1, 729 + .links = { SM8550_SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_2 }, 730 + }; 731 + 732 + static struct qcom_icc_node qnm_camnoc_icp_cam_ife_2 = { 733 + .name = "qnm_camnoc_icp_cam_ife_2", 734 + .id = SM8550_MASTER_CAMNOC_ICP_CAM_IFE_2, 735 + .channels = 1, 736 + .buswidth = 8, 737 + .num_links = 1, 738 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_2 }, 739 + }; 740 + 741 + static struct qcom_icc_node qnm_camnoc_sf_cam_ife_2 = { 742 + .name = "qnm_camnoc_sf_cam_ife_2", 743 + .id = SM8550_MASTER_CAMNOC_SF_CAM_IFE_2, 744 + .channels = 2, 745 + .buswidth = 32, 746 + .num_links = 1, 747 + .links = { SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_2 }, 748 + }; 749 + 750 + static struct qcom_icc_node qns_a1noc_snoc = { 751 + .name = "qns_a1noc_snoc", 752 + .id = SM8550_SLAVE_A1NOC_SNOC, 753 + .channels = 1, 754 + .buswidth = 16, 755 + .num_links = 1, 756 + .links = { SM8550_MASTER_A1NOC_SNOC }, 757 + }; 758 + 759 + static struct qcom_icc_node qns_a2noc_snoc = { 760 + .name = "qns_a2noc_snoc", 761 + .id = SM8550_SLAVE_A2NOC_SNOC, 762 + .channels = 1, 763 + .buswidth = 16, 764 + .num_links = 1, 765 + .links = { SM8550_MASTER_A2NOC_SNOC }, 766 + }; 767 + 768 + static struct qcom_icc_node qup0_core_slave = { 769 + .name = "qup0_core_slave", 770 + .id = SM8550_SLAVE_QUP_CORE_0, 771 + .channels = 1, 772 + .buswidth = 4, 773 + .num_links = 0, 774 + }; 775 + 776 + static struct qcom_icc_node qup1_core_slave = { 777 + .name = "qup1_core_slave", 778 + .id = SM8550_SLAVE_QUP_CORE_1, 779 + .channels = 1, 780 + .buswidth = 4, 781 + .num_links = 0, 782 + }; 783 + 784 + static struct qcom_icc_node qup2_core_slave = { 785 + .name = "qup2_core_slave", 786 + .id = SM8550_SLAVE_QUP_CORE_2, 787 + .channels = 1, 788 + .buswidth = 4, 789 + .num_links = 0, 790 + }; 791 + 792 + static struct qcom_icc_node qhs_ahb2phy0 = { 793 + .name = "qhs_ahb2phy0", 794 + .id = SM8550_SLAVE_AHB2PHY_SOUTH, 795 + .channels = 1, 796 + .buswidth = 4, 797 + .num_links = 0, 798 + }; 799 + 800 + static struct qcom_icc_node qhs_ahb2phy1 = { 801 + .name = "qhs_ahb2phy1", 802 + .id = SM8550_SLAVE_AHB2PHY_NORTH, 803 + .channels = 1, 804 + .buswidth = 4, 805 + .num_links = 0, 806 + }; 807 + 808 + static struct qcom_icc_node qhs_apss = { 809 + .name = "qhs_apss", 810 + .id = SM8550_SLAVE_APPSS, 811 + .channels = 1, 812 + .buswidth = 8, 813 + .num_links = 0, 814 + }; 815 + 816 + static struct qcom_icc_node qhs_camera_cfg = { 817 + .name = "qhs_camera_cfg", 818 + .id = SM8550_SLAVE_CAMERA_CFG, 819 + .channels = 1, 820 + .buswidth = 4, 821 + .num_links = 0, 822 + }; 823 + 824 + static struct qcom_icc_node qhs_clk_ctl = { 825 + .name = "qhs_clk_ctl", 826 + .id = SM8550_SLAVE_CLK_CTL, 827 + .channels = 1, 828 + .buswidth = 4, 829 + .num_links = 0, 830 + }; 831 + 832 + static struct qcom_icc_node qhs_cpr_cx = { 833 + .name = "qhs_cpr_cx", 834 + .id = SM8550_SLAVE_RBCPR_CX_CFG, 835 + .channels = 1, 836 + .buswidth = 4, 837 + .num_links = 0, 838 + }; 839 + 840 + static struct qcom_icc_node qhs_cpr_mmcx = { 841 + .name = "qhs_cpr_mmcx", 842 + .id = SM8550_SLAVE_RBCPR_MMCX_CFG, 843 + .channels = 1, 844 + .buswidth = 4, 845 + .num_links = 0, 846 + }; 847 + 848 + static struct qcom_icc_node qhs_cpr_mxa = { 849 + .name = "qhs_cpr_mxa", 850 + .id = SM8550_SLAVE_RBCPR_MXA_CFG, 851 + .channels = 1, 852 + .buswidth = 4, 853 + .num_links = 0, 854 + }; 855 + 856 + static struct qcom_icc_node qhs_cpr_mxc = { 857 + .name = "qhs_cpr_mxc", 858 + .id = SM8550_SLAVE_RBCPR_MXC_CFG, 859 + .channels = 1, 860 + .buswidth = 4, 861 + .num_links = 0, 862 + }; 863 + 864 + static struct qcom_icc_node qhs_cpr_nspcx = { 865 + .name = "qhs_cpr_nspcx", 866 + .id = SM8550_SLAVE_CPR_NSPCX, 867 + .channels = 1, 868 + .buswidth = 4, 869 + .num_links = 0, 870 + }; 871 + 872 + static struct qcom_icc_node qhs_crypto0_cfg = { 873 + .name = "qhs_crypto0_cfg", 874 + .id = SM8550_SLAVE_CRYPTO_0_CFG, 875 + .channels = 1, 876 + .buswidth = 4, 877 + .num_links = 0, 878 + }; 879 + 880 + static struct qcom_icc_node qhs_cx_rdpm = { 881 + .name = "qhs_cx_rdpm", 882 + .id = SM8550_SLAVE_CX_RDPM, 883 + .channels = 1, 884 + .buswidth = 4, 885 + .num_links = 0, 886 + }; 887 + 888 + static struct qcom_icc_node qhs_display_cfg = { 889 + .name = "qhs_display_cfg", 890 + .id = SM8550_SLAVE_DISPLAY_CFG, 891 + .channels = 1, 892 + .buswidth = 4, 893 + .num_links = 0, 894 + }; 895 + 896 + static struct qcom_icc_node qhs_gpuss_cfg = { 897 + .name = "qhs_gpuss_cfg", 898 + .id = SM8550_SLAVE_GFX3D_CFG, 899 + .channels = 1, 900 + .buswidth = 8, 901 + .num_links = 0, 902 + }; 903 + 904 + static struct qcom_icc_node qhs_i2c = { 905 + .name = "qhs_i2c", 906 + .id = SM8550_SLAVE_I2C, 907 + .channels = 1, 908 + .buswidth = 4, 909 + .num_links = 0, 910 + }; 911 + 912 + static struct qcom_icc_node qhs_imem_cfg = { 913 + .name = "qhs_imem_cfg", 914 + .id = SM8550_SLAVE_IMEM_CFG, 915 + .channels = 1, 916 + .buswidth = 4, 917 + .num_links = 0, 918 + }; 919 + 920 + static struct qcom_icc_node qhs_ipa = { 921 + .name = "qhs_ipa", 922 + .id = SM8550_SLAVE_IPA_CFG, 923 + .channels = 1, 924 + .buswidth = 4, 925 + .num_links = 0, 926 + }; 927 + 928 + static struct qcom_icc_node qhs_ipc_router = { 929 + .name = "qhs_ipc_router", 930 + .id = SM8550_SLAVE_IPC_ROUTER_CFG, 931 + .channels = 1, 932 + .buswidth = 4, 933 + .num_links = 0, 934 + }; 935 + 936 + static struct qcom_icc_node qhs_mss_cfg = { 937 + .name = "qhs_mss_cfg", 938 + .id = SM8550_SLAVE_CNOC_MSS, 939 + .channels = 1, 940 + .buswidth = 4, 941 + .num_links = 0, 942 + }; 943 + 944 + static struct qcom_icc_node qhs_mx_rdpm = { 945 + .name = "qhs_mx_rdpm", 946 + .id = SM8550_SLAVE_MX_RDPM, 947 + .channels = 1, 948 + .buswidth = 4, 949 + .num_links = 0, 950 + }; 951 + 952 + static struct qcom_icc_node qhs_pcie0_cfg = { 953 + .name = "qhs_pcie0_cfg", 954 + .id = SM8550_SLAVE_PCIE_0_CFG, 955 + .channels = 1, 956 + .buswidth = 4, 957 + .num_links = 0, 958 + }; 959 + 960 + static struct qcom_icc_node qhs_pcie1_cfg = { 961 + .name = "qhs_pcie1_cfg", 962 + .id = SM8550_SLAVE_PCIE_1_CFG, 963 + .channels = 1, 964 + .buswidth = 4, 965 + .num_links = 0, 966 + }; 967 + 968 + static struct qcom_icc_node qhs_pdm = { 969 + .name = "qhs_pdm", 970 + .id = SM8550_SLAVE_PDM, 971 + .channels = 1, 972 + .buswidth = 4, 973 + .num_links = 0, 974 + }; 975 + 976 + static struct qcom_icc_node qhs_pimem_cfg = { 977 + .name = "qhs_pimem_cfg", 978 + .id = SM8550_SLAVE_PIMEM_CFG, 979 + .channels = 1, 980 + .buswidth = 4, 981 + .num_links = 0, 982 + }; 983 + 984 + static struct qcom_icc_node qhs_prng = { 985 + .name = "qhs_prng", 986 + .id = SM8550_SLAVE_PRNG, 987 + .channels = 1, 988 + .buswidth = 4, 989 + .num_links = 0, 990 + }; 991 + 992 + static struct qcom_icc_node qhs_qdss_cfg = { 993 + .name = "qhs_qdss_cfg", 994 + .id = SM8550_SLAVE_QDSS_CFG, 995 + .channels = 1, 996 + .buswidth = 4, 997 + .num_links = 0, 998 + }; 999 + 1000 + static struct qcom_icc_node qhs_qspi = { 1001 + .name = "qhs_qspi", 1002 + .id = SM8550_SLAVE_QSPI_0, 1003 + .channels = 1, 1004 + .buswidth = 4, 1005 + .num_links = 0, 1006 + }; 1007 + 1008 + static struct qcom_icc_node qhs_qup1 = { 1009 + .name = "qhs_qup1", 1010 + .id = SM8550_SLAVE_QUP_1, 1011 + .channels = 1, 1012 + .buswidth = 4, 1013 + .num_links = 0, 1014 + }; 1015 + 1016 + static struct qcom_icc_node qhs_qup2 = { 1017 + .name = "qhs_qup2", 1018 + .id = SM8550_SLAVE_QUP_2, 1019 + .channels = 1, 1020 + .buswidth = 4, 1021 + .num_links = 0, 1022 + }; 1023 + 1024 + static struct qcom_icc_node qhs_sdc2 = { 1025 + .name = "qhs_sdc2", 1026 + .id = SM8550_SLAVE_SDCC_2, 1027 + .channels = 1, 1028 + .buswidth = 4, 1029 + .num_links = 0, 1030 + }; 1031 + 1032 + static struct qcom_icc_node qhs_sdc4 = { 1033 + .name = "qhs_sdc4", 1034 + .id = SM8550_SLAVE_SDCC_4, 1035 + .channels = 1, 1036 + .buswidth = 4, 1037 + .num_links = 0, 1038 + }; 1039 + 1040 + static struct qcom_icc_node qhs_spss_cfg = { 1041 + .name = "qhs_spss_cfg", 1042 + .id = SM8550_SLAVE_SPSS_CFG, 1043 + .channels = 1, 1044 + .buswidth = 4, 1045 + .num_links = 0, 1046 + }; 1047 + 1048 + static struct qcom_icc_node qhs_tcsr = { 1049 + .name = "qhs_tcsr", 1050 + .id = SM8550_SLAVE_TCSR, 1051 + .channels = 1, 1052 + .buswidth = 4, 1053 + .num_links = 0, 1054 + }; 1055 + 1056 + static struct qcom_icc_node qhs_tlmm = { 1057 + .name = "qhs_tlmm", 1058 + .id = SM8550_SLAVE_TLMM, 1059 + .channels = 1, 1060 + .buswidth = 4, 1061 + .num_links = 0, 1062 + }; 1063 + 1064 + static struct qcom_icc_node qhs_ufs_mem_cfg = { 1065 + .name = "qhs_ufs_mem_cfg", 1066 + .id = SM8550_SLAVE_UFS_MEM_CFG, 1067 + .channels = 1, 1068 + .buswidth = 4, 1069 + .num_links = 0, 1070 + }; 1071 + 1072 + static struct qcom_icc_node qhs_usb3_0 = { 1073 + .name = "qhs_usb3_0", 1074 + .id = SM8550_SLAVE_USB3_0, 1075 + .channels = 1, 1076 + .buswidth = 4, 1077 + .num_links = 0, 1078 + }; 1079 + 1080 + static struct qcom_icc_node qhs_venus_cfg = { 1081 + .name = "qhs_venus_cfg", 1082 + .id = SM8550_SLAVE_VENUS_CFG, 1083 + .channels = 1, 1084 + .buswidth = 4, 1085 + .num_links = 0, 1086 + }; 1087 + 1088 + static struct qcom_icc_node qhs_vsense_ctrl_cfg = { 1089 + .name = "qhs_vsense_ctrl_cfg", 1090 + .id = SM8550_SLAVE_VSENSE_CTRL_CFG, 1091 + .channels = 1, 1092 + .buswidth = 4, 1093 + .num_links = 0, 1094 + }; 1095 + 1096 + static struct qcom_icc_node qss_lpass_qtb_cfg = { 1097 + .name = "qss_lpass_qtb_cfg", 1098 + .id = SM8550_SLAVE_LPASS_QTB_CFG, 1099 + .channels = 1, 1100 + .buswidth = 4, 1101 + .num_links = 0, 1102 + }; 1103 + 1104 + static struct qcom_icc_node qss_mnoc_cfg = { 1105 + .name = "qss_mnoc_cfg", 1106 + .id = SM8550_SLAVE_CNOC_MNOC_CFG, 1107 + .channels = 1, 1108 + .buswidth = 4, 1109 + .num_links = 1, 1110 + .links = { SM8550_MASTER_CNOC_MNOC_CFG }, 1111 + }; 1112 + 1113 + static struct qcom_icc_node qss_nsp_qtb_cfg = { 1114 + .name = "qss_nsp_qtb_cfg", 1115 + .id = SM8550_SLAVE_NSP_QTB_CFG, 1116 + .channels = 1, 1117 + .buswidth = 4, 1118 + .num_links = 0, 1119 + }; 1120 + 1121 + static struct qcom_icc_node qss_pcie_anoc_cfg = { 1122 + .name = "qss_pcie_anoc_cfg", 1123 + .id = SM8550_SLAVE_PCIE_ANOC_CFG, 1124 + .channels = 1, 1125 + .buswidth = 4, 1126 + .num_links = 1, 1127 + .links = { SM8550_MASTER_PCIE_ANOC_CFG }, 1128 + }; 1129 + 1130 + static struct qcom_icc_node xs_qdss_stm = { 1131 + .name = "xs_qdss_stm", 1132 + .id = SM8550_SLAVE_QDSS_STM, 1133 + .channels = 1, 1134 + .buswidth = 4, 1135 + .num_links = 0, 1136 + }; 1137 + 1138 + static struct qcom_icc_node xs_sys_tcu_cfg = { 1139 + .name = "xs_sys_tcu_cfg", 1140 + .id = SM8550_SLAVE_TCU, 1141 + .channels = 1, 1142 + .buswidth = 8, 1143 + .num_links = 0, 1144 + }; 1145 + 1146 + static struct qcom_icc_node qhs_aoss = { 1147 + .name = "qhs_aoss", 1148 + .id = SM8550_SLAVE_AOSS, 1149 + .channels = 1, 1150 + .buswidth = 4, 1151 + .num_links = 0, 1152 + }; 1153 + 1154 + static struct qcom_icc_node qhs_tme_cfg = { 1155 + .name = "qhs_tme_cfg", 1156 + .id = SM8550_SLAVE_TME_CFG, 1157 + .channels = 1, 1158 + .buswidth = 4, 1159 + .num_links = 0, 1160 + }; 1161 + 1162 + static struct qcom_icc_node qss_cfg = { 1163 + .name = "qss_cfg", 1164 + .id = SM8550_SLAVE_CNOC_CFG, 1165 + .channels = 1, 1166 + .buswidth = 4, 1167 + .num_links = 1, 1168 + .links = { SM8550_MASTER_CNOC_CFG }, 1169 + }; 1170 + 1171 + static struct qcom_icc_node qss_ddrss_cfg = { 1172 + .name = "qss_ddrss_cfg", 1173 + .id = SM8550_SLAVE_DDRSS_CFG, 1174 + .channels = 1, 1175 + .buswidth = 4, 1176 + .num_links = 0, 1177 + }; 1178 + 1179 + static struct qcom_icc_node qxs_boot_imem = { 1180 + .name = "qxs_boot_imem", 1181 + .id = SM8550_SLAVE_BOOT_IMEM, 1182 + .channels = 1, 1183 + .buswidth = 8, 1184 + .num_links = 0, 1185 + }; 1186 + 1187 + static struct qcom_icc_node qxs_imem = { 1188 + .name = "qxs_imem", 1189 + .id = SM8550_SLAVE_IMEM, 1190 + .channels = 1, 1191 + .buswidth = 8, 1192 + .num_links = 0, 1193 + }; 1194 + 1195 + static struct qcom_icc_node xs_pcie_0 = { 1196 + .name = "xs_pcie_0", 1197 + .id = SM8550_SLAVE_PCIE_0, 1198 + .channels = 1, 1199 + .buswidth = 8, 1200 + .num_links = 0, 1201 + }; 1202 + 1203 + static struct qcom_icc_node xs_pcie_1 = { 1204 + .name = "xs_pcie_1", 1205 + .id = SM8550_SLAVE_PCIE_1, 1206 + .channels = 1, 1207 + .buswidth = 16, 1208 + .num_links = 0, 1209 + }; 1210 + 1211 + static struct qcom_icc_node qns_gem_noc_cnoc = { 1212 + .name = "qns_gem_noc_cnoc", 1213 + .id = SM8550_SLAVE_GEM_NOC_CNOC, 1214 + .channels = 1, 1215 + .buswidth = 16, 1216 + .num_links = 1, 1217 + .links = { SM8550_MASTER_GEM_NOC_CNOC }, 1218 + }; 1219 + 1220 + static struct qcom_icc_node qns_llcc = { 1221 + .name = "qns_llcc", 1222 + .id = SM8550_SLAVE_LLCC, 1223 + .channels = 4, 1224 + .buswidth = 16, 1225 + .num_links = 1, 1226 + .links = { SM8550_MASTER_LLCC }, 1227 + }; 1228 + 1229 + static struct qcom_icc_node qns_pcie = { 1230 + .name = "qns_pcie", 1231 + .id = SM8550_SLAVE_MEM_NOC_PCIE_SNOC, 1232 + .channels = 1, 1233 + .buswidth = 8, 1234 + .num_links = 1, 1235 + .links = { SM8550_MASTER_GEM_NOC_PCIE_SNOC }, 1236 + }; 1237 + 1238 + static struct qcom_icc_node qns_lpass_ag_noc_gemnoc = { 1239 + .name = "qns_lpass_ag_noc_gemnoc", 1240 + .id = SM8550_SLAVE_LPASS_GEM_NOC, 1241 + .channels = 1, 1242 + .buswidth = 16, 1243 + .num_links = 1, 1244 + .links = { SM8550_MASTER_LPASS_GEM_NOC }, 1245 + }; 1246 + 1247 + static struct qcom_icc_node qns_lpass_aggnoc = { 1248 + .name = "qns_lpass_aggnoc", 1249 + .id = SM8550_SLAVE_LPIAON_NOC_LPASS_AG_NOC, 1250 + .channels = 1, 1251 + .buswidth = 16, 1252 + .num_links = 1, 1253 + .links = { SM8550_MASTER_LPIAON_NOC }, 1254 + }; 1255 + 1256 + static struct qcom_icc_node qns_lpi_aon_noc = { 1257 + .name = "qns_lpi_aon_noc", 1258 + .id = SM8550_SLAVE_LPICX_NOC_LPIAON_NOC, 1259 + .channels = 1, 1260 + .buswidth = 16, 1261 + .num_links = 1, 1262 + .links = { SM8550_MASTER_LPASS_LPINOC }, 1263 + }; 1264 + 1265 + static struct qcom_icc_node ebi = { 1266 + .name = "ebi", 1267 + .id = SM8550_SLAVE_EBI1, 1268 + .channels = 4, 1269 + .buswidth = 4, 1270 + .num_links = 0, 1271 + }; 1272 + 1273 + static struct qcom_icc_node qns_mem_noc_hf = { 1274 + .name = "qns_mem_noc_hf", 1275 + .id = SM8550_SLAVE_MNOC_HF_MEM_NOC, 1276 + .channels = 2, 1277 + .buswidth = 32, 1278 + .num_links = 1, 1279 + .links = { SM8550_MASTER_MNOC_HF_MEM_NOC }, 1280 + }; 1281 + 1282 + static struct qcom_icc_node qns_mem_noc_sf = { 1283 + .name = "qns_mem_noc_sf", 1284 + .id = SM8550_SLAVE_MNOC_SF_MEM_NOC, 1285 + .channels = 2, 1286 + .buswidth = 32, 1287 + .num_links = 1, 1288 + .links = { SM8550_MASTER_MNOC_SF_MEM_NOC }, 1289 + }; 1290 + 1291 + static struct qcom_icc_node srvc_mnoc = { 1292 + .name = "srvc_mnoc", 1293 + .id = SM8550_SLAVE_SERVICE_MNOC, 1294 + .channels = 1, 1295 + .buswidth = 4, 1296 + .num_links = 0, 1297 + }; 1298 + 1299 + static struct qcom_icc_node qns_nsp_gemnoc = { 1300 + .name = "qns_nsp_gemnoc", 1301 + .id = SM8550_SLAVE_CDSP_MEM_NOC, 1302 + .channels = 2, 1303 + .buswidth = 32, 1304 + .num_links = 1, 1305 + .links = { SM8550_MASTER_COMPUTE_NOC }, 1306 + }; 1307 + 1308 + static struct qcom_icc_node qns_pcie_mem_noc = { 1309 + .name = "qns_pcie_mem_noc", 1310 + .id = SM8550_SLAVE_ANOC_PCIE_GEM_NOC, 1311 + .channels = 1, 1312 + .buswidth = 16, 1313 + .num_links = 1, 1314 + .links = { SM8550_MASTER_ANOC_PCIE_GEM_NOC }, 1315 + }; 1316 + 1317 + static struct qcom_icc_node srvc_pcie_aggre_noc = { 1318 + .name = "srvc_pcie_aggre_noc", 1319 + .id = SM8550_SLAVE_SERVICE_PCIE_ANOC, 1320 + .channels = 1, 1321 + .buswidth = 4, 1322 + .num_links = 0, 1323 + }; 1324 + 1325 + static struct qcom_icc_node qns_gemnoc_gc = { 1326 + .name = "qns_gemnoc_gc", 1327 + .id = SM8550_SLAVE_SNOC_GEM_NOC_GC, 1328 + .channels = 1, 1329 + .buswidth = 8, 1330 + .num_links = 1, 1331 + .links = { SM8550_MASTER_SNOC_GC_MEM_NOC }, 1332 + }; 1333 + 1334 + static struct qcom_icc_node qns_gemnoc_sf = { 1335 + .name = "qns_gemnoc_sf", 1336 + .id = SM8550_SLAVE_SNOC_GEM_NOC_SF, 1337 + .channels = 1, 1338 + .buswidth = 16, 1339 + .num_links = 1, 1340 + .links = { SM8550_MASTER_SNOC_SF_MEM_NOC }, 1341 + }; 1342 + 1343 + static struct qcom_icc_node qns_llcc_disp = { 1344 + .name = "qns_llcc_disp", 1345 + .id = SM8550_SLAVE_LLCC_DISP, 1346 + .channels = 4, 1347 + .buswidth = 16, 1348 + .num_links = 1, 1349 + .links = { SM8550_MASTER_LLCC_DISP }, 1350 + }; 1351 + 1352 + static struct qcom_icc_node ebi_disp = { 1353 + .name = "ebi_disp", 1354 + .id = SM8550_SLAVE_EBI1_DISP, 1355 + .channels = 4, 1356 + .buswidth = 4, 1357 + .num_links = 0, 1358 + }; 1359 + 1360 + static struct qcom_icc_node qns_mem_noc_hf_disp = { 1361 + .name = "qns_mem_noc_hf_disp", 1362 + .id = SM8550_SLAVE_MNOC_HF_MEM_NOC_DISP, 1363 + .channels = 2, 1364 + .buswidth = 32, 1365 + .num_links = 1, 1366 + .links = { SM8550_MASTER_MNOC_HF_MEM_NOC_DISP }, 1367 + }; 1368 + 1369 + static struct qcom_icc_node qns_llcc_cam_ife_0 = { 1370 + .name = "qns_llcc_cam_ife_0", 1371 + .id = SM8550_SLAVE_LLCC_CAM_IFE_0, 1372 + .channels = 4, 1373 + .buswidth = 16, 1374 + .num_links = 1, 1375 + .links = { SM8550_MASTER_LLCC_CAM_IFE_0 }, 1376 + }; 1377 + 1378 + static struct qcom_icc_node ebi_cam_ife_0 = { 1379 + .name = "ebi_cam_ife_0", 1380 + .id = SM8550_SLAVE_EBI1_CAM_IFE_0, 1381 + .channels = 4, 1382 + .buswidth = 4, 1383 + .num_links = 0, 1384 + }; 1385 + 1386 + static struct qcom_icc_node qns_mem_noc_hf_cam_ife_0 = { 1387 + .name = "qns_mem_noc_hf_cam_ife_0", 1388 + .id = SM8550_SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_0, 1389 + .channels = 2, 1390 + .buswidth = 32, 1391 + .num_links = 1, 1392 + .links = { SM8550_MASTER_MNOC_HF_MEM_NOC_CAM_IFE_0 }, 1393 + }; 1394 + 1395 + static struct qcom_icc_node qns_mem_noc_sf_cam_ife_0 = { 1396 + .name = "qns_mem_noc_sf_cam_ife_0", 1397 + .id = SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_0, 1398 + .channels = 2, 1399 + .buswidth = 32, 1400 + .num_links = 1, 1401 + .links = { SM8550_MASTER_MNOC_SF_MEM_NOC_CAM_IFE_0 }, 1402 + }; 1403 + 1404 + static struct qcom_icc_node qns_llcc_cam_ife_1 = { 1405 + .name = "qns_llcc_cam_ife_1", 1406 + .id = SM8550_SLAVE_LLCC_CAM_IFE_1, 1407 + .channels = 4, 1408 + .buswidth = 16, 1409 + .num_links = 1, 1410 + .links = { SM8550_MASTER_LLCC_CAM_IFE_1 }, 1411 + }; 1412 + 1413 + static struct qcom_icc_node ebi_cam_ife_1 = { 1414 + .name = "ebi_cam_ife_1", 1415 + .id = SM8550_SLAVE_EBI1_CAM_IFE_1, 1416 + .channels = 4, 1417 + .buswidth = 4, 1418 + .num_links = 0, 1419 + }; 1420 + 1421 + static struct qcom_icc_node qns_mem_noc_hf_cam_ife_1 = { 1422 + .name = "qns_mem_noc_hf_cam_ife_1", 1423 + .id = SM8550_SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_1, 1424 + .channels = 2, 1425 + .buswidth = 32, 1426 + .num_links = 1, 1427 + .links = { SM8550_MASTER_MNOC_HF_MEM_NOC_CAM_IFE_1 }, 1428 + }; 1429 + 1430 + static struct qcom_icc_node qns_mem_noc_sf_cam_ife_1 = { 1431 + .name = "qns_mem_noc_sf_cam_ife_1", 1432 + .id = SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_1, 1433 + .channels = 2, 1434 + .buswidth = 32, 1435 + .num_links = 1, 1436 + .links = { SM8550_MASTER_MNOC_SF_MEM_NOC_CAM_IFE_1 }, 1437 + }; 1438 + 1439 + static struct qcom_icc_node qns_llcc_cam_ife_2 = { 1440 + .name = "qns_llcc_cam_ife_2", 1441 + .id = SM8550_SLAVE_LLCC_CAM_IFE_2, 1442 + .channels = 4, 1443 + .buswidth = 16, 1444 + .num_links = 1, 1445 + .links = { SM8550_MASTER_LLCC_CAM_IFE_2 }, 1446 + }; 1447 + 1448 + static struct qcom_icc_node ebi_cam_ife_2 = { 1449 + .name = "ebi_cam_ife_2", 1450 + .id = SM8550_SLAVE_EBI1_CAM_IFE_2, 1451 + .channels = 4, 1452 + .buswidth = 4, 1453 + .num_links = 0, 1454 + }; 1455 + 1456 + static struct qcom_icc_node qns_mem_noc_hf_cam_ife_2 = { 1457 + .name = "qns_mem_noc_hf_cam_ife_2", 1458 + .id = SM8550_SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_2, 1459 + .channels = 2, 1460 + .buswidth = 32, 1461 + .num_links = 1, 1462 + .links = { SM8550_MASTER_MNOC_HF_MEM_NOC_CAM_IFE_2 }, 1463 + }; 1464 + 1465 + static struct qcom_icc_node qns_mem_noc_sf_cam_ife_2 = { 1466 + .name = "qns_mem_noc_sf_cam_ife_2", 1467 + .id = SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_2, 1468 + .channels = 2, 1469 + .buswidth = 32, 1470 + .num_links = 1, 1471 + .links = { SM8550_MASTER_MNOC_SF_MEM_NOC_CAM_IFE_2 }, 1472 + }; 1473 + 1474 + static struct qcom_icc_bcm bcm_acv = { 1475 + .name = "ACV", 1476 + .num_nodes = 1, 1477 + .nodes = { &ebi }, 1478 + }; 1479 + 1480 + static struct qcom_icc_bcm bcm_ce0 = { 1481 + .name = "CE0", 1482 + .num_nodes = 1, 1483 + .nodes = { &qxm_crypto }, 1484 + }; 1485 + 1486 + static struct qcom_icc_bcm bcm_cn0 = { 1487 + .name = "CN0", 1488 + .keepalive = true, 1489 + .num_nodes = 54, 1490 + .nodes = { &qsm_cfg, &qhs_ahb2phy0, 1491 + &qhs_ahb2phy1, &qhs_apss, 1492 + &qhs_camera_cfg, &qhs_clk_ctl, 1493 + &qhs_cpr_cx, &qhs_cpr_mmcx, 1494 + &qhs_cpr_mxa, &qhs_cpr_mxc, 1495 + &qhs_cpr_nspcx, &qhs_crypto0_cfg, 1496 + &qhs_cx_rdpm, &qhs_gpuss_cfg, 1497 + &qhs_i2c, &qhs_imem_cfg, 1498 + &qhs_ipa, &qhs_ipc_router, 1499 + &qhs_mss_cfg, &qhs_mx_rdpm, 1500 + &qhs_pcie0_cfg, &qhs_pcie1_cfg, 1501 + &qhs_pdm, &qhs_pimem_cfg, 1502 + &qhs_prng, &qhs_qdss_cfg, 1503 + &qhs_qspi, &qhs_qup1, 1504 + &qhs_qup2, &qhs_sdc2, 1505 + &qhs_sdc4, &qhs_spss_cfg, 1506 + &qhs_tcsr, &qhs_tlmm, 1507 + &qhs_ufs_mem_cfg, &qhs_usb3_0, 1508 + &qhs_venus_cfg, &qhs_vsense_ctrl_cfg, 1509 + &qss_lpass_qtb_cfg, &qss_mnoc_cfg, 1510 + &qss_nsp_qtb_cfg, &qss_pcie_anoc_cfg, 1511 + &xs_qdss_stm, &xs_sys_tcu_cfg, 1512 + &qnm_gemnoc_cnoc, &qnm_gemnoc_pcie, 1513 + &qhs_aoss, &qhs_tme_cfg, 1514 + &qss_cfg, &qss_ddrss_cfg, 1515 + &qxs_boot_imem, &qxs_imem, 1516 + &xs_pcie_0, &xs_pcie_1 }, 1517 + }; 1518 + 1519 + static struct qcom_icc_bcm bcm_cn1 = { 1520 + .name = "CN1", 1521 + .num_nodes = 1, 1522 + .nodes = { &qhs_display_cfg }, 1523 + }; 1524 + 1525 + static struct qcom_icc_bcm bcm_co0 = { 1526 + .name = "CO0", 1527 + .num_nodes = 2, 1528 + .nodes = { &qxm_nsp, &qns_nsp_gemnoc }, 1529 + }; 1530 + 1531 + static struct qcom_icc_bcm bcm_lp0 = { 1532 + .name = "LP0", 1533 + .num_nodes = 2, 1534 + .nodes = { &qnm_lpass_lpinoc, &qns_lpass_aggnoc }, 1535 + }; 1536 + 1537 + static struct qcom_icc_bcm bcm_mc0 = { 1538 + .name = "MC0", 1539 + .keepalive = true, 1540 + .num_nodes = 1, 1541 + .nodes = { &ebi }, 1542 + }; 1543 + 1544 + static struct qcom_icc_bcm bcm_mm0 = { 1545 + .name = "MM0", 1546 + .num_nodes = 1, 1547 + .nodes = { &qns_mem_noc_hf }, 1548 + }; 1549 + 1550 + static struct qcom_icc_bcm bcm_mm1 = { 1551 + .name = "MM1", 1552 + .num_nodes = 8, 1553 + .nodes = { &qnm_camnoc_hf, &qnm_camnoc_icp, 1554 + &qnm_camnoc_sf, &qnm_vapss_hcp, 1555 + &qnm_video_cv_cpu, &qnm_video_cvp, 1556 + &qnm_video_v_cpu, &qns_mem_noc_sf }, 1557 + }; 1558 + 1559 + static struct qcom_icc_bcm bcm_qup0 = { 1560 + .name = "QUP0", 1561 + .keepalive = true, 1562 + .vote_scale = 1, 1563 + .num_nodes = 1, 1564 + .nodes = { &qup0_core_slave }, 1565 + }; 1566 + 1567 + static struct qcom_icc_bcm bcm_qup1 = { 1568 + .name = "QUP1", 1569 + .keepalive = true, 1570 + .vote_scale = 1, 1571 + .num_nodes = 1, 1572 + .nodes = { &qup1_core_slave }, 1573 + }; 1574 + 1575 + static struct qcom_icc_bcm bcm_qup2 = { 1576 + .name = "QUP2", 1577 + .keepalive = true, 1578 + .vote_scale = 1, 1579 + .num_nodes = 1, 1580 + .nodes = { &qup2_core_slave }, 1581 + }; 1582 + 1583 + static struct qcom_icc_bcm bcm_sh0 = { 1584 + .name = "SH0", 1585 + .keepalive = true, 1586 + .num_nodes = 1, 1587 + .nodes = { &qns_llcc }, 1588 + }; 1589 + 1590 + static struct qcom_icc_bcm bcm_sh1 = { 1591 + .name = "SH1", 1592 + .num_nodes = 13, 1593 + .nodes = { &alm_gpu_tcu, &alm_sys_tcu, 1594 + &chm_apps, &qnm_gpu, 1595 + &qnm_mdsp, &qnm_mnoc_hf, 1596 + &qnm_mnoc_sf, &qnm_nsp_gemnoc, 1597 + &qnm_pcie, &qnm_snoc_gc, 1598 + &qnm_snoc_sf, &qns_gem_noc_cnoc, 1599 + &qns_pcie }, 1600 + }; 1601 + 1602 + static struct qcom_icc_bcm bcm_sn0 = { 1603 + .name = "SN0", 1604 + .keepalive = true, 1605 + .num_nodes = 1, 1606 + .nodes = { &qns_gemnoc_sf }, 1607 + }; 1608 + 1609 + static struct qcom_icc_bcm bcm_sn1 = { 1610 + .name = "SN1", 1611 + .num_nodes = 3, 1612 + .nodes = { &qhm_gic, &xm_gic, 1613 + &qns_gemnoc_gc }, 1614 + }; 1615 + 1616 + static struct qcom_icc_bcm bcm_sn2 = { 1617 + .name = "SN2", 1618 + .num_nodes = 1, 1619 + .nodes = { &qnm_aggre1_noc }, 1620 + }; 1621 + 1622 + static struct qcom_icc_bcm bcm_sn3 = { 1623 + .name = "SN3", 1624 + .num_nodes = 1, 1625 + .nodes = { &qnm_aggre2_noc }, 1626 + }; 1627 + 1628 + static struct qcom_icc_bcm bcm_sn7 = { 1629 + .name = "SN7", 1630 + .num_nodes = 1, 1631 + .nodes = { &qns_pcie_mem_noc }, 1632 + }; 1633 + 1634 + static struct qcom_icc_bcm bcm_acv_disp = { 1635 + .name = "ACV", 1636 + .num_nodes = 1, 1637 + .nodes = { &ebi_disp }, 1638 + }; 1639 + 1640 + static struct qcom_icc_bcm bcm_mc0_disp = { 1641 + .name = "MC0", 1642 + .num_nodes = 1, 1643 + .nodes = { &ebi_disp }, 1644 + }; 1645 + 1646 + static struct qcom_icc_bcm bcm_mm0_disp = { 1647 + .name = "MM0", 1648 + .num_nodes = 1, 1649 + .nodes = { &qns_mem_noc_hf_disp }, 1650 + }; 1651 + 1652 + static struct qcom_icc_bcm bcm_sh0_disp = { 1653 + .name = "SH0", 1654 + .num_nodes = 1, 1655 + .nodes = { &qns_llcc_disp }, 1656 + }; 1657 + 1658 + static struct qcom_icc_bcm bcm_sh1_disp = { 1659 + .name = "SH1", 1660 + .num_nodes = 2, 1661 + .nodes = { &qnm_mnoc_hf_disp, &qnm_pcie_disp }, 1662 + }; 1663 + 1664 + static struct qcom_icc_bcm bcm_acv_cam_ife_0 = { 1665 + .name = "ACV", 1666 + .num_nodes = 1, 1667 + .nodes = { &ebi_cam_ife_0 }, 1668 + }; 1669 + 1670 + static struct qcom_icc_bcm bcm_mc0_cam_ife_0 = { 1671 + .name = "MC0", 1672 + .num_nodes = 1, 1673 + .nodes = { &ebi_cam_ife_0 }, 1674 + }; 1675 + 1676 + static struct qcom_icc_bcm bcm_mm0_cam_ife_0 = { 1677 + .name = "MM0", 1678 + .num_nodes = 1, 1679 + .nodes = { &qns_mem_noc_hf_cam_ife_0 }, 1680 + }; 1681 + 1682 + static struct qcom_icc_bcm bcm_mm1_cam_ife_0 = { 1683 + .name = "MM1", 1684 + .num_nodes = 4, 1685 + .nodes = { &qnm_camnoc_hf_cam_ife_0, &qnm_camnoc_icp_cam_ife_0, 1686 + &qnm_camnoc_sf_cam_ife_0, &qns_mem_noc_sf_cam_ife_0 }, 1687 + }; 1688 + 1689 + static struct qcom_icc_bcm bcm_sh0_cam_ife_0 = { 1690 + .name = "SH0", 1691 + .num_nodes = 1, 1692 + .nodes = { &qns_llcc_cam_ife_0 }, 1693 + }; 1694 + 1695 + static struct qcom_icc_bcm bcm_sh1_cam_ife_0 = { 1696 + .name = "SH1", 1697 + .num_nodes = 3, 1698 + .nodes = { &qnm_mnoc_hf_cam_ife_0, &qnm_mnoc_sf_cam_ife_0, 1699 + &qnm_pcie_cam_ife_0 }, 1700 + }; 1701 + 1702 + static struct qcom_icc_bcm bcm_acv_cam_ife_1 = { 1703 + .name = "ACV", 1704 + .num_nodes = 1, 1705 + .nodes = { &ebi_cam_ife_1 }, 1706 + }; 1707 + 1708 + static struct qcom_icc_bcm bcm_mc0_cam_ife_1 = { 1709 + .name = "MC0", 1710 + .num_nodes = 1, 1711 + .nodes = { &ebi_cam_ife_1 }, 1712 + }; 1713 + 1714 + static struct qcom_icc_bcm bcm_mm0_cam_ife_1 = { 1715 + .name = "MM0", 1716 + .num_nodes = 1, 1717 + .nodes = { &qns_mem_noc_hf_cam_ife_1 }, 1718 + }; 1719 + 1720 + static struct qcom_icc_bcm bcm_mm1_cam_ife_1 = { 1721 + .name = "MM1", 1722 + .num_nodes = 4, 1723 + .nodes = { &qnm_camnoc_hf_cam_ife_1, &qnm_camnoc_icp_cam_ife_1, 1724 + &qnm_camnoc_sf_cam_ife_1, &qns_mem_noc_sf_cam_ife_1 }, 1725 + }; 1726 + 1727 + static struct qcom_icc_bcm bcm_sh0_cam_ife_1 = { 1728 + .name = "SH0", 1729 + .num_nodes = 1, 1730 + .nodes = { &qns_llcc_cam_ife_1 }, 1731 + }; 1732 + 1733 + static struct qcom_icc_bcm bcm_sh1_cam_ife_1 = { 1734 + .name = "SH1", 1735 + .num_nodes = 3, 1736 + .nodes = { &qnm_mnoc_hf_cam_ife_1, &qnm_mnoc_sf_cam_ife_1, 1737 + &qnm_pcie_cam_ife_1 }, 1738 + }; 1739 + 1740 + static struct qcom_icc_bcm bcm_acv_cam_ife_2 = { 1741 + .name = "ACV", 1742 + .num_nodes = 1, 1743 + .nodes = { &ebi_cam_ife_2 }, 1744 + }; 1745 + 1746 + static struct qcom_icc_bcm bcm_mc0_cam_ife_2 = { 1747 + .name = "MC0", 1748 + .num_nodes = 1, 1749 + .nodes = { &ebi_cam_ife_2 }, 1750 + }; 1751 + 1752 + static struct qcom_icc_bcm bcm_mm0_cam_ife_2 = { 1753 + .name = "MM0", 1754 + .num_nodes = 1, 1755 + .nodes = { &qns_mem_noc_hf_cam_ife_2 }, 1756 + }; 1757 + 1758 + static struct qcom_icc_bcm bcm_mm1_cam_ife_2 = { 1759 + .name = "MM1", 1760 + .num_nodes = 4, 1761 + .nodes = { &qnm_camnoc_hf_cam_ife_2, &qnm_camnoc_icp_cam_ife_2, 1762 + &qnm_camnoc_sf_cam_ife_2, &qns_mem_noc_sf_cam_ife_2 }, 1763 + }; 1764 + 1765 + static struct qcom_icc_bcm bcm_sh0_cam_ife_2 = { 1766 + .name = "SH0", 1767 + .num_nodes = 1, 1768 + .nodes = { &qns_llcc_cam_ife_2 }, 1769 + }; 1770 + 1771 + static struct qcom_icc_bcm bcm_sh1_cam_ife_2 = { 1772 + .name = "SH1", 1773 + .num_nodes = 3, 1774 + .nodes = { &qnm_mnoc_hf_cam_ife_2, &qnm_mnoc_sf_cam_ife_2, 1775 + &qnm_pcie_cam_ife_2 }, 1776 + }; 1777 + 1778 + static struct qcom_icc_bcm * const aggre1_noc_bcms[] = { 1779 + }; 1780 + 1781 + static struct qcom_icc_node * const aggre1_noc_nodes[] = { 1782 + [MASTER_QSPI_0] = &qhm_qspi, 1783 + [MASTER_QUP_1] = &qhm_qup1, 1784 + [MASTER_SDCC_4] = &xm_sdc4, 1785 + [MASTER_UFS_MEM] = &xm_ufs_mem, 1786 + [MASTER_USB3_0] = &xm_usb3_0, 1787 + [SLAVE_A1NOC_SNOC] = &qns_a1noc_snoc, 1788 + }; 1789 + 1790 + static const struct qcom_icc_desc sm8550_aggre1_noc = { 1791 + .nodes = aggre1_noc_nodes, 1792 + .num_nodes = ARRAY_SIZE(aggre1_noc_nodes), 1793 + .bcms = aggre1_noc_bcms, 1794 + .num_bcms = ARRAY_SIZE(aggre1_noc_bcms), 1795 + }; 1796 + 1797 + static struct qcom_icc_bcm * const aggre2_noc_bcms[] = { 1798 + &bcm_ce0, 1799 + }; 1800 + 1801 + static struct qcom_icc_node * const aggre2_noc_nodes[] = { 1802 + [MASTER_QDSS_BAM] = &qhm_qdss_bam, 1803 + [MASTER_QUP_2] = &qhm_qup2, 1804 + [MASTER_CRYPTO] = &qxm_crypto, 1805 + [MASTER_IPA] = &qxm_ipa, 1806 + [MASTER_SP] = &qxm_sp, 1807 + [MASTER_QDSS_ETR] = &xm_qdss_etr_0, 1808 + [MASTER_QDSS_ETR_1] = &xm_qdss_etr_1, 1809 + [MASTER_SDCC_2] = &xm_sdc2, 1810 + [SLAVE_A2NOC_SNOC] = &qns_a2noc_snoc, 1811 + }; 1812 + 1813 + static const struct qcom_icc_desc sm8550_aggre2_noc = { 1814 + .nodes = aggre2_noc_nodes, 1815 + .num_nodes = ARRAY_SIZE(aggre2_noc_nodes), 1816 + .bcms = aggre2_noc_bcms, 1817 + .num_bcms = ARRAY_SIZE(aggre2_noc_bcms), 1818 + }; 1819 + 1820 + static struct qcom_icc_bcm * const clk_virt_bcms[] = { 1821 + &bcm_qup0, 1822 + &bcm_qup1, 1823 + &bcm_qup2, 1824 + }; 1825 + 1826 + static struct qcom_icc_node * const clk_virt_nodes[] = { 1827 + [MASTER_QUP_CORE_0] = &qup0_core_master, 1828 + [MASTER_QUP_CORE_1] = &qup1_core_master, 1829 + [MASTER_QUP_CORE_2] = &qup2_core_master, 1830 + [SLAVE_QUP_CORE_0] = &qup0_core_slave, 1831 + [SLAVE_QUP_CORE_1] = &qup1_core_slave, 1832 + [SLAVE_QUP_CORE_2] = &qup2_core_slave, 1833 + }; 1834 + 1835 + static const struct qcom_icc_desc sm8550_clk_virt = { 1836 + .nodes = clk_virt_nodes, 1837 + .num_nodes = ARRAY_SIZE(clk_virt_nodes), 1838 + .bcms = clk_virt_bcms, 1839 + .num_bcms = ARRAY_SIZE(clk_virt_bcms), 1840 + }; 1841 + 1842 + static struct qcom_icc_bcm * const config_noc_bcms[] = { 1843 + &bcm_cn0, 1844 + &bcm_cn1, 1845 + }; 1846 + 1847 + static struct qcom_icc_node * const config_noc_nodes[] = { 1848 + [MASTER_CNOC_CFG] = &qsm_cfg, 1849 + [SLAVE_AHB2PHY_SOUTH] = &qhs_ahb2phy0, 1850 + [SLAVE_AHB2PHY_NORTH] = &qhs_ahb2phy1, 1851 + [SLAVE_APPSS] = &qhs_apss, 1852 + [SLAVE_CAMERA_CFG] = &qhs_camera_cfg, 1853 + [SLAVE_CLK_CTL] = &qhs_clk_ctl, 1854 + [SLAVE_RBCPR_CX_CFG] = &qhs_cpr_cx, 1855 + [SLAVE_RBCPR_MMCX_CFG] = &qhs_cpr_mmcx, 1856 + [SLAVE_RBCPR_MXA_CFG] = &qhs_cpr_mxa, 1857 + [SLAVE_RBCPR_MXC_CFG] = &qhs_cpr_mxc, 1858 + [SLAVE_CPR_NSPCX] = &qhs_cpr_nspcx, 1859 + [SLAVE_CRYPTO_0_CFG] = &qhs_crypto0_cfg, 1860 + [SLAVE_CX_RDPM] = &qhs_cx_rdpm, 1861 + [SLAVE_DISPLAY_CFG] = &qhs_display_cfg, 1862 + [SLAVE_GFX3D_CFG] = &qhs_gpuss_cfg, 1863 + [SLAVE_I2C] = &qhs_i2c, 1864 + [SLAVE_IMEM_CFG] = &qhs_imem_cfg, 1865 + [SLAVE_IPA_CFG] = &qhs_ipa, 1866 + [SLAVE_IPC_ROUTER_CFG] = &qhs_ipc_router, 1867 + [SLAVE_CNOC_MSS] = &qhs_mss_cfg, 1868 + [SLAVE_MX_RDPM] = &qhs_mx_rdpm, 1869 + [SLAVE_PCIE_0_CFG] = &qhs_pcie0_cfg, 1870 + [SLAVE_PCIE_1_CFG] = &qhs_pcie1_cfg, 1871 + [SLAVE_PDM] = &qhs_pdm, 1872 + [SLAVE_PIMEM_CFG] = &qhs_pimem_cfg, 1873 + [SLAVE_PRNG] = &qhs_prng, 1874 + [SLAVE_QDSS_CFG] = &qhs_qdss_cfg, 1875 + [SLAVE_QSPI_0] = &qhs_qspi, 1876 + [SLAVE_QUP_1] = &qhs_qup1, 1877 + [SLAVE_QUP_2] = &qhs_qup2, 1878 + [SLAVE_SDCC_2] = &qhs_sdc2, 1879 + [SLAVE_SDCC_4] = &qhs_sdc4, 1880 + [SLAVE_SPSS_CFG] = &qhs_spss_cfg, 1881 + [SLAVE_TCSR] = &qhs_tcsr, 1882 + [SLAVE_TLMM] = &qhs_tlmm, 1883 + [SLAVE_UFS_MEM_CFG] = &qhs_ufs_mem_cfg, 1884 + [SLAVE_USB3_0] = &qhs_usb3_0, 1885 + [SLAVE_VENUS_CFG] = &qhs_venus_cfg, 1886 + [SLAVE_VSENSE_CTRL_CFG] = &qhs_vsense_ctrl_cfg, 1887 + [SLAVE_LPASS_QTB_CFG] = &qss_lpass_qtb_cfg, 1888 + [SLAVE_CNOC_MNOC_CFG] = &qss_mnoc_cfg, 1889 + [SLAVE_NSP_QTB_CFG] = &qss_nsp_qtb_cfg, 1890 + [SLAVE_PCIE_ANOC_CFG] = &qss_pcie_anoc_cfg, 1891 + [SLAVE_QDSS_STM] = &xs_qdss_stm, 1892 + [SLAVE_TCU] = &xs_sys_tcu_cfg, 1893 + }; 1894 + 1895 + static const struct qcom_icc_desc sm8550_config_noc = { 1896 + .nodes = config_noc_nodes, 1897 + .num_nodes = ARRAY_SIZE(config_noc_nodes), 1898 + .bcms = config_noc_bcms, 1899 + .num_bcms = ARRAY_SIZE(config_noc_bcms), 1900 + }; 1901 + 1902 + static struct qcom_icc_bcm * const cnoc_main_bcms[] = { 1903 + &bcm_cn0, 1904 + }; 1905 + 1906 + static struct qcom_icc_node * const cnoc_main_nodes[] = { 1907 + [MASTER_GEM_NOC_CNOC] = &qnm_gemnoc_cnoc, 1908 + [MASTER_GEM_NOC_PCIE_SNOC] = &qnm_gemnoc_pcie, 1909 + [SLAVE_AOSS] = &qhs_aoss, 1910 + [SLAVE_TME_CFG] = &qhs_tme_cfg, 1911 + [SLAVE_CNOC_CFG] = &qss_cfg, 1912 + [SLAVE_DDRSS_CFG] = &qss_ddrss_cfg, 1913 + [SLAVE_BOOT_IMEM] = &qxs_boot_imem, 1914 + [SLAVE_IMEM] = &qxs_imem, 1915 + [SLAVE_PCIE_0] = &xs_pcie_0, 1916 + [SLAVE_PCIE_1] = &xs_pcie_1, 1917 + }; 1918 + 1919 + static const struct qcom_icc_desc sm8550_cnoc_main = { 1920 + .nodes = cnoc_main_nodes, 1921 + .num_nodes = ARRAY_SIZE(cnoc_main_nodes), 1922 + .bcms = cnoc_main_bcms, 1923 + .num_bcms = ARRAY_SIZE(cnoc_main_bcms), 1924 + }; 1925 + 1926 + static struct qcom_icc_bcm * const gem_noc_bcms[] = { 1927 + &bcm_sh0, 1928 + &bcm_sh1, 1929 + &bcm_sh0_disp, 1930 + &bcm_sh1_disp, 1931 + &bcm_sh0_cam_ife_0, 1932 + &bcm_sh1_cam_ife_0, 1933 + &bcm_sh0_cam_ife_1, 1934 + &bcm_sh1_cam_ife_1, 1935 + &bcm_sh0_cam_ife_2, 1936 + &bcm_sh1_cam_ife_2, 1937 + }; 1938 + 1939 + static struct qcom_icc_node * const gem_noc_nodes[] = { 1940 + [MASTER_GPU_TCU] = &alm_gpu_tcu, 1941 + [MASTER_SYS_TCU] = &alm_sys_tcu, 1942 + [MASTER_APPSS_PROC] = &chm_apps, 1943 + [MASTER_GFX3D] = &qnm_gpu, 1944 + [MASTER_LPASS_GEM_NOC] = &qnm_lpass_gemnoc, 1945 + [MASTER_MSS_PROC] = &qnm_mdsp, 1946 + [MASTER_MNOC_HF_MEM_NOC] = &qnm_mnoc_hf, 1947 + [MASTER_MNOC_SF_MEM_NOC] = &qnm_mnoc_sf, 1948 + [MASTER_COMPUTE_NOC] = &qnm_nsp_gemnoc, 1949 + [MASTER_ANOC_PCIE_GEM_NOC] = &qnm_pcie, 1950 + [MASTER_SNOC_GC_MEM_NOC] = &qnm_snoc_gc, 1951 + [MASTER_SNOC_SF_MEM_NOC] = &qnm_snoc_sf, 1952 + [SLAVE_GEM_NOC_CNOC] = &qns_gem_noc_cnoc, 1953 + [SLAVE_LLCC] = &qns_llcc, 1954 + [SLAVE_MEM_NOC_PCIE_SNOC] = &qns_pcie, 1955 + [MASTER_MNOC_HF_MEM_NOC_DISP] = &qnm_mnoc_hf_disp, 1956 + [MASTER_ANOC_PCIE_GEM_NOC_DISP] = &qnm_pcie_disp, 1957 + [SLAVE_LLCC_DISP] = &qns_llcc_disp, 1958 + [MASTER_MNOC_HF_MEM_NOC_CAM_IFE_0] = &qnm_mnoc_hf_cam_ife_0, 1959 + [MASTER_MNOC_SF_MEM_NOC_CAM_IFE_0] = &qnm_mnoc_sf_cam_ife_0, 1960 + [MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_0] = &qnm_pcie_cam_ife_0, 1961 + [SLAVE_LLCC_CAM_IFE_0] = &qns_llcc_cam_ife_0, 1962 + [MASTER_MNOC_HF_MEM_NOC_CAM_IFE_1] = &qnm_mnoc_hf_cam_ife_1, 1963 + [MASTER_MNOC_SF_MEM_NOC_CAM_IFE_1] = &qnm_mnoc_sf_cam_ife_1, 1964 + [MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_1] = &qnm_pcie_cam_ife_1, 1965 + [SLAVE_LLCC_CAM_IFE_1] = &qns_llcc_cam_ife_1, 1966 + [MASTER_MNOC_HF_MEM_NOC_CAM_IFE_2] = &qnm_mnoc_hf_cam_ife_2, 1967 + [MASTER_MNOC_SF_MEM_NOC_CAM_IFE_2] = &qnm_mnoc_sf_cam_ife_2, 1968 + [MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_2] = &qnm_pcie_cam_ife_2, 1969 + [SLAVE_LLCC_CAM_IFE_2] = &qns_llcc_cam_ife_2, 1970 + }; 1971 + 1972 + static const struct qcom_icc_desc sm8550_gem_noc = { 1973 + .nodes = gem_noc_nodes, 1974 + .num_nodes = ARRAY_SIZE(gem_noc_nodes), 1975 + .bcms = gem_noc_bcms, 1976 + .num_bcms = ARRAY_SIZE(gem_noc_bcms), 1977 + }; 1978 + 1979 + static struct qcom_icc_bcm * const lpass_ag_noc_bcms[] = { 1980 + }; 1981 + 1982 + static struct qcom_icc_node * const lpass_ag_noc_nodes[] = { 1983 + [MASTER_LPIAON_NOC] = &qnm_lpiaon_noc, 1984 + [SLAVE_LPASS_GEM_NOC] = &qns_lpass_ag_noc_gemnoc, 1985 + }; 1986 + 1987 + static const struct qcom_icc_desc sm8550_lpass_ag_noc = { 1988 + .nodes = lpass_ag_noc_nodes, 1989 + .num_nodes = ARRAY_SIZE(lpass_ag_noc_nodes), 1990 + .bcms = lpass_ag_noc_bcms, 1991 + .num_bcms = ARRAY_SIZE(lpass_ag_noc_bcms), 1992 + }; 1993 + 1994 + static struct qcom_icc_bcm * const lpass_lpiaon_noc_bcms[] = { 1995 + &bcm_lp0, 1996 + }; 1997 + 1998 + static struct qcom_icc_node * const lpass_lpiaon_noc_nodes[] = { 1999 + [MASTER_LPASS_LPINOC] = &qnm_lpass_lpinoc, 2000 + [SLAVE_LPIAON_NOC_LPASS_AG_NOC] = &qns_lpass_aggnoc, 2001 + }; 2002 + 2003 + static const struct qcom_icc_desc sm8550_lpass_lpiaon_noc = { 2004 + .nodes = lpass_lpiaon_noc_nodes, 2005 + .num_nodes = ARRAY_SIZE(lpass_lpiaon_noc_nodes), 2006 + .bcms = lpass_lpiaon_noc_bcms, 2007 + .num_bcms = ARRAY_SIZE(lpass_lpiaon_noc_bcms), 2008 + }; 2009 + 2010 + static struct qcom_icc_bcm * const lpass_lpicx_noc_bcms[] = { 2011 + }; 2012 + 2013 + static struct qcom_icc_node * const lpass_lpicx_noc_nodes[] = { 2014 + [MASTER_LPASS_PROC] = &qxm_lpinoc_dsp_axim, 2015 + [SLAVE_LPICX_NOC_LPIAON_NOC] = &qns_lpi_aon_noc, 2016 + }; 2017 + 2018 + static const struct qcom_icc_desc sm8550_lpass_lpicx_noc = { 2019 + .nodes = lpass_lpicx_noc_nodes, 2020 + .num_nodes = ARRAY_SIZE(lpass_lpicx_noc_nodes), 2021 + .bcms = lpass_lpicx_noc_bcms, 2022 + .num_bcms = ARRAY_SIZE(lpass_lpicx_noc_bcms), 2023 + }; 2024 + 2025 + static struct qcom_icc_bcm * const mc_virt_bcms[] = { 2026 + &bcm_acv, 2027 + &bcm_mc0, 2028 + &bcm_acv_disp, 2029 + &bcm_mc0_disp, 2030 + &bcm_acv_cam_ife_0, 2031 + &bcm_mc0_cam_ife_0, 2032 + &bcm_acv_cam_ife_1, 2033 + &bcm_mc0_cam_ife_1, 2034 + &bcm_acv_cam_ife_2, 2035 + &bcm_mc0_cam_ife_2, 2036 + }; 2037 + 2038 + static struct qcom_icc_node * const mc_virt_nodes[] = { 2039 + [MASTER_LLCC] = &llcc_mc, 2040 + [SLAVE_EBI1] = &ebi, 2041 + [MASTER_LLCC_DISP] = &llcc_mc_disp, 2042 + [SLAVE_EBI1_DISP] = &ebi_disp, 2043 + [MASTER_LLCC_CAM_IFE_0] = &llcc_mc_cam_ife_0, 2044 + [SLAVE_EBI1_CAM_IFE_0] = &ebi_cam_ife_0, 2045 + [MASTER_LLCC_CAM_IFE_1] = &llcc_mc_cam_ife_1, 2046 + [SLAVE_EBI1_CAM_IFE_1] = &ebi_cam_ife_1, 2047 + [MASTER_LLCC_CAM_IFE_2] = &llcc_mc_cam_ife_2, 2048 + [SLAVE_EBI1_CAM_IFE_2] = &ebi_cam_ife_2, 2049 + }; 2050 + 2051 + static const struct qcom_icc_desc sm8550_mc_virt = { 2052 + .nodes = mc_virt_nodes, 2053 + .num_nodes = ARRAY_SIZE(mc_virt_nodes), 2054 + .bcms = mc_virt_bcms, 2055 + .num_bcms = ARRAY_SIZE(mc_virt_bcms), 2056 + }; 2057 + 2058 + static struct qcom_icc_bcm * const mmss_noc_bcms[] = { 2059 + &bcm_mm0, 2060 + &bcm_mm1, 2061 + &bcm_mm0_disp, 2062 + &bcm_mm0_cam_ife_0, 2063 + &bcm_mm1_cam_ife_0, 2064 + &bcm_mm0_cam_ife_1, 2065 + &bcm_mm1_cam_ife_1, 2066 + &bcm_mm0_cam_ife_2, 2067 + &bcm_mm1_cam_ife_2, 2068 + }; 2069 + 2070 + static struct qcom_icc_node * const mmss_noc_nodes[] = { 2071 + [MASTER_CAMNOC_HF] = &qnm_camnoc_hf, 2072 + [MASTER_CAMNOC_ICP] = &qnm_camnoc_icp, 2073 + [MASTER_CAMNOC_SF] = &qnm_camnoc_sf, 2074 + [MASTER_MDP] = &qnm_mdp, 2075 + [MASTER_CDSP_HCP] = &qnm_vapss_hcp, 2076 + [MASTER_VIDEO] = &qnm_video, 2077 + [MASTER_VIDEO_CV_PROC] = &qnm_video_cv_cpu, 2078 + [MASTER_VIDEO_PROC] = &qnm_video_cvp, 2079 + [MASTER_VIDEO_V_PROC] = &qnm_video_v_cpu, 2080 + [MASTER_CNOC_MNOC_CFG] = &qsm_mnoc_cfg, 2081 + [SLAVE_MNOC_HF_MEM_NOC] = &qns_mem_noc_hf, 2082 + [SLAVE_MNOC_SF_MEM_NOC] = &qns_mem_noc_sf, 2083 + [SLAVE_SERVICE_MNOC] = &srvc_mnoc, 2084 + [MASTER_MDP_DISP] = &qnm_mdp_disp, 2085 + [SLAVE_MNOC_HF_MEM_NOC_DISP] = &qns_mem_noc_hf_disp, 2086 + [MASTER_CAMNOC_HF_CAM_IFE_0] = &qnm_camnoc_hf_cam_ife_0, 2087 + [MASTER_CAMNOC_ICP_CAM_IFE_0] = &qnm_camnoc_icp_cam_ife_0, 2088 + [MASTER_CAMNOC_SF_CAM_IFE_0] = &qnm_camnoc_sf_cam_ife_0, 2089 + [SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_0] = &qns_mem_noc_hf_cam_ife_0, 2090 + [SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_0] = &qns_mem_noc_sf_cam_ife_0, 2091 + [MASTER_CAMNOC_HF_CAM_IFE_1] = &qnm_camnoc_hf_cam_ife_1, 2092 + [MASTER_CAMNOC_ICP_CAM_IFE_1] = &qnm_camnoc_icp_cam_ife_1, 2093 + [MASTER_CAMNOC_SF_CAM_IFE_1] = &qnm_camnoc_sf_cam_ife_1, 2094 + [SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_1] = &qns_mem_noc_hf_cam_ife_1, 2095 + [SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_1] = &qns_mem_noc_sf_cam_ife_1, 2096 + [MASTER_CAMNOC_HF_CAM_IFE_2] = &qnm_camnoc_hf_cam_ife_2, 2097 + [MASTER_CAMNOC_ICP_CAM_IFE_2] = &qnm_camnoc_icp_cam_ife_2, 2098 + [MASTER_CAMNOC_SF_CAM_IFE_2] = &qnm_camnoc_sf_cam_ife_2, 2099 + [SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_2] = &qns_mem_noc_hf_cam_ife_2, 2100 + [SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_2] = &qns_mem_noc_sf_cam_ife_2, 2101 + }; 2102 + 2103 + static const struct qcom_icc_desc sm8550_mmss_noc = { 2104 + .nodes = mmss_noc_nodes, 2105 + .num_nodes = ARRAY_SIZE(mmss_noc_nodes), 2106 + .bcms = mmss_noc_bcms, 2107 + .num_bcms = ARRAY_SIZE(mmss_noc_bcms), 2108 + }; 2109 + 2110 + static struct qcom_icc_bcm * const nsp_noc_bcms[] = { 2111 + &bcm_co0, 2112 + }; 2113 + 2114 + static struct qcom_icc_node * const nsp_noc_nodes[] = { 2115 + [MASTER_CDSP_PROC] = &qxm_nsp, 2116 + [SLAVE_CDSP_MEM_NOC] = &qns_nsp_gemnoc, 2117 + }; 2118 + 2119 + static const struct qcom_icc_desc sm8550_nsp_noc = { 2120 + .nodes = nsp_noc_nodes, 2121 + .num_nodes = ARRAY_SIZE(nsp_noc_nodes), 2122 + .bcms = nsp_noc_bcms, 2123 + .num_bcms = ARRAY_SIZE(nsp_noc_bcms), 2124 + }; 2125 + 2126 + static struct qcom_icc_bcm * const pcie_anoc_bcms[] = { 2127 + &bcm_sn7, 2128 + }; 2129 + 2130 + static struct qcom_icc_node * const pcie_anoc_nodes[] = { 2131 + [MASTER_PCIE_ANOC_CFG] = &qsm_pcie_anoc_cfg, 2132 + [MASTER_PCIE_0] = &xm_pcie3_0, 2133 + [MASTER_PCIE_1] = &xm_pcie3_1, 2134 + [SLAVE_ANOC_PCIE_GEM_NOC] = &qns_pcie_mem_noc, 2135 + [SLAVE_SERVICE_PCIE_ANOC] = &srvc_pcie_aggre_noc, 2136 + }; 2137 + 2138 + static const struct qcom_icc_desc sm8550_pcie_anoc = { 2139 + .nodes = pcie_anoc_nodes, 2140 + .num_nodes = ARRAY_SIZE(pcie_anoc_nodes), 2141 + .bcms = pcie_anoc_bcms, 2142 + .num_bcms = ARRAY_SIZE(pcie_anoc_bcms), 2143 + }; 2144 + 2145 + static struct qcom_icc_bcm * const system_noc_bcms[] = { 2146 + &bcm_sn0, 2147 + &bcm_sn1, 2148 + &bcm_sn2, 2149 + &bcm_sn3, 2150 + }; 2151 + 2152 + static struct qcom_icc_node * const system_noc_nodes[] = { 2153 + [MASTER_GIC_AHB] = &qhm_gic, 2154 + [MASTER_A1NOC_SNOC] = &qnm_aggre1_noc, 2155 + [MASTER_A2NOC_SNOC] = &qnm_aggre2_noc, 2156 + [MASTER_GIC] = &xm_gic, 2157 + [SLAVE_SNOC_GEM_NOC_GC] = &qns_gemnoc_gc, 2158 + [SLAVE_SNOC_GEM_NOC_SF] = &qns_gemnoc_sf, 2159 + }; 2160 + 2161 + static const struct qcom_icc_desc sm8550_system_noc = { 2162 + .nodes = system_noc_nodes, 2163 + .num_nodes = ARRAY_SIZE(system_noc_nodes), 2164 + .bcms = system_noc_bcms, 2165 + .num_bcms = ARRAY_SIZE(system_noc_bcms), 2166 + }; 2167 + 2168 + static int qnoc_probe(struct platform_device *pdev) 2169 + { 2170 + const struct qcom_icc_desc *desc; 2171 + struct icc_onecell_data *data; 2172 + struct icc_provider *provider; 2173 + struct qcom_icc_node * const *qnodes; 2174 + struct qcom_icc_provider *qp; 2175 + struct icc_node *node; 2176 + size_t num_nodes, i; 2177 + int ret; 2178 + 2179 + desc = device_get_match_data(&pdev->dev); 2180 + if (!desc) 2181 + return -EINVAL; 2182 + 2183 + qnodes = desc->nodes; 2184 + num_nodes = desc->num_nodes; 2185 + 2186 + qp = devm_kzalloc(&pdev->dev, sizeof(*qp), GFP_KERNEL); 2187 + if (!qp) 2188 + return -ENOMEM; 2189 + 2190 + data = devm_kcalloc(&pdev->dev, num_nodes, sizeof(*node), GFP_KERNEL); 2191 + if (!data) 2192 + return -ENOMEM; 2193 + 2194 + provider = &qp->provider; 2195 + provider->dev = &pdev->dev; 2196 + provider->set = qcom_icc_set; 2197 + provider->pre_aggregate = qcom_icc_pre_aggregate; 2198 + provider->aggregate = qcom_icc_aggregate; 2199 + provider->xlate_extended = qcom_icc_xlate_extended; 2200 + INIT_LIST_HEAD(&provider->nodes); 2201 + provider->data = data; 2202 + 2203 + qp->dev = &pdev->dev; 2204 + qp->bcms = desc->bcms; 2205 + qp->num_bcms = desc->num_bcms; 2206 + 2207 + qp->voter = of_bcm_voter_get(qp->dev, NULL); 2208 + if (IS_ERR(qp->voter)) 2209 + return PTR_ERR(qp->voter); 2210 + 2211 + ret = icc_provider_add(provider); 2212 + if (ret) { 2213 + dev_err_probe(&pdev->dev, ret, 2214 + "error adding interconnect provider\n"); 2215 + return ret; 2216 + } 2217 + 2218 + for (i = 0; i < qp->num_bcms; i++) 2219 + qcom_icc_bcm_init(qp->bcms[i], &pdev->dev); 2220 + 2221 + for (i = 0; i < num_nodes; i++) { 2222 + size_t j; 2223 + 2224 + if (!qnodes[i]) 2225 + continue; 2226 + 2227 + node = icc_node_create(qnodes[i]->id); 2228 + if (IS_ERR(node)) { 2229 + ret = PTR_ERR(node); 2230 + goto err; 2231 + } 2232 + 2233 + node->name = qnodes[i]->name; 2234 + node->data = qnodes[i]; 2235 + icc_node_add(node, provider); 2236 + 2237 + for (j = 0; j < qnodes[i]->num_links; j++) 2238 + icc_link_create(node, qnodes[i]->links[j]); 2239 + 2240 + data->nodes[i] = node; 2241 + } 2242 + data->num_nodes = num_nodes; 2243 + 2244 + platform_set_drvdata(pdev, qp); 2245 + 2246 + return 0; 2247 + err: 2248 + icc_nodes_remove(provider); 2249 + icc_provider_del(provider); 2250 + return ret; 2251 + } 2252 + 2253 + static int qnoc_remove(struct platform_device *pdev) 2254 + { 2255 + struct qcom_icc_provider *qp = platform_get_drvdata(pdev); 2256 + 2257 + icc_nodes_remove(&qp->provider); 2258 + icc_provider_del(&qp->provider); 2259 + 2260 + return 0; 2261 + } 2262 + 2263 + static const struct of_device_id qnoc_of_match[] = { 2264 + { .compatible = "qcom,sm8550-aggre1-noc", 2265 + .data = &sm8550_aggre1_noc}, 2266 + { .compatible = "qcom,sm8550-aggre2-noc", 2267 + .data = &sm8550_aggre2_noc}, 2268 + { .compatible = "qcom,sm8550-clk-virt", 2269 + .data = &sm8550_clk_virt}, 2270 + { .compatible = "qcom,sm8550-config-noc", 2271 + .data = &sm8550_config_noc}, 2272 + { .compatible = "qcom,sm8550-cnoc-main", 2273 + .data = &sm8550_cnoc_main}, 2274 + { .compatible = "qcom,sm8550-gem-noc", 2275 + .data = &sm8550_gem_noc}, 2276 + { .compatible = "qcom,sm8550-lpass-ag-noc", 2277 + .data = &sm8550_lpass_ag_noc}, 2278 + { .compatible = "qcom,sm8550-lpass-lpiaon-noc", 2279 + .data = &sm8550_lpass_lpiaon_noc}, 2280 + { .compatible = "qcom,sm8550-lpass-lpicx-noc", 2281 + .data = &sm8550_lpass_lpicx_noc}, 2282 + { .compatible = "qcom,sm8550-mc-virt", 2283 + .data = &sm8550_mc_virt}, 2284 + { .compatible = "qcom,sm8550-mmss-noc", 2285 + .data = &sm8550_mmss_noc}, 2286 + { .compatible = "qcom,sm8550-nsp-noc", 2287 + .data = &sm8550_nsp_noc}, 2288 + { .compatible = "qcom,sm8550-pcie-anoc", 2289 + .data = &sm8550_pcie_anoc}, 2290 + { .compatible = "qcom,sm8550-system-noc", 2291 + .data = &sm8550_system_noc}, 2292 + { } 2293 + }; 2294 + MODULE_DEVICE_TABLE(of, qnoc_of_match); 2295 + 2296 + static struct platform_driver qnoc_driver = { 2297 + .probe = qnoc_probe, 2298 + .remove = qnoc_remove, 2299 + .driver = { 2300 + .name = "qnoc-sm8550", 2301 + .of_match_table = qnoc_of_match, 2302 + }, 2303 + }; 2304 + 2305 + static int __init qnoc_driver_init(void) 2306 + { 2307 + return platform_driver_register(&qnoc_driver); 2308 + } 2309 + core_initcall(qnoc_driver_init); 2310 + 2311 + static void __exit qnoc_driver_exit(void) 2312 + { 2313 + platform_driver_unregister(&qnoc_driver); 2314 + } 2315 + module_exit(qnoc_driver_exit); 2316 + 2317 + MODULE_DESCRIPTION("sm8550 NoC driver"); 2318 + MODULE_LICENSE("GPL");
+178
drivers/interconnect/qcom/sm8550.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-only */ 2 + /* 3 + * SM8450 interconnect IDs 4 + * 5 + * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. 6 + * Copyright (c) 2021, Linaro Limited 7 + */ 8 + 9 + #ifndef __DRIVERS_INTERCONNECT_QCOM_SM8450_H 10 + #define __DRIVERS_INTERCONNECT_QCOM_SM8450_H 11 + 12 + #define SM8550_MASTER_A1NOC_SNOC 0 13 + #define SM8550_MASTER_A2NOC_SNOC 1 14 + #define SM8550_MASTER_ANOC_PCIE_GEM_NOC 2 15 + #define SM8550_MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_0 3 16 + #define SM8550_MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_1 4 17 + #define SM8550_MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_2 5 18 + #define SM8550_MASTER_ANOC_PCIE_GEM_NOC_DISP 6 19 + #define SM8550_MASTER_APPSS_PROC 7 20 + #define SM8550_MASTER_CAMNOC_HF 8 21 + #define SM8550_MASTER_CAMNOC_HF_CAM_IFE_0 9 22 + #define SM8550_MASTER_CAMNOC_HF_CAM_IFE_1 10 23 + #define SM8550_MASTER_CAMNOC_HF_CAM_IFE_2 11 24 + #define SM8550_MASTER_CAMNOC_ICP 12 25 + #define SM8550_MASTER_CAMNOC_ICP_CAM_IFE_0 13 26 + #define SM8550_MASTER_CAMNOC_ICP_CAM_IFE_1 14 27 + #define SM8550_MASTER_CAMNOC_ICP_CAM_IFE_2 15 28 + #define SM8550_MASTER_CAMNOC_SF 16 29 + #define SM8550_MASTER_CAMNOC_SF_CAM_IFE_0 17 30 + #define SM8550_MASTER_CAMNOC_SF_CAM_IFE_1 18 31 + #define SM8550_MASTER_CAMNOC_SF_CAM_IFE_2 19 32 + #define SM8550_MASTER_CDSP_HCP 20 33 + #define SM8550_MASTER_CDSP_PROC 21 34 + #define SM8550_MASTER_CNOC_CFG 22 35 + #define SM8550_MASTER_CNOC_MNOC_CFG 23 36 + #define SM8550_MASTER_COMPUTE_NOC 24 37 + #define SM8550_MASTER_CRYPTO 25 38 + #define SM8550_MASTER_GEM_NOC_CNOC 26 39 + #define SM8550_MASTER_GEM_NOC_PCIE_SNOC 27 40 + #define SM8550_MASTER_GFX3D 28 41 + #define SM8550_MASTER_GIC 29 42 + #define SM8550_MASTER_GIC_AHB 30 43 + #define SM8550_MASTER_GPU_TCU 31 44 + #define SM8550_MASTER_IPA 32 45 + #define SM8550_MASTER_LLCC 33 46 + #define SM8550_MASTER_LLCC_CAM_IFE_0 34 47 + #define SM8550_MASTER_LLCC_CAM_IFE_1 35 48 + #define SM8550_MASTER_LLCC_CAM_IFE_2 36 49 + #define SM8550_MASTER_LLCC_DISP 37 50 + #define SM8550_MASTER_LPASS_GEM_NOC 38 51 + #define SM8550_MASTER_LPASS_LPINOC 39 52 + #define SM8550_MASTER_LPASS_PROC 40 53 + #define SM8550_MASTER_LPIAON_NOC 41 54 + #define SM8550_MASTER_MDP 42 55 + #define SM8550_MASTER_MDP_DISP 43 56 + #define SM8550_MASTER_MNOC_HF_MEM_NOC 44 57 + #define SM8550_MASTER_MNOC_HF_MEM_NOC_CAM_IFE_0 45 58 + #define SM8550_MASTER_MNOC_HF_MEM_NOC_CAM_IFE_1 46 59 + #define SM8550_MASTER_MNOC_HF_MEM_NOC_CAM_IFE_2 47 60 + #define SM8550_MASTER_MNOC_HF_MEM_NOC_DISP 48 61 + #define SM8550_MASTER_MNOC_SF_MEM_NOC 49 62 + #define SM8550_MASTER_MNOC_SF_MEM_NOC_CAM_IFE_0 50 63 + #define SM8550_MASTER_MNOC_SF_MEM_NOC_CAM_IFE_1 51 64 + #define SM8550_MASTER_MNOC_SF_MEM_NOC_CAM_IFE_2 52 65 + #define SM8550_MASTER_MSS_PROC 53 66 + #define SM8550_MASTER_PCIE_0 54 67 + #define SM8550_MASTER_PCIE_1 55 68 + #define SM8550_MASTER_PCIE_ANOC_CFG 56 69 + #define SM8550_MASTER_QDSS_BAM 57 70 + #define SM8550_MASTER_QDSS_ETR 58 71 + #define SM8550_MASTER_QDSS_ETR_1 59 72 + #define SM8550_MASTER_QSPI_0 60 73 + #define SM8550_MASTER_QUP_1 61 74 + #define SM8550_MASTER_QUP_2 62 75 + #define SM8550_MASTER_QUP_CORE_0 63 76 + #define SM8550_MASTER_QUP_CORE_1 64 77 + #define SM8550_MASTER_QUP_CORE_2 65 78 + #define SM8550_MASTER_SDCC_2 66 79 + #define SM8550_MASTER_SDCC_4 67 80 + #define SM8550_MASTER_SNOC_GC_MEM_NOC 68 81 + #define SM8550_MASTER_SNOC_SF_MEM_NOC 69 82 + #define SM8550_MASTER_SP 70 83 + #define SM8550_MASTER_SYS_TCU 71 84 + #define SM8550_MASTER_UFS_MEM 72 85 + #define SM8550_MASTER_USB3_0 73 86 + #define SM8550_MASTER_VIDEO 74 87 + #define SM8550_MASTER_VIDEO_CV_PROC 75 88 + #define SM8550_MASTER_VIDEO_PROC 76 89 + #define SM8550_MASTER_VIDEO_V_PROC 77 90 + #define SM8550_SLAVE_A1NOC_SNOC 78 91 + #define SM8550_SLAVE_A2NOC_SNOC 79 92 + #define SM8550_SLAVE_AHB2PHY_NORTH 80 93 + #define SM8550_SLAVE_AHB2PHY_SOUTH 81 94 + #define SM8550_SLAVE_ANOC_PCIE_GEM_NOC 82 95 + #define SM8550_SLAVE_AOSS 83 96 + #define SM8550_SLAVE_APPSS 84 97 + #define SM8550_SLAVE_BOOT_IMEM 85 98 + #define SM8550_SLAVE_CAMERA_CFG 86 99 + #define SM8550_SLAVE_CDSP_MEM_NOC 87 100 + #define SM8550_SLAVE_CLK_CTL 88 101 + #define SM8550_SLAVE_CNOC_CFG 89 102 + #define SM8550_SLAVE_CNOC_MNOC_CFG 90 103 + #define SM8550_SLAVE_CNOC_MSS 91 104 + #define SM8550_SLAVE_CPR_NSPCX 92 105 + #define SM8550_SLAVE_CRYPTO_0_CFG 93 106 + #define SM8550_SLAVE_CX_RDPM 94 107 + #define SM8550_SLAVE_DDRSS_CFG 95 108 + #define SM8550_SLAVE_DISPLAY_CFG 96 109 + #define SM8550_SLAVE_EBI1 97 110 + #define SM8550_SLAVE_EBI1_CAM_IFE_0 98 111 + #define SM8550_SLAVE_EBI1_CAM_IFE_1 99 112 + #define SM8550_SLAVE_EBI1_CAM_IFE_2 100 113 + #define SM8550_SLAVE_EBI1_DISP 101 114 + #define SM8550_SLAVE_GEM_NOC_CNOC 102 115 + #define SM8550_SLAVE_GFX3D_CFG 103 116 + #define SM8550_SLAVE_I2C 104 117 + #define SM8550_SLAVE_IMEM 105 118 + #define SM8550_SLAVE_IMEM_CFG 106 119 + #define SM8550_SLAVE_IPA_CFG 107 120 + #define SM8550_SLAVE_IPC_ROUTER_CFG 108 121 + #define SM8550_SLAVE_LLCC 109 122 + #define SM8550_SLAVE_LLCC_CAM_IFE_0 110 123 + #define SM8550_SLAVE_LLCC_CAM_IFE_1 111 124 + #define SM8550_SLAVE_LLCC_CAM_IFE_2 112 125 + #define SM8550_SLAVE_LLCC_DISP 113 126 + #define SM8550_SLAVE_LPASS_GEM_NOC 114 127 + #define SM8550_SLAVE_LPASS_QTB_CFG 115 128 + #define SM8550_SLAVE_LPIAON_NOC_LPASS_AG_NOC 116 129 + #define SM8550_SLAVE_LPICX_NOC_LPIAON_NOC 117 130 + #define SM8550_SLAVE_MEM_NOC_PCIE_SNOC 118 131 + #define SM8550_SLAVE_MNOC_HF_MEM_NOC 119 132 + #define SM8550_SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_0 120 133 + #define SM8550_SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_1 121 134 + #define SM8550_SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_2 122 135 + #define SM8550_SLAVE_MNOC_HF_MEM_NOC_DISP 123 136 + #define SM8550_SLAVE_MNOC_SF_MEM_NOC 124 137 + #define SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_0 125 138 + #define SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_1 126 139 + #define SM8550_SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_2 127 140 + #define SM8550_SLAVE_MX_RDPM 128 141 + #define SM8550_SLAVE_NSP_QTB_CFG 129 142 + #define SM8550_SLAVE_PCIE_0 130 143 + #define SM8550_SLAVE_PCIE_0_CFG 131 144 + #define SM8550_SLAVE_PCIE_1 132 145 + #define SM8550_SLAVE_PCIE_1_CFG 133 146 + #define SM8550_SLAVE_PCIE_ANOC_CFG 134 147 + #define SM8550_SLAVE_PDM 135 148 + #define SM8550_SLAVE_PIMEM_CFG 136 149 + #define SM8550_SLAVE_PRNG 137 150 + #define SM8550_SLAVE_QDSS_CFG 138 151 + #define SM8550_SLAVE_QDSS_STM 139 152 + #define SM8550_SLAVE_QSPI_0 140 153 + #define SM8550_SLAVE_QUP_1 141 154 + #define SM8550_SLAVE_QUP_2 142 155 + #define SM8550_SLAVE_QUP_CORE_0 143 156 + #define SM8550_SLAVE_QUP_CORE_1 144 157 + #define SM8550_SLAVE_QUP_CORE_2 145 158 + #define SM8550_SLAVE_RBCPR_CX_CFG 146 159 + #define SM8550_SLAVE_RBCPR_MMCX_CFG 147 160 + #define SM8550_SLAVE_RBCPR_MXA_CFG 148 161 + #define SM8550_SLAVE_RBCPR_MXC_CFG 149 162 + #define SM8550_SLAVE_SDCC_2 150 163 + #define SM8550_SLAVE_SDCC_4 151 164 + #define SM8550_SLAVE_SERVICE_MNOC 152 165 + #define SM8550_SLAVE_SERVICE_PCIE_ANOC 153 166 + #define SM8550_SLAVE_SNOC_GEM_NOC_GC 154 167 + #define SM8550_SLAVE_SNOC_GEM_NOC_SF 155 168 + #define SM8550_SLAVE_SPSS_CFG 156 169 + #define SM8550_SLAVE_TCSR 157 170 + #define SM8550_SLAVE_TCU 158 171 + #define SM8550_SLAVE_TLMM 159 172 + #define SM8550_SLAVE_TME_CFG 160 173 + #define SM8550_SLAVE_UFS_MEM_CFG 161 174 + #define SM8550_SLAVE_USB3_0 162 175 + #define SM8550_SLAVE_VENUS_CFG 163 176 + #define SM8550_SLAVE_VSENSE_CTRL_CFG 164 177 + 178 + #endif
+98
include/dt-bindings/interconnect/qcom,qdu1000-rpmh.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */ 2 + /* 3 + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. 4 + */ 5 + 6 + #ifndef __DT_BINDINGS_INTERCONNECT_QCOM_QDU1000_H 7 + #define __DT_BINDINGS_INTERCONNECT_QCOM_QDU1000_H 8 + 9 + #define MASTER_QUP_CORE_0 0 10 + #define MASTER_QUP_CORE_1 1 11 + #define SLAVE_QUP_CORE_0 2 12 + #define SLAVE_QUP_CORE_1 3 13 + 14 + #define MASTER_SYS_TCU 0 15 + #define MASTER_APPSS_PROC 1 16 + #define MASTER_GEMNOC_ECPRI_DMA 2 17 + #define MASTER_FEC_2_GEMNOC 3 18 + #define MASTER_ANOC_PCIE_GEM_NOC 4 19 + #define MASTER_SNOC_GC_MEM_NOC 5 20 + #define MASTER_SNOC_SF_MEM_NOC 6 21 + #define MASTER_MSS_PROC 7 22 + #define SLAVE_GEM_NOC_CNOC 8 23 + #define SLAVE_LLCC 9 24 + #define SLAVE_GEMNOC_MODEM_CNOC 10 25 + #define SLAVE_MEM_NOC_PCIE_SNOC 11 26 + 27 + #define MASTER_LLCC 0 28 + #define SLAVE_EBI1 1 29 + 30 + #define MASTER_GIC_AHB 0 31 + #define MASTER_QDSS_BAM 1 32 + #define MASTER_QPIC 2 33 + #define MASTER_QSPI_0 3 34 + #define MASTER_QUP_0 4 35 + #define MASTER_QUP_1 5 36 + #define MASTER_SNOC_CFG 6 37 + #define MASTER_ANOC_SNOC 7 38 + #define MASTER_ANOC_GSI 8 39 + #define MASTER_GEM_NOC_CNOC 9 40 + #define MASTER_GEMNOC_MODEM_CNOC 10 41 + #define MASTER_GEM_NOC_PCIE_SNOC 11 42 + #define MASTER_CRYPTO 12 43 + #define MASTER_ECPRI_GSI 13 44 + #define MASTER_PIMEM 14 45 + #define MASTER_SNOC_ECPRI_DMA 15 46 + #define MASTER_GIC 16 47 + #define MASTER_PCIE 17 48 + #define MASTER_QDSS_ETR 18 49 + #define MASTER_QDSS_ETR_1 19 50 + #define MASTER_SDCC_1 20 51 + #define MASTER_USB3 21 52 + #define SLAVE_AHB2PHY_SOUTH 22 53 + #define SLAVE_AHB2PHY_NORTH 23 54 + #define SLAVE_AHB2PHY_EAST 24 55 + #define SLAVE_AOSS 25 56 + #define SLAVE_CLK_CTL 26 57 + #define SLAVE_RBCPR_CX_CFG 27 58 + #define SLAVE_RBCPR_MX_CFG 28 59 + #define SLAVE_CRYPTO_0_CFG 29 60 + #define SLAVE_ECPRI_CFG 30 61 + #define SLAVE_IMEM_CFG 31 62 + #define SLAVE_IPC_ROUTER_CFG 32 63 + #define SLAVE_CNOC_MSS 33 64 + #define SLAVE_PCIE_CFG 34 65 + #define SLAVE_PDM 35 66 + #define SLAVE_PIMEM_CFG 36 67 + #define SLAVE_PRNG 37 68 + #define SLAVE_QDSS_CFG 38 69 + #define SLAVE_QPIC 40 70 + #define SLAVE_QSPI_0 41 71 + #define SLAVE_QUP_0 42 72 + #define SLAVE_QUP_1 43 73 + #define SLAVE_SDCC_2 44 74 + #define SLAVE_SMBUS_CFG 45 75 + #define SLAVE_SNOC_CFG 46 76 + #define SLAVE_TCSR 47 77 + #define SLAVE_TLMM 48 78 + #define SLAVE_TME_CFG 49 79 + #define SLAVE_TSC_CFG 50 80 + #define SLAVE_USB3_0 51 81 + #define SLAVE_VSENSE_CTRL_CFG 52 82 + #define SLAVE_A1NOC_SNOC 53 83 + #define SLAVE_ANOC_SNOC_GSI 54 84 + #define SLAVE_DDRSS_CFG 55 85 + #define SLAVE_ECPRI_GEMNOC 56 86 + #define SLAVE_SNOC_GEM_NOC_GC 57 87 + #define SLAVE_SNOC_GEM_NOC_SF 58 88 + #define SLAVE_MODEM_OFFLINE 59 89 + #define SLAVE_ANOC_PCIE_GEM_NOC 60 90 + #define SLAVE_IMEM 61 91 + #define SLAVE_PIMEM 62 92 + #define SLAVE_SERVICE_SNOC 63 93 + #define SLAVE_ETHERNET_SS 64 94 + #define SLAVE_PCIE_0 65 95 + #define SLAVE_QDSS_STM 66 96 + #define SLAVE_TCU 67 97 + 98 + #endif
+231
include/dt-bindings/interconnect/qcom,sa8775p-rpmh.h
··· 1 + /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ 2 + /* 3 + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. 4 + * Copyright (c) 2023, Linaro Limited 5 + */ 6 + 7 + #ifndef __DT_BINDINGS_INTERCONNECT_QCOM_SA8775P_H 8 + #define __DT_BINDINGS_INTERCONNECT_QCOM_SA8775P_H 9 + 10 + /* aggre1_noc */ 11 + #define MASTER_QUP_3 0 12 + #define MASTER_EMAC 1 13 + #define MASTER_EMAC_1 2 14 + #define MASTER_SDC 3 15 + #define MASTER_UFS_MEM 4 16 + #define MASTER_USB2 5 17 + #define MASTER_USB3_0 6 18 + #define MASTER_USB3_1 7 19 + #define SLAVE_A1NOC_SNOC 8 20 + 21 + /* aggre2_noc */ 22 + #define MASTER_QDSS_BAM 0 23 + #define MASTER_QUP_0 1 24 + #define MASTER_QUP_1 2 25 + #define MASTER_QUP_2 3 26 + #define MASTER_CNOC_A2NOC 4 27 + #define MASTER_CRYPTO_CORE0 5 28 + #define MASTER_CRYPTO_CORE1 6 29 + #define MASTER_IPA 7 30 + #define MASTER_QDSS_ETR_0 8 31 + #define MASTER_QDSS_ETR_1 9 32 + #define MASTER_UFS_CARD 10 33 + #define SLAVE_A2NOC_SNOC 11 34 + 35 + /* clk_virt */ 36 + #define MASTER_QUP_CORE_0 0 37 + #define MASTER_QUP_CORE_1 1 38 + #define MASTER_QUP_CORE_2 2 39 + #define MASTER_QUP_CORE_3 3 40 + #define SLAVE_QUP_CORE_0 4 41 + #define SLAVE_QUP_CORE_1 5 42 + #define SLAVE_QUP_CORE_2 6 43 + #define SLAVE_QUP_CORE_3 7 44 + 45 + /* config_noc */ 46 + #define MASTER_GEM_NOC_CNOC 0 47 + #define MASTER_GEM_NOC_PCIE_SNOC 1 48 + #define SLAVE_AHB2PHY_0 2 49 + #define SLAVE_AHB2PHY_1 3 50 + #define SLAVE_AHB2PHY_2 4 51 + #define SLAVE_AHB2PHY_3 5 52 + #define SLAVE_ANOC_THROTTLE_CFG 6 53 + #define SLAVE_AOSS 7 54 + #define SLAVE_APPSS 8 55 + #define SLAVE_BOOT_ROM 9 56 + #define SLAVE_CAMERA_CFG 10 57 + #define SLAVE_CAMERA_NRT_THROTTLE_CFG 11 58 + #define SLAVE_CAMERA_RT_THROTTLE_CFG 12 59 + #define SLAVE_CLK_CTL 13 60 + #define SLAVE_CDSP_CFG 14 61 + #define SLAVE_CDSP1_CFG 15 62 + #define SLAVE_RBCPR_CX_CFG 16 63 + #define SLAVE_RBCPR_MMCX_CFG 17 64 + #define SLAVE_RBCPR_MX_CFG 18 65 + #define SLAVE_CPR_NSPCX 19 66 + #define SLAVE_CRYPTO_0_CFG 20 67 + #define SLAVE_CX_RDPM 21 68 + #define SLAVE_DISPLAY_CFG 22 69 + #define SLAVE_DISPLAY_RT_THROTTLE_CFG 23 70 + #define SLAVE_DISPLAY1_CFG 24 71 + #define SLAVE_DISPLAY1_RT_THROTTLE_CFG 25 72 + #define SLAVE_EMAC_CFG 26 73 + #define SLAVE_EMAC1_CFG 27 74 + #define SLAVE_GP_DSP0_CFG 28 75 + #define SLAVE_GP_DSP1_CFG 29 76 + #define SLAVE_GPDSP0_THROTTLE_CFG 30 77 + #define SLAVE_GPDSP1_THROTTLE_CFG 31 78 + #define SLAVE_GPU_TCU_THROTTLE_CFG 32 79 + #define SLAVE_GFX3D_CFG 33 80 + #define SLAVE_HWKM 34 81 + #define SLAVE_IMEM_CFG 35 82 + #define SLAVE_IPA_CFG 36 83 + #define SLAVE_IPC_ROUTER_CFG 37 84 + #define SLAVE_LPASS 38 85 + #define SLAVE_LPASS_THROTTLE_CFG 39 86 + #define SLAVE_MX_RDPM 40 87 + #define SLAVE_MXC_RDPM 41 88 + #define SLAVE_PCIE_0_CFG 42 89 + #define SLAVE_PCIE_1_CFG 43 90 + #define SLAVE_PCIE_RSC_CFG 44 91 + #define SLAVE_PCIE_TCU_THROTTLE_CFG 45 92 + #define SLAVE_PCIE_THROTTLE_CFG 46 93 + #define SLAVE_PDM 47 94 + #define SLAVE_PIMEM_CFG 48 95 + #define SLAVE_PKA_WRAPPER_CFG 49 96 + #define SLAVE_QDSS_CFG 50 97 + #define SLAVE_QM_CFG 51 98 + #define SLAVE_QM_MPU_CFG 52 99 + #define SLAVE_QUP_0 53 100 + #define SLAVE_QUP_1 54 101 + #define SLAVE_QUP_2 55 102 + #define SLAVE_QUP_3 56 103 + #define SLAVE_SAIL_THROTTLE_CFG 57 104 + #define SLAVE_SDC1 58 105 + #define SLAVE_SECURITY 59 106 + #define SLAVE_SNOC_THROTTLE_CFG 60 107 + #define SLAVE_TCSR 61 108 + #define SLAVE_TLMM 62 109 + #define SLAVE_TSC_CFG 63 110 + #define SLAVE_UFS_CARD_CFG 64 111 + #define SLAVE_UFS_MEM_CFG 65 112 + #define SLAVE_USB2 66 113 + #define SLAVE_USB3_0 67 114 + #define SLAVE_USB3_1 68 115 + #define SLAVE_VENUS_CFG 69 116 + #define SLAVE_VENUS_CVP_THROTTLE_CFG 70 117 + #define SLAVE_VENUS_V_CPU_THROTTLE_CFG 71 118 + #define SLAVE_VENUS_VCODEC_THROTTLE_CFG 72 119 + #define SLAVE_DDRSS_CFG 73 120 + #define SLAVE_GPDSP_NOC_CFG 74 121 + #define SLAVE_CNOC_MNOC_HF_CFG 75 122 + #define SLAVE_CNOC_MNOC_SF_CFG 76 123 + #define SLAVE_PCIE_ANOC_CFG 77 124 + #define SLAVE_SNOC_CFG 78 125 + #define SLAVE_BOOT_IMEM 79 126 + #define SLAVE_IMEM 80 127 + #define SLAVE_PIMEM 81 128 + #define SLAVE_PCIE_0 82 129 + #define SLAVE_PCIE_1 83 130 + #define SLAVE_QDSS_STM 84 131 + #define SLAVE_TCU 85 132 + 133 + /* dc_noc */ 134 + #define MASTER_CNOC_DC_NOC 0 135 + #define SLAVE_LLCC_CFG 1 136 + #define SLAVE_GEM_NOC_CFG 2 137 + 138 + /* gem_noc */ 139 + #define MASTER_GPU_TCU 0 140 + #define MASTER_PCIE_TCU 1 141 + #define MASTER_SYS_TCU 2 142 + #define MASTER_APPSS_PROC 3 143 + #define MASTER_COMPUTE_NOC 4 144 + #define MASTER_COMPUTE_NOC_1 5 145 + #define MASTER_GEM_NOC_CFG 6 146 + #define MASTER_GPDSP_SAIL 7 147 + #define MASTER_GFX3D 8 148 + #define MASTER_MNOC_HF_MEM_NOC 9 149 + #define MASTER_MNOC_SF_MEM_NOC 10 150 + #define MASTER_ANOC_PCIE_GEM_NOC 11 151 + #define MASTER_SNOC_GC_MEM_NOC 12 152 + #define MASTER_SNOC_SF_MEM_NOC 13 153 + #define SLAVE_GEM_NOC_CNOC 14 154 + #define SLAVE_LLCC 15 155 + #define SLAVE_GEM_NOC_PCIE_CNOC 16 156 + #define SLAVE_SERVICE_GEM_NOC_1 17 157 + #define SLAVE_SERVICE_GEM_NOC_2 18 158 + #define SLAVE_SERVICE_GEM_NOC 19 159 + #define SLAVE_SERVICE_GEM_NOC2 20 160 + 161 + /* gpdsp_anoc */ 162 + #define MASTER_DSP0 0 163 + #define MASTER_DSP1 1 164 + #define SLAVE_GP_DSP_SAIL_NOC 2 165 + 166 + /* lpass_ag_noc */ 167 + #define MASTER_CNOC_LPASS_AG_NOC 0 168 + #define MASTER_LPASS_PROC 1 169 + #define SLAVE_LPASS_CORE_CFG 2 170 + #define SLAVE_LPASS_LPI_CFG 3 171 + #define SLAVE_LPASS_MPU_CFG 4 172 + #define SLAVE_LPASS_TOP_CFG 5 173 + #define SLAVE_LPASS_SNOC 6 174 + #define SLAVE_SERVICES_LPASS_AML_NOC 7 175 + #define SLAVE_SERVICE_LPASS_AG_NOC 8 176 + 177 + /* mc_virt */ 178 + #define MASTER_LLCC 0 179 + #define SLAVE_EBI1 1 180 + 181 + /*mmss_noc */ 182 + #define MASTER_CAMNOC_HF 0 183 + #define MASTER_CAMNOC_ICP 1 184 + #define MASTER_CAMNOC_SF 2 185 + #define MASTER_MDP0 3 186 + #define MASTER_MDP1 4 187 + #define MASTER_MDP_CORE1_0 5 188 + #define MASTER_MDP_CORE1_1 6 189 + #define MASTER_CNOC_MNOC_HF_CFG 7 190 + #define MASTER_CNOC_MNOC_SF_CFG 8 191 + #define MASTER_VIDEO_P0 9 192 + #define MASTER_VIDEO_P1 10 193 + #define MASTER_VIDEO_PROC 11 194 + #define MASTER_VIDEO_V_PROC 12 195 + #define SLAVE_MNOC_HF_MEM_NOC 13 196 + #define SLAVE_MNOC_SF_MEM_NOC 14 197 + #define SLAVE_SERVICE_MNOC_HF 15 198 + #define SLAVE_SERVICE_MNOC_SF 16 199 + 200 + /* nspa_noc */ 201 + #define MASTER_CDSP_NOC_CFG 0 202 + #define MASTER_CDSP_PROC 1 203 + #define SLAVE_HCP_A 2 204 + #define SLAVE_CDSP_MEM_NOC 3 205 + #define SLAVE_SERVICE_NSP_NOC 4 206 + 207 + /* nspb_noc */ 208 + #define MASTER_CDSPB_NOC_CFG 0 209 + #define MASTER_CDSP_PROC_B 1 210 + #define SLAVE_CDSPB_MEM_NOC 2 211 + #define SLAVE_HCP_B 3 212 + #define SLAVE_SERVICE_NSPB_NOC 4 213 + 214 + /* pcie_anoc */ 215 + #define MASTER_PCIE_0 0 216 + #define MASTER_PCIE_1 1 217 + #define SLAVE_ANOC_PCIE_GEM_NOC 2 218 + 219 + /* system_noc */ 220 + #define MASTER_GIC_AHB 0 221 + #define MASTER_A1NOC_SNOC 1 222 + #define MASTER_A2NOC_SNOC 2 223 + #define MASTER_LPASS_ANOC 3 224 + #define MASTER_SNOC_CFG 4 225 + #define MASTER_PIMEM 5 226 + #define MASTER_GIC 6 227 + #define SLAVE_SNOC_GEM_NOC_GC 7 228 + #define SLAVE_SNOC_GEM_NOC_SF 8 229 + #define SLAVE_SERVICE_SNOC 9 230 + 231 + #endif /* __DT_BINDINGS_INTERCONNECT_QCOM_SA8775P_H */
-3
include/dt-bindings/interconnect/qcom,sc7180.h
··· 108 108 #define SLAVE_LLCC 11 109 109 #define SLAVE_SERVICE_GEM_NOC 12 110 110 111 - #define MASTER_IPA_CORE 0 112 - #define SLAVE_IPA_CORE 1 113 - 114 111 #define MASTER_LLCC 0 115 112 #define SLAVE_EBI1 1 116 113
-3
include/dt-bindings/interconnect/qcom,sc8180x.h
··· 129 129 #define SLAVE_SERVICE_GEM_NOC 16 130 130 #define SLAVE_SERVICE_GEM_NOC_1 17 131 131 132 - #define MASTER_IPA_CORE 0 133 - #define SLAVE_IPA_CORE 1 134 - 135 132 #define MASTER_LLCC 0 136 133 #define SLAVE_EBI_CH0 1 137 134
+2 -2
include/dt-bindings/interconnect/qcom,sc8280xp.h
··· 48 48 #define SLAVE_SERVICE_A2NOC 19 49 49 50 50 /* clk_virt */ 51 - #define MASTER_IPA_CORE 0 51 + /* 0 was used by MASTER_IPA_CORE, now represented as RPMh clock */ 52 52 #define MASTER_QUP_CORE_0 1 53 53 #define MASTER_QUP_CORE_1 2 54 54 #define MASTER_QUP_CORE_2 3 55 - #define SLAVE_IPA_CORE 4 55 + /* 4 was used by SLAVE_IPA_CORE, now represented as RPMh clock */ 56 56 #define SLAVE_QUP_CORE_0 5 57 57 #define SLAVE_QUP_CORE_1 6 58 58 #define SLAVE_QUP_CORE_2 7
+136
include/dt-bindings/interconnect/qcom,sdm670-rpmh.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */ 2 + /* 3 + * Qualcomm SDM670 interconnect IDs 4 + * 5 + * Copyright (c) 2022, The Linux Foundation. All rights reserved. 6 + */ 7 + 8 + #ifndef __DT_BINDINGS_INTERCONNECT_QCOM_SDM670_H 9 + #define __DT_BINDINGS_INTERCONNECT_QCOM_SDM670_H 10 + 11 + #define MASTER_A1NOC_CFG 0 12 + #define MASTER_BLSP_1 1 13 + #define MASTER_TSIF 2 14 + #define MASTER_EMMC 3 15 + #define MASTER_SDCC_2 4 16 + #define MASTER_SDCC_4 5 17 + #define MASTER_UFS_MEM 6 18 + #define SLAVE_A1NOC_SNOC 7 19 + #define SLAVE_SERVICE_A1NOC 8 20 + 21 + #define MASTER_A2NOC_CFG 0 22 + #define MASTER_QDSS_BAM 1 23 + #define MASTER_BLSP_2 2 24 + #define MASTER_CNOC_A2NOC 3 25 + #define MASTER_CRYPTO_CORE_0 4 26 + #define MASTER_IPA 5 27 + #define MASTER_QDSS_ETR 6 28 + #define MASTER_USB3 7 29 + #define SLAVE_A2NOC_SNOC 8 30 + #define SLAVE_SERVICE_A2NOC 9 31 + 32 + 33 + #define MASTER_SPDM 0 34 + #define MASTER_SNOC_CNOC 1 35 + #define SLAVE_A1NOC_CFG 2 36 + #define SLAVE_A2NOC_CFG 3 37 + #define SLAVE_AOP 4 38 + #define SLAVE_AOSS 5 39 + #define SLAVE_CAMERA_CFG 6 40 + #define SLAVE_CLK_CTL 7 41 + #define SLAVE_CDSP_CFG 8 42 + #define SLAVE_RBCPR_CX_CFG 9 43 + #define SLAVE_CRYPTO_0_CFG 10 44 + #define SLAVE_DCC_CFG 11 45 + #define SLAVE_CNOC_DDRSS 12 46 + #define SLAVE_DISPLAY_CFG 13 47 + #define SLAVE_EMMC_CFG 14 48 + #define SLAVE_GLM 15 49 + #define SLAVE_GRAPHICS_3D_CFG 16 50 + #define SLAVE_IMEM_CFG 17 51 + #define SLAVE_IPA_CFG 18 52 + #define SLAVE_CNOC_MNOC_CFG 19 53 + #define SLAVE_PDM 20 54 + #define SLAVE_SOUTH_PHY_CFG 21 55 + #define SLAVE_PIMEM_CFG 22 56 + #define SLAVE_PRNG 23 57 + #define SLAVE_QDSS_CFG 24 58 + #define SLAVE_BLSP_2 25 59 + #define SLAVE_BLSP_1 26 60 + #define SLAVE_SDCC_2 27 61 + #define SLAVE_SDCC_4 28 62 + #define SLAVE_SNOC_CFG 29 63 + #define SLAVE_SPDM_WRAPPER 30 64 + #define SLAVE_TCSR 31 65 + #define SLAVE_TLMM_NORTH 32 66 + #define SLAVE_TLMM_SOUTH 33 67 + #define SLAVE_TSIF 34 68 + #define SLAVE_UFS_MEM_CFG 35 69 + #define SLAVE_USB3 36 70 + #define SLAVE_VENUS_CFG 37 71 + #define SLAVE_VSENSE_CTRL_CFG 38 72 + #define SLAVE_CNOC_A2NOC 39 73 + #define SLAVE_SERVICE_CNOC 40 74 + 75 + #define MASTER_CNOC_DC_NOC 0 76 + #define SLAVE_LLCC_CFG 1 77 + #define SLAVE_MEM_NOC_CFG 2 78 + 79 + #define MASTER_AMPSS_M0 0 80 + #define MASTER_GNOC_CFG 1 81 + #define SLAVE_GNOC_SNOC 2 82 + #define SLAVE_GNOC_MEM_NOC 3 83 + #define SLAVE_SERVICE_GNOC 4 84 + 85 + #define MASTER_TCU_0 0 86 + #define MASTER_MEM_NOC_CFG 1 87 + #define MASTER_GNOC_MEM_NOC 2 88 + #define MASTER_MNOC_HF_MEM_NOC 3 89 + #define MASTER_MNOC_SF_MEM_NOC 4 90 + #define MASTER_SNOC_GC_MEM_NOC 5 91 + #define MASTER_SNOC_SF_MEM_NOC 6 92 + #define MASTER_GRAPHICS_3D 7 93 + #define SLAVE_MSS_PROC_MS_MPU_CFG 8 94 + #define SLAVE_MEM_NOC_GNOC 9 95 + #define SLAVE_LLCC 10 96 + #define SLAVE_MEM_NOC_SNOC 11 97 + #define SLAVE_SERVICE_MEM_NOC 12 98 + #define MASTER_LLCC 13 99 + #define SLAVE_EBI_CH0 14 100 + 101 + #define MASTER_CNOC_MNOC_CFG 0 102 + #define MASTER_CAMNOC_HF0 1 103 + #define MASTER_CAMNOC_HF1 2 104 + #define MASTER_CAMNOC_SF 3 105 + #define MASTER_MDP_PORT0 4 106 + #define MASTER_MDP_PORT1 5 107 + #define MASTER_ROTATOR 6 108 + #define MASTER_VIDEO_P0 7 109 + #define MASTER_VIDEO_P1 8 110 + #define MASTER_VIDEO_PROC 9 111 + #define SLAVE_MNOC_SF_MEM_NOC 10 112 + #define SLAVE_MNOC_HF_MEM_NOC 11 113 + #define SLAVE_SERVICE_MNOC 12 114 + 115 + #define MASTER_SNOC_CFG 0 116 + #define MASTER_A1NOC_SNOC 1 117 + #define MASTER_A2NOC_SNOC 2 118 + #define MASTER_GNOC_SNOC 3 119 + #define MASTER_MEM_NOC_SNOC 4 120 + #define MASTER_PIMEM 5 121 + #define MASTER_GIC 6 122 + #define SLAVE_APPSS 7 123 + #define SLAVE_SNOC_CNOC 8 124 + #define SLAVE_SNOC_MEM_NOC_GC 9 125 + #define SLAVE_SNOC_MEM_NOC_SF 10 126 + #define SLAVE_OCIMEM 11 127 + #define SLAVE_PIMEM 12 128 + #define SLAVE_SERVICE_SNOC 13 129 + #define SLAVE_QDSS_STM 14 130 + #define SLAVE_TCU 15 131 + #define MASTER_CAMNOC_HF0_UNCOMP 16 132 + #define MASTER_CAMNOC_HF1_UNCOMP 17 133 + #define MASTER_CAMNOC_SF_UNCOMP 18 134 + #define SLAVE_CAMNOC_UNCOMP 19 135 + 136 + #endif
-2
include/dt-bindings/interconnect/qcom,sdx55.h
··· 70 70 #define SLAVE_QDSS_STM 48 71 71 #define SLAVE_TCU 49 72 72 73 - #define MASTER_IPA_CORE 0 74 - #define SLAVE_IPA_CORE 1 75 73 76 74 #endif
-3
include/dt-bindings/interconnect/qcom,sm8150.h
··· 121 121 #define SLAVE_LLCC 15 122 122 #define SLAVE_SERVICE_GEM_NOC 16 123 123 124 - #define MASTER_IPA_CORE 0 125 - #define SLAVE_IPA_CORE 1 126 - 127 124 #define MASTER_LLCC 0 128 125 #define SLAVE_EBI_CH0 1 129 126
-3
include/dt-bindings/interconnect/qcom,sm8250.h
··· 115 115 #define SLAVE_SERVICE_GEM_NOC_2 15 116 116 #define SLAVE_SERVICE_GEM_NOC 16 117 117 118 - #define MASTER_IPA_CORE 0 119 - #define SLAVE_IPA_CORE 1 120 - 121 118 #define MASTER_LLCC 0 122 119 #define SLAVE_EBI_CH0 1 123 120
+189
include/dt-bindings/interconnect/qcom,sm8550-rpmh.h
··· 1 + /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ 2 + /* 3 + * Copyright (c) 2021, The Linux Foundation. All rights reserved. 4 + * Copyright (c) 2022, Linaro Limited 5 + */ 6 + 7 + #ifndef __DT_BINDINGS_INTERCONNECT_QCOM_SM8550_H 8 + #define __DT_BINDINGS_INTERCONNECT_QCOM_SM8550_H 9 + 10 + #define MASTER_QSPI_0 0 11 + #define MASTER_QUP_1 1 12 + #define MASTER_SDCC_4 2 13 + #define MASTER_UFS_MEM 3 14 + #define MASTER_USB3_0 4 15 + #define SLAVE_A1NOC_SNOC 5 16 + 17 + #define MASTER_QDSS_BAM 0 18 + #define MASTER_QUP_2 1 19 + #define MASTER_CRYPTO 2 20 + #define MASTER_IPA 3 21 + #define MASTER_SP 4 22 + #define MASTER_QDSS_ETR 5 23 + #define MASTER_QDSS_ETR_1 6 24 + #define MASTER_SDCC_2 7 25 + #define SLAVE_A2NOC_SNOC 8 26 + 27 + #define MASTER_QUP_CORE_0 0 28 + #define MASTER_QUP_CORE_1 1 29 + #define MASTER_QUP_CORE_2 2 30 + #define SLAVE_QUP_CORE_0 3 31 + #define SLAVE_QUP_CORE_1 4 32 + #define SLAVE_QUP_CORE_2 5 33 + 34 + #define MASTER_CNOC_CFG 0 35 + #define SLAVE_AHB2PHY_SOUTH 1 36 + #define SLAVE_AHB2PHY_NORTH 2 37 + #define SLAVE_APPSS 3 38 + #define SLAVE_CAMERA_CFG 4 39 + #define SLAVE_CLK_CTL 5 40 + #define SLAVE_RBCPR_CX_CFG 6 41 + #define SLAVE_RBCPR_MMCX_CFG 7 42 + #define SLAVE_RBCPR_MXA_CFG 8 43 + #define SLAVE_RBCPR_MXC_CFG 9 44 + #define SLAVE_CPR_NSPCX 10 45 + #define SLAVE_CRYPTO_0_CFG 11 46 + #define SLAVE_CX_RDPM 12 47 + #define SLAVE_DISPLAY_CFG 13 48 + #define SLAVE_GFX3D_CFG 14 49 + #define SLAVE_I2C 15 50 + #define SLAVE_IMEM_CFG 16 51 + #define SLAVE_IPA_CFG 17 52 + #define SLAVE_IPC_ROUTER_CFG 18 53 + #define SLAVE_CNOC_MSS 19 54 + #define SLAVE_MX_RDPM 20 55 + #define SLAVE_PCIE_0_CFG 21 56 + #define SLAVE_PCIE_1_CFG 22 57 + #define SLAVE_PDM 23 58 + #define SLAVE_PIMEM_CFG 24 59 + #define SLAVE_PRNG 25 60 + #define SLAVE_QDSS_CFG 26 61 + #define SLAVE_QSPI_0 27 62 + #define SLAVE_QUP_1 28 63 + #define SLAVE_QUP_2 29 64 + #define SLAVE_SDCC_2 30 65 + #define SLAVE_SDCC_4 31 66 + #define SLAVE_SPSS_CFG 32 67 + #define SLAVE_TCSR 33 68 + #define SLAVE_TLMM 34 69 + #define SLAVE_UFS_MEM_CFG 35 70 + #define SLAVE_USB3_0 36 71 + #define SLAVE_VENUS_CFG 37 72 + #define SLAVE_VSENSE_CTRL_CFG 38 73 + #define SLAVE_LPASS_QTB_CFG 39 74 + #define SLAVE_CNOC_MNOC_CFG 40 75 + #define SLAVE_NSP_QTB_CFG 41 76 + #define SLAVE_PCIE_ANOC_CFG 42 77 + #define SLAVE_QDSS_STM 43 78 + #define SLAVE_TCU 44 79 + 80 + #define MASTER_GEM_NOC_CNOC 0 81 + #define MASTER_GEM_NOC_PCIE_SNOC 1 82 + #define SLAVE_AOSS 2 83 + #define SLAVE_TME_CFG 3 84 + #define SLAVE_CNOC_CFG 4 85 + #define SLAVE_DDRSS_CFG 5 86 + #define SLAVE_BOOT_IMEM 6 87 + #define SLAVE_IMEM 7 88 + #define SLAVE_PCIE_0 8 89 + #define SLAVE_PCIE_1 9 90 + 91 + #define MASTER_GPU_TCU 0 92 + #define MASTER_SYS_TCU 1 93 + #define MASTER_APPSS_PROC 2 94 + #define MASTER_GFX3D 3 95 + #define MASTER_LPASS_GEM_NOC 4 96 + #define MASTER_MSS_PROC 5 97 + #define MASTER_MNOC_HF_MEM_NOC 6 98 + #define MASTER_MNOC_SF_MEM_NOC 7 99 + #define MASTER_COMPUTE_NOC 8 100 + #define MASTER_ANOC_PCIE_GEM_NOC 9 101 + #define MASTER_SNOC_GC_MEM_NOC 10 102 + #define MASTER_SNOC_SF_MEM_NOC 11 103 + #define SLAVE_GEM_NOC_CNOC 12 104 + #define SLAVE_LLCC 13 105 + #define SLAVE_MEM_NOC_PCIE_SNOC 14 106 + #define MASTER_MNOC_HF_MEM_NOC_DISP 15 107 + #define MASTER_ANOC_PCIE_GEM_NOC_DISP 16 108 + #define SLAVE_LLCC_DISP 17 109 + #define MASTER_MNOC_HF_MEM_NOC_CAM_IFE_0 18 110 + #define MASTER_MNOC_SF_MEM_NOC_CAM_IFE_0 19 111 + #define MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_0 20 112 + #define SLAVE_LLCC_CAM_IFE_0 21 113 + #define MASTER_MNOC_HF_MEM_NOC_CAM_IFE_1 22 114 + #define MASTER_MNOC_SF_MEM_NOC_CAM_IFE_1 23 115 + #define MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_1 24 116 + #define SLAVE_LLCC_CAM_IFE_1 25 117 + #define MASTER_MNOC_HF_MEM_NOC_CAM_IFE_2 26 118 + #define MASTER_MNOC_SF_MEM_NOC_CAM_IFE_2 27 119 + #define MASTER_ANOC_PCIE_GEM_NOC_CAM_IFE_2 28 120 + #define SLAVE_LLCC_CAM_IFE_2 29 121 + 122 + #define MASTER_LPIAON_NOC 0 123 + #define SLAVE_LPASS_GEM_NOC 1 124 + 125 + #define MASTER_LPASS_LPINOC 0 126 + #define SLAVE_LPIAON_NOC_LPASS_AG_NOC 1 127 + 128 + #define MASTER_LPASS_PROC 0 129 + #define SLAVE_LPICX_NOC_LPIAON_NOC 1 130 + 131 + #define MASTER_LLCC 0 132 + #define SLAVE_EBI1 1 133 + #define MASTER_LLCC_DISP 2 134 + #define SLAVE_EBI1_DISP 3 135 + #define MASTER_LLCC_CAM_IFE_0 4 136 + #define SLAVE_EBI1_CAM_IFE_0 5 137 + #define MASTER_LLCC_CAM_IFE_1 6 138 + #define SLAVE_EBI1_CAM_IFE_1 7 139 + #define MASTER_LLCC_CAM_IFE_2 8 140 + #define SLAVE_EBI1_CAM_IFE_2 9 141 + 142 + #define MASTER_CAMNOC_HF 0 143 + #define MASTER_CAMNOC_ICP 1 144 + #define MASTER_CAMNOC_SF 2 145 + #define MASTER_MDP 3 146 + #define MASTER_CDSP_HCP 4 147 + #define MASTER_VIDEO 5 148 + #define MASTER_VIDEO_CV_PROC 6 149 + #define MASTER_VIDEO_PROC 7 150 + #define MASTER_VIDEO_V_PROC 8 151 + #define MASTER_CNOC_MNOC_CFG 9 152 + #define SLAVE_MNOC_HF_MEM_NOC 10 153 + #define SLAVE_MNOC_SF_MEM_NOC 11 154 + #define SLAVE_SERVICE_MNOC 12 155 + #define MASTER_MDP_DISP 13 156 + #define SLAVE_MNOC_HF_MEM_NOC_DISP 14 157 + #define MASTER_CAMNOC_HF_CAM_IFE_0 15 158 + #define MASTER_CAMNOC_ICP_CAM_IFE_0 16 159 + #define MASTER_CAMNOC_SF_CAM_IFE_0 17 160 + #define SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_0 18 161 + #define SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_0 19 162 + #define MASTER_CAMNOC_HF_CAM_IFE_1 20 163 + #define MASTER_CAMNOC_ICP_CAM_IFE_1 21 164 + #define MASTER_CAMNOC_SF_CAM_IFE_1 22 165 + #define SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_1 23 166 + #define SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_1 24 167 + #define MASTER_CAMNOC_HF_CAM_IFE_2 25 168 + #define MASTER_CAMNOC_ICP_CAM_IFE_2 26 169 + #define MASTER_CAMNOC_SF_CAM_IFE_2 27 170 + #define SLAVE_MNOC_HF_MEM_NOC_CAM_IFE_2 28 171 + #define SLAVE_MNOC_SF_MEM_NOC_CAM_IFE_2 29 172 + 173 + #define MASTER_CDSP_PROC 0 174 + #define SLAVE_CDSP_MEM_NOC 1 175 + 176 + #define MASTER_PCIE_ANOC_CFG 0 177 + #define MASTER_PCIE_0 1 178 + #define MASTER_PCIE_1 2 179 + #define SLAVE_ANOC_PCIE_GEM_NOC 3 180 + #define SLAVE_SERVICE_PCIE_ANOC 4 181 + 182 + #define MASTER_GIC_AHB 0 183 + #define MASTER_A1NOC_SNOC 1 184 + #define MASTER_A2NOC_SNOC 2 185 + #define MASTER_GIC 3 186 + #define SLAVE_SNOC_GEM_NOC_GC 4 187 + #define SLAVE_SNOC_GEM_NOC_SF 5 188 + 189 + #endif