Re: [PATCH] regulator: Support ramp-up delay for drivers with get_voltage()

From: Stephen Boyd
Date: Wed Mar 30 2016 - 14:17:19 EST


Quoting Mark Brown (2016-03-30 10:36:58)
> On Wed, Mar 30, 2016 at 05:23:12PM +0300, Georgi Djakov wrote:
>
> > + } else if (_regulator_is_enabled(rdev) &&
> > + rdev->desc->ops->set_voltage_time_sel &&
> > + rdev->desc->ops->get_voltage) {
> > + int uV = rdev->desc->ops->get_voltage(rdev);
> > +
> > + if (uV > 0) {
> > + old_selector = regulator_map_voltage(rdev, uV, uV);
> > + if (old_selector < 0)
> > + return old_selector;
> > + }
>
> If a driver is using selectors it should use selectors uninformly, it
> should not mix and match selector and raw voltage interfaces. If we
> the set and get operations are not symmetric I'd expect we're going to
> run into problems sooner rather than later.

This is for the qcom spmi regulator driver. I seem to have put in the
set_voltage_time_sel op but missed the fact that the regulator core
wasn't calling that op to find out how much time to delay. So we have
raw voltage set and get ops and this selector based delay op.

Do we need to change the ops to be selector based if we want the
regulator core to delay after changing voltages? Or do we need to put
the delay directly into the set_voltage() op in the driver?