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/power/avs/qcom,cpr.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Qualcomm Core Power Reduction (CPR) 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Niklas Cassel <nks@flawful.org> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: | 1362306a36Sopenharmony_ci CPR (Core Power Reduction) is a technology to reduce core power on a CPU 1462306a36Sopenharmony_ci or other device. Each OPP of a device corresponds to a "corner" that has 1562306a36Sopenharmony_ci a range of valid voltages for a particular frequency. While the device is 1662306a36Sopenharmony_ci running at a particular frequency, CPR monitors dynamic factors such as 1762306a36Sopenharmony_ci temperature, etc. and suggests adjustments to the voltage to save power 1862306a36Sopenharmony_ci and meet silicon characteristic requirements. 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ciproperties: 2162306a36Sopenharmony_ci compatible: 2262306a36Sopenharmony_ci items: 2362306a36Sopenharmony_ci - enum: 2462306a36Sopenharmony_ci - qcom,qcs404-cpr 2562306a36Sopenharmony_ci - const: qcom,cpr 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci reg: 2862306a36Sopenharmony_ci description: Base address and size of the RBCPR register region. 2962306a36Sopenharmony_ci maxItems: 1 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci interrupts: 3262306a36Sopenharmony_ci maxItems: 1 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci clocks: 3562306a36Sopenharmony_ci items: 3662306a36Sopenharmony_ci - description: Reference clock. 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci clock-names: 3962306a36Sopenharmony_ci items: 4062306a36Sopenharmony_ci - const: ref 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci vdd-apc-supply: 4362306a36Sopenharmony_ci description: APC regulator supply. 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci '#power-domain-cells': 4662306a36Sopenharmony_ci const: 0 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci operating-points-v2: 4962306a36Sopenharmony_ci description: | 5062306a36Sopenharmony_ci A phandle to the OPP table containing the performance states 5162306a36Sopenharmony_ci supported by the CPR power domain. 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci acc-syscon: 5462306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/phandle 5562306a36Sopenharmony_ci description: A phandle to the syscon used for writing ACC settings. 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci nvmem-cells: 5862306a36Sopenharmony_ci items: 5962306a36Sopenharmony_ci - description: Corner 1 quotient offset 6062306a36Sopenharmony_ci - description: Corner 2 quotient offset 6162306a36Sopenharmony_ci - description: Corner 3 quotient offset 6262306a36Sopenharmony_ci - description: Corner 1 initial voltage 6362306a36Sopenharmony_ci - description: Corner 2 initial voltage 6462306a36Sopenharmony_ci - description: Corner 3 initial voltage 6562306a36Sopenharmony_ci - description: Corner 1 quotient 6662306a36Sopenharmony_ci - description: Corner 2 quotient 6762306a36Sopenharmony_ci - description: Corner 3 quotient 6862306a36Sopenharmony_ci - description: Corner 1 ring oscillator 6962306a36Sopenharmony_ci - description: Corner 2 ring oscillator 7062306a36Sopenharmony_ci - description: Corner 3 ring oscillator 7162306a36Sopenharmony_ci - description: Fuse revision 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci nvmem-cell-names: 7462306a36Sopenharmony_ci items: 7562306a36Sopenharmony_ci - const: cpr_quotient_offset1 7662306a36Sopenharmony_ci - const: cpr_quotient_offset2 7762306a36Sopenharmony_ci - const: cpr_quotient_offset3 7862306a36Sopenharmony_ci - const: cpr_init_voltage1 7962306a36Sopenharmony_ci - const: cpr_init_voltage2 8062306a36Sopenharmony_ci - const: cpr_init_voltage3 8162306a36Sopenharmony_ci - const: cpr_quotient1 8262306a36Sopenharmony_ci - const: cpr_quotient2 8362306a36Sopenharmony_ci - const: cpr_quotient3 8462306a36Sopenharmony_ci - const: cpr_ring_osc1 8562306a36Sopenharmony_ci - const: cpr_ring_osc2 8662306a36Sopenharmony_ci - const: cpr_ring_osc3 8762306a36Sopenharmony_ci - const: cpr_fuse_revision 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_cirequired: 9062306a36Sopenharmony_ci - compatible 9162306a36Sopenharmony_ci - reg 9262306a36Sopenharmony_ci - interrupts 9362306a36Sopenharmony_ci - clocks 9462306a36Sopenharmony_ci - clock-names 9562306a36Sopenharmony_ci - vdd-apc-supply 9662306a36Sopenharmony_ci - '#power-domain-cells' 9762306a36Sopenharmony_ci - operating-points-v2 9862306a36Sopenharmony_ci - nvmem-cells 9962306a36Sopenharmony_ci - nvmem-cell-names 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ciadditionalProperties: false 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ciexamples: 10462306a36Sopenharmony_ci - | 10562306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci cpr_opp_table: opp-table-cpr { 10862306a36Sopenharmony_ci compatible = "operating-points-v2-qcom-level"; 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci cpr_opp1: opp1 { 11162306a36Sopenharmony_ci opp-level = <1>; 11262306a36Sopenharmony_ci qcom,opp-fuse-level = <1>; 11362306a36Sopenharmony_ci }; 11462306a36Sopenharmony_ci cpr_opp2: opp2 { 11562306a36Sopenharmony_ci opp-level = <2>; 11662306a36Sopenharmony_ci qcom,opp-fuse-level = <2>; 11762306a36Sopenharmony_ci }; 11862306a36Sopenharmony_ci cpr_opp3: opp3 { 11962306a36Sopenharmony_ci opp-level = <3>; 12062306a36Sopenharmony_ci qcom,opp-fuse-level = <3>; 12162306a36Sopenharmony_ci }; 12262306a36Sopenharmony_ci }; 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci power-controller@b018000 { 12562306a36Sopenharmony_ci compatible = "qcom,qcs404-cpr", "qcom,cpr"; 12662306a36Sopenharmony_ci reg = <0x0b018000 0x1000>; 12762306a36Sopenharmony_ci interrupts = <0 15 IRQ_TYPE_EDGE_RISING>; 12862306a36Sopenharmony_ci clocks = <&xo_board>; 12962306a36Sopenharmony_ci clock-names = "ref"; 13062306a36Sopenharmony_ci vdd-apc-supply = <&pms405_s3>; 13162306a36Sopenharmony_ci #power-domain-cells = <0>; 13262306a36Sopenharmony_ci operating-points-v2 = <&cpr_opp_table>; 13362306a36Sopenharmony_ci acc-syscon = <&tcsr>; 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci nvmem-cells = <&cpr_efuse_quot_offset1>, 13662306a36Sopenharmony_ci <&cpr_efuse_quot_offset2>, 13762306a36Sopenharmony_ci <&cpr_efuse_quot_offset3>, 13862306a36Sopenharmony_ci <&cpr_efuse_init_voltage1>, 13962306a36Sopenharmony_ci <&cpr_efuse_init_voltage2>, 14062306a36Sopenharmony_ci <&cpr_efuse_init_voltage3>, 14162306a36Sopenharmony_ci <&cpr_efuse_quot1>, 14262306a36Sopenharmony_ci <&cpr_efuse_quot2>, 14362306a36Sopenharmony_ci <&cpr_efuse_quot3>, 14462306a36Sopenharmony_ci <&cpr_efuse_ring1>, 14562306a36Sopenharmony_ci <&cpr_efuse_ring2>, 14662306a36Sopenharmony_ci <&cpr_efuse_ring3>, 14762306a36Sopenharmony_ci <&cpr_efuse_revision>; 14862306a36Sopenharmony_ci nvmem-cell-names = "cpr_quotient_offset1", 14962306a36Sopenharmony_ci "cpr_quotient_offset2", 15062306a36Sopenharmony_ci "cpr_quotient_offset3", 15162306a36Sopenharmony_ci "cpr_init_voltage1", 15262306a36Sopenharmony_ci "cpr_init_voltage2", 15362306a36Sopenharmony_ci "cpr_init_voltage3", 15462306a36Sopenharmony_ci "cpr_quotient1", 15562306a36Sopenharmony_ci "cpr_quotient2", 15662306a36Sopenharmony_ci "cpr_quotient3", 15762306a36Sopenharmony_ci "cpr_ring_osc1", 15862306a36Sopenharmony_ci "cpr_ring_osc2", 15962306a36Sopenharmony_ci "cpr_ring_osc3", 16062306a36Sopenharmony_ci "cpr_fuse_revision"; 16162306a36Sopenharmony_ci }; 162