162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/cpufreq/cpufreq-qcom-hw.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Qualcomm Technologies, Inc. CPUFREQ 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: | 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci CPUFREQ HW is a hardware engine used by some Qualcomm Technologies, Inc. (QTI) 1562306a36Sopenharmony_ci SoCs to manage frequency in hardware. It is capable of controlling frequency 1662306a36Sopenharmony_ci for multiple clusters. 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciproperties: 1962306a36Sopenharmony_ci compatible: 2062306a36Sopenharmony_ci oneOf: 2162306a36Sopenharmony_ci - description: v1 of CPUFREQ HW 2262306a36Sopenharmony_ci items: 2362306a36Sopenharmony_ci - enum: 2462306a36Sopenharmony_ci - qcom,qcm2290-cpufreq-hw 2562306a36Sopenharmony_ci - qcom,sc7180-cpufreq-hw 2662306a36Sopenharmony_ci - qcom,sdm845-cpufreq-hw 2762306a36Sopenharmony_ci - qcom,sm6115-cpufreq-hw 2862306a36Sopenharmony_ci - qcom,sm6350-cpufreq-hw 2962306a36Sopenharmony_ci - qcom,sm8150-cpufreq-hw 3062306a36Sopenharmony_ci - const: qcom,cpufreq-hw 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci - description: v2 of CPUFREQ HW (EPSS) 3362306a36Sopenharmony_ci items: 3462306a36Sopenharmony_ci - enum: 3562306a36Sopenharmony_ci - qcom,qdu1000-cpufreq-epss 3662306a36Sopenharmony_ci - qcom,sa8775p-cpufreq-epss 3762306a36Sopenharmony_ci - qcom,sc7280-cpufreq-epss 3862306a36Sopenharmony_ci - qcom,sc8280xp-cpufreq-epss 3962306a36Sopenharmony_ci - qcom,sm6375-cpufreq-epss 4062306a36Sopenharmony_ci - qcom,sm8250-cpufreq-epss 4162306a36Sopenharmony_ci - qcom,sm8350-cpufreq-epss 4262306a36Sopenharmony_ci - qcom,sm8450-cpufreq-epss 4362306a36Sopenharmony_ci - qcom,sm8550-cpufreq-epss 4462306a36Sopenharmony_ci - const: qcom,cpufreq-epss 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci reg: 4762306a36Sopenharmony_ci minItems: 1 4862306a36Sopenharmony_ci items: 4962306a36Sopenharmony_ci - description: Frequency domain 0 register region 5062306a36Sopenharmony_ci - description: Frequency domain 1 register region 5162306a36Sopenharmony_ci - description: Frequency domain 2 register region 5262306a36Sopenharmony_ci - description: Frequency domain 3 register region 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci reg-names: 5562306a36Sopenharmony_ci minItems: 1 5662306a36Sopenharmony_ci items: 5762306a36Sopenharmony_ci - const: freq-domain0 5862306a36Sopenharmony_ci - const: freq-domain1 5962306a36Sopenharmony_ci - const: freq-domain2 6062306a36Sopenharmony_ci - const: freq-domain3 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci clocks: 6362306a36Sopenharmony_ci items: 6462306a36Sopenharmony_ci - description: XO Clock 6562306a36Sopenharmony_ci - description: GPLL0 Clock 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci clock-names: 6862306a36Sopenharmony_ci items: 6962306a36Sopenharmony_ci - const: xo 7062306a36Sopenharmony_ci - const: alternate 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci interrupts: 7362306a36Sopenharmony_ci minItems: 1 7462306a36Sopenharmony_ci maxItems: 4 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci interrupt-names: 7762306a36Sopenharmony_ci minItems: 1 7862306a36Sopenharmony_ci items: 7962306a36Sopenharmony_ci - const: dcvsh-irq-0 8062306a36Sopenharmony_ci - const: dcvsh-irq-1 8162306a36Sopenharmony_ci - const: dcvsh-irq-2 8262306a36Sopenharmony_ci - const: dcvsh-irq-3 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ci '#freq-domain-cells': 8562306a36Sopenharmony_ci const: 1 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci '#clock-cells': 8862306a36Sopenharmony_ci const: 1 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_cirequired: 9162306a36Sopenharmony_ci - compatible 9262306a36Sopenharmony_ci - reg 9362306a36Sopenharmony_ci - clocks 9462306a36Sopenharmony_ci - clock-names 9562306a36Sopenharmony_ci - '#freq-domain-cells' 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ciadditionalProperties: false 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ciallOf: 10062306a36Sopenharmony_ci - if: 10162306a36Sopenharmony_ci properties: 10262306a36Sopenharmony_ci compatible: 10362306a36Sopenharmony_ci contains: 10462306a36Sopenharmony_ci enum: 10562306a36Sopenharmony_ci - qcom,qcm2290-cpufreq-hw 10662306a36Sopenharmony_ci then: 10762306a36Sopenharmony_ci properties: 10862306a36Sopenharmony_ci reg: 10962306a36Sopenharmony_ci minItems: 1 11062306a36Sopenharmony_ci maxItems: 1 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci reg-names: 11362306a36Sopenharmony_ci minItems: 1 11462306a36Sopenharmony_ci maxItems: 1 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ci interrupts: 11762306a36Sopenharmony_ci minItems: 1 11862306a36Sopenharmony_ci maxItems: 1 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci interrupt-names: 12162306a36Sopenharmony_ci minItems: 1 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci - if: 12462306a36Sopenharmony_ci properties: 12562306a36Sopenharmony_ci compatible: 12662306a36Sopenharmony_ci contains: 12762306a36Sopenharmony_ci enum: 12862306a36Sopenharmony_ci - qcom,qdu1000-cpufreq-epss 12962306a36Sopenharmony_ci - qcom,sc7180-cpufreq-hw 13062306a36Sopenharmony_ci - qcom,sc8280xp-cpufreq-epss 13162306a36Sopenharmony_ci - qcom,sdm845-cpufreq-hw 13262306a36Sopenharmony_ci - qcom,sm6115-cpufreq-hw 13362306a36Sopenharmony_ci - qcom,sm6350-cpufreq-hw 13462306a36Sopenharmony_ci - qcom,sm6375-cpufreq-epss 13562306a36Sopenharmony_ci then: 13662306a36Sopenharmony_ci properties: 13762306a36Sopenharmony_ci reg: 13862306a36Sopenharmony_ci minItems: 2 13962306a36Sopenharmony_ci maxItems: 2 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci reg-names: 14262306a36Sopenharmony_ci minItems: 2 14362306a36Sopenharmony_ci maxItems: 2 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ci interrupts: 14662306a36Sopenharmony_ci minItems: 2 14762306a36Sopenharmony_ci maxItems: 2 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_ci interrupt-names: 15062306a36Sopenharmony_ci minItems: 2 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci - if: 15362306a36Sopenharmony_ci properties: 15462306a36Sopenharmony_ci compatible: 15562306a36Sopenharmony_ci contains: 15662306a36Sopenharmony_ci enum: 15762306a36Sopenharmony_ci - qcom,sc7280-cpufreq-epss 15862306a36Sopenharmony_ci - qcom,sm8250-cpufreq-epss 15962306a36Sopenharmony_ci - qcom,sm8350-cpufreq-epss 16062306a36Sopenharmony_ci - qcom,sm8450-cpufreq-epss 16162306a36Sopenharmony_ci - qcom,sm8550-cpufreq-epss 16262306a36Sopenharmony_ci then: 16362306a36Sopenharmony_ci properties: 16462306a36Sopenharmony_ci reg: 16562306a36Sopenharmony_ci minItems: 3 16662306a36Sopenharmony_ci maxItems: 3 16762306a36Sopenharmony_ci 16862306a36Sopenharmony_ci reg-names: 16962306a36Sopenharmony_ci minItems: 3 17062306a36Sopenharmony_ci maxItems: 3 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci interrupts: 17362306a36Sopenharmony_ci minItems: 3 17462306a36Sopenharmony_ci maxItems: 3 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci interrupt-names: 17762306a36Sopenharmony_ci minItems: 3 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci - if: 18062306a36Sopenharmony_ci properties: 18162306a36Sopenharmony_ci compatible: 18262306a36Sopenharmony_ci contains: 18362306a36Sopenharmony_ci enum: 18462306a36Sopenharmony_ci - qcom,sm8150-cpufreq-hw 18562306a36Sopenharmony_ci then: 18662306a36Sopenharmony_ci properties: 18762306a36Sopenharmony_ci reg: 18862306a36Sopenharmony_ci minItems: 3 18962306a36Sopenharmony_ci maxItems: 3 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci reg-names: 19262306a36Sopenharmony_ci minItems: 3 19362306a36Sopenharmony_ci maxItems: 3 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ci # On some SoCs the Prime core shares the LMH irq with Big cores 19662306a36Sopenharmony_ci interrupts: 19762306a36Sopenharmony_ci minItems: 2 19862306a36Sopenharmony_ci maxItems: 2 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci interrupt-names: 20162306a36Sopenharmony_ci minItems: 2 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ciexamples: 20562306a36Sopenharmony_ci - | 20662306a36Sopenharmony_ci #include <dt-bindings/clock/qcom,gcc-sdm845.h> 20762306a36Sopenharmony_ci #include <dt-bindings/clock/qcom,rpmh.h> 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ci // Example 1: Dual-cluster, Quad-core per cluster. CPUs within a cluster 21062306a36Sopenharmony_ci // switch DCVS state together. 21162306a36Sopenharmony_ci cpus { 21262306a36Sopenharmony_ci #address-cells = <2>; 21362306a36Sopenharmony_ci #size-cells = <0>; 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_ci CPU0: cpu@0 { 21662306a36Sopenharmony_ci device_type = "cpu"; 21762306a36Sopenharmony_ci compatible = "qcom,kryo385"; 21862306a36Sopenharmony_ci reg = <0x0 0x0>; 21962306a36Sopenharmony_ci enable-method = "psci"; 22062306a36Sopenharmony_ci next-level-cache = <&L2_0>; 22162306a36Sopenharmony_ci qcom,freq-domain = <&cpufreq_hw 0>; 22262306a36Sopenharmony_ci clocks = <&cpufreq_hw 0>; 22362306a36Sopenharmony_ci L2_0: l2-cache { 22462306a36Sopenharmony_ci compatible = "cache"; 22562306a36Sopenharmony_ci cache-unified; 22662306a36Sopenharmony_ci cache-level = <2>; 22762306a36Sopenharmony_ci next-level-cache = <&L3_0>; 22862306a36Sopenharmony_ci L3_0: l3-cache { 22962306a36Sopenharmony_ci compatible = "cache"; 23062306a36Sopenharmony_ci cache-unified; 23162306a36Sopenharmony_ci cache-level = <3>; 23262306a36Sopenharmony_ci }; 23362306a36Sopenharmony_ci }; 23462306a36Sopenharmony_ci }; 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci CPU1: cpu@100 { 23762306a36Sopenharmony_ci device_type = "cpu"; 23862306a36Sopenharmony_ci compatible = "qcom,kryo385"; 23962306a36Sopenharmony_ci reg = <0x0 0x100>; 24062306a36Sopenharmony_ci enable-method = "psci"; 24162306a36Sopenharmony_ci next-level-cache = <&L2_100>; 24262306a36Sopenharmony_ci qcom,freq-domain = <&cpufreq_hw 0>; 24362306a36Sopenharmony_ci clocks = <&cpufreq_hw 0>; 24462306a36Sopenharmony_ci L2_100: l2-cache { 24562306a36Sopenharmony_ci compatible = "cache"; 24662306a36Sopenharmony_ci cache-unified; 24762306a36Sopenharmony_ci cache-level = <2>; 24862306a36Sopenharmony_ci next-level-cache = <&L3_0>; 24962306a36Sopenharmony_ci }; 25062306a36Sopenharmony_ci }; 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ci CPU2: cpu@200 { 25362306a36Sopenharmony_ci device_type = "cpu"; 25462306a36Sopenharmony_ci compatible = "qcom,kryo385"; 25562306a36Sopenharmony_ci reg = <0x0 0x200>; 25662306a36Sopenharmony_ci enable-method = "psci"; 25762306a36Sopenharmony_ci next-level-cache = <&L2_200>; 25862306a36Sopenharmony_ci qcom,freq-domain = <&cpufreq_hw 0>; 25962306a36Sopenharmony_ci clocks = <&cpufreq_hw 0>; 26062306a36Sopenharmony_ci L2_200: l2-cache { 26162306a36Sopenharmony_ci compatible = "cache"; 26262306a36Sopenharmony_ci cache-unified; 26362306a36Sopenharmony_ci cache-level = <2>; 26462306a36Sopenharmony_ci next-level-cache = <&L3_0>; 26562306a36Sopenharmony_ci }; 26662306a36Sopenharmony_ci }; 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci CPU3: cpu@300 { 26962306a36Sopenharmony_ci device_type = "cpu"; 27062306a36Sopenharmony_ci compatible = "qcom,kryo385"; 27162306a36Sopenharmony_ci reg = <0x0 0x300>; 27262306a36Sopenharmony_ci enable-method = "psci"; 27362306a36Sopenharmony_ci next-level-cache = <&L2_300>; 27462306a36Sopenharmony_ci qcom,freq-domain = <&cpufreq_hw 0>; 27562306a36Sopenharmony_ci clocks = <&cpufreq_hw 0>; 27662306a36Sopenharmony_ci L2_300: l2-cache { 27762306a36Sopenharmony_ci compatible = "cache"; 27862306a36Sopenharmony_ci cache-unified; 27962306a36Sopenharmony_ci cache-level = <2>; 28062306a36Sopenharmony_ci next-level-cache = <&L3_0>; 28162306a36Sopenharmony_ci }; 28262306a36Sopenharmony_ci }; 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ci CPU4: cpu@400 { 28562306a36Sopenharmony_ci device_type = "cpu"; 28662306a36Sopenharmony_ci compatible = "qcom,kryo385"; 28762306a36Sopenharmony_ci reg = <0x0 0x400>; 28862306a36Sopenharmony_ci enable-method = "psci"; 28962306a36Sopenharmony_ci next-level-cache = <&L2_400>; 29062306a36Sopenharmony_ci qcom,freq-domain = <&cpufreq_hw 1>; 29162306a36Sopenharmony_ci clocks = <&cpufreq_hw 1>; 29262306a36Sopenharmony_ci L2_400: l2-cache { 29362306a36Sopenharmony_ci compatible = "cache"; 29462306a36Sopenharmony_ci cache-unified; 29562306a36Sopenharmony_ci cache-level = <2>; 29662306a36Sopenharmony_ci next-level-cache = <&L3_0>; 29762306a36Sopenharmony_ci }; 29862306a36Sopenharmony_ci }; 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ci CPU5: cpu@500 { 30162306a36Sopenharmony_ci device_type = "cpu"; 30262306a36Sopenharmony_ci compatible = "qcom,kryo385"; 30362306a36Sopenharmony_ci reg = <0x0 0x500>; 30462306a36Sopenharmony_ci enable-method = "psci"; 30562306a36Sopenharmony_ci next-level-cache = <&L2_500>; 30662306a36Sopenharmony_ci qcom,freq-domain = <&cpufreq_hw 1>; 30762306a36Sopenharmony_ci clocks = <&cpufreq_hw 1>; 30862306a36Sopenharmony_ci L2_500: l2-cache { 30962306a36Sopenharmony_ci compatible = "cache"; 31062306a36Sopenharmony_ci cache-unified; 31162306a36Sopenharmony_ci cache-level = <2>; 31262306a36Sopenharmony_ci next-level-cache = <&L3_0>; 31362306a36Sopenharmony_ci }; 31462306a36Sopenharmony_ci }; 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ci CPU6: cpu@600 { 31762306a36Sopenharmony_ci device_type = "cpu"; 31862306a36Sopenharmony_ci compatible = "qcom,kryo385"; 31962306a36Sopenharmony_ci reg = <0x0 0x600>; 32062306a36Sopenharmony_ci enable-method = "psci"; 32162306a36Sopenharmony_ci next-level-cache = <&L2_600>; 32262306a36Sopenharmony_ci qcom,freq-domain = <&cpufreq_hw 1>; 32362306a36Sopenharmony_ci clocks = <&cpufreq_hw 1>; 32462306a36Sopenharmony_ci L2_600: l2-cache { 32562306a36Sopenharmony_ci compatible = "cache"; 32662306a36Sopenharmony_ci cache-unified; 32762306a36Sopenharmony_ci cache-level = <2>; 32862306a36Sopenharmony_ci next-level-cache = <&L3_0>; 32962306a36Sopenharmony_ci }; 33062306a36Sopenharmony_ci }; 33162306a36Sopenharmony_ci 33262306a36Sopenharmony_ci CPU7: cpu@700 { 33362306a36Sopenharmony_ci device_type = "cpu"; 33462306a36Sopenharmony_ci compatible = "qcom,kryo385"; 33562306a36Sopenharmony_ci reg = <0x0 0x700>; 33662306a36Sopenharmony_ci enable-method = "psci"; 33762306a36Sopenharmony_ci next-level-cache = <&L2_700>; 33862306a36Sopenharmony_ci qcom,freq-domain = <&cpufreq_hw 1>; 33962306a36Sopenharmony_ci clocks = <&cpufreq_hw 1>; 34062306a36Sopenharmony_ci L2_700: l2-cache { 34162306a36Sopenharmony_ci compatible = "cache"; 34262306a36Sopenharmony_ci cache-unified; 34362306a36Sopenharmony_ci cache-level = <2>; 34462306a36Sopenharmony_ci next-level-cache = <&L3_0>; 34562306a36Sopenharmony_ci }; 34662306a36Sopenharmony_ci }; 34762306a36Sopenharmony_ci }; 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ci soc { 35062306a36Sopenharmony_ci #address-cells = <1>; 35162306a36Sopenharmony_ci #size-cells = <1>; 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_ci cpufreq@17d43000 { 35462306a36Sopenharmony_ci compatible = "qcom,sdm845-cpufreq-hw", "qcom,cpufreq-hw"; 35562306a36Sopenharmony_ci reg = <0x17d43000 0x1400>, <0x17d45800 0x1400>; 35662306a36Sopenharmony_ci reg-names = "freq-domain0", "freq-domain1"; 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_ci clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GPLL0>; 35962306a36Sopenharmony_ci clock-names = "xo", "alternate"; 36062306a36Sopenharmony_ci 36162306a36Sopenharmony_ci #freq-domain-cells = <1>; 36262306a36Sopenharmony_ci #clock-cells = <1>; 36362306a36Sopenharmony_ci }; 36462306a36Sopenharmony_ci }; 36562306a36Sopenharmony_ci... 366