Skip to content

Commit 102dd11

Browse files
andredbroonie
authored andcommitted
regulator: s2mps11: refactor S2MPG10 regulator macros for S2MPG11 reuse
Rails in the S2MPG11 share a very similar set of properties with S2MPG10 with slight differences. Update the existing macros to allow reuse by the upcoming S2MPG11 driver. Signed-off-by: André Draszik <andre.draszik@linaro.org> Link: https://patch.msgid.link/20260122-s2mpg1x-regulators-v7-18-3b1f9831fffd@linaro.org Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 8f23cfb commit 102dd11

1 file changed

Lines changed: 42 additions & 27 deletions

File tree

drivers/regulator/s2mps11.c

Lines changed: 42 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -655,31 +655,44 @@ static const struct regulator_ops s2mpg10_reg_buck_ops[] = {
655655
* (12.5mV/μs) while our ::set_voltage_time() takes the value in ramp_reg
656656
* into account.
657657
*/
658-
#define regulator_desc_s2mpg10_buck(_num, _vrange, _r_reg) { \
659-
.name = "buck"#_num "m", \
660-
.supply_name = "vinb"#_num "m", \
661-
.of_match = of_match_ptr("buck"#_num "m"), \
658+
#define regulator_desc_s2mpg1x_buck_cmn(_name, _id, _supply, _ops, \
659+
_vrange, _vsel_reg, _vsel_mask, _en_reg, _en_mask, \
660+
_r_reg, _r_mask, _r_table, _r_table_sz, \
661+
_en_time) { \
662+
.name = "buck" _name, \
663+
.supply_name = _supply, \
664+
.of_match = of_match_ptr("buck" _name), \
662665
.regulators_node = of_match_ptr("regulators"), \
663666
.of_parse_cb = s2mpg10_of_parse_cb, \
664-
.id = S2MPG10_BUCK##_num, \
665-
.ops = &s2mpg10_reg_buck_ops[0], \
667+
.id = _id, \
668+
.ops = &(_ops)[0], \
666669
.type = REGULATOR_VOLTAGE, \
667670
.owner = THIS_MODULE, \
668671
.linear_ranges = _vrange, \
669672
.n_linear_ranges = ARRAY_SIZE(_vrange), \
670673
.n_voltages = _vrange##_count, \
671-
.vsel_reg = S2MPG10_PMIC_B##_num##M_OUT1, \
672-
.vsel_mask = 0xff, \
673-
.enable_reg = S2MPG10_PMIC_B##_num##M_CTRL, \
674-
.enable_mask = GENMASK(7, 6), \
675-
.ramp_reg = S2MPG10_PMIC_##_r_reg, \
676-
.ramp_mask = s2mpg10_buck_to_ramp_mask(S2MPG10_BUCK##_num \
677-
- S2MPG10_BUCK1), \
678-
.ramp_delay_table = s2mpg10_buck_ramp_table, \
679-
.n_ramp_values = ARRAY_SIZE(s2mpg10_buck_ramp_table), \
680-
.enable_time = 30, /* + V/enable_ramp_rate */ \
674+
.vsel_reg = _vsel_reg, \
675+
.vsel_mask = _vsel_mask, \
676+
.enable_reg = _en_reg, \
677+
.enable_mask = _en_mask, \
678+
.ramp_reg = _r_reg, \
679+
.ramp_mask = _r_mask, \
680+
.ramp_delay_table = _r_table, \
681+
.n_ramp_values = _r_table_sz, \
682+
.enable_time = _en_time, /* + V/enable_ramp_rate */ \
681683
}
682684

685+
#define regulator_desc_s2mpg10_buck(_num, _vrange, _r_reg) \
686+
regulator_desc_s2mpg1x_buck_cmn(#_num "m", S2MPG10_BUCK##_num, \
687+
"vinb"#_num "m", s2mpg10_reg_buck_ops, _vrange, \
688+
S2MPG10_PMIC_B##_num##M_OUT1, GENMASK(7, 0), \
689+
S2MPG10_PMIC_B##_num##M_CTRL, GENMASK(7, 6), \
690+
S2MPG10_PMIC_##_r_reg, \
691+
s2mpg10_buck_to_ramp_mask(S2MPG10_BUCK##_num \
692+
- S2MPG10_BUCK1), \
693+
s2mpg10_buck_ramp_table, \
694+
ARRAY_SIZE(s2mpg10_buck_ramp_table), 30)
695+
683696
#define s2mpg10_regulator_desc_buck_cm(_num, _vrange, _r_reg) \
684697
.desc = regulator_desc_s2mpg10_buck(_num, _vrange, _r_reg), \
685698
.enable_ramp_rate = 12500
@@ -743,24 +756,24 @@ static const struct regulator_ops s2mpg10_reg_ldo_ramp_ops[] = {
743756
}
744757
};
745758

