diff options
author | Tirupathi Reddy <tirupath@codeaurora.org> | 2017-08-22 12:38:32 +0530 |
---|---|---|
committer | Tirupathi Reddy <tirupath@codeaurora.org> | 2017-08-23 10:26:50 +0530 |
commit | 1f4af949b030756ea668e63f9f2a5204b2bf7bf5 (patch) | |
tree | 1cf89ab2e98bdcd267a76859010da8fbddc06ef8 | |
parent | 232b0f15cc8b29274630519d935278bdbc1dacc8 (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.dtsi | 83 | ||||
-rw-r--r-- | drivers/regulator/cprh-kbss-regulator.c | 13 |
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: |