summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTirupathi Reddy <tirupath@codeaurora.org>2017-08-22 12:38:32 +0530
committerTirupathi Reddy <tirupath@codeaurora.org>2017-08-23 10:26:50 +0530
commit1f4af949b030756ea668e63f9f2a5204b2bf7bf5 (patch)
tree1cf89ab2e98bdcd267a76859010da8fbddc06ef8
parent232b0f15cc8b29274630519d935278bdbc1dacc8 (diff)
ARM: dts: msm: Add speed-bin 3 for sdm660
Add speed-bin 3 support in cpr3 driver and device nodes for sdm660. CRs-Fixed: 2099889 Change-Id: Ied0da8ea6f9d787d0021716566080c37881b9558 Signed-off-by: Tirupathi Reddy <tirupath@codeaurora.org>
-rw-r--r--arch/arm/boot/dts/qcom/sdm660-regulator.dtsi83
-rw-r--r--drivers/regulator/cprh-kbss-regulator.c13
2 files changed, 84 insertions, 12 deletions
diff --git a/arch/arm/boot/dts/qcom/sdm660-regulator.dtsi b/arch/arm/boot/dts/qcom/sdm660-regulator.dtsi
index a4111f6d1b94..6556c986ae75 100644
--- a/arch/arm/boot/dts/qcom/sdm660-regulator.dtsi
+++ b/arch/arm/boot/dts/qcom/sdm660-regulator.dtsi
@@ -700,11 +700,33 @@
regulator-max-microvolt = <8>;
qcom,cpr-fuse-corners = <5>;
- qcom,cpr-fuse-combos = <16>;
- qcom,cpr-speed-bins = <2>;
- qcom,cpr-speed-bin-corners = <8 8>;
- qcom,cpr-corners = <8>;
- qcom,cpr-corner-fmax-map = <2 3 4 5 8>;
+ qcom,cpr-fuse-combos = <32>;
+ qcom,cpr-speed-bins = <4>;
+ qcom,cpr-speed-bin-corners = <8 8 0 8>;
+ qcom,cpr-corners =
+ /* Speed bin 0 */
+ <8 8 8 8 8 8 8 8>,
+
+ /* Speed bin 1 */
+ <8 8 8 8 8 8 8 8>,
+
+ /* Speed bin 2 */
+ <0 0 0 0 0 0 0 0>,
+
+ /* Speed bin 3 */
+ <8 8 8 8 8 8 8 8>;
+ qcom,cpr-corner-fmax-map =
+ /* Speed bin 0 */
+ <2 3 4 5 8>,
+
+ /* Speed bin 1 */
+ <2 3 4 5 8>,
+
+ /* Speed bin 2 */
+ <0 0 0 0 0>,
+
+ /* Speed bin 3 */
+ <2 3 4 5 8>;
qcom,cpr-voltage-ceiling =
< 724000 724000 724000 788000 868000
@@ -715,9 +737,20 @@
744000 784000 844000>;
qcom,corner-frequencies =
+ /* Speed bin 0 */
+ <300000000 633600000 902400000
+ 1113600000 1401600000 1536000000
+ 1747200000 1843200000>,
+
+ /* Speed bin 1 */
+ <300000000 633600000 902400000
+ 1113600000 1401600000 1536000000
+ 1747200000 1843200000>,
+
+ /* Speed bin 3 */
<300000000 633600000 902400000
1113600000 1401600000 1536000000
- 1747200000 1843200000>;
+ 1612800000 1843200000>;
qcom,allow-voltage-interpolation;
qcom,allow-quotient-interpolation;
@@ -806,11 +839,34 @@
regulator-max-microvolt = <7>;
qcom,cpr-fuse-corners = <5>;
- qcom,cpr-fuse-combos = <16>;
- qcom,cpr-speed-bins = <2>;
- qcom,cpr-speed-bin-corners = <7 7>;
- qcom,cpr-corners = <7>;
- qcom,cpr-corner-fmax-map = <2 3 4 6 7>;
+ qcom,cpr-fuse-combos = <32>;
+ qcom,cpr-speed-bins = <4>;
+ qcom,cpr-speed-bin-corners = <7 7 0 7>;
+ qcom,cpr-corners =
+ /* Speed-bin 0 */
+ <7 7 7 7 7 7 7 7>,
+
+ /* Speed-bin 1 */
+ <7 7 7 7 7 7 7 7>,
+
+ /* Speed-bin 1 */
+ <0 0 0 0 0 0 0 0>,
+
+ /* Speed-bin 3 */
+ <7 7 7 7 7 7 7 7>;
+
+ qcom,cpr-corner-fmax-map =
+ /* Speed-bin 0 */
+ <2 3 4 6 7>,
+
+ /* Speed-bin 1 */
+ <2 3 4 6 7>,
+
+ /* Speed-bin 2 */
+ <0 0 0 0 0>,
+
+ /* Speed-bin 3 */
+ <2 3 4 6 7>;
qcom,cpr-voltage-ceiling =
<724000 724000 788000 868000
@@ -829,6 +885,11 @@
/* Speed bin 1 */
<300000000 1113600000 1401600000
1747200000 1958400000 2150400000
+ 2208000000>,
+
+ /* Speed bin 3 */
+ <300000000 1113600000 1401600000
+ 1747200000 1804800000 2150400000
2208000000>;
qcom,allow-voltage-interpolation;
diff --git a/drivers/regulator/cprh-kbss-regulator.c b/drivers/regulator/cprh-kbss-regulator.c
index ecf7885a4bff..4d6d63e6d887 100644
--- a/drivers/regulator/cprh-kbss-regulator.c
+++ b/drivers/regulator/cprh-kbss-regulator.c
@@ -80,7 +80,7 @@ struct cprh_kbss_fuses {
* Fuse combos 24 - 31 map to CPR fusing revision 0 - 7 with speed bin fuse = 3.
*/
#define CPRH_MSM8998_KBSS_FUSE_COMBO_COUNT 32
-#define CPRH_SDM660_KBSS_FUSE_COMBO_COUNT 16
+#define CPRH_SDM660_KBSS_FUSE_COMBO_COUNT 32
#define CPRH_SDM630_KBSS_FUSE_COMBO_COUNT 24
/*
@@ -1069,6 +1069,12 @@ static int cprh_kbss_calculate_open_loop_voltages(struct cpr3_regulator *vreg)
CPRH_KBSS_FUSE_STEP_VOLT, fuse->init_voltage[i],
CPRH_KBSS_VOLTAGE_FUSE_SIZE);
+ /* SDM660 speed bin #3 does not support TURBO_L1/L2 */
+ if (soc_revision == SDM660_SOC_ID && vreg->speed_bin_fuse == 3
+ && (id == CPRH_KBSS_PERFORMANCE_CLUSTER_ID)
+ && (i == CPRH_SDM660_PERF_KBSS_FUSE_CORNER_TURBO_L2))
+ continue;
+
/* Log fused open-loop voltage values for debugging purposes. */
cpr3_info(vreg, "fused %8s: open-loop=%7d uV\n", corner_name[i],
fuse_volt[i]);
@@ -1615,6 +1621,11 @@ static int cprh_kbss_calculate_target_quotients(struct cpr3_regulator *vreg)
CPRH_SDM660_PERF_KBSS_FUSE_CORNER_SVS;
highest_fuse_corner =
CPRH_SDM660_PERF_KBSS_FUSE_CORNER_TURBO_L2;
+
+ /* speed-bin 3 does not have Turbo_L2 fuse */
+ if (vreg->speed_bin_fuse == 3)
+ highest_fuse_corner =
+ CPRH_SDM660_PERF_KBSS_FUSE_CORNER_TURBO;
}
break;
case SDM630_SOC_ID: