On Thu, Mar 20, 2014 at 01:45:08AM +0000, Greg Kroah-Hartman wrote: > > This is a note to let you know that I've just added the patch titled > > regulator: core: Replace direct ops->enable usage > > to the 3.4-stable tree which can be found at: > http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary > > The filename of the patch is: > regulator-core-replace-direct-ops-enable-usage.patch > and it can be found in the queue-3.4 subdirectory. > > If you, or anyone else, feels it should not be added to the stable tree, > please let <stable@xxxxxxxxxxxxxxx> know about it. > I'm not sure this patch is appropriate for the 3.4 kernel as it is tagged for 3.10+ kernels. Cheers, -- Luís > > From 30c219710358c5cca2f8bd2e9e547c6aadf7cf8b Mon Sep 17 00:00:00 2001 > From: Markus Pargmann <mpa@xxxxxxxxxxxxxx> > Date: Thu, 20 Feb 2014 17:36:03 +0100 > Subject: regulator: core: Replace direct ops->enable usage > > From: Markus Pargmann <mpa@xxxxxxxxxxxxxx> > > commit 30c219710358c5cca2f8bd2e9e547c6aadf7cf8b upstream. > > There are some direct ops->enable in the regulator core driver. This is > a potential issue as the function _regulator_do_enable() handles gpio > regulators and the normal ops->enable calls. These gpio regulators are > simply ignored when ops->enable is called directly. > > One possible bug is that boot-on and always-on gpio regulators are not > enabled on registration. > > This patch replaces all ops->enable calls by _regulator_do_enable. > > [Handle missing enable operations -- broonie] > > Signed-off-by: Markus Pargmann <mpa@xxxxxxxxxxxxxx> > Signed-off-by: Mark Brown <broonie@xxxxxxxxxx> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > > > --- > drivers/regulator/core.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > --- a/drivers/regulator/core.c > +++ b/drivers/regulator/core.c > @@ -894,6 +894,8 @@ static int machine_constraints_voltage(s > return 0; > } > > +static int _regulator_do_enable(struct regulator_dev *rdev); > + > /** > * set_machine_constraints - sets regulator constraints > * @rdev: regulator source > @@ -950,10 +952,9 @@ static int set_machine_constraints(struc > /* If the constraints say the regulator should be on at this point > * and we have control then make sure it is enabled. > */ > - if ((rdev->constraints->always_on || rdev->constraints->boot_on) && > - ops->enable) { > - ret = ops->enable(rdev); > - if (ret < 0) { > + if (rdev->constraints->always_on || rdev->constraints->boot_on) { > + ret = _regulator_do_enable(rdev); > + if (ret < 0 && ret != -EINVAL) { > rdev_err(rdev, "failed to enable\n"); > goto out; > } > @@ -3061,9 +3062,8 @@ int regulator_suspend_finish(void) > struct regulator_ops *ops = rdev->desc->ops; > > mutex_lock(&rdev->mutex); > - if ((rdev->use_count > 0 || rdev->constraints->always_on) && > - ops->enable) { > - error = ops->enable(rdev); > + if (rdev->use_count > 0 || rdev->constraints->always_on) { > + error = _regulator_do_enable(rdev); > if (error) > ret = error; > } else { > > > Patches currently in stable-queue which might be from mpa@xxxxxxxxxxxxxx are > > queue-3.4/regulator-core-replace-direct-ops-enable-usage.patch > -- > To unsubscribe from this list: send the line "unsubscribe stable" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html