aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ipq807x/patches-5.15/0062-v6.0-regulator-qcom_spmi-add-support-for-HT_P600.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ipq807x/patches-5.15/0062-v6.0-regulator-qcom_spmi-add-support-for-HT_P600.patch')
-rw-r--r--target/linux/ipq807x/patches-5.15/0062-v6.0-regulator-qcom_spmi-add-support-for-HT_P600.patch59
1 files changed, 59 insertions, 0 deletions
diff --git a/target/linux/ipq807x/patches-5.15/0062-v6.0-regulator-qcom_spmi-add-support-for-HT_P600.patch b/target/linux/ipq807x/patches-5.15/0062-v6.0-regulator-qcom_spmi-add-support-for-HT_P600.patch
new file mode 100644
index 0000000000..6b76f2c3fc
--- /dev/null
+++ b/target/linux/ipq807x/patches-5.15/0062-v6.0-regulator-qcom_spmi-add-support-for-HT_P600.patch
@@ -0,0 +1,59 @@
+From 14789f38e03c42857613b69ff0f032e03653b246 Mon Sep 17 00:00:00 2001
+From: Robert Marko <robimarko@gmail.com>
+Date: Mon, 4 Jul 2022 23:23:55 +0200
+Subject: [PATCH] regulator: qcom_spmi: add support for HT_P600
+
+HT_P600 is a LDO PMOS regulator based on LV P600 using HFS430 layout
+found in PMP8074 and PMS405 PMIC-s.
+
+Both PMP8074 and PMS405 define the programmable range as 1.704 to 1.896V
+but the actual MAX output voltage depends on the exact LDO in each of
+the PMIC-s.
+Their usual voltage that they are used is 1.8V.
+
+It has a max current of 600mA, voltage step of 8mV.
+
+Signed-off-by: Robert Marko <robimarko@gmail.com>
+Link: https://lore.kernel.org/r/20220704212402.1715182-5-robimarko@gmail.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+---
+ drivers/regulator/qcom_spmi-regulator.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/regulator/qcom_spmi-regulator.c
++++ b/drivers/regulator/qcom_spmi-regulator.c
+@@ -165,6 +165,7 @@ enum spmi_regulator_subtype {
+ SPMI_REGULATOR_SUBTYPE_ULT_HF_CTL4 = 0x10,
+ SPMI_REGULATOR_SUBTYPE_HFS430 = 0x0a,
+ SPMI_REGULATOR_SUBTYPE_HT_P150 = 0x35,
++ SPMI_REGULATOR_SUBTYPE_HT_P600 = 0x3d,
+ };
+
+ enum spmi_common_regulator_registers {
+@@ -549,6 +550,10 @@ static struct spmi_voltage_range ht_p150
+ SPMI_VOLTAGE_RANGE(0, 1616000, 1616000, 3304000, 3304000, 8000),
+ };
+
++static struct spmi_voltage_range ht_p600_ranges[] = {
++ SPMI_VOLTAGE_RANGE(0, 1704000, 1704000, 1896000, 1896000, 8000),
++};
++
+ static DEFINE_SPMI_SET_POINTS(pldo);
+ static DEFINE_SPMI_SET_POINTS(nldo1);
+ static DEFINE_SPMI_SET_POINTS(nldo2);
+@@ -570,6 +575,7 @@ static DEFINE_SPMI_SET_POINTS(ht_lvpldo)
+ static DEFINE_SPMI_SET_POINTS(ht_nldo);
+ static DEFINE_SPMI_SET_POINTS(hfs430);
+ static DEFINE_SPMI_SET_POINTS(ht_p150);
++static DEFINE_SPMI_SET_POINTS(ht_p600);
+
+ static inline int spmi_vreg_read(struct spmi_regulator *vreg, u16 addr, u8 *buf,
+ int len)
+@@ -1464,6 +1470,7 @@ static const struct regulator_ops spmi_h
+
+ static const struct spmi_regulator_mapping supported_regulators[] = {
+ /* type subtype dig_min dig_max ltype ops setpoints hpm_min */
++ SPMI_VREG(LDO, HT_P600, 0, INF, HFS430, hfs430, ht_p600, 10000),
+ SPMI_VREG(LDO, HT_P150, 0, INF, HFS430, hfs430, ht_p150, 10000),
+ SPMI_VREG(BUCK, GP_CTL, 0, INF, SMPS, smps, smps, 100000),
+ SPMI_VREG(BUCK, HFS430, 0, INF, HFS430, hfs430, hfs430, 10000),