Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

regulator: qcom_spmi: Add PM660/PM660L regulators

The PM660 PMIC is very often paired with the PM660L option on
SDM630/663/660 (and SDA variants) boards.

The PM660 has 11 "660" LDOs (2 NMOS, 9 PMOS) and 7 HT LDOs (4 NMOS,
3 PMOS) and a quirk: the L4 regulator is unaccessible or does not
exist on the PMIC.
The PM660L has 8 "660" LDOs (1 NMOS, 7 PMOS) and 2 HT NMOS LDOs.

Signed-off-by: AngeloGioacchino Del Regno <kholk11@gmail.com>
Link: https://lore.kernel.org/r/20200926125549.13191-4-kholk11@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

AngeloGioacchino Del Regno and committed by
Mark Brown
0074c447 328816c2

+51
+51
drivers/regulator/qcom_spmi-regulator.c
··· 2014 2014 { } 2015 2015 }; 2016 2016 2017 + static const struct spmi_regulator_data pm660_regulators[] = { 2018 + { "s1", 0x1400, "vdd_s1", }, 2019 + { "s2", 0x1700, "vdd_s2", }, 2020 + { "s3", 0x1a00, "vdd_s3", }, 2021 + { "s4", 0x1d00, "vdd_s3", }, 2022 + { "s5", 0x2000, "vdd_s5", }, 2023 + { "s6", 0x2300, "vdd_s6", }, 2024 + { "l1", 0x4000, "vdd_l1_l6_l7", }, 2025 + { "l2", 0x4100, "vdd_l2_l3", }, 2026 + { "l3", 0x4200, "vdd_l2_l3", }, 2027 + /* l4 is unaccessible on PM660 */ 2028 + { "l5", 0x4400, "vdd_l5", }, 2029 + { "l6", 0x4500, "vdd_l1_l6_l7", }, 2030 + { "l7", 0x4600, "vdd_l1_l6_l7", }, 2031 + { "l8", 0x4700, "vdd_l8_l9_l10_l11_l12_l13_l14", }, 2032 + { "l9", 0x4800, "vdd_l8_l9_l10_l11_l12_l13_l14", }, 2033 + { "l10", 0x4900, "vdd_l8_l9_l10_l11_l12_l13_l14", }, 2034 + { "l11", 0x4a00, "vdd_l8_l9_l10_l11_l12_l13_l14", }, 2035 + { "l12", 0x4b00, "vdd_l8_l9_l10_l11_l12_l13_l14", }, 2036 + { "l13", 0x4c00, "vdd_l8_l9_l10_l11_l12_l13_l14", }, 2037 + { "l14", 0x4d00, "vdd_l8_l9_l10_l11_l12_l13_l14", }, 2038 + { "l15", 0x4e00, "vdd_l15_l16_l17_l18_l19", }, 2039 + { "l16", 0x4f00, "vdd_l15_l16_l17_l18_l19", }, 2040 + { "l17", 0x5000, "vdd_l15_l16_l17_l18_l19", }, 2041 + { "l18", 0x5100, "vdd_l15_l16_l17_l18_l19", }, 2042 + { "l19", 0x5200, "vdd_l15_l16_l17_l18_l19", }, 2043 + { } 2044 + }; 2045 + 2046 + static const struct spmi_regulator_data pm660l_regulators[] = { 2047 + { "s1", 0x1400, "vdd_s1", }, 2048 + { "s2", 0x1700, "vdd_s2", }, 2049 + { "s3", 0x1a00, "vdd_s3", }, 2050 + { "s4", 0x1d00, "vdd_s4", }, 2051 + { "s5", 0x2000, "vdd_s5", }, 2052 + { "l1", 0x4000, "vdd_l1_l9_l10", }, 2053 + { "l2", 0x4100, "vdd_l2", }, 2054 + { "l3", 0x4200, "vdd_l3_l5_l7_l8", }, 2055 + { "l4", 0x4300, "vdd_l4_l6", }, 2056 + { "l5", 0x4400, "vdd_l3_l5_l7_l8", }, 2057 + { "l6", 0x4500, "vdd_l4_l6", }, 2058 + { "l7", 0x4600, "vdd_l3_l5_l7_l8", }, 2059 + { "l8", 0x4700, "vdd_l3_l5_l7_l8", }, 2060 + { "l9", 0x4800, "vdd_l1_l9_l10", }, 2061 + { "l10", 0x4900, "vdd_l1_l9_l10", }, 2062 + { } 2063 + }; 2064 + 2065 + 2017 2066 static const struct spmi_regulator_data pm8004_regulators[] = { 2018 2067 { "s2", 0x1700, "vdd_s2", }, 2019 2068 { "s5", 0x2000, "vdd_s5", }, ··· 2091 2042 { .compatible = "qcom,pm8950-regulators", .data = &pm8950_regulators }, 2092 2043 { .compatible = "qcom,pm8994-regulators", .data = &pm8994_regulators }, 2093 2044 { .compatible = "qcom,pmi8994-regulators", .data = &pmi8994_regulators }, 2045 + { .compatible = "qcom,pm660-regulators", .data = &pm660_regulators }, 2046 + { .compatible = "qcom,pm660l-regulators", .data = &pm660l_regulators }, 2094 2047 { .compatible = "qcom,pms405-regulators", .data = &pms405_regulators }, 2095 2048 { } 2096 2049 };