746-
#define regulator_desc_s2mpg10_ldo_cmn(_num, _supply, _ops, _vrange, \
747-
_vsel_reg_sfx, _vsel_mask, _en_reg, _en_mask, \
759+
#define regulator_desc_s2mpg1x_ldo_cmn(_name, _id, _supply, _ops, \
760+
_vrange, _vsel_reg, _vsel_mask, _en_reg, _en_mask, \
748761
_ramp_delay, _r_reg, _r_mask, _r_table, _r_table_sz) { \
749-
.name = "ldo"#_num "m", \
762+
.name = "ldo" _name, \
750763
.supply_name = _supply, \
751-
.of_match = of_match_ptr("ldo"#_num "m"), \
764+
.of_match = of_match_ptr("ldo" _name), \
752765
.regulators_node = of_match_ptr("regulators"), \
753766
.of_parse_cb = s2mpg10_of_parse_cb, \
754-
.id = S2MPG10_LDO##_num, \
767+
.id = _id, \
755768
.ops = &(_ops)[0], \
756769
.type = REGULATOR_VOLTAGE, \
757770
.owner = THIS_MODULE, \
758771
.linear_ranges = _vrange, \
759772
.n_linear_ranges = ARRAY_SIZE(_vrange), \
760773
.n_voltages = _vrange##_count, \
761-
.vsel_reg = S2MPG10_PMIC_L##_num##M_##_vsel_reg_sfx, \
774+
.vsel_reg = _vsel_reg, \
762775
.vsel_mask = _vsel_mask, \
763-
.enable_reg = S2MPG10_PMIC_##_en_reg, \
776+
.enable_reg = _en_reg, \
764777
.enable_mask = _en_mask, \
765778
.ramp_delay = _ramp_delay, \
766779
.ramp_reg = _r_reg, \
@@ -775,10 +788,12 @@ static const struct regulator_ops s2mpg10_reg_ldo_ramp_ops[] = {
775788
_ramp_delay, _r_reg, _r_mask, _r_table, _r_table_sz, \
776789
_pc_reg, _pc_mask) \
777790
[S2MPG10_LDO##_num] = { \
778-
.desc = regulator_desc_s2mpg10_ldo_cmn(_num, _supply, \
779-
_ops, \
780-
_vrange, _vsel_reg_sfx, _vsel_mask, \
781-
_en_reg, _en_mask, \
791+
.desc = regulator_desc_s2mpg1x_ldo_cmn(#_num "m", \
792+
S2MPG10_LDO##_num, _supply, _ops, \
793+
_vrange, \
794+
S2MPG10_PMIC_L##_num##M_##_vsel_reg_sfx, \
795+
_vsel_mask, \
796+
S2MPG10_PMIC_##_en_reg, _en_mask, \
782797
_ramp_delay, _r_reg, _r_mask, _r_table, \
783798
_r_table_sz), \
784799
.pctrlsel_reg = _pc_reg, \

0 commit comments

Comments
 (0)