Merge tag 'regulator-fix-v4.7-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator

Pull regulator fixes from Mark Brown:
"Some driver specific fixes for the regulator subsystem:

- Some of the changes to the core that were merged in the last merge
window exposed the fact that the qcom-smd driver hadn't implemented
the voltage enumeration interfaces like it should. Since it's a
simple driver specific fix to implement them do that.

- Fix the ramp delay configuration for tps51632"

* tag 'regulator-fix-v4.7-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
regulator: qcom_smd: add list_voltage callback
regulator: qcom_smd: add regulator ops for pm8941 lnldo
regulator: qcom_smd: add list_voltage callback
regulator: tps51632: Fix setting ramp delay

+20 -4
+14 -1
drivers/regulator/qcom_smd-regulator.c
··· 140 .enable = rpm_reg_enable, 141 .disable = rpm_reg_disable, 142 .is_enabled = rpm_reg_is_enabled, 143 144 .get_voltage = rpm_reg_get_voltage, 145 .set_voltage = rpm_reg_set_voltage, ··· 260 static const struct regulator_desc pm8941_lnldo = { 261 .fixed_uV = 1740000, 262 .n_voltages = 1, 263 - .ops = &rpm_smps_ldo_ops, 264 }; 265 266 static const struct regulator_desc pm8941_switch = {
··· 140 .enable = rpm_reg_enable, 141 .disable = rpm_reg_disable, 142 .is_enabled = rpm_reg_is_enabled, 143 + .list_voltage = regulator_list_voltage_linear_range, 144 + 145 + .get_voltage = rpm_reg_get_voltage, 146 + .set_voltage = rpm_reg_set_voltage, 147 + 148 + .set_load = rpm_reg_set_load, 149 + }; 150 + 151 + static const struct regulator_ops rpm_smps_ldo_ops_fixed = { 152 + .enable = rpm_reg_enable, 153 + .disable = rpm_reg_disable, 154 + .is_enabled = rpm_reg_is_enabled, 155 + .list_voltage = regulator_list_voltage_linear_range, 156 157 .get_voltage = rpm_reg_get_voltage, 158 .set_voltage = rpm_reg_set_voltage, ··· 247 static const struct regulator_desc pm8941_lnldo = { 248 .fixed_uV = 1740000, 249 .n_voltages = 1, 250 + .ops = &rpm_smps_ldo_ops_fixed, 251 }; 252 253 static const struct regulator_desc pm8941_switch = {
+6 -3
drivers/regulator/tps51632-regulator.c
··· 94 int ramp_delay) 95 { 96 struct tps51632_chip *tps = rdev_get_drvdata(rdev); 97 - int bit = ramp_delay/6000; 98 int ret; 99 100 - if (bit) 101 - bit--; 102 ret = regmap_write(tps->regmap, TPS51632_SLEW_REGS, BIT(bit)); 103 if (ret < 0) 104 dev_err(tps->dev, "SLEW reg write failed, err %d\n", ret);
··· 94 int ramp_delay) 95 { 96 struct tps51632_chip *tps = rdev_get_drvdata(rdev); 97 + int bit; 98 int ret; 99 100 + if (ramp_delay == 0) 101 + bit = 0; 102 + else 103 + bit = DIV_ROUND_UP(ramp_delay, 6000) - 1; 104 + 105 ret = regmap_write(tps->regmap, TPS51632_SLEW_REGS, BIT(bit)); 106 if (ret < 0) 107 dev_err(tps->dev, "SLEW reg write failed, err %d\n", ret);