| QTI CPR (Core Power Reduction) Regulator |
| |
| CPR regulator device is for QTI RBCPR (RapidBridge CPR) on |
| application processor core. It takes voltage corner level |
| as input and converts it to actual voltage based on the |
| suggestions from factory production process. When CPR is |
| enabled for application processer core, it will suggest |
| scaling the voltage up or down for best performance and |
| power of the core. The scaling based on factory production |
| process is called PVS (Process Voltage Scaling) with efuse |
| bits to indicate what bin (and voltage range) a chip is in. |
| |
| Required properties: |
| - compatible: Must be "qcom,cpr-regulator" |
| - reg: Register addresses for RBCPR, RBCPR clock |
| select, PVS and CPR eFuse address |
| - reg-names: Register names. Must be "rbcpr" and "efuse_addr". |
| "rbcpr_clk" is optional. |
| - regulator-name: A string used to describe the regulator |
| - interrupts: Interrupt line from RBCPR to interrupt controller. |
| - qcom,cpr-fuse-corners: Number of fuse corners present. Many other properties |
| are sized based upon this value. |
| - regulator-min-microvolt: Minimum corner value which should be 1 to |
| represent the lowest supported corner. |
| - regulator-max-microvolt: Maximum corner value which should be equal to |
| qcom,cpr-fuse-corners if consumers request fuse |
| corners or the length of qcom,cpr-corner-map if |
| consumers request virtual corners. |
| - qcom,cpr-voltage-ceiling: Array of ceiling voltages in microvolts for fuse |
| corners ordered from lowest voltage corner to highest |
| voltage corner. This property must be of length |
| defined by qcom,cpr-fuse-corners. |
| - qcom,cpr-voltage-floor: Array of floor voltages in microvolts for fuse |
| corners ordered from lowest voltage corner to highest |
| voltage corner. This property must be of length |
| defined by qcom,cpr-fuse-corners. |
| - vdd-apc-supply: Regulator to supply VDD APC power |
| - qcom,vdd-apc-step-up-limit: Limit of vdd-apc-supply steps for scaling up. |
| - qcom,vdd-apc-step-down-limit: Limit of vdd-apc-supply steps for scaling down. |
| - qcom,cpr-ref-clk: The reference clock in kHz. |
| - qcom,cpr-timer-delay: The delay in microseconds for the timer interval. |
| - qcom,cpr-timer-cons-up: Consecutive number of timer interval (qcom,cpr-timer-delay) |
| occurred before issuing UP interrupt. |
| - qcom,cpr-timer-cons-down: Consecutive number of timer interval (qcom,cpr-timer-delay) |
| occurred before issuing DOWN interrupt. |
| - qcom,cpr-irq-line: Internal interrupt route signal of RBCPR, one of 0, 1 or 2. |
| - qcom,cpr-step-quotient: Defines the number of CPR quotient (i.e. Ring Oscillator(RO) |
| count) per vdd-apc-supply output voltage step. A single |
| integer value may be specified which is to be used for all |
| RO's. Alternatively, 8 integer values may be specified which |
| define the step quotients for RO0 to RO7 in order. |
| - qcom,cpr-up-threshold: The threshold for CPR to issue interrupt when |
| error_steps is greater than it when stepping up. |
| - qcom,cpr-down-threshold: The threshold for CPR to issue interrupt when |
| error_steps is greater than it when stepping down. |
| - qcom,cpr-idle-clocks: Idle clock cycles RO can be in. |
| - qcom,cpr-gcnt-time: The time for gate count in microseconds. |
| - qcom,cpr-apc-volt-step: The voltage in microvolt per CPR step, such as 5000uV. |
| - qcom,cpr-fuse-row: Array of row number of CPR fuse and method to read that row. It should have |
| index and value like this: |
| [0] => the fuse row number |
| [1] => fuse reading method, 0 for direct reading or 1 for SCM reading |
| - qcom,cpr-fuse-target-quot: Array of bit positions in the primary CPR fuse row defined |
| by qcom,cpr-fuse-row for the target quotients of each |
| fuse corner. Each bit position corresponds to the LSB |
| of the quotient parameter. The elements in the array |
| are ordered from lowest voltage corner to highest voltage |
| corner. This property must be of length defined by |
| qcom,cpr-fuse-corners. |
| - qcom,cpr-fuse-ro-sel: Array of bit positions in the primary CPR fuse row defined |
| by qcom,cpr-fuse-row for the ring oscillator selection for each |
| fuse corner. Each bit position corresponds to the LSB |
| of the RO select parameter. The elements in the array |
| are ordered from lowest voltage corner to highest voltage |
| corner. This property must be of length defined by |
| qcom,cpr-fuse-corners. |
| |
| Optional properties: |
| - vdd-mx-supply: Regulator to supply memory power as dependency |
| of VDD APC. |
| - qcom,vdd-mx-vmax: The maximum voltage in uV for vdd-mx-supply. This |
| is required when vdd-mx-supply is present. |
| - qcom,vdd-mx-vmin-method: The method to determine the minimum voltage for |
| vdd-mx-supply, which can be one of following |
| choices compared with VDD APC: |
| 0 => equal to the voltage(vmin) of VDD APC |
| 1 => equal to PVS corner ceiling voltage |
| 2 => equal to slow speed corner ceiling |
| 3 => equal to qcom,vdd-mx-vmax |
| 4 => equal to VDD_APC fuse corner mapped vdd-mx voltage |
| 5 => equal to VDD_APC virtual corner mapped vdd-mx voltage |
| This is required when vdd-mx-supply is present. |
| - qcom,vdd-mx-corner-map: Array of integers which defines the mapping from VDD_APC |
| voltage corners to vdd-mx-supply voltages. |
| Each element is a voltage to request from vdd-mx for the |
| corresponding fuse corner or virtual corner. The elements |
| in the array are ordered from lowest voltage corner |
| to highest voltage corner. The length of this property |
| depends on the value of qcom,vdd-mx-vmin-method property. |
| When qcom,vdd-mx-vmin-method property has a value of 4, the length |
| of this property must be equal to the value defined by qcom,cpr-fuse-corners. |
| When qcom,vdd-mx-vmin-method property has a value of 5, the length of |
| this property must be equal to the number of elements in the qcom,cpr-corner-map |
| property. |
| - qcom,pvs-voltage-table: Array of N-tuples in which each tuple specifies the |
| initial voltage in microvolts of the PVS bin for each |
| fuse voltage corner. The location or 0-based index |
| of a tuple in the list corresponds to the PVS bin number. |
| Each tuple must be of length defined by qcom,cpr-fuse-corners. |
| A given cpr-regulator device must have either |
| qcom,pvs-voltage-table specified or |
| qcom,cpr-fuse-init-voltage (and its associated properties). |
| - qcom,pvs-fuse-redun-sel: Array of 5 elements to indicate where to read the bits, what value to |
| compare with in order to decide if the redundant PVS fuse bits would be |
| used instead of the original bits and method to read fuse row, reading |
| register through SCM or directly. The 5 elements with index [0..4] are: |
| [0] => the fuse row number of the selector |
| [1] => LSB bit position of the bits |
| [2] => number of bits |
| [3] => the value to indicate redundant selection |
| [4] => fuse reading method, 0 for direct reading or 1 for SCM reading |
| When the value of the fuse bits specified by first 3 elements equals to |
| the value in 4th element, redundant PVS fuse bits should be selected. |
| Otherwise, the original PVS bits should be selected. If the 5th |
| element is 0, read the fuse row from register directly. Otherwise, |
| read it through SCM. |
| This property is required if qcom,pvs-voltage-table is present. |
| - qcom,pvs-fuse: Array of 4 elements to indicate the bits for PVS fuse and read method. |
| The array should have index and value like this: |
| [0] => the PVS fuse row number |
| [1] => LSB bit position of the bits |
| [2] => number of bits |
| [3] => fuse reading method, 0 for direct reading or 1 for SCM reading |
| This property is required if qcom,pvs-voltage-table is present. |
| - qcom,pvs-fuse-redun: Array of 4 elements to indicate the bits for redundant PVS fuse. |
| The array should have index and value like this: |
| [0] => the redundant PVS fuse row number |
| [1] => LSB bit position of the bits |
| [2] => number of bits |
| [3] => fuse reading method, 0 for direct reading or 1 for SCM reading |
| This property is required if qcom,pvs-voltage-table is present. |
| - qcom,cpr-fuse-redun-sel: Array of 5 elements to indicate where to read the bits, what value to |
| compare with in order to decide if the redundant CPR fuse bits would be |
| used instead of the original bits and method to read fuse row, using SCM |
| to read or read register directly. The 5 elements with index [0..4] are: |
| [0] => the fuse row number of the selector |
| [1] => LSB bit position of the bits |
| [2] => number of bits |
| [3] => the value to indicate redundant selection |
| [4] => fuse reading method, 0 for direct reading or 1 for SCM reading |
| When the value of the fuse bits specified by first 3 elements equals to |
| the value in 4th element, redundant CPR fuse bits should be selected. |
| Otherwise, the original CPR bits should be selected. If the 5th element |
| is 0, read the fuse row from register directly. Otherwise, read it through |
| SCM. |
| - qcom,cpr-fuse-redun-row: Array of row number of redundant CPR fuse and method to read that |
| row. It should have index and value like this: |
| [0] => the redundant fuse row number |
| [1] => the value to indicate reading the fuse row directly or using SCM |
| This property is required if qcom,cpr-fuse-redun-sel is present. |
| - qcom,cpr-fuse-redun-target-quot: Array of bit positions in the redundant CPR fuse row defined |
| by qcom,cpr-fuse-redun-row for the target quotients of each |
| fuse corner. Each bit position corresponds to the LSB |
| of the quotient parameter. The elements in the array |
| are ordered from lowest voltage corner to highest voltage corner. |
| This property must be of length defined by qcom,cpr-fuse-corners. |
| This property is required if qcom,cpr-fuse-redun-sel is present. |
| - qcom,cpr-fuse-redun-ro-sel: Array of bit positions in the redundant CPR fuse row defined |
| by qcom,cpr-fuse-redun-row for the ring oscillator select of each |
| fuse corner. Each bit position corresponds to the LSB of the RO |
| select parameter. The elements in the array are ordered from |
| lowest voltage corner to highest voltage corner. |
| This property must be of length defined by qcom,cpr-fuse-corners. |
| This property is required if qcom,cpr-fuse-redun-sel is present. |
| - qcom,cpr-fuse-redun-bp-cpr-disable: Redundant bit position of the bit to indicate if CPR should be disable |
| - qcom,cpr-fuse-redun-bp-scheme: Redundant bit position of the bit to indicate if it's a global/local scheme |
| This property is required if cpr-fuse-redun-bp-cpr-disable |
| is present, and vise versa. |
| - qcom,cpr-fuse-bp-cpr-disable: Bit position of the bit to indicate if CPR should be disabled |
| - qcom,cpr-fuse-bp-scheme: Bit position of the bit to indicate if it's a global/local scheme |
| - qcom,cpr-fuse-revision: Array of 4 integer elements which define the location of the bits for |
| the CPR fusing revision fuse parameter. The 4 elements are: |
| [0]: => the fuse row number of the bits |
| [1]: => LSB bit position of the bits |
| [2]: => the number of bits |
| [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading |
| The fusing revision value is used to determine which specific adjustments |
| are required on some chips. |
| - qcom,cpr-fuse-target-quot-size: Array of target quotient parameter bit sizes in the primary |
| or redundant CPR fuse row for each fuse corner. The elements in the |
| array are ordered from lowest voltage corner to highest voltage corner. |
| If this property is not present, then all target quotient fuse values |
| are assumed to be the default length of 12 bits. |
| - qcom,cpr-fuse-target-quot-scale: Array of doubles which defines the scaling coefficients to decode |
| the target quotients of each fuse corner. The first element in each |
| double represents the offset to add to the scaled quotient. The second |
| element represents the multiplier to scale the quotient by. For example, |
| given a tuple <A B>, quot_decoded = A + (B * quot_raw). |
| The doubles in the array are ordered from lowest voltage corner to highest |
| voltage corner. This property must contain a number of doubles equal to |
| the value of qcom,cpr-fuse-corners. If this property is not present, |
| then all target quotient parameters are assumed to have an offset of 0 |
| and a multiplier of 1 (i.e. no decoding needed). |
| - qcom,cpr-enable: Present: CPR enabled by default. |
| Not Present: CPR disable by default. |
| - qcom,cpr-fuse-cond-min-volt-sel: Array of 5 elements to indicate where to read the bits, what value to |
| compare with in order to decide if the conditional minimum apc voltage needs |
| to be applied and the fuse reading method. |
| The 5 elements with index[0..4] are: |
| [0] => the fuse row number; |
| [1] => LSB bit position of the bits; |
| [2] => number of the bits; |
| [3] => the expected data to read; |
| [4] => fuse reading method, 0 for direct reading or 1 for SCM reading; |
| When the value of the fuse bits specified by first 3 elements is not equal to |
| the value in 4th element, then set the apc voltage for all parts running |
| at each voltage corner to be not lower than the voltage defined |
| using "qcom,cpr-cond-min-voltage". |
| - qcom,cpr-cond-min-voltage: Minimum voltage in microvolts allowed for cpr-regulator output if the fuse bits |
| defined in qcom,cpr-fuse-cond-min-volt-sel have not been programmed with the |
| expected data. This is required if cpr-fuse-cond-min-volt-sel is present. |
| - qcom,cpr-fuse-uplift-sel: Array of 5 elements to indicate where to read the bits, what value to |
| compare with in order to enable or disable the pvs voltage uplift workaround, |
| and the fuse reading method. |
| The 5 elements with index[0..4] are: |
| [0]: => the fuse row number of the selector; |
| [1]: => LSB bit position of the bits; |
| [2]: => number of the bits; |
| [3]: => the value to indicate if the apc pvs voltage uplift workaround will |
| be enabled; |
| [4]: => fuse reading method, 0 for direct reading or 1 for SCM reading. |
| When the value of the fuse bits specified by first 3 elements equals to the |
| value in 4th element, the pvs voltage uplift workaround will be enabled. |
| - qcom,speed-bin-fuse-sel: Array of 4 elements to indicate where to read the speed bin of the processor, |
| and the fuse reading method. |
| The 4 elements with index[0..3] are: |
| [0]: => the fuse row number of the selector; |
| [1]: => LSB bit position of the bits; |
| [2]: => number of the bits; |
| [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading. |
| This is required if cpr-fuse-uplift-disable-sel is present. |
| - qcom,cpr-uplift-voltage: Uplift in microvolts used for increasing pvs init voltage. If this property is present, |
| This is required if cpr-fuse-uplift-disable-sel is present. |
| - qcom,cpr-uplift-max-volt: Maximum voltage in microvolts used for pvs voltage uplift workaround to limit |
| the maximum pvs voltage. |
| This is required if cpr-fuse-uplift-disable-sel is present. |
| - qcom,cpr-uplift-quotient: Array of target quotient increments to add to the fused quotients of each |
| fuse corner as part of the PVS voltage uplift workaround. |
| The elements in the array are ordered from lowest voltage |
| corner to highest voltage corner. This property must be of |
| length defined by qcom,cpr-fuse-corners. This is required |
| if cpr-fuse-uplift-disable-sel is present. |
| - qcom,cpr-uplift-speed-bin: The speed bin value corresponding to one type of processor which needs to apply the |
| pvs voltage uplift workaround. |
| This is required if cpr-fuse-uplift-disable-sel is present. |
| - qcom,cpr-fuse-version-map: Array of integer tuples which each match to a given combination of CPR |
| fuse parameter values. Each tuple consists of N + 3 elements. Where |
| N is the number of fuse corners defined by the qcom,cpr-fuse-corners |
| property. The elements in one tuple are: |
| [0]: => the speed bin of the CPU |
| [1]: => the PVS version of the CPU |
| [2]: => the CPR fuse revision |
| [3 - N+2]: => the ring oscillator select value of each fuse corner |
| ordered from lowest to highest |
| Any element in a tuple may use the value 0xffffffff as a wildcard |
| which will match against any fuse parameter value. The first tuple |
| that matches against the fuse values read from hardware will be used. |
| This property is used by several properties to provide an index into |
| their lists. |
| - qcom,cpr-allowed: Integer values that specifies whether the closed loop CPR is allowed or |
| not for a particular fuse revision. If the qcom,cpr-fuse-version-map |
| property is specified, then qcom,cpr-allowed must contain the same number |
| of integers as that of the number of tuples in qcom,cpr-fuse-version-map. |
| If the integer value has a value 0 for a particular fuse revision, then it |
| is treated as if the closed loop operation is disabled in the fuse. If the |
| integer value has a value 1 for a particular fuse revision, then the closed |
| loop operation is enabled for that fuse revision. If nothing is specified |
| for a particular fuse revision, then the closed loop operation is enabled |
| for that fuse revision by default. |
| - qcom,cpr-quotient-adjustment: Array of integer tuples of target quotient adjustments to add to the fused |
| quotients of each fuse corner. The elements in a tuple are ordered from |
| lowest voltage corner to highest voltage corner. Each tuple must be of |
| length defined by qcom,cpr-fuse-corners. If the qcom,cpr-fuse-version-map |
| property is specified, then qcom,cpr-quotient-adjustment must contain the |
| same number of tuples as qcom,cpr-fuse-version-map. These tuples are then |
| mapped one-to-one in the order specified. E.g. if the second |
| qcom,cpr-fuse-version-map tuple matches for a given device, then the quotient |
| adjustments defined in the second qcom,cpr-quotient-adjustment tuple will |
| be applied. If the qcom,cpr-fuse-version-map property is not specified, |
| then qcom,cpr-quotient-adjustment must contain a single tuple which is then |
| applied unconditionally. If this property is specified, then the quotient |
| adjustment values are added to the target quotient values read from fuses |
| before writing them into the CPR GCNT target control registers. |
| This property can be used to add or subtract static voltage margin from the |
| regulator managed by the CPR controller. |
| - qcom,cpr-init-voltage-adjustment: Array of integer tuples of initial voltage adjustments in microvolts to |
| add to the fused initial voltage values of each fuse corner. The elements |
| in a tuple are ordered from lowest voltage corner to highest voltage corner. |
| Each tuple must be of the length defined by qcom,cpr-fuse-corners. If the |
| qcom,cpr-fuse-version-map property is specified, then |
| qcom,cpr-init-voltage-adjustment must contain the same number of tuples as |
| qcom,cpr-fuse-version-map. These tuples are then mapped one-to-one in the |
| order specified. E.g. if the second qcom,cpr-fuse-version-map tuple matches |
| for a given device, then the initial voltage adjustments defined in the |
| second qcom,cpr-init-voltage-adjustment tuple will be applied. If the |
| qcom,cpr-fuse-version-map property is not specified, then |
| qcom,cpr-init-voltage-adjustment must contain a single tuple which is then |
| applied unconditionally. This property can be used to add or subtract |
| static initial voltage margin from the regulator managed by the CPR |
| controller. |
| - qcom,cpr-quot-offset-adjustment: Array of integer tuples of target quotient offset adjustments to add |
| to the fused quotient offsets of each fuse corner. The elements in a tuple |
| are ordered from lowest voltage corner to highest voltage corner. Each tuple |
| must be of length defined by qcom,cpr-fuse-corners. If the qcom,cpr-fuse-version-map |
| property is specified, then qcom,cpr-quot-offset-adjustment must contain the |
| same number of tuples as qcom,cpr-fuse-version-map. These tuples are then |
| mapped one-to-one in the order specified. E.g. if the second |
| qcom,cpr-fuse-version-map tuple matches for a given device, then the quotient |
| offset adjustments defined in the second qcom,cpr-quot-offset-adjustment tuple |
| will be applied. If the qcom,cpr-fuse-version-map property is not specified, |
| then qcom,cpr-quot-offset-adjustment must contain a single tuple which is then |
| applied unconditionally. If this property is specified, then the quotient |
| offset adjustment values are added to the target quotient offset values read |
| from fuses. |
| This property can be used to add or subtract static quotient offset margin from |
| the regulator managed by the CPR controller. |
| - qcom,cpr-clamp-timer-interval: The number of 64 reference clock cycle blocks to delay for whenever |
| the clamp signal, sensor mask registers or sensor bypass registers |
| change. The CPR controller loop is disabled during this delay. |
| Supported values are 0 to 255. If this property is not specified, |
| then a value of 0 is assumed. Note that if this property has a |
| value greater than 0, then software cannot accurately determine the |
| error_steps value that corresponds to a given CPR measurement |
| unless processor power collapsing is disabled. If this property |
| has a value of 0, then the CPR controller loop is not disabled and |
| re-enabled while idle if the clamp signal changes. Instead, it |
| will remain idle until software issues an ACK or NACK command. |
| This ensures that software can read the error_steps value which |
| resulted in the CPR up or down interrupt. Setting this property to |
| a value greater than 0 is useful for resetting the CPR sensors of a |
| processor that uses BHS type voltage switches in order to avoid |
| anomalous CPR up interrupts when exiting from power collapse. |
| - vdd-apc-optional-prim-supply: Present: Regulator of highest priority to supply VDD APC power |
| Not Present: No such regulator. |
| - vdd-apc-optional-sec-supply: Present: Regulator of second highest priority to supply VDD APC power. |
| Not Present: No such regulator. |
| - qcom,cpr-speed-bin-max-corners: Array of (N+2)-tuples in which each tuple maps a CPU speed bin and PVS version to |
| the maximum virtual voltage corner corresponding to each fuse corner. The value N |
| corresponds to the number of fuse corners specified by qcom,cpr-fuse-corners. |
| The elements in one tuple are: |
| [0]: => the speed bin of the CPU. It may use the value 0xffffffff as a |
| wildcard to match any speed bin values. |
| [1]: => the PVS version of the CPU. It may use the value 0xffffffff as |
| a wildcard to match any PVS version values. |
| [2 - N+1]: => the max virtual voltage corner value corresponding to each fuse corner |
| for this speed bin, ordered from lowest voltage corner to highest |
| voltage corner. |
| No CPR target quotient scaling is applied on chips which have a speed bin + PVS version |
| pair that does not appear in one of the tuples in this property. If the property is |
| specified, then quotient scaling is enabled for the highest voltage corner. If this property is |
| not specified, then no quotient scaling can take place. |
| - qcom,cpr-corner-map: Array of elements of fuse corner value for each virtual corner. |
| The location or 1-based index of an element in the list corresponds to |
| the virtual corner value. For example, the first element in the list is the fuse corner |
| value that virtual corner 1 maps to. |
| This property is required if qcom,cpr-speed-bin-max-corners is present. |
| - qcom,cpr-corner-frequency-map: Array of tuples in which a tuple describes a corner to application processor frequency |
| mapping. |
| The 2 elements in one tuple are: |
| [0]: => a virtual voltage corner. |
| [1]: => the application processor frequency in Hz corresponding to the virtual corner. |
| This property is required if qcom,cpr-speed-bin-max-corners is present. |
| - qcom,pvs-version-fuse-sel: Array of 4 elements to indicate where to read the pvs version of the processor, |
| and the fuse reading method. |
| The 4 elements with index[0..3] are: |
| [0]: => the fuse row number of the selector; |
| [1]: => LSB bit position of the bits; |
| [2]: => the number of bits; |
| [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading. |
| - qcom,cpr-voltage-ceiling-override: Array of (N+2)-tuples in which each tuple maps a CPU speed bin and PVS version |
| to the ceiling voltage to apply for each virtual voltage corner. The value N |
| corresponds to the number of virtual corners as specified by the number of elements |
| in the qcom,cpr-corner-map property. |
| The elements in one tuple are: |
| [0]: => the speed bin of the CPU. It may use the value 0xffffffff as a |
| wildcard to match any speed bin values. |
| [1]: => the PVS version of the CPU. It may use the value 0xffffffff as a |
| wildcard to match any PVS version values. |
| [2 - N+1]: => the ceiling voltage value in microvolts corresponding to each virtual |
| corner for this speed bin, ordered from lowest voltage corner to |
| highest voltage corner. |
| No ceiling override is applied on chips which have a speed bin + PVS version |
| pair that does not appear in one of the tuples in this property. If the property is |
| specified and the speed bin + PVS version matches, then the per-virtual-corner ceiling |
| voltages will be used in place of the per-fuse-corner ceiling voltages defined in the |
| qcom,cpr-voltage-ceiling property. If this property is not specified, then the |
| per-fuse-corner ceiling voltages will always be used. |
| - qcom,cpr-voltage-floor-override: Array of (N+2)-tuples in which each tuple maps a CPU speed bin and PVS version |
| to the floor voltage to apply for each virtual voltage corner. The value N |
| corresponds to the number of virtual corners as specified by the number of elements |
| in the qcom,cpr-corner-map property. |
| The elements in one tuple are: |
| [0]: => the speed bin of the CPU. It may use the value 0xffffffff as a |
| wildcard to match any speed bin values. |
| [1]: => the PVS version of the CPU. It may use the value 0xffffffff as a |
| wildcard to match any PVS version values. |
| [2 - N+1]: => the floor voltage value in microvolts corresponding to each virtual |
| corner for this speed bin, ordered from lowest voltage corner to |
| highest voltage corner. |
| No floor override is applied on chips which have a speed bin + PVS version |
| pair that does not appear in one of the tuples in this property. If the property is |
| specified and the speed bin + PVS version matches, then the per-virtual-corner floor |
| voltages will be used in place of the per-fuse-corner floor voltages defined in the |
| qcom,cpr-voltage-floor property. If this property is not specified, then the |
| per-fuse-corner floor voltages will always be used. |
| - qcom,cpr-floor-to-ceiling-max-range: Array of integer tuples of floor-to-ceiling max range values in microvolts |
| to be subtracted from the ceiling voltage values of each virtual corner. |
| Supported values are those greater than or equal 0, or (-1). The value 0 for a corner |
| implies that the floor value for that corner has to equal to its ceiling value. |
| The value (-1) for a corner implies that no modification to the default floor voltage |
| is required. The elements in a tuple are ordered from lowest voltage corner to highest |
| voltage corner. Each tuple must be of the length equal to the number of virtual corners |
| as specified by the number of elements in the qcom,cpr-corner-map property. If the |
| qcom,cpr-fuse-version-map property is specified, then |
| qcom,cpr-dynamic-floor-override-adjustment must contain the same number of |
| tuples as qcom,cpr-fuse-version-map. These tuples are then mapped one-to-one in the |
| order specified. E.g. if the second qcom,cpr-fuse-version-map tuple matches |
| for a given device, then voltage adjustments defined in the second |
| qcom,cpr-dynamic-floor-override-adjustment tuple will be applied. If the |
| qcom,cpr-fuse-version-map property is not specified, then |
| qcom,cpr-dynamic-floor-override-adjustment must contain a single tuple which |
| is then applied unconditionally. |
| - qcom,cpr-virtual-corner-init-voltage-adjustment: Array of integer tuples of voltage adjustments in microvolts to be |
| added to the initial voltage values of each virtual corner. The elements |
| in a tuple are ordered from lowest voltage corner to highest voltage corner. |
| Each tuple must be of the length equal to the number of virtual corners as |
| specified by the number of elements in the qcom,cpr-corner-map property. If the |
| qcom,cpr-fuse-version-map property is specified, then |
| qcom,cpr-virtual-corner-init-voltage-adjustment must contain the same number of |
| tuples as qcom,cpr-fuse-version-map. These tuples are then mapped one-to-one in the |
| order specified. E.g. if the second qcom,cpr-fuse-version-map tuple matches |
| for a given device, then voltage adjustments defined in the second |
| qcom,cpr-virtual-corner-init-voltage-adjustment tuple will be applied. If the |
| qcom,cpr-fuse-version-map property is not specified, then |
| qcom,cpr-virtual-corner-init-voltage-adjustment must contain a single tuple which |
| is then applied unconditionally. |
| - qcom,cpr-virtual-corner-quotient-adjustment: Array of integer tuples of quotient offsets to be added to |
| the scaled target quotient of each virtual corner. The elements |
| in a tuple are ordered from lowest voltage corner to highest voltage corner. |
| Each tuple must be of the length equal to the number of virtual corners as |
| specified by the number of elements in the qcom,cpr-corner-map property. |
| If the qcom,cpr-fuse-version-map property is specified, then |
| qcom,cpr-virtual-corner-quotient-adjustment must contain the same number of tuples as |
| qcom,cpr-fuse-version-map. These tuples are then mapped one-to-one in the |
| order specified. E.g. if the second qcom,cpr-fuse-version-map tuple matches |
| for a given device, then quotient adjustments defined in the second |
| qcom,cpr-virtual-corner-quotient-adjustment tuple will be applied. If the |
| qcom,cpr-fuse-version-map property is not specified, then |
| qcom,cpr-virtual-corner-quotient-adjustment must contain a single tuple which is then |
| applied unconditionally. |
| - qcom,cpr-cpus: Array of CPU phandles which correspond to the cores that this cpr-regulator |
| device must monitor when adjusting the voltage and/or target quotient based |
| upon the number of online cores or make sure that one of them must be online |
| when performing de-aging measurements. This property must be specified in order to |
| utilize the qcom,cpr-online-cpu-virtual-corner-init-voltage-adjustment or |
| qcom,cpr-online-cpu-virtual-corner-quotient-adjustment or qcom,cpr-aging-sensor-id properties. |
| - qcom,cpr-online-cpu-virtual-corner-init-voltage-adjustment: Array of tuples where each tuple specifies |
| the voltage adjustment for each corner. These adjustments apply to the |
| initial voltage of each corner. The size of each tuple must be equal |
| to qcom,cpr-fuse-corners if consumers request fuse corners or the length of |
| qcom,cpr-corner-map if consumers request virtual corners. In each tuple, the |
| value corresponds to the voltage adjustment when running at that corner at |
| init, from lowest to highest. The tuples must be organized into 1 group if |
| qcom,cpr-fuse-version-map is not specified or the same number of groups as |
| the number of tuples in qcom,cpr-fuse-version-map. The i-th group of tuples |
| corresponds to the voltage adjustments for i-th fuse version map tuple. In |
| each group, there are 1 plus length of qcom,cpr-cpus tuples, each tuple |
| corresponds to the number of cores online, from 0 to the number of elements |
| in qcom,cpr-cpus. |
| - qcom,cpr-online-cpu-init-voltage-as-ceiling: Boolean which indicates that the ceiling voltage used for a |
| given virtual corner may be reduced to the per number of cores online, |
| per-virtual corner ceiling voltage value. This property takes precedence |
| over qcom,cpr-scaled-init-voltage-as-ceiling if both are specified. |
| - qcom,cpr-online-cpu-virtual-corner-quotient-adjustment: Array of tuples where each tuple specifies |
| the quotient adjustment for each corner. These adjustments will be applied |
| to each corner at run time. The size of each tuple must be equal to |
| qcom,cpr-fuse-corners if consumers request fuse corners or the length of |
| qcom,cpr-corner-map if consumers request virtual corners. In each tuple, |
| the value corresponds to the quotient adjustment when running at that corner, |
| from lowest to highest. The tuples must be organized into 1 group if |
| qcom,cpr-fuse-version-map is not specified or the same number of groups |
| as the number of tuples in qcom,cpr-fuse-version-map. The i-th group of |
| tuples corresponds to the quotient adjustments for i-th fuse version map |
| tuple. In each group, there are 1 plus length of qcom,cpr-cpus tuples, |
| each tuple corresponds to the number of cores online, from 0 to the |
| number of elements in qcom,cpr-cpus. |
| - qcom,cpr-init-voltage-as-ceiling: Boolean which indicates that the ceiling voltage used for a given virtual |
| corner may be reduced to the per-fuse-corner initial voltage fuse value. |
| - qcom,cpr-scaled-init-voltage-as-ceiling: Boolean which indicates that the ceiling voltage used for a given |
| virtual corner may be reduced to the interpolated, per-virtual-corner initial |
| voltage value. Note that if both qcom,cpr-init-voltage-as-ceiling and |
| qcom,cpr-scaled-init-voltage-as-ceiling are specified, then |
| qcom,cpr-scaled-init-voltage-as-ceiling will take precedence since the interpolated |
| voltages are necessarily less than or equal to the fused initial voltage values. |
| - qcom,cpr-voltage-scaling-factor-max: Array of values which define the maximum allowed scaling factor to apply |
| when calculating per-corner initial voltage values for each fuse corner. The |
| array must be of length equal to the value of the qcom,cpr-fuse-corners property. |
| Each element in the array maps to the fuse corners in increasing order. |
| The elements have units of uV/MHz. Each element corresponds to 'max_factor' in |
| the following equation: |
| init_voltage_min(f) = fuse_init_voltage(f) - (fuse_f_max - f) * max_factor |
| If this property is not specified, then the initial voltage for each virtual |
| corner will be set to the initial voltage of the associated fuse corner. |
| - qcom,cpr-quot-adjust-scaling-factor-max: Array of values which define the maximum allowed scaling factor to |
| apply when calculating per-virtual-corner target quotients for each fuse |
| corner. Two data formats are allowed for this property. The primary one |
| requires that the array be of length equal to the value of the |
| qcom,cpr-fuse-corners property. When using this format, each element in the |
| array maps to the fuse corners in increasing order. The second depreciated |
| format allows for only a single element to be specified which defines the |
| maximum scaling factor for the highest fuse corner. In this case, a value of |
| 0 is assumed for the lower fuse corners. The elements of this property have |
| units of QUOT/GHz. Each element corresponds to 'max_factor' in the following |
| equation: |
| quot_min(f) = fuse_quot(f) - (fuse_f_max - f) * max_factor / 1000 |
| where f and fuse_f_max have units of MHz. |
| This property is required if qcom,cpr-speed-bin-max-corners is present. |
| - qcom,cpr-fuse-init-voltage: Array of quadruples in which each quadruple specifies a fuse location to |
| read in order to get an initial voltage for a fuse corner. The fuse values |
| are encoded as voltage steps higher or lower than the voltages defined in |
| qcom,cpr-voltage-ceiling. Each step corresponds to the voltage defined by |
| the qcom,cpr-init-voltage-step property. |
| The 4 elements in one quadruple are: |
| [0]: => the fuse row number of the bits |
| [1]: => LSB bit position of the bits |
| [2]: => number of the bits |
| [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading |
| The quadruples are ordered from the lowest voltage fuse corner to the |
| highest voltage fuse corner. |
| A given cpr-regulator device must have either qcom,cpr-fuse-init-voltage |
| specified or qcom,pvs-voltage-table (and its associated properties). |
| - qcom,cpr-fuse-redun-init-voltage: Array of quadruples in which each quadruple specifies a fuse location |
| to read in order to get the redundant initial voltage for a fuse corner. |
| This property is the same as qcom,cpr-fuse-init-voltage except that it is |
| only utilized if a chip is configured to use the redundant set of fuse |
| values. This property is required if qcom,cpr-fuse-redun-sel and |
| qcom,cpr-fuse-init-voltage are specified. |
| - qcom,cpr-init-voltage-ref: Array of reference voltages in microvolts used when decoding the initial |
| voltage fuse values. The elements in the array are ordered from lowest |
| voltage corner to highest voltage corner. This property must be of length |
| defined by qcom,cpr-fuse-corners. |
| This property is required if qcom,cpr-fuse-init-voltage is present. |
| - qcom,cpr-init-voltage-step: The voltage step size in microvolts of the CPR initial voltage fuses described by the |
| qcom,cpr-fuse-init-voltage property. |
| This property is required if qcom,cpr-fuse-init-voltage is present. |
| - mem-acc-supply: Regulator to vote for the memory accelerator configuration. |
| Not Present: memory accelerator configuration not supported. |
| - qcom,mem-acc-corner-map: Array of integer which defines the mapping from mem-acc corner value for each |
| virtual corner. Each element is a mem-acc state for the corresponding virtual corner. |
| The elements in the array are ordered from lowest voltage corner to highest voltage corner. |
| - qcom,fuse-remap-source: Array of quadruples in which each quadruple specifies a fuse location to |
| remap. The 4 elements in one quadruple are: |
| [0]: => the fuse row number of the bits |
| [1]: => LSB bit position of the bits |
| [2]: => the number of bits |
| [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading |
| The fuse bits for all quadruples are packed together in the order specified |
| into 64-bit virtual fuse rows beginning at the row number defined in the |
| qcom,fuse-remap-base-row property. The remapped rows may be used by any |
| other properties. |
| Example: |
| qcom,fuse-remap-base-row = <1000>; |
| qcom,fuse-remap-source = |
| <13 57 2 0>, |
| <14 30 3 0>, |
| <20 1 7 0>, |
| <40 47 120 0>; |
| |
| This results in the following bit remapping: |
| |
| Row Bits Remap Row Remap Bits |
| 13 57..58 --> 1000 0..1 |
| 14 30..32 --> 1000 2..4 |
| 20 1..7 --> 1000 5..11 |
| 40 47..63 --> 1000 12..28 |
| 41 0..34 --> 1000 29..63 |
| 41 35..63 --> 1001 0..28 |
| 42 0..34 --> 1001 29..63 |
| 42 35..38 --> 1002 0..3 |
| |
| A tuple like this could then be used to reference some of the |
| concatenated bits from rows 13, 14, and 20: |
| |
| qcom,cpr-fuse-init-voltage = <1000 0 6 0>; |
| - qcom,fuse-remap-base-row: Integer which defines the virtual row number to use as a base when remapping |
| fuse bits. The remap base row number can be any value as long as it is |
| greater than all of the real row numbers addressed in other properties of |
| the cpr-regulator device node. This property is required if |
| qcom,fuse-remap-source is specified. |
| - qcom,cpr-quot-min-diff: Integer which defines the minimum target-quotient difference between |
| the highest and (highest - 1) fuse corner to keep CPR enabled. If this |
| property is not specified a default value of 50 is used. |
| - qcom,cpr-fuse-quot-offset: Array of quadruples in which each quadruple specifies a fuse location to |
| read in order to get the quotient offset for a fuse corner. The fuse values |
| are encoded as the difference between quotients of that fuse corner and its |
| adjacent lower fuse corner divided by an unpacking multiplier value defined |
| under qcom,cpr-fuse-quot-offset-scale property. |
| The 4 elements in one quadruple are: |
| [0]: => the fuse row number of the bits |
| [1]: => LSB bit position of the bits |
| [2]: => number of the bits |
| [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading |
| The quadruples are ordered from the lowest fuse corner to the highest |
| fuse corner. |
| Quotient offset read from the fuse locations above can be overridden with |
| the property qcom,cpr-quot-adjust-scaling-factor-max. |
| - qcom,cpr-fuse-quot-offset-scale: Array of integer values which defines the multipliers to decode the quotient offsets |
| of each fuse corner. The elements in the array are ordered from the lowest voltage fuse corner |
| to the highest voltage fuse corner. If this property is not present, then all target quotient |
| parameters are assumed to have a multiplier of 1 (i.e. no decoding needed). |
| - qcom,cpr-redun-fuse-quot-offset: Array of quadruples in which each quadruple specifies a fuse location to |
| read in order to get the redundant quotient offset for a fuse corner. This |
| property is the same as qcom,cpr-fuse-quot-offset except that it is only |
| utilized if a chip is configured to use the redundant set of fuse values. |
| - qcom,cpr-fuse-min-quot-diff: Array of values which define the minimum difference allowed between the adjusted |
| quotients of the fuse corners. The length of the array should be equal to the value |
| of the qcom,cpr-fuse-corners property. Where each element in the array maps to the |
| fuse corners in increasing order. |
| - qcom,cpr-min-quot-diff-adjustment: Array of integer tuples of target quotient offsets to be added to |
| the adjusted target quotients of each fuse corner. When the quotient difference |
| between two adjacent fuse corners is insufficient, the quotient for the higher fuse corner is |
| replaced with that of the lower fuse corner plus the adjustment value. |
| The elements in a tuple are ordered from lowest voltage corner to highest voltage corner. |
| Each tuple must be of the length defined by qcom,cpr-fuse-corners. |
| If the qcom,cpr-fuse-version-map property is specified, then qcom,cpr-min-quot-diff-adjustment |
| must contain the same number of tuples as qcom,cpr-fuse-version-map. These tuples are then mapped |
| one-to-one in the order specified. E.g. if the second qcom,cpr-fuse-version-map tuple matches |
| for a given device, then the quotient adjustments defined in the |
| second qcom,cpr-min-quot-diff-adjustment tuple will be applied. If the |
| qcom,cpr-fuse-version-map property is not specified, then |
| qcom,cpr-min-quot-diff-adjustment must contain a single tuple which is then |
| applied unconditionally. The qcom,cpr-min-quot-diff-adjustment property must be specified |
| if the qcom,cpr-fuse-min-quot-diff property is specified. |
| - qcom,cpr-skip-voltage-change-during-suspend: Boolean property which indicates that the CPR voltage |
| should not be adjusted based upon the number of online cores while |
| entering or exiting system suspend. |
| - rpm-apc-supply: Regulator to notify RPM of the APC operating |
| corner |
| - qcom,rpm-apc-corner-map: Array of integers which define the mapping of |
| the RPM corner to the corresponding APC virtual |
| corner. This property must be defined if |
| 'rpm-apc-supply' is present. |
| - qcom,vsens-corner-map: Array of integers which define the mapping of the VSENS corner to the |
| corresponding APC fuse corner. The qcom,vsens-corner-map and |
| vdd-vsense-corner-supply properties must both be specified for a given |
| cpr-regulator device or neither must be specified. |
| - vdd-vsens-corner-supply: Regulator to specify the current operating fuse corner to the Voltage Sensor. |
| - vdd-vsens-voltage-supply: Regulator to specify the corner floor/ceiling voltages to the Voltage Sensor. |
| - qcom,cpr-aging-sensor-id: Array of CPR sensor IDs to be used in the CPR de-aging algorithm. The number |
| of values should be equal to number of sensors selected for age calibration. |
| If this property is not specified, then the de-aging procedure is not enabled. |
| - qcom,cpr-de-aging-allowed: Integer values that specify whether the CPR de-aging procedure is allowed or |
| not for a particular fuse revision. If the qcom,cpr-fuse-version-map |
| property is specified, then qcom,cpr-de-aging-allowed must contain the same number |
| of elements as there are tuples in qcom,cpr-fuse-version-map. If qcom,cpr-fuse-version-map |
| is not specified, then qcom,cpr-de-aging-allowed must contain a single value that |
| is used unconditionally. An element value of 1 means that the CPR de-aging procedure |
| can be performed for parts with the corresponding fuse revision. An element value of 0 |
| means that CPR de-aging cannot be performed. |
| This property is required if the qcom,cpr-aging-sensor-id property has been specified. |
| - qcom,cpr-aging-ref-corner: The vdd-apc-supply reference virtual voltage corner to be set during the CPR de-aging |
| measurements. This corner value is needed to set appropriate voltage on |
| the dependent voltage rails such as vdd-mx and mem-acc. |
| This property is required if the qcom,cpr-aging-sensor-id property has been specified. |
| - qcom,cpr-aging-ref-voltage: The vdd-apc-supply reference voltage in microvolts to be set during the |
| CPR de-aging measurements. |
| This property is required if the qcom,cpr-aging-sensor-id property has been specified. |
| - qcom,cpr-max-aging-margin: The maximum allowed aging voltage margin in microvolts. This is used to limit |
| the calculated aging voltage margin. |
| This property is required if the qcom,cpr-aging-sensor-id property has been specified. |
| - qcom,cpr-non-collapsible-sensors: Array of CPR sensor IDs which are in non-collapsible domain. The sensor IDs not |
| specified in the array should be bypassed for the de-aging procedure. The number of |
| elements should be less than or equal to 32. The values of the array elements should |
| be greater than or equal to 0 and less than or equal to 31. |
| This property is required for power-domains with bypass mux present in HW. |
| This property can be required if the qcom,cpr-aging-sensor-id property has been specified. |
| - qcom,cpr-aging-ro-scaling-factor: The aging ring oscillator (RO) scaling factor with units of QUOT/V. |
| This value is used for calculating a voltage margin from RO measurements. |
| This property is required if the qcom,cpr-aging-sensor-id property has been specified. |
| - qcom,cpr-ro-scaling-factor: Array of scaling factors with units of QUOT/V for each ring oscillator ordered |
| from the lowest to the highest RO. These values are used to calculate |
| the aging voltage margin adjustment for all of the ROs. Since CPR2 supports |
| exactly 8 ROs, the array must contain 8 elements corresponding to RO0 through RO7 in order. |
| If a given RO is unused for a fuse corner, then its scaling factor may be specified as 0. |
| This property is required if the qcom,cpr-aging-sensor-id property has been specified. |
| - qcom,cpr-aging-derate: Array of scaling factors which define the amount of derating to apply to the reference |
| aging voltage margin adjustment for each of the fuse corners. Each element has units |
| of uV/mV. This property must be of length defined by qcom,cpr-fuse-corners. |
| The elements are ordered from the lowest to the highest fuse corner. |
| This property is required if the qcom,cpr-aging-sensor-id property has been specified. |
| - qcom,cpr-fuse-aging-init-quot-diff: Array of quadruples in which each quadruple specifies a fuse location to read in |
| order to get an initial quotient difference. The difference between quot min and quot max |
| is fused as the initial quotient difference. |
| The 4 elements in one quadruple are: |
| [0]: => the fuse row number of the bits |
| [1]: => LSB bit position of the bits |
| [2]: => number of the bits |
| [3]: => fuse reading method, 0 for direct reading or 1 for SCM reading |
| The number of quadruples should be equal to the number of values specified in |
| the qcom,cpr-aging-sensor-id property. This property is required if |
| the qcom,cpr-aging-sensor-id property has been specified. |
| - qcom,cpr-thermal-sensor-id: TSENS hardware sensor-id of the sensor which |
| needs to be monitored. |
| - qcom,cpr-disable-temp-threshold: The TSENS temperature threshold in degrees Celsius at which CPR |
| closed-loop is disabled. CPR closed-loop will stay disabled as long as the |
| temperature is below this threshold. This property is required |
| only if 'qcom,cpr-thermal-sensor-id' is present. |
| - qcom,cpr-enable-temp-threshold: The TSENS temperature threshold in degrees Celsius at which CPR |
| closed-loop is enabled. CPR closed-loop will stay enabled above this |
| temperature threshold. This property is required only if |
| 'qcom,cpr-thermal-sensor-id' is present. |
| - qcom,disable-closed-loop-in-pc: Bool property to disable closed-loop CPR during |
| power-collapse. This can be enabled only for single core |
| designs. The property 'qcom,cpr-cpus' is required to enable this logic. |
| Example: |
| apc_vreg_corner: regulator@f9018000 { |
| status = "okay"; |
| compatible = "qcom,cpr-regulator"; |
| reg = <0xf9018000 0x1000>, <0xfc4b8000 0x1000>; |
| reg-names = "rbcpr", "efuse_addr"; |
| interrupts = <0 15 0>; |
| regulator-name = "apc_corner"; |
| qcom,cpr-fuse-corners = <3>; |
| regulator-min-microvolt = <1>; |
| regulator-max-microvolt = <12>; |
| |
| qcom,pvs-fuse = <22 6 5 1>; |
| qcom,pvs-fuse-redun-sel = <22 24 3 2 1>; |
| qcom,pvs-fuse-redun = <22 27 5 1>; |
| |
| qcom,pvs-voltage-table = |
| <1050000 1150000 1350000>, |
| <1050000 1150000 1340000>, |
| <1050000 1150000 1330000>, |
| <1050000 1150000 1320000>, |
| <1050000 1150000 1310000>, |
| <1050000 1150000 1300000>, |
| <1050000 1150000 1290000>, |
| <1050000 1150000 1280000>, |
| <1050000 1150000 1270000>, |
| <1050000 1140000 1260000>, |
| <1050000 1130000 1250000>, |
| <1050000 1120000 1240000>, |
| <1050000 1110000 1230000>, |
| <1050000 1100000 1220000>, |
| <1050000 1090000 1210000>, |
| <1050000 1080000 1200000>, |
| <1050000 1070000 1190000>, |
| <1050000 1060000 1180000>, |
| <1050000 1050000 1170000>, |
| <1050000 1050000 1160000>, |
| <1050000 1050000 1150000>, |
| <1050000 1050000 1140000>, |
| <1050000 1050000 1140000>, |
| <1050000 1050000 1140000>, |
| <1050000 1050000 1140000>, |
| <1050000 1050000 1140000>, |
| <1050000 1050000 1140000>, |
| <1050000 1050000 1140000>, |
| <1050000 1050000 1140000>, |
| <1050000 1050000 1140000>, |
| <1050000 1050000 1140000>, |
| <1050000 1050000 1140000>; |
| qcom,cpr-voltage-ceiling = <1050000 1150000 1280000>; |
| qcom,cpr-voltage-floor = <1050000 1050000 1100000>; |
| vdd-apc-supply = <&pm8226_s2>; |
| vdd-apc-optional-prim-supply = <&ncp6335d>; |
| vdd-apc-optional-sec-supply = <&fan53555>; |
| vdd-mx-supply = <&pm8226_l3_ao>; |
| qcom,vdd-mx-vmax = <1350000>; |
| qcom,vdd-mx-vmin-method = <1>; |
| qcom,vdd-apc-step-up-limit = <1>; |
| qcom,vdd-apc-step-down-limit = <1>; |
| qcom,cpr-ref-clk = <19200>; |
| qcom,cpr-timer-delay = <5000>; |
| qcom,cpr-timer-cons-up = <1>; |
| qcom,cpr-timer-cons-down = <2>; |
| qcom,cpr-irq-line = <0>; |
| qcom,cpr-step-quotient = <15>; |
| qcom,cpr-up-threshold = <1>; |
| qcom,cpr-down-threshold = <2>; |
| qcom,cpr-idle-clocks = <5>; |
| qcom,cpr-gcnt-time = <1>; |
| qcom,cpr-clamp-timer-interval = <1>; |
| qcom,cpr-apc-volt-step = <5000>; |
| |
| qcom,vsens-corner-map = <1 2 2>; |
| vdd-vsens-corner-supply = <&vsens_apc0_corner>; |
| vdd-vsens-voltage-supply = <&vsens_apc0_voltage>; |
| |
| rpm-apc-supply = <&rpm_apc_vreg>; |
| qcom,rpm-apc-corner-map = <4 4 5 5 7 7 7 7 7 7 7 7>; |
| |
| qcom,cpr-fuse-row = <138 1>; |
| qcom,cpr-fuse-bp-cpr-disable = <36>; |
| qcom,cpr-fuse-bp-scheme = <37>; |
| qcom,cpr-fuse-target-quot = <24 12 0>; |
| qcom,cpr-fuse-target-quot-size = <12 12 12>; |
| qcom,cpr-fuse-ro-sel = <54 38 41>; |
| qcom,cpr-fuse-revision = <140 26 2 0>; |
| qcom,cpr-fuse-redun-sel = <138 57 1 1 1>; |
| qcom,cpr-fuse-redun-row = <139 1>; |
| qcom,cpr-fuse-redun-target-quot = <24 12 0>; |
| qcom,cpr-fuse-redun-ro-sel = <46 36 39>; |
| qcom,cpr-fuse-cond-min-volt-sel = <54 42 6 7 1>; |
| qcom,cpr-cond-min-voltage = <1140000>; |
| qcom,cpr-fuse-uplift-sel = <22 53 1 0 0>; |
| qcom,cpr-uplift-voltage = <50000>; |
| qcom,cpr-uplift-quotient = <0 0 120>; |
| qcom,cpr-uplift-max-volt = <1350000>; |
| qcom,cpr-uplift-speed-bin = <1>; |
| qcom,speed-bin-fuse-sel = <22 0 3 0>; |
| qcom,cpr-corner-map = <1 1 2 2 3 3 3 3 3 3 3 3>; |
| qcom,cpr-corner-frequency-map = |
| <1 300000000>, |
| <2 384000000>, |
| <3 600000000>, |
| <4 787200000>, |
| <5 998400000>, |
| <6 1094400000>, |
| <7 1190400000>, |
| <8 1305600000>, |
| <9 1344000000>, |
| <10 1401600000>, |
| <11 1497600000>, |
| <12 1593600000>; |
| qcom,pvs-version-fuse-sel = <22 4 2 0>; |
| qcom,cpr-speed-bin-max-corners = |
| <0 1 2 4 7>, |
| <1 1 2 4 12>, |
| <2 1 2 4 10>, |
| <5 1 2 4 14>; |
| qcom,cpr-fuse-target-quot-scale = |
| <0 1>, |
| <0 1>, |
| <0 1>; |
| qcom,cpr-quot-adjust-scaling-factor-max = <0 650 650>; |
| qcom,cpr-fuse-quot-offset = |
| <138 53 5 0>, |
| <138 53 5 0>, |
| <138 48 5 0>, |
| <138 58 5 0>; |
| qcom,cpr-fuse-redun-quot-offset = |
| <200 53 5 0>, |
| <200 53 5 0>, |
| <200 48 5 0>, |
| <200 58 5 0>; |
| qcom,cpr-fuse-init-voltage = |
| <27 36 6 0>, |
| <27 18 6 0>, |
| <27 0 6 0>; |
| qcom,cpr-fuse-redun-init-voltage = |
| <140 36 6 0>, |
| <140 18 6 0>, |
| <140 0 6 0>; |
| qcom,cpr-init-voltage-ref = <1050000 1150000 1280000>; |
| qcom,cpr-init-voltage-step = <10000>; |
| qcom,cpr-voltage-ceiling-override = |
| <1 1 1050000 1050000 1150000 1150000 1280000 |
| 1280000 1280000 1280000 1280000 1280000 |
| 1280000 1280000>; |
| qcom,cpr-voltage-floor-override = |
| <1 1 1050000 1050000 1050000 1050000 1060000 |
| 1070000 1080000 1090000 1100000 1100000 |
| 1100000 1100000>; |
| qcom,cpr-scaled-init-voltage-as-ceiling; |
| |
| qcom,cpr-fuse-version-map = |
| <0xffffffff 0xffffffff 2 4 4 4>, |
| <0xffffffff 0xffffffff 2 6 6 6>, |
| <0xffffffff 0xffffffff 3 4 4 4>; |
| qcom,cpr-quotient-adjustment = |
| <0 0 (-210)>, |
| <0 0 (-60)>, |
| <0 0 (-94)>; |
| qcom,cpr-quot-offset-adjustment = |
| <0 0 (-5)>; |
| qcom,cpr-init-voltage-adjustment = |
| <0 0 (-100000)>, |
| <0 0 (-100000)>, |
| <0 0 (-45000)>; |
| qcom,cpr-fuse-min-quot-diff = <0 0 40>; |
| qcom,cpr-min-quot-diff-adjustment = |
| <0 0 0>, |
| <0 0 72>, |
| <0 0 104>; |
| qcom,cpr-floor-to-ceiling-max-range = |
| <(-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1)>, |
| <(-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1) (-1)>, |
| <(-1) (-1) (-1) (-1) (-1) (-1) (-1) 50000 50000 50000 50000 50000>; |
| qcom,cpr-virtual-corner-init-voltage-adjustment = |
| <0 0 0 (-10000) 0 0 0 0 0 0 0 0>, |
| <0 0 0 0 0 0 0 0 0 0 0 (-20000)>, |
| <0 0 0 0 0 0 0 0 0 0 0 (-30000)>; |
| qcom,cpr-virtual-corner-quotient-adjustment = |
| <0 0 0 100 0 0 0 0 0 0 0 0>, |
| <0 0 0 0 0 0 0 0 0 0 0 (-300)>, |
| <0 0 0 (-60) 0 0 0 0 0 0 0 0>; |
| qcom,cpr-cpus = <&CPU0 &CPU1 &CPU2 &CPU3>; |
| qcom,cpr-online-cpu-virtual-corner-init-voltage-adjustment = |
| /* 1st fuse version tuple matched */ |
| <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 0 CPUs online */ |
| <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 1 CPUs online */ |
| <0 0 0 (-5000) (-5000) (-5000) (-5000) (-5000) (-10000) 0 (-10000) (-10000) >, /* 2 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>, /* 4 CPUs online */ |
| /* 2nd fuse version tuple matched */ |
| <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 0 CPUs online */ |
| <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 1 CPUs online */ |
| <0 0 0 (-5000) (-5000) (-5000) (-5000) (-5000) (-10000) 0 (-10000) (-10000) >, /* 2 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>, /* 4 CPUs online */ |
| /* 3rd fuse version tuple matched */ |
| <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 0 CPUs online */ |
| <0 0 0 (-10000) (-10000) (-10000) (-15000) (-15000) (-20000) 0 (-20000) (-30000) >, /* 1 CPUs online */ |
| <0 0 0 (-5000) (-5000) (-5000) (-5000) (-5000) (-10000) 0 (-10000) (-10000) >, /* 2 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>; /* 4 CPUs online */ |
| qcom,cpr-online-cpu-virtual-corner-quotient-adjustment = |
| /* 1st fuse version tuple matched */ |
| <0 0 0 (-6) (-6) (-6) (-9) (-9) (-12) 0 (-12) (-18)>, /* 0 CPUs online */ |
| <0 0 0 (-6) (-6) (-6) (-9) (-9) (-12) 0 (-12) (-18)>, /* 1 CPUs online */ |
| <0 0 0 (-3) (-3) (-3) (-3) (-3) (-6) 0 (-6) (-6)>, /* 2 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>, /* 4 CPUs online */ |
| /* 2nd fuse version tuple matched */ |
| <0 0 0 (-6) (-6) (-6) (-9) (-9) (-12) 0 (-12) (-18)>, /* 0 CPUs online */ |
| <0 0 0 (-6) (-6) (-6) (-9) (-9) (-12) 0 (-12) (-18)>, /* 1 CPUs online */ |
| <0 0 0 (-3) (-3) (-3) (-3) (-3) (-6) 0 (-6) (-6)>, /* 2 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>, /* 4 CPUs online */ |
| /* 3rd fuse version tuple matched */ |
| <0 0 0 (-21) (-21) (-21) (-32) (-32) (-42) 0 (-42) (-63)>, /* 0 CPUs online */ |
| <0 0 0 (-21) (-21) (-21) (-32) (-32) (-42) 0 (-42) (-63)>, /* 1 CPUs online */ |
| <0 0 0 (-11) (-11) (-11) (-11) (-11) (-21) 0 (-21) (-21)>, /* 2 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>, /* 3 CPUs online */ |
| <0 0 0 0 0 0 0 0 0 0 0 0>; /* 4 CPUs online */ |
| qcom,cpr-allowed = |
| <0>, |
| <1>, |
| <1>; |
| |
| qcom,fuse-remap-base-row = <1000>; |
| qcom,fuse-remap-source = |
| <140 7 3 0>, |
| <138 45 5 0>; |
| qcom,cpr-fuse-quot-offset-scale = <5 5 5>; |
| |
| qcom,cpr-aging-sensor-id = <17, 18>; |
| qcom,cpr-aging-ref-corner = <4>; |
| qcom,cpr-aging-ref-voltage = <1050000>; |
| qcom,cpr-max-aging-margin = <15000>; |
| qcom,cpr-de-aging-allowed = |
| <0>, |
| <0>, |
| <1>; |
| qcom,cpr-non-collapsible-sensors= <7 12 17 22>; |
| qcom,cpr-aging-ro-scaling-factor = <3500>; |
| qcom,cpr-ro-scaling-factor = <0 2500 2500 2500 0 0 0 0>; |
| qcom,cpr-aging-derate = <1000 1000 1250>; |
| qcom,cpr-fuse-aging-init-quot-diff = |
| <101 0 8 0>, |
| <101 8 8 0>; |
| |
| qcom,cpr-thermal-sensor-id = <9>; |
| qcom,cpr-disable-temp-threshold = <5>; |
| qcom,cpr-enable-temp-threshold = <10>; |
| }; |