xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/power/avs/qcom,cpr.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunQCOM CPR (Core Power Reduction)
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunCPR (Core Power Reduction) is a technology to reduce core power on a CPU
4*4882a593Smuzhiyunor other device. Each OPP of a device corresponds to a "corner" that has
5*4882a593Smuzhiyuna range of valid voltages for a particular frequency. While the device is
6*4882a593Smuzhiyunrunning at a particular frequency, CPR monitors dynamic factors such as
7*4882a593Smuzhiyuntemperature, etc. and suggests adjustments to the voltage to save power
8*4882a593Smuzhiyunand meet silicon characteristic requirements.
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun- compatible:
11*4882a593Smuzhiyun	Usage: required
12*4882a593Smuzhiyun	Value type: <string>
13*4882a593Smuzhiyun	Definition: should be "qcom,qcs404-cpr", "qcom,cpr" for qcs404
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun- reg:
16*4882a593Smuzhiyun	Usage: required
17*4882a593Smuzhiyun	Value type: <prop-encoded-array>
18*4882a593Smuzhiyun	Definition: base address and size of the rbcpr register region
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun- interrupts:
21*4882a593Smuzhiyun	Usage: required
22*4882a593Smuzhiyun	Value type: <prop-encoded-array>
23*4882a593Smuzhiyun	Definition: should specify the CPR interrupt
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun- clocks:
26*4882a593Smuzhiyun	Usage: required
27*4882a593Smuzhiyun	Value type: <prop-encoded-array>
28*4882a593Smuzhiyun	Definition: phandle to the reference clock
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun- clock-names:
31*4882a593Smuzhiyun	Usage: required
32*4882a593Smuzhiyun	Value type: <stringlist>
33*4882a593Smuzhiyun	Definition: must be "ref"
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun- vdd-apc-supply:
36*4882a593Smuzhiyun	Usage: required
37*4882a593Smuzhiyun	Value type: <phandle>
38*4882a593Smuzhiyun	Definition: phandle to the vdd-apc-supply regulator
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun- #power-domain-cells:
41*4882a593Smuzhiyun	Usage: required
42*4882a593Smuzhiyun	Value type: <u32>
43*4882a593Smuzhiyun	Definition: should be 0
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun- operating-points-v2:
46*4882a593Smuzhiyun	Usage: required
47*4882a593Smuzhiyun	Value type: <phandle>
48*4882a593Smuzhiyun	Definition: A phandle to the OPP table containing the
49*4882a593Smuzhiyun		    performance states supported by the CPR
50*4882a593Smuzhiyun		    power domain
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun- acc-syscon:
53*4882a593Smuzhiyun	Usage: optional
54*4882a593Smuzhiyun	Value type: <phandle>
55*4882a593Smuzhiyun	Definition: phandle to syscon for writing ACC settings
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun- nvmem-cells:
58*4882a593Smuzhiyun	Usage: required
59*4882a593Smuzhiyun	Value type: <phandle>
60*4882a593Smuzhiyun	Definition: phandle to nvmem cells containing the data
61*4882a593Smuzhiyun		    that makes up a fuse corner, for each fuse corner.
62*4882a593Smuzhiyun		    As well as the CPR fuse revision.
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun- nvmem-cell-names:
65*4882a593Smuzhiyun	Usage: required
66*4882a593Smuzhiyun	Value type: <stringlist>
67*4882a593Smuzhiyun	Definition: should be "cpr_quotient_offset1", "cpr_quotient_offset2",
68*4882a593Smuzhiyun		    "cpr_quotient_offset3", "cpr_init_voltage1",
69*4882a593Smuzhiyun		    "cpr_init_voltage2", "cpr_init_voltage3", "cpr_quotient1",
70*4882a593Smuzhiyun		    "cpr_quotient2", "cpr_quotient3", "cpr_ring_osc1",
71*4882a593Smuzhiyun		    "cpr_ring_osc2", "cpr_ring_osc3", "cpr_fuse_revision"
72*4882a593Smuzhiyun		    for qcs404.
73*4882a593Smuzhiyun
74*4882a593SmuzhiyunExample:
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun	cpr_opp_table: cpr-opp-table {
77*4882a593Smuzhiyun		compatible = "operating-points-v2-qcom-level";
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun		cpr_opp1: opp1 {
80*4882a593Smuzhiyun			opp-level = <1>;
81*4882a593Smuzhiyun			qcom,opp-fuse-level = <1>;
82*4882a593Smuzhiyun		};
83*4882a593Smuzhiyun		cpr_opp2: opp2 {
84*4882a593Smuzhiyun			opp-level = <2>;
85*4882a593Smuzhiyun			qcom,opp-fuse-level = <2>;
86*4882a593Smuzhiyun		};
87*4882a593Smuzhiyun		cpr_opp3: opp3 {
88*4882a593Smuzhiyun			opp-level = <3>;
89*4882a593Smuzhiyun			qcom,opp-fuse-level = <3>;
90*4882a593Smuzhiyun		};
91*4882a593Smuzhiyun	};
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun	power-controller@b018000 {
94*4882a593Smuzhiyun		compatible = "qcom,qcs404-cpr", "qcom,cpr";
95*4882a593Smuzhiyun		reg = <0x0b018000 0x1000>;
96*4882a593Smuzhiyun		interrupts = <0 15 IRQ_TYPE_EDGE_RISING>;
97*4882a593Smuzhiyun		clocks = <&xo_board>;
98*4882a593Smuzhiyun		clock-names = "ref";
99*4882a593Smuzhiyun		vdd-apc-supply = <&pms405_s3>;
100*4882a593Smuzhiyun		#power-domain-cells = <0>;
101*4882a593Smuzhiyun		operating-points-v2 = <&cpr_opp_table>;
102*4882a593Smuzhiyun		acc-syscon = <&tcsr>;
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun		nvmem-cells = <&cpr_efuse_quot_offset1>,
105*4882a593Smuzhiyun			<&cpr_efuse_quot_offset2>,
106*4882a593Smuzhiyun			<&cpr_efuse_quot_offset3>,
107*4882a593Smuzhiyun			<&cpr_efuse_init_voltage1>,
108*4882a593Smuzhiyun			<&cpr_efuse_init_voltage2>,
109*4882a593Smuzhiyun			<&cpr_efuse_init_voltage3>,
110*4882a593Smuzhiyun			<&cpr_efuse_quot1>,
111*4882a593Smuzhiyun			<&cpr_efuse_quot2>,
112*4882a593Smuzhiyun			<&cpr_efuse_quot3>,
113*4882a593Smuzhiyun			<&cpr_efuse_ring1>,
114*4882a593Smuzhiyun			<&cpr_efuse_ring2>,
115*4882a593Smuzhiyun			<&cpr_efuse_ring3>,
116*4882a593Smuzhiyun			<&cpr_efuse_revision>;
117*4882a593Smuzhiyun		nvmem-cell-names = "cpr_quotient_offset1",
118*4882a593Smuzhiyun			"cpr_quotient_offset2",
119*4882a593Smuzhiyun			"cpr_quotient_offset3",
120*4882a593Smuzhiyun			"cpr_init_voltage1",
121*4882a593Smuzhiyun			"cpr_init_voltage2",
122*4882a593Smuzhiyun			"cpr_init_voltage3",
123*4882a593Smuzhiyun			"cpr_quotient1",
124*4882a593Smuzhiyun			"cpr_quotient2",
125*4882a593Smuzhiyun			"cpr_quotient3",
126*4882a593Smuzhiyun			"cpr_ring_osc1",
127*4882a593Smuzhiyun			"cpr_ring_osc2",
128*4882a593Smuzhiyun			"cpr_ring_osc3",
129*4882a593Smuzhiyun			"cpr_fuse_revision";
130*4882a593Smuzhiyun	};
131