Skip to content

Commit 06369bc

Browse files
vinodkoulbroonie
authored andcommitted
regulator: qcom-rpmh: Add support for SM8150
Add support from RPMH regulators found in SM8150 platform Signed-off-by: Vinod Koul <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent d566aae commit 06369bc

File tree

1 file changed

+147
-0
lines changed

1 file changed

+147
-0
lines changed

drivers/regulator/qcom-rpmh-regulator.c

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,72 @@ static const struct rpmh_vreg_hw_data pmic4_lvs = {
637637
/* LVS hardware does not support voltage or mode configuration. */
638638
};
639639

640+
static const struct rpmh_vreg_hw_data pmic5_pldo = {
641+
.regulator_type = VRM,
642+
.ops = &rpmh_regulator_vrm_drms_ops,
643+
.voltage_range = REGULATOR_LINEAR_RANGE(1504000, 0, 255, 8000),
644+
.n_voltages = 256,
645+
.hpm_min_load_uA = 10000,
646+
.pmic_mode_map = pmic_mode_map_pmic4_ldo,
647+
.of_map_mode = rpmh_regulator_pmic4_ldo_of_map_mode,
648+
};
649+
650+
static const struct rpmh_vreg_hw_data pmic5_pldo_lv = {
651+
.regulator_type = VRM,
652+
.ops = &rpmh_regulator_vrm_drms_ops,
653+
.voltage_range = REGULATOR_LINEAR_RANGE(1504000, 0, 62, 8000),
654+
.n_voltages = 63,
655+
.hpm_min_load_uA = 10000,
656+
.pmic_mode_map = pmic_mode_map_pmic4_ldo,
657+
.of_map_mode = rpmh_regulator_pmic4_ldo_of_map_mode,
658+
};
659+
660+
static const struct rpmh_vreg_hw_data pmic5_nldo = {
661+
.regulator_type = VRM,
662+
.ops = &rpmh_regulator_vrm_drms_ops,
663+
.voltage_range = REGULATOR_LINEAR_RANGE(320000, 0, 123, 8000),
664+
.n_voltages = 124,
665+
.hpm_min_load_uA = 30000,
666+
.pmic_mode_map = pmic_mode_map_pmic4_ldo,
667+
.of_map_mode = rpmh_regulator_pmic4_ldo_of_map_mode,
668+
};
669+
670+
static const struct rpmh_vreg_hw_data pmic5_hfsmps510 = {
671+
.regulator_type = VRM,
672+
.ops = &rpmh_regulator_vrm_ops,
673+
.voltage_range = REGULATOR_LINEAR_RANGE(320000, 0, 215, 8000),
674+
.n_voltages = 216,
675+
.pmic_mode_map = pmic_mode_map_pmic4_smps,
676+
.of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode,
677+
};
678+
679+
static const struct rpmh_vreg_hw_data pmic5_ftsmps510 = {
680+
.regulator_type = VRM,
681+
.ops = &rpmh_regulator_vrm_ops,
682+
.voltage_range = REGULATOR_LINEAR_RANGE(300000, 0, 263, 4000),
683+
.n_voltages = 264,
684+
.pmic_mode_map = pmic_mode_map_pmic4_smps,
685+
.of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode,
686+
};
687+
688+
static const struct rpmh_vreg_hw_data pmic5_hfsmps515 = {
689+
.regulator_type = VRM,
690+
.ops = &rpmh_regulator_vrm_ops,
691+
.voltage_range = REGULATOR_LINEAR_RANGE(2800000, 0, 4, 1600),
692+
.n_voltages = 5,
693+
.pmic_mode_map = pmic_mode_map_pmic4_smps,
694+
.of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode,
695+
};
696+
697+
static const struct rpmh_vreg_hw_data pmic5_bob = {
698+
.regulator_type = VRM,
699+
.ops = &rpmh_regulator_vrm_bypass_ops,
700+
.voltage_range = REGULATOR_LINEAR_RANGE(300000, 0, 135, 32000),
701+
.n_voltages = 135,
702+
.pmic_mode_map = pmic_mode_map_pmic4_bob,
703+
.of_map_mode = rpmh_regulator_pmic4_bob_of_map_mode,
704+
};
705+
640706
#define RPMH_VREG(_name, _resource_name, _hw_data, _supply_name) \
641707
{ \
642708
.name = _name, \
@@ -705,6 +771,75 @@ static const struct rpmh_vreg_init_data pm8005_vreg_data[] = {
705771
{},
706772
};
707773

774+
static const struct rpmh_vreg_init_data pm8150_vreg_data[] = {
775+
RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps510, "vdd-s1"),
776+
RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps510, "vdd-s2"),
777+
RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps510, "vdd-s3"),
778+
RPMH_VREG("smps4", "smp%s4", &pmic5_hfsmps510, "vdd-s4"),
779+
RPMH_VREG("smps5", "smp%s5", &pmic5_hfsmps510, "vdd-s5"),
780+
RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps510, "vdd-s6"),
781+
RPMH_VREG("smps7", "smp%s7", &pmic5_ftsmps510, "vdd-s7"),
782+
RPMH_VREG("smps8", "smp%s8", &pmic5_ftsmps510, "vdd-s8"),
783+
RPMH_VREG("smps9", "smp%s9", &pmic5_ftsmps510, "vdd-s9"),
784+
RPMH_VREG("smps10", "smp%s10", &pmic5_ftsmps510, "vdd-s10"),
785+
RPMH_VREG("ldo1", "ldo%s1", &pmic5_nldo, "vdd-l1-l8-l11"),
786+
RPMH_VREG("ldo2", "ldo%s2", &pmic5_pldo, "vdd-l2-l10"),
787+
RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo, "vdd-l3-l4-l5-l18"),
788+
RPMH_VREG("ldo4", "ldo%s4", &pmic5_nldo, "vdd-l3-l4-l5-l18"),
789+
RPMH_VREG("ldo5", "ldo%s5", &pmic5_nldo, "vdd-l3-l4-l5-l18"),
790+
RPMH_VREG("ldo6", "ldo%s6", &pmic5_nldo, "vdd-l6-l9"),
791+
RPMH_VREG("ldo7", "ldo%s7", &pmic5_pldo, "vdd-l7-l12-l14-l15"),
792+
RPMH_VREG("ldo8", "ldo%s8", &pmic5_nldo, "vdd-l1-l8-l11"),
793+
RPMH_VREG("ldo9", "ldo%s9", &pmic5_nldo, "vdd-l6-l9"),
794+
RPMH_VREG("ldo10", "ldo%s10", &pmic5_pldo, "vdd-l2-l10"),
795+
RPMH_VREG("ldo11", "ldo%s11", &pmic5_nldo, "vdd-l1-l8-l11"),
796+
RPMH_VREG("ldo12", "ldo%s12", &pmic5_pldo_lv, "vdd-l7-l12-l14-l15"),
797+
RPMH_VREG("ldo13", "ldo%s13", &pmic5_pldo, "vdd-l13-l6-l17"),
798+
RPMH_VREG("ldo14", "ldo%s14", &pmic5_pldo_lv, "vdd-l7-l12-l14-l15"),
799+
RPMH_VREG("ldo15", "ldo%s15", &pmic5_pldo_lv, "vdd-l7-l12-l14-l15"),
800+
RPMH_VREG("ldo16", "ldo%s16", &pmic5_pldo, "vdd-l13-l6-l17"),
801+
RPMH_VREG("ldo17", "ldo%s17", &pmic5_pldo, "vdd-l13-l6-l17"),
802+
RPMH_VREG("ldo18", "ldo%s18", &pmic5_nldo, "vdd-l3-l4-l5-l18"),
803+
{},
804+
};
805+
806+
static const struct rpmh_vreg_init_data pm8150l_vreg_data[] = {
807+
RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps510, "vdd-s1"),
808+
RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps510, "vdd-s2"),
809+
RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps510, "vdd-s3"),
810+
RPMH_VREG("smps4", "smp%s4", &pmic5_ftsmps510, "vdd-s4"),
811+
RPMH_VREG("smps5", "smp%s5", &pmic5_ftsmps510, "vdd-s5"),
812+
RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps510, "vdd-s6"),
813+
RPMH_VREG("smps7", "smp%s7", &pmic5_ftsmps510, "vdd-s7"),
814+
RPMH_VREG("smps8", "smp%s8", &pmic5_hfsmps510, "vdd-s8"),
815+
RPMH_VREG("ldo1", "ldo%s1", &pmic5_pldo_lv, "vdd-l1-l8"),
816+
RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo, "vdd-l2-l3"),
817+
RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo, "vdd-l2-l3"),
818+
RPMH_VREG("ldo4", "ldo%s4", &pmic5_pldo, "vdd-l4-l5-l6"),
819+
RPMH_VREG("ldo5", "ldo%s5", &pmic5_pldo, "vdd-l4-l5-l6"),
820+
RPMH_VREG("ldo6", "ldo%s6", &pmic5_pldo, "vdd-l4-l5-l6"),
821+
RPMH_VREG("ldo7", "ldo%s7", &pmic5_pldo, "vdd-l7-l11"),
822+
RPMH_VREG("ldo8", "ldo%s8", &pmic5_pldo_lv, "vdd-l1-l8-l11"),
823+
RPMH_VREG("ldo9", "ldo%s9", &pmic5_pldo, "vdd-l9-l10"),
824+
RPMH_VREG("ldo10", "ldo%s10", &pmic5_pldo, "vdd-l9-l10"),
825+
RPMH_VREG("ldo11", "ldo%s11", &pmic5_pldo, "vdd-l7-l11"),
826+
RPMH_VREG("bob", "bob%s1", &pmic5_bob, "vdd-bob"),
827+
{},
828+
};
829+
830+
static const struct rpmh_vreg_init_data pm8009_vreg_data[] = {
831+
RPMH_VREG("smps1", "smp%s1", &pmic5_hfsmps510, "vdd-s1"),
832+
RPMH_VREG("smps2", "smp%s2", &pmic5_hfsmps515, "vdd-s2"),
833+
RPMH_VREG("ldo1", "ldo%s1", &pmic5_nldo, "vdd-l1"),
834+
RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo, "vdd-l2"),
835+
RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo, "vdd-l3"),
836+
RPMH_VREG("ldo4", "ldo%s4", &pmic5_nldo, "vdd-l4"),
837+
RPMH_VREG("ldo5", "ldo%s5", &pmic5_pldo, "vdd-l5-l6"),
838+
RPMH_VREG("ldo6", "ldo%s6", &pmic5_pldo, "vdd-l5-l6"),
839+
RPMH_VREG("ldo7", "ldo%s6", &pmic5_pldo_lv, "vdd-l7"),
840+
{},
841+
};
842+
708843
static int rpmh_regulator_probe(struct platform_device *pdev)
709844
{
710845
struct device *dev = &pdev->dev;
@@ -755,6 +890,18 @@ static const struct of_device_id rpmh_regulator_match_table[] = {
755890
.compatible = "qcom,pm8005-rpmh-regulators",
756891
.data = pm8005_vreg_data,
757892
},
893+
{
894+
.compatible = "qcom,pm8150-rpmh-regulators",
895+
.data = pm8150_vreg_data,
896+
},
897+
{
898+
.compatible = "qcom,pm8150l-rpmh-regulators",
899+
.data = pm8150l_vreg_data,
900+
},
901+
{
902+
.compatible = "qcom,pm8009-rpmh-regulators",
903+
.data = pm8009_vreg_data,
904+
},
758905
{}
759906
};
760907
MODULE_DEVICE_TABLE(of, rpmh_regulator_match_table);

0 commit comments

Comments
 (0)