blob: 0f5e27a2293b5280551671e7e6d16afb048d198b [file] [log] [blame]
Tirupathi Reddyc3598b52017-12-18 13:31:12 +05301QTI CPR (Core Power Reduction) Regulator
2
3CPR regulator device is for QTI RBCPR (RapidBridge CPR) on
4 application processor core. It takes voltage corner level
5 as input and converts it to actual voltage based on the
6 suggestions from factory production process. When CPR is
7 enabled for application processer core, it will suggest
8 scaling the voltage up or down for best performance and
9 power of the core. The scaling based on factory production
10 process is called PVS (Process Voltage Scaling) with efuse
11 bits to indicate what bin (and voltage range) a chip is in.
12
13Required properties:
14- compatible: Must be "qcom,cpr-regulator"
15- reg: Register addresses for RBCPR, RBCPR clock
16 select, PVS and CPR eFuse address
17- reg-names: Register names. Must be "rbcpr" and "efuse_addr".
18 "rbcpr_clk" is optional.
19- regulator-name: A string used to describe the regulator
20- interrupts: Interrupt line from RBCPR to interrupt controller.
21- qcom,cpr-fuse-corners: Number of fuse corners present. Many other properties
22 are sized based upon this value.
23- regulator-min-microvolt: Minimum corner value which should be 1 to
24 represent the lowest supported corner.
25- regulator-max-microvolt: Maximum corner value which should be equal to
26 qcom,cpr-fuse-corners if consumers request fuse
27 corners or the length of qcom,cpr-corner-map if
28 consumers request virtual corners.
29- qcom,cpr-voltage-ceiling: Array of ceiling voltages in microvolts for fuse
30 corners ordered from lowest voltage corner to highest
31 voltage corner. This property must be of length
32 defined by qcom,cpr-fuse-corners.
33- qcom,cpr-voltage-floor: Array of floor voltages in microvolts for fuse
34 corners ordered from lowest voltage corner to highest
35 voltage corner. This property must be of length
36 defined by qcom,cpr-fuse-corners.
37- vdd-apc-supply: Regulator to supply VDD APC power
38- qcom,vdd-apc-step-up-limit: Limit of vdd-apc-supply steps for scaling up.
39- qcom,vdd-apc-step-down-limit: Limit of vdd-apc-supply steps for scaling down.
40- qcom,cpr-ref-clk: The reference clock in kHz.
41- qcom,cpr-timer-delay: The delay in microseconds for the timer interval.
42- qcom,cpr-timer-cons-up: Consecutive number of timer interval (qcom,cpr-timer-delay)
43 occurred before issuing UP interrupt.
44- qcom,cpr-timer-cons-down: Consecutive number of timer interval (qcom,cpr-timer-delay)
45 occurred before issuing DOWN interrupt.
46- qcom,cpr-irq-line: Internal interrupt route signal of RBCPR, one of 0, 1 or 2.
47- qcom,cpr-step-quotient: Defines the number of CPR quotient (i.e. Ring Oscillator(RO)
48 count) per vdd-apc-supply output voltage step. A single
49 integer value may be specified which is to be used for all
50 RO's. Alternatively, 8 integer values may be specified which
51 define the step quotients for RO0 to RO7 in order.
52- qcom,cpr-up-threshold: The threshold for CPR to issue interrupt when
53 error_steps is greater than it when stepping up.
54- qcom,cpr-down-threshold: The threshold for CPR to issue interrupt when
55 error_steps is greater than it when stepping down.
56- qcom,cpr-idle-clocks: Idle clock cycles RO can be in.
57- qcom,cpr-gcnt-time: The time for gate count in microseconds.
58- qcom,cpr-apc-volt-step: The voltage in microvolt per CPR step, such as 5000uV.
59- qcom,cpr-fuse-row: Array of row number of CPR fuse and method to read that row. It should have
60 index and value like this:
61 [0] => the fuse row number
62 [1] => fuse reading method, 0 for direct reading or 1 for SCM reading
63- qcom,cpr-fuse-target-quot: Array of bit positions in the primary CPR fuse row defined
64 by qcom,cpr-fuse-row for the target quotients of each
65 fuse corner. Each bit position corresponds to the LSB
66 of the quotient parameter. The elements in the array
67 are ordered from lowest voltage corner to highest voltage
68 corner. This property must be of length defined by
69 qcom,cpr-fuse-corners.
70- qcom,cpr-fuse-ro-sel: Array of bit positions in the primary CPR fuse row defined
71 by qcom,cpr-fuse-row for the ring oscillator selection for each
72 fuse corner. Each bit position corresponds to the LSB
73 of the RO select parameter. The elements in the array
74 are ordered from lowest voltage corner to highest voltage
75 corner. This property must be of length defined by
76 qcom,cpr-fuse-corners.
77
78Optional properties:
79- vdd-mx-supply: Regulator to supply memory power as dependency
80 of VDD APC.
81- qcom,vdd-mx-vmax: The maximum voltage in uV for vdd-mx-supply. This
82 is required when vdd-mx-supply is present.
83- qcom,vdd-mx-vmin-method: The method to determine the minimum voltage for
84 vdd-mx-supply, which can be one of following
85 choices compared with VDD APC:
86 0 => equal to the voltage(vmin) of VDD APC
87 1 => equal to PVS corner ceiling voltage
88 2 => equal to slow speed corner ceiling
89 3 => equal to qcom,vdd-mx-vmax
90 4 => equal to VDD_APC fuse corner mapped vdd-mx voltage
91 5 => equal to VDD_APC virtual corner mapped vdd-mx voltage
92 This is required when vdd-mx-supply is present.
93- qcom,vdd-mx-corner-map: Array of integers which defines the mapping from VDD_APC
94 voltage corners to vdd-mx-supply voltages.
95 Each element is a voltage to request from vdd-mx for the
96 corresponding fuse corner or virtual corner. The elements
97 in the array are ordered from lowest voltage corner
98 to highest voltage corner. The length of this property
99 depends on the value of qcom,vdd-mx-vmin-method property.
100 When qcom,vdd-mx-vmin-method property has a value of 4, the length
101 of this property must be equal to the value defined by qcom,cpr-fuse-corners.
102 When qcom,vdd-mx-vmin-method property has a value of 5, the length of
103 this property must be equal to the number of elements in the qcom,cpr-corner-map
104 property.
105- qcom,pvs-voltage-table: Array of N-tuples in which each tuple specifies the
106 initial voltage in microvolts of the PVS bin for each
107 fuse voltage corner. The location or 0-based index
108 of a tuple in the list corresponds to the PVS bin number.
109 Each tuple must be of length defined by qcom,cpr-fuse-corners.
110 A given cpr-regulator device must have either
111 qcom,pvs-voltage-table specified or
112 qcom,cpr-fuse-init-voltage (and its associated properties).
113- qcom,pvs-fuse-redun-sel: Array of 5 elements to indicate where to read the bits, what value to
114 compare with in order to decide if the redundant PVS fuse bits would be
115 used instead of the original bits and method to read fuse row, reading
116 register through SCM or directly. The 5 elements with index [0..4] are:
117 [0] => the fuse row number of the selector
118 [1] => LSB bit position of the bits
119 [2] => number of bits
120 [3] => the value to indicate redundant selection
121 [4] => fuse reading method, 0 for direct reading or 1 for SCM reading
122 When the value of the fuse bits specified by first 3 elements equals to
123 the value in 4th element, redundant PVS fuse bits should be selected.
124 Otherwise, the original PVS bits should be selected. If the 5th
125 element is 0, read the fuse row from register directly. Otherwise,
126 read it through SCM.
127 This property is required if qcom,pvs-voltage-table is present.
128- qcom,pvs-fuse: Array of 4 elements to indicate the bits for PVS fuse and read method.
129 The array should have index and value like this:
130 [0] => the PVS fuse row number
131 [1] => LSB bit position of the bits
132 [2] => number of bits
133 [3] => fuse reading method, 0 for direct reading or 1 for SCM reading
134 This property is required if qcom,pvs-voltage-table is present.
135- qcom,pvs-fuse-redun: Array of 4 elements to indicate the bits for redundant PVS fuse.
136 The array should have index and value like this:
137 [0] => the redundant PVS fuse row number
138 [1] => LSB bit position of the bits
139 [2] => number of bits
140 [3] => fuse reading method, 0 for direct reading or 1 for SCM reading
141 This property is required if qcom,pvs-voltage-table is present.
142- qcom,cpr-fuse-redun-sel: Array of 5 elements to indicate where to read the bits, what value to
143 compare with in order to decide if the redundant CPR fuse bits would be
144 used instead of the original bits and method to read fuse row, using SCM
145 to read or read register directly. The 5 elements with index [0..4] are:
146 [0] => the fuse row number of the selector
147 [1] => LSB bit position of the bits
148 [2] => number of bits
149 [3] => the value to indicate redundant selection
150 [4] => fuse reading method, 0 for direct reading or 1 for SCM reading
151 When the value of the fuse bits specified by first 3 elements equals to
152 the value in 4th element, redundant CPR fuse bits should be selected.
153 Otherwise, the original CPR bits should be selected. If the 5th element
154 is 0, read the fuse row from register directly. Otherwise, read it through
155 SCM.
156- qcom,cpr-fuse-redun-row: Array of row number of redundant CPR fuse and method to read that
157 row. It should have index and value like this:
158 [0] => the redundant fuse row number
159 [1] => the value to indicate reading the fuse row directly or using SCM
160 This property is required if qcom,cpr-fuse-redun-sel is present.
161- qcom,cpr-fuse-redun-target-quot: Array of bit positions in the redundant CPR fuse row defined
162 by qcom,cpr-fuse-redun-row for the target quotients of each
163 fuse corner. Each bit position corresponds to the LSB
164 of the quotient parameter. The elements in the array
165 are ordered from lowest voltage corner to highest voltage corner.
166 This property must be of length defined by qcom,cpr-fuse-corners.
167 This property is required if qcom,cpr-fuse-redun-sel is present.
168- qcom,cpr-fuse-redun-ro-sel: Array of bit positions in the redundant CPR fuse row defined
169 by qcom,cpr-fuse-redun-row for the ring oscillator select of each
170 fuse corner. Each bit position corresponds to the LSB of the RO
171 select parameter. The elements in the array are ordered from
172 lowest voltage corner to highest voltage corner.
173 This property must be of length defined by qcom,cpr-fuse-corners.
174 This property is required if qcom,cpr-fuse-redun-sel is present.
175- qcom,cpr-fuse-redun-bp-cpr-disable: Redundant bit position of the bit to indicate if CPR should be disable
176- qcom,cpr-fuse-redun-bp-scheme: Redundant bit position of the bit to indicate if it's a global/local scheme
177 This property is required if cpr-fuse-redun-bp-cpr-disable
178 is present, and vise versa.
179- qcom,cpr-fuse-bp-cpr-disable: Bit position of the bit to indicate if CPR should be disabled
180- qcom,cpr-fuse-bp-scheme: Bit position of the bit to indicate if it's a global/local scheme
181- qcom,cpr-fuse-revision: Array of 4 integer elements which define the location of the bits for
182 the CPR fusing revision fuse parameter. The 4 elements are:
183 [0]: => the fuse row number of the bits
184 [1]: => LSB bit position of the bits
185 [2]: => the number of bits
186 [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading
187 The fusing revision value is used to determine which specific adjustments
188 are required on some chips.
189- qcom,cpr-fuse-target-quot-size: Array of target quotient parameter bit sizes in the primary
190 or redundant CPR fuse row for each fuse corner. The elements in the
191 array are ordered from lowest voltage corner to highest voltage corner.
192 If this property is not present, then all target quotient fuse values
193 are assumed to be the default length of 12 bits.
194- qcom,cpr-fuse-target-quot-scale: Array of doubles which defines the scaling coefficients to decode
195 the target quotients of each fuse corner. The first element in each
196 double represents the offset to add to the scaled quotient. The second
197 element represents the multiplier to scale the quotient by. For example,
198 given a tuple <A B>, quot_decoded = A + (B * quot_raw).
199 The doubles in the array are ordered from lowest voltage corner to highest
200 voltage corner. This property must contain a number of doubles equal to
201 the value of qcom,cpr-fuse-corners. If this property is not present,
202 then all target quotient parameters are assumed to have an offset of 0
203 and a multiplier of 1 (i.e. no decoding needed).
204- qcom,cpr-enable: Present: CPR enabled by default.
205 Not Present: CPR disable by default.
206- qcom,cpr-fuse-cond-min-volt-sel: Array of 5 elements to indicate where to read the bits, what value to
207 compare with in order to decide if the conditional minimum apc voltage needs
208 to be applied and the fuse reading method.
209 The 5 elements with index[0..4] are:
210 [0] => the fuse row number;
211 [1] => LSB bit position of the bits;
212 [2] => number of the bits;
213 [3] => the expected data to read;
214 [4] => fuse reading method, 0 for direct reading or 1 for SCM reading;
215 When the value of the fuse bits specified by first 3 elements is not equal to
216 the value in 4th element, then set the apc voltage for all parts running
217 at each voltage corner to be not lower than the voltage defined
218 using "qcom,cpr-cond-min-voltage".
219- qcom,cpr-cond-min-voltage: Minimum voltage in microvolts allowed for cpr-regulator output if the fuse bits
220 defined in qcom,cpr-fuse-cond-min-volt-sel have not been programmed with the
221 expected data. This is required if cpr-fuse-cond-min-volt-sel is present.
222- qcom,cpr-fuse-uplift-sel: Array of 5 elements to indicate where to read the bits, what value to
223 compare with in order to enable or disable the pvs voltage uplift workaround,
224 and the fuse reading method.
225 The 5 elements with index[0..4] are:
226 [0]: => the fuse row number of the selector;
227 [1]: => LSB bit position of the bits;
228 [2]: => number of the bits;
229 [3]: => the value to indicate if the apc pvs voltage uplift workaround will
230 be enabled;
231 [4]: => fuse reading method, 0 for direct reading or 1 for SCM reading.
232 When the value of the fuse bits specified by first 3 elements equals to the
233 value in 4th element, the pvs voltage uplift workaround will be enabled.
234- qcom,speed-bin-fuse-sel: Array of 4 elements to indicate where to read the speed bin of the processor,
235 and the fuse reading method.
236 The 4 elements with index[0..3] are:
237 [0]: => the fuse row number of the selector;
238 [1]: => LSB bit position of the bits;
239 [2]: => number of the bits;
240 [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading.
241 This is required if cpr-fuse-uplift-disable-sel is present.
242- qcom,cpr-uplift-voltage: Uplift in microvolts used for increasing pvs init voltage. If this property is present,
243 This is required if cpr-fuse-uplift-disable-sel is present.
244- qcom,cpr-uplift-max-volt: Maximum voltage in microvolts used for pvs voltage uplift workaround to limit
245 the maximum pvs voltage.
246 This is required if cpr-fuse-uplift-disable-sel is present.
247- qcom,cpr-uplift-quotient: Array of target quotient increments to add to the fused quotients of each
248 fuse corner as part of the PVS voltage uplift workaround.
249 The elements in the array are ordered from lowest voltage
250 corner to highest voltage corner. This property must be of
251 length defined by qcom,cpr-fuse-corners. This is required
252 if cpr-fuse-uplift-disable-sel is present.
253- qcom,cpr-uplift-speed-bin: The speed bin value corresponding to one type of processor which needs to apply the
254 pvs voltage uplift workaround.
255 This is required if cpr-fuse-uplift-disable-sel is present.
256- qcom,cpr-fuse-version-map: Array of integer tuples which each match to a given combination of CPR
257 fuse parameter values. Each tuple consists of N + 3 elements. Where
258 N is the number of fuse corners defined by the qcom,cpr-fuse-corners
259 property. The elements in one tuple are:
260 [0]: => the speed bin of the CPU
261 [1]: => the PVS version of the CPU
262 [2]: => the CPR fuse revision
263 [3 - N+2]: => the ring oscillator select value of each fuse corner
264 ordered from lowest to highest
265 Any element in a tuple may use the value 0xffffffff as a wildcard
266 which will match against any fuse parameter value. The first tuple
267 that matches against the fuse values read from hardware will be used.
268 This property is used by several properties to provide an index into
269 their lists.
270- qcom,cpr-allowed: Integer values that specifies whether the closed loop CPR is allowed or
271 not for a particular fuse revision. If the qcom,cpr-fuse-version-map
272 property is specified, then qcom,cpr-allowed must contain the same number
273 of integers as that of the number of tuples in qcom,cpr-fuse-version-map.
274 If the integer value has a value 0 for a particular fuse revision, then it
275 is treated as if the closed loop operation is disabled in the fuse. If the
276 integer value has a value 1 for a particular fuse revision, then the closed
277 loop operation is enabled for that fuse revision. If nothing is specified
278 for a particular fuse revision, then the closed loop operation is enabled
279 for that fuse revision by default.
280- qcom,cpr-quotient-adjustment: Array of integer tuples of target quotient adjustments to add to the fused
281 quotients of each fuse corner. The elements in a tuple are ordered from
282 lowest voltage corner to highest voltage corner. Each tuple must be of
283 length defined by qcom,cpr-fuse-corners. If the qcom,cpr-fuse-version-map
284 property is specified, then qcom,cpr-quotient-adjustment must contain the
285 same number of tuples as qcom,cpr-fuse-version-map. These tuples are then
286 mapped one-to-one in the order specified. E.g. if the second
287 qcom,cpr-fuse-version-map tuple matches for a given device, then the quotient
288 adjustments defined in the second qcom,cpr-quotient-adjustment tuple will
289 be applied. If the qcom,cpr-fuse-version-map property is not specified,
290 then qcom,cpr-quotient-adjustment must contain a single tuple which is then
291 applied unconditionally. If this property is specified, then the quotient
292 adjustment values are added to the target quotient values read from fuses
293 before writing them into the CPR GCNT target control registers.
294 This property can be used to add or subtract static voltage margin from the
295 regulator managed by the CPR controller.
296- qcom,cpr-init-voltage-adjustment: Array of integer tuples of initial voltage adjustments in microvolts to
297 add to the fused initial voltage values of each fuse corner. The elements
298 in a tuple are ordered from lowest voltage corner to highest voltage corner.
299 Each tuple must be of the length defined by qcom,cpr-fuse-corners. If the
300 qcom,cpr-fuse-version-map property is specified, then
301 qcom,cpr-init-voltage-adjustment must contain the same number of tuples as
302 qcom,cpr-fuse-version-map. These tuples are then mapped one-to-one in the
303 order specified. E.g. if the second qcom,cpr-fuse-version-map tuple matches
304 for a given device, then the initial voltage adjustments defined in the
305 second qcom,cpr-init-voltage-adjustment tuple will be applied. If the
306 qcom,cpr-fuse-version-map property is not specified, then
307 qcom,cpr-init-voltage-adjustment must contain a single tuple which is then
308 applied unconditionally. This property can be used to add or subtract
309 static initial voltage margin from the regulator managed by the CPR
310 controller.
311- qcom,cpr-quot-offset-adjustment: Array of integer tuples of target quotient offset adjustments to add
312 to the fused quotient offsets of each fuse corner. The elements in a tuple
313 are ordered from lowest voltage corner to highest voltage corner. Each tuple
314 must be of length defined by qcom,cpr-fuse-corners. If the qcom,cpr-fuse-version-map
315 property is specified, then qcom,cpr-quot-offset-adjustment must contain the
316 same number of tuples as qcom,cpr-fuse-version-map. These tuples are then
317 mapped one-to-one in the order specified. E.g. if the second
318 qcom,cpr-fuse-version-map tuple matches for a given device, then the quotient
319 offset adjustments defined in the second qcom,cpr-quot-offset-adjustment tuple
320 will be applied. If the qcom,cpr-fuse-version-map property is not specified,
321 then qcom,cpr-quot-offset-adjustment must contain a single tuple which is then
322 applied unconditionally. If this property is specified, then the quotient
323 offset adjustment values are added to the target quotient offset values read
324 from fuses.
325 This property can be used to add or subtract static quotient offset margin from
326 the regulator managed by the CPR controller.
327- qcom,cpr-clamp-timer-interval: The number of 64 reference clock cycle blocks to delay for whenever
328 the clamp signal, sensor mask registers or sensor bypass registers
329 change. The CPR controller loop is disabled during this delay.
330 Supported values are 0 to 255. If this property is not specified,
331 then a value of 0 is assumed. Note that if this property has a
332 value greater than 0, then software cannot accurately determine the
333 error_steps value that corresponds to a given CPR measurement
334 unless processor power collapsing is disabled. If this property
335 has a value of 0, then the CPR controller loop is not disabled and
336 re-enabled while idle if the clamp signal changes. Instead, it
337 will remain idle until software issues an ACK or NACK command.
338 This ensures that software can read the error_steps value which
339 resulted in the CPR up or down interrupt. Setting this property to
340 a value greater than 0 is useful for resetting the CPR sensors of a
341 processor that uses BHS type voltage switches in order to avoid
342 anomalous CPR up interrupts when exiting from power collapse.
343- vdd-apc-optional-prim-supply: Present: Regulator of highest priority to supply VDD APC power
344 Not Present: No such regulator.
345- vdd-apc-optional-sec-supply: Present: Regulator of second highest priority to supply VDD APC power.
346 Not Present: No such regulator.
347- qcom,cpr-speed-bin-max-corners: Array of (N+2)-tuples in which each tuple maps a CPU speed bin and PVS version to
348 the maximum virtual voltage corner corresponding to each fuse corner. The value N
349 corresponds to the number of fuse corners specified by qcom,cpr-fuse-corners.
350 The elements in one tuple are:
351 [0]: => the speed bin of the CPU. It may use the value 0xffffffff as a
352 wildcard to match any speed bin values.
353 [1]: => the PVS version of the CPU. It may use the value 0xffffffff as
354 a wildcard to match any PVS version values.
355 [2 - N+1]: => the max virtual voltage corner value corresponding to each fuse corner
356 for this speed bin, ordered from lowest voltage corner to highest
357 voltage corner.
358 No CPR target quotient scaling is applied on chips which have a speed bin + PVS version
359 pair that does not appear in one of the tuples in this property. If the property is
360 specified, then quotient scaling is enabled for the highest voltage corner. If this property is
361 not specified, then no quotient scaling can take place.
362- qcom,cpr-corner-map: Array of elements of fuse corner value for each virtual corner.
363 The location or 1-based index of an element in the list corresponds to
364 the virtual corner value. For example, the first element in the list is the fuse corner
365 value that virtual corner 1 maps to.
366 This property is required if qcom,cpr-speed-bin-max-corners is present.
367- qcom,cpr-corner-frequency-map: Array of tuples in which a tuple describes a corner to application processor frequency
368 mapping.
369 The 2 elements in one tuple are:
370 [0]: => a virtual voltage corner.
371 [1]: => the application processor frequency in Hz corresponding to the virtual corner.
372 This property is required if qcom,cpr-speed-bin-max-corners is present.
373- qcom,pvs-version-fuse-sel: Array of 4 elements to indicate where to read the pvs version of the processor,
374 and the fuse reading method.
375 The 4 elements with index[0..3] are:
376 [0]: => the fuse row number of the selector;
377 [1]: => LSB bit position of the bits;
378 [2]: => the number of bits;
379 [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading.
380- qcom,cpr-voltage-ceiling-override: Array of (N+2)-tuples in which each tuple maps a CPU speed bin and PVS version
381 to the ceiling voltage to apply for each virtual voltage corner. The value N
382 corresponds to the number of virtual corners as specified by the number of elements
383 in the qcom,cpr-corner-map property.
384 The elements in one tuple are:
385 [0]: => the speed bin of the CPU. It may use the value 0xffffffff as a
386 wildcard to match any speed bin values.
387 [1]: => the PVS version of the CPU. It may use the value 0xffffffff as a
388 wildcard to match any PVS version values.
389 [2 - N+1]: => the ceiling voltage value in microvolts corresponding to each virtual
390 corner for this speed bin, ordered from lowest voltage corner to
391 highest voltage corner.
392 No ceiling override is applied on chips which have a speed bin + PVS version
393 pair that does not appear in one of the tuples in this property. If the property is
394 specified and the speed bin + PVS version matches, then the per-virtual-corner ceiling
395 voltages will be used in place of the per-fuse-corner ceiling voltages defined in the
396 qcom,cpr-voltage-ceiling property. If this property is not specified, then the
397 per-fuse-corner ceiling voltages will always be used.
398- qcom,cpr-voltage-floor-override: Array of (N+2)-tuples in which each tuple maps a CPU speed bin and PVS version
399 to the floor voltage to apply for each virtual voltage corner. The value N
400 corresponds to the number of virtual corners as specified by the number of elements
401 in the qcom,cpr-corner-map property.
402 The elements in one tuple are:
403 [0]: => the speed bin of the CPU. It may use the value 0xffffffff as a
404 wildcard to match any speed bin values.
405 [1]: => the PVS version of the CPU. It may use the value 0xffffffff as a
406 wildcard to match any PVS version values.
407 [2 - N+1]: => the floor voltage value in microvolts corresponding to each virtual
408 corner for this speed bin, ordered from lowest voltage corner to
409 highest voltage corner.
410 No floor override is applied on chips which have a speed bin + PVS version
411 pair that does not appear in one of the tuples in this property. If the property is
412 specified and the speed bin + PVS version matches, then the per-virtual-corner floor
413 voltages will be used in place of the per-fuse-corner floor voltages defined in the
414 qcom,cpr-voltage-floor property. If this property is not specified, then the
415 per-fuse-corner floor voltages will always be used.
416- qcom,cpr-floor-to-ceiling-max-range: Array of integer tuples of floor-to-ceiling max range values in microvolts
417 to be subtracted from the ceiling voltage values of each virtual corner.
418 Supported values are those greater than or equal 0, or (-1). The value 0 for a corner
419 implies that the floor value for that corner has to equal to its ceiling value.
420 The value (-1) for a corner implies that no modification to the default floor voltage
421 is required. The elements in a tuple are ordered from lowest voltage corner to highest
422 voltage corner. Each tuple must be of the length equal to the number of virtual corners
423 as specified by the number of elements in the qcom,cpr-corner-map property. If the
424 qcom,cpr-fuse-version-map property is specified, then
425 qcom,cpr-dynamic-floor-override-adjustment must contain the same number of
426 tuples as qcom,cpr-fuse-version-map. These tuples are then mapped one-to-one in the
427 order specified. E.g. if the second qcom,cpr-fuse-version-map tuple matches
428 for a given device, then voltage adjustments defined in the second
429 qcom,cpr-dynamic-floor-override-adjustment tuple will be applied. If the
430 qcom,cpr-fuse-version-map property is not specified, then
431 qcom,cpr-dynamic-floor-override-adjustment must contain a single tuple which
432 is then applied unconditionally.
433- qcom,cpr-virtual-corner-init-voltage-adjustment: Array of integer tuples of voltage adjustments in microvolts to be
434 added to the initial voltage values of each virtual corner. The elements
435 in a tuple are ordered from lowest voltage corner to highest voltage corner.
436 Each tuple must be of the length equal to the number of virtual corners as
437 specified by the number of elements in the qcom,cpr-corner-map property. If the
438 qcom,cpr-fuse-version-map property is specified, then
439 qcom,cpr-virtual-corner-init-voltage-adjustment must contain the same number of
440 tuples as qcom,cpr-fuse-version-map. These tuples are then mapped one-to-one in the
441 order specified. E.g. if the second qcom,cpr-fuse-version-map tuple matches
442 for a given device, then voltage adjustments defined in the second
443 qcom,cpr-virtual-corner-init-voltage-adjustment tuple will be applied. If the
444 qcom,cpr-fuse-version-map property is not specified, then
445 qcom,cpr-virtual-corner-init-voltage-adjustment must contain a single tuple which
446 is then applied unconditionally.
447- qcom,cpr-virtual-corner-quotient-adjustment: Array of integer tuples of quotient offsets to be added to
448 the scaled target quotient of each virtual corner. The elements
449 in a tuple are ordered from lowest voltage corner to highest voltage corner.
450 Each tuple must be of the length equal to the number of virtual corners as
451 specified by the number of elements in the qcom,cpr-corner-map property.
452 If the qcom,cpr-fuse-version-map property is specified, then
453 qcom,cpr-virtual-corner-quotient-adjustment must contain the same number of tuples as
454 qcom,cpr-fuse-version-map. These tuples are then mapped one-to-one in the
455 order specified. E.g. if the second qcom,cpr-fuse-version-map tuple matches
456 for a given device, then quotient adjustments defined in the second
457 qcom,cpr-virtual-corner-quotient-adjustment tuple will be applied. If the
458 qcom,cpr-fuse-version-map property is not specified, then
459 qcom,cpr-virtual-corner-quotient-adjustment must contain a single tuple which is then
460 applied unconditionally.
461- qcom,cpr-cpus: Array of CPU phandles which correspond to the cores that this cpr-regulator
462 device must monitor when adjusting the voltage and/or target quotient based
463 upon the number of online cores or make sure that one of them must be online
464 when performing de-aging measurements. This property must be specified in order to
465 utilize the qcom,cpr-online-cpu-virtual-corner-init-voltage-adjustment or
466 qcom,cpr-online-cpu-virtual-corner-quotient-adjustment or qcom,cpr-aging-sensor-id properties.
467- qcom,cpr-online-cpu-virtual-corner-init-voltage-adjustment: Array of tuples where each tuple specifies
468 the voltage adjustment for each corner. These adjustments apply to the
469 initial voltage of each corner. The size of each tuple must be equal
470 to qcom,cpr-fuse-corners if consumers request fuse corners or the length of
471 qcom,cpr-corner-map if consumers request virtual corners. In each tuple, the
472 value corresponds to the voltage adjustment when running at that corner at
473 init, from lowest to highest. The tuples must be organized into 1 group if
474 qcom,cpr-fuse-version-map is not specified or the same number of groups as
475 the number of tuples in qcom,cpr-fuse-version-map. The i-th group of tuples
476 corresponds to the voltage adjustments for i-th fuse version map tuple. In
477 each group, there are 1 plus length of qcom,cpr-cpus tuples, each tuple
478 corresponds to the number of cores online, from 0 to the number of elements
479 in qcom,cpr-cpus.
480- qcom,cpr-online-cpu-init-voltage-as-ceiling: Boolean which indicates that the ceiling voltage used for a
481 given virtual corner may be reduced to the per number of cores online,
482 per-virtual corner ceiling voltage value. This property takes precedence
483 over qcom,cpr-scaled-init-voltage-as-ceiling if both are specified.
484- qcom,cpr-online-cpu-virtual-corner-quotient-adjustment: Array of tuples where each tuple specifies
485 the quotient adjustment for each corner. These adjustments will be applied
486 to each corner at run time. The size of each tuple must be equal to
487 qcom,cpr-fuse-corners if consumers request fuse corners or the length of
488 qcom,cpr-corner-map if consumers request virtual corners. In each tuple,
489 the value corresponds to the quotient adjustment when running at that corner,
490 from lowest to highest. The tuples must be organized into 1 group if
491 qcom,cpr-fuse-version-map is not specified or the same number of groups
492 as the number of tuples in qcom,cpr-fuse-version-map. The i-th group of
493 tuples corresponds to the quotient adjustments for i-th fuse version map
494 tuple. In each group, there are 1 plus length of qcom,cpr-cpus tuples,
495 each tuple corresponds to the number of cores online, from 0 to the
496 number of elements in qcom,cpr-cpus.
497- qcom,cpr-init-voltage-as-ceiling: Boolean which indicates that the ceiling voltage used for a given virtual
498 corner may be reduced to the per-fuse-corner initial voltage fuse value.
499- qcom,cpr-scaled-init-voltage-as-ceiling: Boolean which indicates that the ceiling voltage used for a given
500 virtual corner may be reduced to the interpolated, per-virtual-corner initial
501 voltage value. Note that if both qcom,cpr-init-voltage-as-ceiling and
502 qcom,cpr-scaled-init-voltage-as-ceiling are specified, then
503 qcom,cpr-scaled-init-voltage-as-ceiling will take precedence since the interpolated
504 voltages are necessarily less than or equal to the fused initial voltage values.
505- qcom,cpr-voltage-scaling-factor-max: Array of values which define the maximum allowed scaling factor to apply
506 when calculating per-corner initial voltage values for each fuse corner. The
507 array must be of length equal to the value of the qcom,cpr-fuse-corners property.
508 Each element in the array maps to the fuse corners in increasing order.
509 The elements have units of uV/MHz. Each element corresponds to 'max_factor' in
510 the following equation:
511 init_voltage_min(f) = fuse_init_voltage(f) - (fuse_f_max - f) * max_factor
512 If this property is not specified, then the initial voltage for each virtual
513 corner will be set to the initial voltage of the associated fuse corner.
514- qcom,cpr-quot-adjust-scaling-factor-max: Array of values which define the maximum allowed scaling factor to
515 apply when calculating per-virtual-corner target quotients for each fuse
516 corner. Two data formats are allowed for this property. The primary one
517 requires that the array be of length equal to the value of the
518 qcom,cpr-fuse-corners property. When using this format, each element in the
519 array maps to the fuse corners in increasing order. The second depreciated
520 format allows for only a single element to be specified which defines the
521 maximum scaling factor for the highest fuse corner. In this case, a value of
522 0 is assumed for the lower fuse corners. The elements of this property have
523 units of QUOT/GHz. Each element corresponds to 'max_factor' in the following
524 equation:
525 quot_min(f) = fuse_quot(f) - (fuse_f_max - f) * max_factor / 1000
526 where f and fuse_f_max have units of MHz.
527 This property is required if qcom,cpr-speed-bin-max-corners is present.
528- qcom,cpr-fuse-init-voltage: Array of quadruples in which each quadruple specifies a fuse location to
529 read in order to get an initial voltage for a fuse corner. The fuse values
530 are encoded as voltage steps higher or lower than the voltages defined in
531 qcom,cpr-voltage-ceiling. Each step corresponds to the voltage defined by
532 the qcom,cpr-init-voltage-step property.
533 The 4 elements in one quadruple are:
534 [0]: => the fuse row number of the bits
535 [1]: => LSB bit position of the bits
536 [2]: => number of the bits
537 [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading
538 The quadruples are ordered from the lowest voltage fuse corner to the
539 highest voltage fuse corner.
540 A given cpr-regulator device must have either qcom,cpr-fuse-init-voltage
541 specified or qcom,pvs-voltage-table (and its associated properties).
542- qcom,cpr-fuse-redun-init-voltage: Array of quadruples in which each quadruple specifies a fuse location
543 to read in order to get the redundant initial voltage for a fuse corner.
544 This property is the same as qcom,cpr-fuse-init-voltage except that it is
545 only utilized if a chip is configured to use the redundant set of fuse
546 values. This property is required if qcom,cpr-fuse-redun-sel and
547 qcom,cpr-fuse-init-voltage are specified.
548- qcom,cpr-init-voltage-ref: Array of reference voltages in microvolts used when decoding the initial
549 voltage fuse values. The elements in the array are ordered from lowest
550 voltage corner to highest voltage corner. This property must be of length
551 defined by qcom,cpr-fuse-corners.
552 This property is required if qcom,cpr-fuse-init-voltage is present.
553- qcom,cpr-init-voltage-step: The voltage step size in microvolts of the CPR initial voltage fuses described by the
554 qcom,cpr-fuse-init-voltage property.
555 This property is required if qcom,cpr-fuse-init-voltage is present.
556- mem-acc-supply: Regulator to vote for the memory accelerator configuration.
557 Not Present: memory accelerator configuration not supported.
558- qcom,mem-acc-corner-map: Array of integer which defines the mapping from mem-acc corner value for each
559 virtual corner. Each element is a mem-acc state for the corresponding virtual corner.
560 The elements in the array are ordered from lowest voltage corner to highest voltage corner.
561- qcom,fuse-remap-source: Array of quadruples in which each quadruple specifies a fuse location to
562 remap. The 4 elements in one quadruple are:
563 [0]: => the fuse row number of the bits
564 [1]: => LSB bit position of the bits
565 [2]: => the number of bits
566 [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading
567 The fuse bits for all quadruples are packed together in the order specified
568 into 64-bit virtual fuse rows beginning at the row number defined in the
569 qcom,fuse-remap-base-row property. The remapped rows may be used by any
570 other properties.
571 Example:
572 qcom,fuse-remap-base-row = <1000>;
573 qcom,fuse-remap-source =
574 <13 57 2 0>,
575 <14 30 3 0>,
576 <20 1 7 0>,
577 <40 47 120 0>;
578
579 This results in the following bit remapping:
580
581 Row Bits Remap Row Remap Bits
582 13 57..58 --> 1000 0..1
583 14 30..32 --> 1000 2..4
584 20 1..7 --> 1000 5..11
585 40 47..63 --> 1000 12..28
586 41 0..34 --> 1000 29..63
587 41 35..63 --> 1001 0..28
588 42 0..34 --> 1001 29..63
589 42 35..38 --> 1002 0..3
590
591 A tuple like this could then be used to reference some of the
592 concatenated bits from rows 13, 14, and 20:
593
594 qcom,cpr-fuse-init-voltage = <1000 0 6 0>;
595- qcom,fuse-remap-base-row: Integer which defines the virtual row number to use as a base when remapping
596 fuse bits. The remap base row number can be any value as long as it is
597 greater than all of the real row numbers addressed in other properties of
598 the cpr-regulator device node. This property is required if
599 qcom,fuse-remap-source is specified.
600- qcom,cpr-quot-min-diff: Integer which defines the minimum target-quotient difference between
601 the highest and (highest - 1) fuse corner to keep CPR enabled. If this
602 property is not specified a default value of 50 is used.
603- qcom,cpr-fuse-quot-offset: Array of quadruples in which each quadruple specifies a fuse location to
604 read in order to get the quotient offset for a fuse corner. The fuse values
605 are encoded as the difference between quotients of that fuse corner and its
606 adjacent lower fuse corner divided by an unpacking multiplier value defined
607 under qcom,cpr-fuse-quot-offset-scale property.
608 The 4 elements in one quadruple are:
609 [0]: => the fuse row number of the bits
610 [1]: => LSB bit position of the bits
611 [2]: => number of the bits
612 [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading
613 The quadruples are ordered from the lowest fuse corner to the highest
614 fuse corner.
615 Quotient offset read from the fuse locations above can be overridden with
616 the property qcom,cpr-quot-adjust-scaling-factor-max.
617- qcom,cpr-fuse-quot-offset-scale: Array of integer values which defines the multipliers to decode the quotient offsets
618 of each fuse corner. The elements in the array are ordered from the lowest voltage fuse corner
619 to the highest voltage fuse corner. If this property is not present, then all target quotient
620 parameters are assumed to have a multiplier of 1 (i.e. no decoding needed).
621- qcom,cpr-redun-fuse-quot-offset: Array of quadruples in which each quadruple specifies a fuse location to
622 read in order to get the redundant quotient offset for a fuse corner. This
623 property is the same as qcom,cpr-fuse-quot-offset except that it is only
624 utilized if a chip is configured to use the redundant set of fuse values.
625- qcom,cpr-fuse-min-quot-diff: Array of values which define the minimum difference allowed between the adjusted
626 quotients of the fuse corners. The length of the array should be equal to the value
627 of the qcom,cpr-fuse-corners property. Where each element in the array maps to the
628 fuse corners in increasing order.
629- qcom,cpr-min-quot-diff-adjustment: Array of integer tuples of target quotient offsets to be added to
630 the adjusted target quotients of each fuse corner. When the quotient difference
631 between two adjacent fuse corners is insufficient, the quotient for the higher fuse corner is
632 replaced with that of the lower fuse corner plus the adjustment value.
633 The elements in a tuple are ordered from lowest voltage corner to highest voltage corner.
634 Each tuple must be of the length defined by qcom,cpr-fuse-corners.
635 If the qcom,cpr-fuse-version-map property is specified, then qcom,cpr-min-quot-diff-adjustment
636 must contain the same number of tuples as qcom,cpr-fuse-version-map. These tuples are then mapped
637 one-to-one in the order specified. E.g. if the second qcom,cpr-fuse-version-map tuple matches
638 for a given device, then the quotient adjustments defined in the
639 second qcom,cpr-min-quot-diff-adjustment tuple will be applied. If the
640 qcom,cpr-fuse-version-map property is not specified, then
641 qcom,cpr-min-quot-diff-adjustment must contain a single tuple which is then
642 applied unconditionally. The qcom,cpr-min-quot-diff-adjustment property must be specified
643 if the qcom,cpr-fuse-min-quot-diff property is specified.
644- qcom,cpr-skip-voltage-change-during-suspend: Boolean property which indicates that the CPR voltage
645 should not be adjusted based upon the number of online cores while
646 entering or exiting system suspend.
647- rpm-apc-supply: Regulator to notify RPM of the APC operating
648 corner
649- qcom,rpm-apc-corner-map: Array of integers which define the mapping of
650 the RPM corner to the corresponding APC virtual
651 corner. This property must be defined if
652 'rpm-apc-supply' is present.
653- qcom,vsens-corner-map: Array of integers which define the mapping of the VSENS corner to the
654 corresponding APC fuse corner. The qcom,vsens-corner-map and
655 vdd-vsense-corner-supply properties must both be specified for a given
656 cpr-regulator device or neither must be specified.
657- vdd-vsens-corner-supply: Regulator to specify the current operating fuse corner to the Voltage Sensor.
658- vdd-vsens-voltage-supply: Regulator to specify the corner floor/ceiling voltages to the Voltage Sensor.
659- qcom,cpr-aging-sensor-id: Array of CPR sensor IDs to be used in the CPR de-aging algorithm. The number
660 of values should be equal to number of sensors selected for age calibration.
661 If this property is not specified, then the de-aging procedure is not enabled.
662- qcom,cpr-de-aging-allowed: Integer values that specify whether the CPR de-aging procedure is allowed or
663 not for a particular fuse revision. If the qcom,cpr-fuse-version-map
664 property is specified, then qcom,cpr-de-aging-allowed must contain the same number
665 of elements as there are tuples in qcom,cpr-fuse-version-map. If qcom,cpr-fuse-version-map
666 is not specified, then qcom,cpr-de-aging-allowed must contain a single value that
667 is used unconditionally. An element value of 1 means that the CPR de-aging procedure
668 can be performed for parts with the corresponding fuse revision. An element value of 0
669 means that CPR de-aging cannot be performed.
670 This property is required if the qcom,cpr-aging-sensor-id property has been specified.
671- qcom,cpr-aging-ref-corner: The vdd-apc-supply reference virtual voltage corner to be set during the CPR de-aging
672 measurements. This corner value is needed to set appropriate voltage on
673 the dependent voltage rails such as vdd-mx and mem-acc.
674 This property is required if the qcom,cpr-aging-sensor-id property has been specified.
675- qcom,cpr-aging-ref-voltage: The vdd-apc-supply reference voltage in microvolts to be set during the
676 CPR de-aging measurements.
677 This property is required if the qcom,cpr-aging-sensor-id property has been specified.
678- qcom,cpr-max-aging-margin: The maximum allowed aging voltage margin in microvolts. This is used to limit
679 the calculated aging voltage margin.
680 This property is required if the qcom,cpr-aging-sensor-id property has been specified.
681- qcom,cpr-non-collapsible-sensors: Array of CPR sensor IDs which are in non-collapsible domain. The sensor IDs not
682 specified in the array should be bypassed for the de-aging procedure. The number of
683 elements should be less than or equal to 32. The values of the array elements should
684 be greater than or equal to 0 and less than or equal to 31.
685 This property is required for power-domains with bypass mux present in HW.
686 This property can be required if the qcom,cpr-aging-sensor-id property has been specified.
687- qcom,cpr-aging-ro-scaling-factor: The aging ring oscillator (RO) scaling factor with units of QUOT/V.
688 This value is used for calculating a voltage margin from RO measurements.
689 This property is required if the qcom,cpr-aging-sensor-id property has been specified.
690- qcom,cpr-ro-scaling-factor: Array of scaling factors with units of QUOT/V for each ring oscillator ordered
691 from the lowest to the highest RO. These values are used to calculate
692 the aging voltage margin adjustment for all of the ROs. Since CPR2 supports
693 exactly 8 ROs, the array must contain 8 elements corresponding to RO0 through RO7 in order.
694 If a given RO is unused for a fuse corner, then its scaling factor may be specified as 0.
695 This property is required if the qcom,cpr-aging-sensor-id property has been specified.
696- qcom,cpr-aging-derate: Array of scaling factors which define the amount of derating to apply to the reference
697 aging voltage margin adjustment for each of the fuse corners. Each element has units
698 of uV/mV. This property must be of length defined by qcom,cpr-fuse-corners.
699 The elements are ordered from the lowest to the highest fuse corner.
700 This property is required if the qcom,cpr-aging-sensor-id property has been specified.
701- qcom,cpr-fuse-aging-init-quot-diff: Array of quadruples in which each quadruple specifies a fuse location to read in
702 order to get an initial quotient difference. The difference between quot min and quot max
703 is fused as the initial quotient difference.
704 The 4 elements in one quadruple are:
705 [0]: => the fuse row number of the bits
706 [1]: => LSB bit position of the bits
707 [2]: => number of the bits
708 [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading
709 The number of quadruples should be equal to the number of values specified in
710 the qcom,cpr-aging-sensor-id property. This property is required if
711 the qcom,cpr-aging-sensor-id property has been specified.
Tirupathi Reddyc3598b52017-12-18 13:31:12 +0530712Example:
713 apc_vreg_corner: regulator@f9018000 {
714 status = "okay";
715 compatible = "qcom,cpr-regulator";
716 reg = <0xf9018000 0x1000>, <0xfc4b8000 0x1000>;
717 reg-names = "rbcpr", "efuse_addr";
718 interrupts = <0 15 0>;
719 regulator-name = "apc_corner";
720 qcom,cpr-fuse-corners = <3>;
721 regulator-min-microvolt = <1>;
722 regulator-max-microvolt = <12>;
723
724 qcom,pvs-fuse = <22 6 5 1>;
725 qcom,pvs-fuse-redun-sel = <22 24 3 2 1>;
726 qcom,pvs-fuse-redun = <22 27 5 1>;
727
728 qcom,pvs-voltage-table =
729 <1050000 1150000 1350000>,
730 <1050000 1150000 1340000>,
731 <1050000 1150000 1330000>,
732 <1050000 1150000 1320000>,
733 <1050000 1150000 1310000>,
734 <1050000 1150000 1300000>,
735 <1050000 1150000 1290000>,
736 <1050000 1150000 1280000>,
737 <1050000 1150000 1270000>,
738 <1050000 1140000 1260000>,
739 <1050000 1130000 1250000>,
740 <1050000 1120000 1240000>,
741 <1050000 1110000 1230000>,
742 <1050000 1100000 1220000>,
743 <1050000 1090000 1210000>,
744 <1050000 1080000 1200000>,
745 <1050000 1070000 1190000>,
746 <1050000 1060000 1180000>,
747 <1050000 1050000 1170000>,
748 <1050000 1050000 1160000>,
749 <1050000 1050000 1150000>,
750 <1050000 1050000 1140000>,
751 <1050000 1050000 1140000>,
752 <1050000 1050000 1140000>,
753 <1050000 1050000 1140000>,
754 <1050000 1050000 1140000>,
755 <1050000 1050000 1140000>,
756 <1050000 1050000 1140000>,
757 <1050000 1050000 1140000>,
758 <1050000 1050000 1140000>,
759 <1050000 1050000 1140000>,
760 <1050000 1050000 1140000>;
761 qcom,cpr-voltage-ceiling = <1050000 1150000 1280000>;
762 qcom,cpr-voltage-floor = <1050000 1050000 1100000>;
763 vdd-apc-supply = <&pm8226_s2>;
764 vdd-apc-optional-prim-supply = <&ncp6335d>;
765 vdd-apc-optional-sec-supply = <&fan53555>;
766 vdd-mx-supply = <&pm8226_l3_ao>;
767 qcom,vdd-mx-vmax = <1350000>;
768 qcom,vdd-mx-vmin-method = <1>;
769 qcom,vdd-apc-step-up-limit = <1>;
770 qcom,vdd-apc-step-down-limit = <1>;
771 qcom,cpr-ref-clk = <19200>;
772 qcom,cpr-timer-delay = <5000>;
773 qcom,cpr-timer-cons-up = <1>;
774 qcom,cpr-timer-cons-down = <2>;
775 qcom,cpr-irq-line = <0>;
776 qcom,cpr-step-quotient = <15>;
777 qcom,cpr-up-threshold = <1>;
778 qcom,cpr-down-threshold = <2>;
779 qcom,cpr-idle-clocks = <5>;
780 qcom,cpr-gcnt-time = <1>;
781 qcom,cpr-clamp-timer-interval = <1>;
782 qcom,cpr-apc-volt-step = <5000>;
783
784 qcom,vsens-corner-map = <1 2 2>;
785 vdd-vsens-corner-supply = <&vsens_apc0_corner>;
786 vdd-vsens-voltage-supply = <&vsens_apc0_voltage>;
787
788 rpm-apc-supply = <&rpm_apc_vreg>;
789 qcom,rpm-apc-corner-map = <4 4 5 5 7 7 7 7 7 7 7 7>;
790
791 qcom,cpr-fuse-row = <138 1>;
792 qcom,cpr-fuse-bp-cpr-disable = <36>;
793 qcom,cpr-fuse-bp-scheme = <37>;
794 qcom,cpr-fuse-target-quot = <24 12 0>;
795 qcom,cpr-fuse-target-quot-size = <12 12 12>;
796 qcom,cpr-fuse-ro-sel = <54 38 41>;
797 qcom,cpr-fuse-revision = <140 26 2 0>;
798 qcom,cpr-fuse-redun-sel = <138 57 1 1 1>;
799 qcom,cpr-fuse-redun-row = <139 1>;
800 qcom,cpr-fuse-redun-target-quot = <24 12 0>;
801 qcom,cpr-fuse-redun-ro-sel = <46 36 39>;
802 qcom,cpr-fuse-cond-min-volt-sel = <54 42 6 7 1>;
803 qcom,cpr-cond-min-voltage = <1140000>;
804 qcom,cpr-fuse-uplift-sel = <22 53 1 0 0>;
805 qcom,cpr-uplift-voltage = <50000>;
806 qcom,cpr-uplift-quotient = <0 0 120>;
807 qcom,cpr-uplift-max-volt = <1350000>;
808 qcom,cpr-uplift-speed-bin = <1>;
809 qcom,speed-bin-fuse-sel = <22 0 3 0>;
810 qcom,cpr-corner-map = <1 1 2 2 3 3 3 3 3 3 3 3>;
811 qcom,cpr-corner-frequency-map =
812 <1 300000000>,
813 <2 384000000>,
814 <3 600000000>,
815 <4 787200000>,
816 <5 998400000>,
817 <6 1094400000>,
818 <7 1190400000>,
819 <8 1305600000>,
820 <9 1344000000>,
821 <10 1401600000>,
822 <11 1497600000>,
823 <12 1593600000>;
824 qcom,pvs-version-fuse-sel = <22 4 2 0>;
825 qcom,cpr-speed-bin-max-corners =
826 <0 1 2 4 7>,
827 <1 1 2 4 12>,
828 <2 1 2 4 10>,
829 <5 1 2 4 14>;
830 qcom,cpr-fuse-target-quot-scale =
831 <0 1>,
832 <0 1>,
833 <0 1>;
834 qcom,cpr-quot-adjust-scaling-factor-max = <0 650 650>;
835 qcom,cpr-fuse-quot-offset =
836 <138 53 5 0>,
837 <138 53 5 0>,
838 <138 48 5 0>,
839 <138 58 5 0>;
840 qcom,cpr-fuse-redun-quot-offset =
841 <200 53 5 0>,
842 <200 53 5 0>,
843 <200 48 5 0>,
844 <200 58 5 0>;
845 qcom,cpr-fuse-init-voltage =
846 <27 36 6 0>,
847 <27 18 6 0>,
848 <27 0 6 0>;
849 qcom,cpr-fuse-redun-init-voltage =
850 <140 36 6 0>,
851 <140 18 6 0>,
852 <140 0 6 0>;
853 qcom,cpr-init-voltage-ref = <1050000 1150000 1280000>;
854 qcom,cpr-init-voltage-step = <10000>;
855 qcom,cpr-voltage-ceiling-override =
856 <1 1 1050000 1050000 1150000 1150000 1280000
857 1280000 1280000 1280000 1280000 1280000
858 1280000 1280000>;
859 qcom,cpr-voltage-floor-override =
860 <1 1 1050000 1050000 1050000 1050000 1060000
861 1070000 1080000 1090000 1100000 1100000
862 1100000 1100000>;
863 qcom,cpr-scaled-init-voltage-as-ceiling;
864
865 qcom,cpr-fuse-version-map =
866 <0xffffffff 0xffffffff 2 4 4 4>,
867 <0xffffffff 0xffffffff 2 6 6 6>,
868 <0xffffffff 0xffffffff 3 4 4 4>;
869 qcom,cpr-quotient-adjustment =
870 <0 0 (-210)>,
871 <0 0 (-60)>,
872 <0 0 (-94)>;
873 qcom,cpr-quot-offset-adjustment =
874 <0 0 (-5)>;
875 qcom,cpr-init-voltage-adjustment =
876 <0 0 (-100000)>,
877 <0 0 (-100000)>,
878 <0 0 (-45000)>;
879 qcom,cpr-fuse-min-quot-diff = <0 0 40>;
880 qcom,cpr-min-quot-diff-adjustment =
881 <0 0 0>,
882 <0 0 72>,
883 <0 0 104>;
884 qcom,cpr-floor-to-ceiling-max-range =
885 <(-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1)>,
886 <(-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1)>,
887 <(-1) (-1) (-1) (-1) (-1) (-1) (-1) 50000 50000 50000 50000 50000>;
888 qcom,cpr-virtual-corner-init-voltage-adjustment =
889 <0 0 0 (-10000) 0 0 0 0 0 0 0 0>,
890 <0 0 0 0 0 0 0 0 0 0 0 (-20000)>,
891 <0 0 0 0 0 0 0 0 0 0 0 (-30000)>;
892 qcom,cpr-virtual-corner-quotient-adjustment =
893 <0 0 0 100 0 0 0 0 0 0 0 0>,
894 <0 0 0 0 0 0 0 0 0 0 0 (-300)>,
895 <0 0 0 (-60) 0 0 0 0 0 0 0 0>;
896 qcom,cpr-cpus = <&CPU0 &CPU1 &CPU2 &CPU3>;
897 qcom,cpr-online-cpu-virtual-corner-init-voltage-adjustment =
898 /* 1st fuse version tuple matched */
899 <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 0 CPUs online */
900 <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 1 CPUs online */
901 <0 0 0 (-5000) (-5000) (-5000) (-5000) (-5000) (-10000) 0 (-10000) (-10000) >, /* 2 CPUs online */
902 <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */
903 <0 0 0 0 0 0 0 0 0 0 0 0>, /* 4 CPUs online */
904 /* 2nd fuse version tuple matched */
905 <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 0 CPUs online */
906 <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 1 CPUs online */
907 <0 0 0 (-5000) (-5000) (-5000) (-5000) (-5000) (-10000) 0 (-10000) (-10000) >, /* 2 CPUs online */
908 <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */
909 <0 0 0 0 0 0 0 0 0 0 0 0>, /* 4 CPUs online */
910 /* 3rd fuse version tuple matched */
911 <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 0 CPUs online */
912 <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 1 CPUs online */
913 <0 0 0 (-5000) (-5000) (-5000) (-5000) (-5000) (-10000) 0 (-10000) (-10000) >, /* 2 CPUs online */
914 <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */
915 <0 0 0 0 0 0 0 0 0 0 0 0>; /* 4 CPUs online */
916 qcom,cpr-online-cpu-virtual-corner-quotient-adjustment =
917 /* 1st fuse version tuple matched */
918 <0 0 0 (-6) (-6) (-6) (-9) (-9) (-12) 0 (-12) (-18)>, /* 0 CPUs online */
919 <0 0 0 (-6) (-6) (-6) (-9) (-9) (-12) 0 (-12) (-18)>, /* 1 CPUs online */
920 <0 0 0 (-3) (-3) (-3) (-3) (-3) (-6) 0 (-6) (-6)>, /* 2 CPUs online */
921 <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */
922 <0 0 0 0 0 0 0 0 0 0 0 0>, /* 4 CPUs online */
923 /* 2nd fuse version tuple matched */
924 <0 0 0 (-6) (-6) (-6) (-9) (-9) (-12) 0 (-12) (-18)>, /* 0 CPUs online */
925 <0 0 0 (-6) (-6) (-6) (-9) (-9) (-12) 0 (-12) (-18)>, /* 1 CPUs online */
926 <0 0 0 (-3) (-3) (-3) (-3) (-3) (-6) 0 (-6) (-6)>, /* 2 CPUs online */
927 <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */
928 <0 0 0 0 0 0 0 0 0 0 0 0>, /* 4 CPUs online */
929 /* 3rd fuse version tuple matched */
930 <0 0 0 (-21) (-21) (-21) (-32) (-32) (-42) 0 (-42) (-63)>, /* 0 CPUs online */
931 <0 0 0 (-21) (-21) (-21) (-32) (-32) (-42) 0 (-42) (-63)>, /* 1 CPUs online */
932 <0 0 0 (-11) (-11) (-11) (-11) (-11) (-21) 0 (-21) (-21)>, /* 2 CPUs online */
933 <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */
934 <0 0 0 0 0 0 0 0 0 0 0 0>; /* 4 CPUs online */
935 qcom,cpr-allowed =
936 <0>,
937 <1>,
938 <1>;
939
940 qcom,fuse-remap-base-row = <1000>;
941 qcom,fuse-remap-source =
942 <140 7 3 0>,
943 <138 45 5 0>;
944 qcom,cpr-fuse-quot-offset-scale = <5 5 5>;
945
946 qcom,cpr-aging-sensor-id = <17, 18>;
947 qcom,cpr-aging-ref-corner = <4>;
948 qcom,cpr-aging-ref-voltage = <1050000>;
949 qcom,cpr-max-aging-margin = <15000>;
950 qcom,cpr-de-aging-allowed =
951 <0>,
952 <0>,
953 <1>;
954 qcom,cpr-non-collapsible-sensors= <7 12 17 22>;
955 qcom,cpr-aging-ro-scaling-factor = <3500>;
956 qcom,cpr-ro-scaling-factor = <0 2500 2500 2500 0 0 0 0>;
957 qcom,cpr-aging-derate = <1000 1000 1250>;
958 qcom,cpr-fuse-aging-init-quot-diff =
959 <101 0 8 0>,
960 <101 8 8 0>;
Tirupathi Reddyc3598b52017-12-18 13:31:12 +0530961 };