Loading Documentation/devicetree/bindings/regulator/cpr3-hmss-regulator.txt +205 −129 Original line number Diff line number Diff line Loading @@ -20,9 +20,10 @@ This document describes the HMSS specific CPR3 bindings. Required Node Structure ======================= CPR3 regulators must be described in two levels of devices nodes. The first CPR3 regulators must be described in three levels of devices nodes. The first level describes the CPR3 controller. The second level describes one or more hardware threads managed by the controller. hardware threads managed by the controller. The third level describes one or more logical regulators handled by each CPR thread. All platform independent cpr3-regulator binding guidelines defined in cpr3-regulator.txt also apply to cpr3-hmss-regulator devices. Loading Loading @@ -112,21 +113,28 @@ HMSS specific properties: Usage: optional Value type: <phandle> Definition: phandle of the regulator device which manages LDO and BHS modes for the clusters per CPR thread. 'N' must match with the hardware thread ID of the thread it controls. modes for the clusters per CPR thread. 'N' must match with the hardware thread ID of the thread it controls. - qcom,vdd-threadN-ldo-ret-supply Usage: required if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Usage: required if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Value type: <phandle> Definition: phandle of the regulator device which manages LDO retention modes for the clusters per CPR thread. 'N' must match with the hardware thread ID of the thread it controls. modes for the clusters per CPR thread. 'N' must match with the hardware thread ID of the thread it controls. ================================================= Second Level Nodes - CPR Threads for a Controller ================================================= HMSS specific properties: N/A =============================================== Third Level Nodes - CPR Regulators for a Thread =============================================== HMSS specific properties: - qcom,cpr-fuse-corners Usage: required Loading @@ -149,33 +157,32 @@ HMSS specific properties: supported value is 1. - qcom,ldo-headroom-voltage Usage: required if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Usage: required if qcom,vdd-threadN-ldo-supply is specified for the CPR3 thread containing this CPR3 regulator and this CPR3 regulator needs to manage the cluster LDO state. Value type: <u32> Definition: Voltage in microvolts required between the VDD_APCC voltage and the LDO output in order for the LDO to be operational. - qcom,ldo-adjust-voltage Usage: optional if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Usage: optional Value type: <u32> Definition: Voltage in microvolts used to offset margins between PMIC output and CPU. Definition: Voltage in microvolts used to offset margins between PMIC output and CPU. - qcom,ldo-max-voltage Usage: required if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Usage: required if qcom,ldo-headroom-voltage is specified for this CPR3 regulator. Value type: <u32> Definition: Voltage in microvolts which represents the maximum physically supported voltage output of the LDO hardware. Definition: Voltage in microvolts which represents the maximum physically supported voltage output of the LDO hardware. - qcom,ldo-disable Usage: optional if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Usage: optional Value type: <empty> Definition: Boolean flag which indicates that LDO mode usage is disallowed. If such flag is present, the vdd-threadN-ldo-supply mode will not be modified. Definition: Boolean flag which indicates that LDO mode usage is disallowed. If this flag is present, then the vdd-threadN-ldo-supply mode will not be modified. - qcom,allow-quotient-interpolation Usage: optional Loading @@ -184,6 +191,20 @@ HMSS specific properties: interpolated CPR target quotient values. These values are interpolated between the target quotient Fmax fuse values. - qcom,cpr-pd-bypass-mask Usage: required Value type: <u32> Definition: Specifies the power domains associated with this CPR3 regulator. The following bits may be set: BIT(0) - Power cluster L2 cache BIT(1) - Power cluster core 1 BIT(2) - Power cluster core 0 BIT(3) - CBF BIT(4) - L3 cache BIT(5) - Performance cluster L2 cache BIT(6) - Performance cluster core 1 BIT(7) - Performance cluster core 0 ======= Example ======= Loading Loading @@ -211,6 +232,7 @@ apcc_cpr: cpr3-ctrl@99e8000 { qcom,apm-hysteresis-voltage = <5000>; vdd-supply = <&pm8994_s11>; qcom,voltage-step = <5000>; vdd-limit-supply = <&pm8994_s11_limit>; vdd-thread0-ldo-supply = <&kryo0_vreg>; vdd-thread1-ldo-supply = <&kryo1_vreg>; Loading @@ -219,46 +241,48 @@ apcc_cpr: cpr3-ctrl@99e8000 { qcom,cpr-enable; qcom,cpr-hw-closed-loop; qcom,cpr-clock-throttling = <0x20>; apc0_vreg: regulator@0 { thread@0 { qcom,cpr-thread-id = <0>; regulator-name = "apc0_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <19>; qcom,voltage-step = <5000>; qcom,cpr-consecutive-up = <0>; qcom,cpr-consecutive-down = <2>; qcom,cpr-up-threshold = <0>; qcom,cpr-down-threshold = <2>; apc0_pwrcl_vreg: regulator-pwrcl { regulator-name = "apc0_pwrcl_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <19>; qcom,cpr-pd-bypass-mask = <0x07>; qcom,cpr-fuse-corners = <5>; qcom,cpr-fuse-combos = <1>; qcom,cpr-corners = <19>; qcom,ldo-headroom-voltage = <150000>; qcom,ldo-max-voltage = <819000>; qcom,ldo-max-voltage = <805000>; qcom,cpr-corner-fmax-map = <1 2 6 11 19>; qcom,cpr-voltage-ceiling = <605000 670000 745000 745000 745000 745000 905000 905000 905000 905000 905000 1015000 1015000 1015000 1015000 1015000 1015000 1015000 1015000>; <670000 670000 745000 745000 745000 745000 905000 905000 905000 905000 905000 1015000 1015000 1015000 1015000 1015000 1015000 1015000 1015000>; qcom,cpr-voltage-floor = <520000 545000 625000 625000 625000 625000 755000 755000 755000 755000 755000 855000 855000 855000 855000 855000 855000 855000 855000>; <520000 550000 555000 565000 585000 615000 635000 655000 690000 720000 740000 750000 760000 770000 780000 790000 815000 840000 850000>; qcom,corner-frequencies = <192000000 268800000 300000000 345600000 403200000 480000000 576000000 633600000 729600000 806400000 883200000 960000000 1017600000 1113600000 1190400000 1267200000 1344000000 1420800000 1459200000>; <192000000 268800000 307200000 345600000 403200000 480000000 576000000 633600000 729600000 806400000 883200000 960000000 1017600000 1113600000 1190400000 1267200000 1344000000 1420800000 1459200000>; qcom,cpr-ro-scaling-factor = < 0 0 0 0 2222 2275 2506 2491 Loading @@ -282,43 +306,94 @@ apcc_cpr: cpr3-ctrl@99e8000 { qcom,cpr-scaled-open-loop-voltage-as-ceiling; }; apc1_vreg: regulator@1 { qcom,cpr-thread-id = <1>; regulator-name = "apc1_corner"; apc0_cbf_vreg: regulator-cbf { regulator-name = "apc0_cbf_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <18>; regulator-max-microvolt = <10>; qcom,voltage-step = <5000>; qcom,cpr-pd-bypass-mask = <0x18>; qcom,cpr-fuse-corners = <5>; qcom,cpr-fuse-combos = <1>; qcom,cpr-corners = <10>; qcom,cpr-corner-fmax-map = <1 2 5 9 10>; qcom,cpr-voltage-ceiling = <605000 670000 745000 745000 745000 905000 905000 905000 905000 1015000>; qcom,cpr-voltage-floor = <520000 545000 565000 595000 635000 660000 690000 730000 750000 850000>; qcom,corner-frequencies = <150000000 307200000 384000000 499200000 595200000 691200000 787200000 883200000 960000000 1036800000>; qcom,cpr-ro-scaling-factor = < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0 0 0 0>, < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0 0 0 0>, < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0 0 0 0>, < 0 0 0 0 2147 2226 2310 2312 2450 2447 2603 2600 0 0 0 0>, < 0 0 0 0 1989 2079 2066 2083 2193 2201 2283 2296 0 0 0 0>; qcom,cpr-open-loop-voltage-fuse-adjustment = <0 0 0 0 0>; qcom,cpr-closed-loop-voltage-fuse-adjustment = <0 0 0 0 0>; qcom,allow-voltage-interpolation; qcom,allow-quotient-interpolation; qcom,cpr-scaled-open-loop-voltage-as-ceiling; }; }; thread@1 { qcom,cpr-thread-id = <1>; qcom,cpr-consecutive-up = <0>; qcom,cpr-consecutive-down = <2>; qcom,cpr-up-threshold = <0>; qcom,cpr-down-threshold = <2>; apc1_vreg: regulator { regulator-name = "apc1_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <18>; qcom,cpr-pd-bypass-mask = <0xe0>; qcom,cpr-fuse-corners = <5>; qcom,cpr-fuse-combos = <1>; qcom,cpr-corners = <18>; qcom,ldo-headroom-voltage = <150000>; qcom,ldo-max-voltage = <812000>; qcom,ldo-max-voltage = <805000>; qcom,cpr-corner-fmax-map = <1 3 5 11 18>; qcom,cpr-voltage-ceiling = <605000 670000 670000 745000 745000 905000 905000 905000 905000 905000 905000 1015000 1015000 1015000 1015000 1015000 1015000 1015000>; <670000 670000 670000 745000 745000 905000 905000 905000 905000 905000 905000 1015000 1015000 1015000 1015000 1015000 1015000 1015000>; qcom,cpr-voltage-floor = <520000 545000 545000 625000 625000 755000 755000 755000 755000 755000 755000 855000 855000 855000 855000 855000 855000 940000>; <520000 530000 545000 590000 620000 635000 660000 685000 700000 730000 740000 750000 765000 790000 805000 815000 830000 850000>; qcom,corner-frequencies = <300000000 345600000 403200000 480000000 576000000 633600000 729600000 806400000 883200000 960000000 1017600000 1113600000 1190400000 1267200000 1344000000 1420800000 1497600000 1593600000>; <307200000 345600000 403200000 480000000 576000000 633600000 729600000 806400000 883200000 960000000 1017600000 1113600000 1190400000 1267200000 1344000000 1420800000 1497600000 1593600000>; qcom,cpr-ro-scaling-factor = < 0 0 0 0 2212 2273 2517 2506 Loading @@ -342,3 +417,4 @@ apcc_cpr: cpr3-ctrl@99e8000 { qcom,cpr-scaled-open-loop-voltage-as-ceiling; }; }; }; Documentation/devicetree/bindings/regulator/cpr3-mmss-regulator.txt +64 −44 Original line number Diff line number Diff line Loading @@ -11,9 +11,10 @@ This document describes the MMSS specific CPR3 bindings. Required Node Structure ======================= CPR3 regulators must be described in two levels of devices nodes. The first level describes the CPR3 controller. The second level describes one or more hardware threads managed by the controller. CPR3 regulators must be described in three levels of devices nodes. The first level describes the CPR3 controller. The second level describes exacly one hardware thread managed by the controller. The third level describes one or more logical regulators handled by the CPR thread. All platform independent cpr3-regulator binding guidelines defined in cpr3-regulator.txt also apply to cpr3-hmss-regulator devices. Loading Loading @@ -47,7 +48,14 @@ MMSS specific properties: Second Level Nodes - CPR Threads for a Controller ================================================= HMSS specific properties: MMSS specific properties: N/A =============================================== Third Level Nodes - CPR Regulators for a Thread =============================================== MMSS specific properties: - qcom,cpr-fuse-corners Usage: required Value type: <u32> Loading Loading @@ -100,8 +108,8 @@ HMSS specific properties: property. Note that the qcom,cpr-closed-loop-voltage-fuse-adjustment property is not meaningful for MMSS CPR3 thread nodes since target quotients are not defined in fuses. meaningful for MMSS CPR3 regulator nodes since target quotients are not defined in fuses. ======= Example Loading @@ -127,45 +135,56 @@ gfx_cpr: cpr3-ctrl@838000 { qcom,cpr-count-mode = <2>; vdd-supply = <&pmi8994_s2>; qcom,voltage-step = <5000>; qcom,cpr-enable; gfx_vreg: regulator@0 { thread@0 { qcom,cpr-thread-id = <0>; regulator-name = "gfx_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <4>; qcom,voltage-step = <5000>; qcom,cpr-consecutive-up = <0>; qcom,cpr-consecutive-down = <2>; qcom,cpr-up-threshold = <0>; qcom,cpr-down-threshold = <2>; gfx_vreg: regulator { regulator-name = "gfx_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <4>; qcom,cpr-fuse-corners = <4>; qcom,cpr-fuse-combos = <1>; qcom,cpr-corners = <4>; qcom,cpr-corner-fmax-map = <1 2 3 4>; qcom,cpr-voltage-ceiling = <670000 745000 905000 1015000>; qcom,cpr-voltage-floor = <545000 625000 755000 855000>; qcom,cpr-voltage-ceiling = <670000 745000 905000 1015000>; qcom,cpr-voltage-floor = <545000 625000 755000 855000>; qcom,corner-frequencies = <120000000 205000000 360000000 480000000>; <120000000 205000000 360000000 480000000>; qcom,cpr-target-quotients = <0 0 0 0 249 232 0 394 0 422 0 0 0 0 0 0>, <0 0 0 0 400 363 0 565 0 603 0 0 0 0 0 0>, <0 0 0 0 669 601 0 851 0 905 0 0 0 0 0 0>, <0 0 0 0 899 806 0 1084 0 1149 0 0 0 0 0 0>; < 0 0 0 0 249 232 0 394 0 422 0 0 0 0 0 0>, < 0 0 0 0 400 363 0 565 0 603 0 0 0 0 0 0>, < 0 0 0 0 669 601 0 851 0 905 0 0 0 0 0 0>, < 0 0 0 0 899 806 0 1084 0 1149 0 0 0 0 0 0>; qcom,cpr-ro-scaling-factor = <0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, <0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, <0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, <0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>; < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>; qcom,cpr-open-loop-voltage-fuse-adjustment = <35000 0 0 0>; Loading @@ -176,3 +195,4 @@ gfx_cpr: cpr3-ctrl@838000 { qcom,cpr-scaled-open-loop-voltage-as-ceiling; }; }; }; Documentation/devicetree/bindings/regulator/cpr3-regulator.txt +32 −26 Original line number Diff line number Diff line Loading @@ -15,9 +15,10 @@ to all CPR3 controllers. Required Node Structure ======================= CPR3 regulators must be described in two levels of devices nodes. The first CPR3 regulators must be described in three levels of devices nodes. The first level describes the CPR3 controller. The second level describes one or more hardware threads managed by the controller. hardware threads managed by the controller. The third level describes one or more logical regulators handled by each CPR thread. ==================================== First Level Nodes - CPR3 Controllers Loading Loading @@ -104,6 +105,12 @@ Platform independent properties: to wait in transitional states. Supported values: 0 - 31. - qcom,voltage-step Usage: required Value type: <u32> Definition: The voltage in microvolts of a single step of the VDD supply regulator being controlled by CPR. - qcom,cpr-step-quot-init-min Usage: required Value type: <u32> Loading Loading @@ -155,29 +162,6 @@ Platform independent properties: Definition: Specifies the hardware thread ID of this thread within the CPR controller. - regulator-name Usage: required Value type: <string> Definition: Specifies the name for this thread of the CPR controller. - regulator-min-microvolt Usage: required Value type: <u32> Definition: Minimum corner value which should be 1 to represent the lowest supported corner. - regulator-max-microvolt Usage: required Value type: <u32> Definition: Maximum corner value which should be equal to largest value listed in qcom,cpr-corners. - qcom,voltage-step Usage: required Value type: <u32> Definition: The voltage in microvolts of a single step of the VDD supply regulator being controlled by CPR. - qcom,cpr-consecutive-up Usage: required Value type: <u32> Loading @@ -202,6 +186,28 @@ Platform independent properties: Definition: The number CPR error steps required to generate a down event. Supported values: 0 - 31. =============================================== Third Level Nodes - CPR Regulators for a Thread =============================================== Platform independent properties: - regulator-name Usage: required Value type: <string> Definition: Specifies the name for this CPR3 regulator. - regulator-min-microvolt Usage: required Value type: <u32> Definition: Minimum corner value which should be 1 to represent the lowest supported corner. - regulator-max-microvolt Usage: required Value type: <u32> Definition: Maximum corner value which should be equal to largest value listed in qcom,cpr-corners. - qcom,cpr-fuse-corners Usage: required Value type: <u32> Loading Loading @@ -414,7 +420,7 @@ Platform independent properties: scaling factor in this property. All properties specified within the core regulator framework can also be used in second level nodes. These bindings can be found in: third level nodes. These bindings can be found in: Documentation/devicetree/bindings/regulator/regulator.txt. See platform specific cpr3-regulator binding documentation files for examples. Loading
Documentation/devicetree/bindings/regulator/cpr3-hmss-regulator.txt +205 −129 Original line number Diff line number Diff line Loading @@ -20,9 +20,10 @@ This document describes the HMSS specific CPR3 bindings. Required Node Structure ======================= CPR3 regulators must be described in two levels of devices nodes. The first CPR3 regulators must be described in three levels of devices nodes. The first level describes the CPR3 controller. The second level describes one or more hardware threads managed by the controller. hardware threads managed by the controller. The third level describes one or more logical regulators handled by each CPR thread. All platform independent cpr3-regulator binding guidelines defined in cpr3-regulator.txt also apply to cpr3-hmss-regulator devices. Loading Loading @@ -112,21 +113,28 @@ HMSS specific properties: Usage: optional Value type: <phandle> Definition: phandle of the regulator device which manages LDO and BHS modes for the clusters per CPR thread. 'N' must match with the hardware thread ID of the thread it controls. modes for the clusters per CPR thread. 'N' must match with the hardware thread ID of the thread it controls. - qcom,vdd-threadN-ldo-ret-supply Usage: required if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Usage: required if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Value type: <phandle> Definition: phandle of the regulator device which manages LDO retention modes for the clusters per CPR thread. 'N' must match with the hardware thread ID of the thread it controls. modes for the clusters per CPR thread. 'N' must match with the hardware thread ID of the thread it controls. ================================================= Second Level Nodes - CPR Threads for a Controller ================================================= HMSS specific properties: N/A =============================================== Third Level Nodes - CPR Regulators for a Thread =============================================== HMSS specific properties: - qcom,cpr-fuse-corners Usage: required Loading @@ -149,33 +157,32 @@ HMSS specific properties: supported value is 1. - qcom,ldo-headroom-voltage Usage: required if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Usage: required if qcom,vdd-threadN-ldo-supply is specified for the CPR3 thread containing this CPR3 regulator and this CPR3 regulator needs to manage the cluster LDO state. Value type: <u32> Definition: Voltage in microvolts required between the VDD_APCC voltage and the LDO output in order for the LDO to be operational. - qcom,ldo-adjust-voltage Usage: optional if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Usage: optional Value type: <u32> Definition: Voltage in microvolts used to offset margins between PMIC output and CPU. Definition: Voltage in microvolts used to offset margins between PMIC output and CPU. - qcom,ldo-max-voltage Usage: required if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Usage: required if qcom,ldo-headroom-voltage is specified for this CPR3 regulator. Value type: <u32> Definition: Voltage in microvolts which represents the maximum physically supported voltage output of the LDO hardware. Definition: Voltage in microvolts which represents the maximum physically supported voltage output of the LDO hardware. - qcom,ldo-disable Usage: optional if qcom,vdd-threadN-ldo-supply is specified for this CPR thread. Usage: optional Value type: <empty> Definition: Boolean flag which indicates that LDO mode usage is disallowed. If such flag is present, the vdd-threadN-ldo-supply mode will not be modified. Definition: Boolean flag which indicates that LDO mode usage is disallowed. If this flag is present, then the vdd-threadN-ldo-supply mode will not be modified. - qcom,allow-quotient-interpolation Usage: optional Loading @@ -184,6 +191,20 @@ HMSS specific properties: interpolated CPR target quotient values. These values are interpolated between the target quotient Fmax fuse values. - qcom,cpr-pd-bypass-mask Usage: required Value type: <u32> Definition: Specifies the power domains associated with this CPR3 regulator. The following bits may be set: BIT(0) - Power cluster L2 cache BIT(1) - Power cluster core 1 BIT(2) - Power cluster core 0 BIT(3) - CBF BIT(4) - L3 cache BIT(5) - Performance cluster L2 cache BIT(6) - Performance cluster core 1 BIT(7) - Performance cluster core 0 ======= Example ======= Loading Loading @@ -211,6 +232,7 @@ apcc_cpr: cpr3-ctrl@99e8000 { qcom,apm-hysteresis-voltage = <5000>; vdd-supply = <&pm8994_s11>; qcom,voltage-step = <5000>; vdd-limit-supply = <&pm8994_s11_limit>; vdd-thread0-ldo-supply = <&kryo0_vreg>; vdd-thread1-ldo-supply = <&kryo1_vreg>; Loading @@ -219,46 +241,48 @@ apcc_cpr: cpr3-ctrl@99e8000 { qcom,cpr-enable; qcom,cpr-hw-closed-loop; qcom,cpr-clock-throttling = <0x20>; apc0_vreg: regulator@0 { thread@0 { qcom,cpr-thread-id = <0>; regulator-name = "apc0_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <19>; qcom,voltage-step = <5000>; qcom,cpr-consecutive-up = <0>; qcom,cpr-consecutive-down = <2>; qcom,cpr-up-threshold = <0>; qcom,cpr-down-threshold = <2>; apc0_pwrcl_vreg: regulator-pwrcl { regulator-name = "apc0_pwrcl_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <19>; qcom,cpr-pd-bypass-mask = <0x07>; qcom,cpr-fuse-corners = <5>; qcom,cpr-fuse-combos = <1>; qcom,cpr-corners = <19>; qcom,ldo-headroom-voltage = <150000>; qcom,ldo-max-voltage = <819000>; qcom,ldo-max-voltage = <805000>; qcom,cpr-corner-fmax-map = <1 2 6 11 19>; qcom,cpr-voltage-ceiling = <605000 670000 745000 745000 745000 745000 905000 905000 905000 905000 905000 1015000 1015000 1015000 1015000 1015000 1015000 1015000 1015000>; <670000 670000 745000 745000 745000 745000 905000 905000 905000 905000 905000 1015000 1015000 1015000 1015000 1015000 1015000 1015000 1015000>; qcom,cpr-voltage-floor = <520000 545000 625000 625000 625000 625000 755000 755000 755000 755000 755000 855000 855000 855000 855000 855000 855000 855000 855000>; <520000 550000 555000 565000 585000 615000 635000 655000 690000 720000 740000 750000 760000 770000 780000 790000 815000 840000 850000>; qcom,corner-frequencies = <192000000 268800000 300000000 345600000 403200000 480000000 576000000 633600000 729600000 806400000 883200000 960000000 1017600000 1113600000 1190400000 1267200000 1344000000 1420800000 1459200000>; <192000000 268800000 307200000 345600000 403200000 480000000 576000000 633600000 729600000 806400000 883200000 960000000 1017600000 1113600000 1190400000 1267200000 1344000000 1420800000 1459200000>; qcom,cpr-ro-scaling-factor = < 0 0 0 0 2222 2275 2506 2491 Loading @@ -282,43 +306,94 @@ apcc_cpr: cpr3-ctrl@99e8000 { qcom,cpr-scaled-open-loop-voltage-as-ceiling; }; apc1_vreg: regulator@1 { qcom,cpr-thread-id = <1>; regulator-name = "apc1_corner"; apc0_cbf_vreg: regulator-cbf { regulator-name = "apc0_cbf_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <18>; regulator-max-microvolt = <10>; qcom,voltage-step = <5000>; qcom,cpr-pd-bypass-mask = <0x18>; qcom,cpr-fuse-corners = <5>; qcom,cpr-fuse-combos = <1>; qcom,cpr-corners = <10>; qcom,cpr-corner-fmax-map = <1 2 5 9 10>; qcom,cpr-voltage-ceiling = <605000 670000 745000 745000 745000 905000 905000 905000 905000 1015000>; qcom,cpr-voltage-floor = <520000 545000 565000 595000 635000 660000 690000 730000 750000 850000>; qcom,corner-frequencies = <150000000 307200000 384000000 499200000 595200000 691200000 787200000 883200000 960000000 1036800000>; qcom,cpr-ro-scaling-factor = < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0 0 0 0>, < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0 0 0 0>, < 0 0 0 0 2222 2275 2506 2491 2649 2640 2886 2866 0 0 0 0>, < 0 0 0 0 2147 2226 2310 2312 2450 2447 2603 2600 0 0 0 0>, < 0 0 0 0 1989 2079 2066 2083 2193 2201 2283 2296 0 0 0 0>; qcom,cpr-open-loop-voltage-fuse-adjustment = <0 0 0 0 0>; qcom,cpr-closed-loop-voltage-fuse-adjustment = <0 0 0 0 0>; qcom,allow-voltage-interpolation; qcom,allow-quotient-interpolation; qcom,cpr-scaled-open-loop-voltage-as-ceiling; }; }; thread@1 { qcom,cpr-thread-id = <1>; qcom,cpr-consecutive-up = <0>; qcom,cpr-consecutive-down = <2>; qcom,cpr-up-threshold = <0>; qcom,cpr-down-threshold = <2>; apc1_vreg: regulator { regulator-name = "apc1_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <18>; qcom,cpr-pd-bypass-mask = <0xe0>; qcom,cpr-fuse-corners = <5>; qcom,cpr-fuse-combos = <1>; qcom,cpr-corners = <18>; qcom,ldo-headroom-voltage = <150000>; qcom,ldo-max-voltage = <812000>; qcom,ldo-max-voltage = <805000>; qcom,cpr-corner-fmax-map = <1 3 5 11 18>; qcom,cpr-voltage-ceiling = <605000 670000 670000 745000 745000 905000 905000 905000 905000 905000 905000 1015000 1015000 1015000 1015000 1015000 1015000 1015000>; <670000 670000 670000 745000 745000 905000 905000 905000 905000 905000 905000 1015000 1015000 1015000 1015000 1015000 1015000 1015000>; qcom,cpr-voltage-floor = <520000 545000 545000 625000 625000 755000 755000 755000 755000 755000 755000 855000 855000 855000 855000 855000 855000 940000>; <520000 530000 545000 590000 620000 635000 660000 685000 700000 730000 740000 750000 765000 790000 805000 815000 830000 850000>; qcom,corner-frequencies = <300000000 345600000 403200000 480000000 576000000 633600000 729600000 806400000 883200000 960000000 1017600000 1113600000 1190400000 1267200000 1344000000 1420800000 1497600000 1593600000>; <307200000 345600000 403200000 480000000 576000000 633600000 729600000 806400000 883200000 960000000 1017600000 1113600000 1190400000 1267200000 1344000000 1420800000 1497600000 1593600000>; qcom,cpr-ro-scaling-factor = < 0 0 0 0 2212 2273 2517 2506 Loading @@ -342,3 +417,4 @@ apcc_cpr: cpr3-ctrl@99e8000 { qcom,cpr-scaled-open-loop-voltage-as-ceiling; }; }; };
Documentation/devicetree/bindings/regulator/cpr3-mmss-regulator.txt +64 −44 Original line number Diff line number Diff line Loading @@ -11,9 +11,10 @@ This document describes the MMSS specific CPR3 bindings. Required Node Structure ======================= CPR3 regulators must be described in two levels of devices nodes. The first level describes the CPR3 controller. The second level describes one or more hardware threads managed by the controller. CPR3 regulators must be described in three levels of devices nodes. The first level describes the CPR3 controller. The second level describes exacly one hardware thread managed by the controller. The third level describes one or more logical regulators handled by the CPR thread. All platform independent cpr3-regulator binding guidelines defined in cpr3-regulator.txt also apply to cpr3-hmss-regulator devices. Loading Loading @@ -47,7 +48,14 @@ MMSS specific properties: Second Level Nodes - CPR Threads for a Controller ================================================= HMSS specific properties: MMSS specific properties: N/A =============================================== Third Level Nodes - CPR Regulators for a Thread =============================================== MMSS specific properties: - qcom,cpr-fuse-corners Usage: required Value type: <u32> Loading Loading @@ -100,8 +108,8 @@ HMSS specific properties: property. Note that the qcom,cpr-closed-loop-voltage-fuse-adjustment property is not meaningful for MMSS CPR3 thread nodes since target quotients are not defined in fuses. meaningful for MMSS CPR3 regulator nodes since target quotients are not defined in fuses. ======= Example Loading @@ -127,45 +135,56 @@ gfx_cpr: cpr3-ctrl@838000 { qcom,cpr-count-mode = <2>; vdd-supply = <&pmi8994_s2>; qcom,voltage-step = <5000>; qcom,cpr-enable; gfx_vreg: regulator@0 { thread@0 { qcom,cpr-thread-id = <0>; regulator-name = "gfx_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <4>; qcom,voltage-step = <5000>; qcom,cpr-consecutive-up = <0>; qcom,cpr-consecutive-down = <2>; qcom,cpr-up-threshold = <0>; qcom,cpr-down-threshold = <2>; gfx_vreg: regulator { regulator-name = "gfx_corner"; regulator-min-microvolt = <1>; regulator-max-microvolt = <4>; qcom,cpr-fuse-corners = <4>; qcom,cpr-fuse-combos = <1>; qcom,cpr-corners = <4>; qcom,cpr-corner-fmax-map = <1 2 3 4>; qcom,cpr-voltage-ceiling = <670000 745000 905000 1015000>; qcom,cpr-voltage-floor = <545000 625000 755000 855000>; qcom,cpr-voltage-ceiling = <670000 745000 905000 1015000>; qcom,cpr-voltage-floor = <545000 625000 755000 855000>; qcom,corner-frequencies = <120000000 205000000 360000000 480000000>; <120000000 205000000 360000000 480000000>; qcom,cpr-target-quotients = <0 0 0 0 249 232 0 394 0 422 0 0 0 0 0 0>, <0 0 0 0 400 363 0 565 0 603 0 0 0 0 0 0>, <0 0 0 0 669 601 0 851 0 905 0 0 0 0 0 0>, <0 0 0 0 899 806 0 1084 0 1149 0 0 0 0 0 0>; < 0 0 0 0 249 232 0 394 0 422 0 0 0 0 0 0>, < 0 0 0 0 400 363 0 565 0 603 0 0 0 0 0 0>, < 0 0 0 0 669 601 0 851 0 905 0 0 0 0 0 0>, < 0 0 0 0 899 806 0 1084 0 1149 0 0 0 0 0 0>; qcom,cpr-ro-scaling-factor = <0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, <0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, <0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, <0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>; < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>, < 0 0 0 0 2268 2004 0 2408 0 2539 0 0 0 0 0 0>; qcom,cpr-open-loop-voltage-fuse-adjustment = <35000 0 0 0>; Loading @@ -176,3 +195,4 @@ gfx_cpr: cpr3-ctrl@838000 { qcom,cpr-scaled-open-loop-voltage-as-ceiling; }; }; };
Documentation/devicetree/bindings/regulator/cpr3-regulator.txt +32 −26 Original line number Diff line number Diff line Loading @@ -15,9 +15,10 @@ to all CPR3 controllers. Required Node Structure ======================= CPR3 regulators must be described in two levels of devices nodes. The first CPR3 regulators must be described in three levels of devices nodes. The first level describes the CPR3 controller. The second level describes one or more hardware threads managed by the controller. hardware threads managed by the controller. The third level describes one or more logical regulators handled by each CPR thread. ==================================== First Level Nodes - CPR3 Controllers Loading Loading @@ -104,6 +105,12 @@ Platform independent properties: to wait in transitional states. Supported values: 0 - 31. - qcom,voltage-step Usage: required Value type: <u32> Definition: The voltage in microvolts of a single step of the VDD supply regulator being controlled by CPR. - qcom,cpr-step-quot-init-min Usage: required Value type: <u32> Loading Loading @@ -155,29 +162,6 @@ Platform independent properties: Definition: Specifies the hardware thread ID of this thread within the CPR controller. - regulator-name Usage: required Value type: <string> Definition: Specifies the name for this thread of the CPR controller. - regulator-min-microvolt Usage: required Value type: <u32> Definition: Minimum corner value which should be 1 to represent the lowest supported corner. - regulator-max-microvolt Usage: required Value type: <u32> Definition: Maximum corner value which should be equal to largest value listed in qcom,cpr-corners. - qcom,voltage-step Usage: required Value type: <u32> Definition: The voltage in microvolts of a single step of the VDD supply regulator being controlled by CPR. - qcom,cpr-consecutive-up Usage: required Value type: <u32> Loading @@ -202,6 +186,28 @@ Platform independent properties: Definition: The number CPR error steps required to generate a down event. Supported values: 0 - 31. =============================================== Third Level Nodes - CPR Regulators for a Thread =============================================== Platform independent properties: - regulator-name Usage: required Value type: <string> Definition: Specifies the name for this CPR3 regulator. - regulator-min-microvolt Usage: required Value type: <u32> Definition: Minimum corner value which should be 1 to represent the lowest supported corner. - regulator-max-microvolt Usage: required Value type: <u32> Definition: Maximum corner value which should be equal to largest value listed in qcom,cpr-corners. - qcom,cpr-fuse-corners Usage: required Value type: <u32> Loading Loading @@ -414,7 +420,7 @@ Platform independent properties: scaling factor in this property. All properties specified within the core regulator framework can also be used in second level nodes. These bindings can be found in: third level nodes. These bindings can be found in: Documentation/devicetree/bindings/regulator/regulator.txt. See platform specific cpr3-regulator binding documentation files for examples.