18c2ecf20Sopenharmony_ciQCOM CPR (Core Power Reduction) 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ciCPR (Core Power Reduction) is a technology to reduce core power on a CPU 48c2ecf20Sopenharmony_cior other device. Each OPP of a device corresponds to a "corner" that has 58c2ecf20Sopenharmony_cia range of valid voltages for a particular frequency. While the device is 68c2ecf20Sopenharmony_cirunning at a particular frequency, CPR monitors dynamic factors such as 78c2ecf20Sopenharmony_citemperature, etc. and suggests adjustments to the voltage to save power 88c2ecf20Sopenharmony_ciand meet silicon characteristic requirements. 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci- compatible: 118c2ecf20Sopenharmony_ci Usage: required 128c2ecf20Sopenharmony_ci Value type: <string> 138c2ecf20Sopenharmony_ci Definition: should be "qcom,qcs404-cpr", "qcom,cpr" for qcs404 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci- reg: 168c2ecf20Sopenharmony_ci Usage: required 178c2ecf20Sopenharmony_ci Value type: <prop-encoded-array> 188c2ecf20Sopenharmony_ci Definition: base address and size of the rbcpr register region 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci- interrupts: 218c2ecf20Sopenharmony_ci Usage: required 228c2ecf20Sopenharmony_ci Value type: <prop-encoded-array> 238c2ecf20Sopenharmony_ci Definition: should specify the CPR interrupt 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci- clocks: 268c2ecf20Sopenharmony_ci Usage: required 278c2ecf20Sopenharmony_ci Value type: <prop-encoded-array> 288c2ecf20Sopenharmony_ci Definition: phandle to the reference clock 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci- clock-names: 318c2ecf20Sopenharmony_ci Usage: required 328c2ecf20Sopenharmony_ci Value type: <stringlist> 338c2ecf20Sopenharmony_ci Definition: must be "ref" 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci- vdd-apc-supply: 368c2ecf20Sopenharmony_ci Usage: required 378c2ecf20Sopenharmony_ci Value type: <phandle> 388c2ecf20Sopenharmony_ci Definition: phandle to the vdd-apc-supply regulator 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci- #power-domain-cells: 418c2ecf20Sopenharmony_ci Usage: required 428c2ecf20Sopenharmony_ci Value type: <u32> 438c2ecf20Sopenharmony_ci Definition: should be 0 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci- operating-points-v2: 468c2ecf20Sopenharmony_ci Usage: required 478c2ecf20Sopenharmony_ci Value type: <phandle> 488c2ecf20Sopenharmony_ci Definition: A phandle to the OPP table containing the 498c2ecf20Sopenharmony_ci performance states supported by the CPR 508c2ecf20Sopenharmony_ci power domain 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci- acc-syscon: 538c2ecf20Sopenharmony_ci Usage: optional 548c2ecf20Sopenharmony_ci Value type: <phandle> 558c2ecf20Sopenharmony_ci Definition: phandle to syscon for writing ACC settings 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci- nvmem-cells: 588c2ecf20Sopenharmony_ci Usage: required 598c2ecf20Sopenharmony_ci Value type: <phandle> 608c2ecf20Sopenharmony_ci Definition: phandle to nvmem cells containing the data 618c2ecf20Sopenharmony_ci that makes up a fuse corner, for each fuse corner. 628c2ecf20Sopenharmony_ci As well as the CPR fuse revision. 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ci- nvmem-cell-names: 658c2ecf20Sopenharmony_ci Usage: required 668c2ecf20Sopenharmony_ci Value type: <stringlist> 678c2ecf20Sopenharmony_ci Definition: should be "cpr_quotient_offset1", "cpr_quotient_offset2", 688c2ecf20Sopenharmony_ci "cpr_quotient_offset3", "cpr_init_voltage1", 698c2ecf20Sopenharmony_ci "cpr_init_voltage2", "cpr_init_voltage3", "cpr_quotient1", 708c2ecf20Sopenharmony_ci "cpr_quotient2", "cpr_quotient3", "cpr_ring_osc1", 718c2ecf20Sopenharmony_ci "cpr_ring_osc2", "cpr_ring_osc3", "cpr_fuse_revision" 728c2ecf20Sopenharmony_ci for qcs404. 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ciExample: 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ci cpr_opp_table: cpr-opp-table { 778c2ecf20Sopenharmony_ci compatible = "operating-points-v2-qcom-level"; 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci cpr_opp1: opp1 { 808c2ecf20Sopenharmony_ci opp-level = <1>; 818c2ecf20Sopenharmony_ci qcom,opp-fuse-level = <1>; 828c2ecf20Sopenharmony_ci }; 838c2ecf20Sopenharmony_ci cpr_opp2: opp2 { 848c2ecf20Sopenharmony_ci opp-level = <2>; 858c2ecf20Sopenharmony_ci qcom,opp-fuse-level = <2>; 868c2ecf20Sopenharmony_ci }; 878c2ecf20Sopenharmony_ci cpr_opp3: opp3 { 888c2ecf20Sopenharmony_ci opp-level = <3>; 898c2ecf20Sopenharmony_ci qcom,opp-fuse-level = <3>; 908c2ecf20Sopenharmony_ci }; 918c2ecf20Sopenharmony_ci }; 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci power-controller@b018000 { 948c2ecf20Sopenharmony_ci compatible = "qcom,qcs404-cpr", "qcom,cpr"; 958c2ecf20Sopenharmony_ci reg = <0x0b018000 0x1000>; 968c2ecf20Sopenharmony_ci interrupts = <0 15 IRQ_TYPE_EDGE_RISING>; 978c2ecf20Sopenharmony_ci clocks = <&xo_board>; 988c2ecf20Sopenharmony_ci clock-names = "ref"; 998c2ecf20Sopenharmony_ci vdd-apc-supply = <&pms405_s3>; 1008c2ecf20Sopenharmony_ci #power-domain-cells = <0>; 1018c2ecf20Sopenharmony_ci operating-points-v2 = <&cpr_opp_table>; 1028c2ecf20Sopenharmony_ci acc-syscon = <&tcsr>; 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ci nvmem-cells = <&cpr_efuse_quot_offset1>, 1058c2ecf20Sopenharmony_ci <&cpr_efuse_quot_offset2>, 1068c2ecf20Sopenharmony_ci <&cpr_efuse_quot_offset3>, 1078c2ecf20Sopenharmony_ci <&cpr_efuse_init_voltage1>, 1088c2ecf20Sopenharmony_ci <&cpr_efuse_init_voltage2>, 1098c2ecf20Sopenharmony_ci <&cpr_efuse_init_voltage3>, 1108c2ecf20Sopenharmony_ci <&cpr_efuse_quot1>, 1118c2ecf20Sopenharmony_ci <&cpr_efuse_quot2>, 1128c2ecf20Sopenharmony_ci <&cpr_efuse_quot3>, 1138c2ecf20Sopenharmony_ci <&cpr_efuse_ring1>, 1148c2ecf20Sopenharmony_ci <&cpr_efuse_ring2>, 1158c2ecf20Sopenharmony_ci <&cpr_efuse_ring3>, 1168c2ecf20Sopenharmony_ci <&cpr_efuse_revision>; 1178c2ecf20Sopenharmony_ci nvmem-cell-names = "cpr_quotient_offset1", 1188c2ecf20Sopenharmony_ci "cpr_quotient_offset2", 1198c2ecf20Sopenharmony_ci "cpr_quotient_offset3", 1208c2ecf20Sopenharmony_ci "cpr_init_voltage1", 1218c2ecf20Sopenharmony_ci "cpr_init_voltage2", 1228c2ecf20Sopenharmony_ci "cpr_init_voltage3", 1238c2ecf20Sopenharmony_ci "cpr_quotient1", 1248c2ecf20Sopenharmony_ci "cpr_quotient2", 1258c2ecf20Sopenharmony_ci "cpr_quotient3", 1268c2ecf20Sopenharmony_ci "cpr_ring_osc1", 1278c2ecf20Sopenharmony_ci "cpr_ring_osc2", 1288c2ecf20Sopenharmony_ci "cpr_ring_osc3", 1298c2ecf20Sopenharmony_ci "cpr_fuse_revision"; 1308c2ecf20Sopenharmony_ci }; 131