On Sun, Feb 16, 2014 at 08:00:56PM +0100, Markus Pargmann wrote: Please use more standard subject lines, don't do things like "core bugfix", just write a normal changelog. > +static int _regulator_do_enable_no_delay(struct regulator_dev *rdev) > +{ > + int ret; > + > + if (rdev->ena_pin) { > + ret = regulator_ena_gpio_ctrl(rdev, true); > + if (ret < 0) > + return ret; > + rdev->ena_gpio_state = 1; > + } else if (rdev->desc->ops->enable) { > + ret = rdev->desc->ops->enable(rdev); > + } else { > + ret = -EINVAL; > + } > + > + return ret; > +} I don't understand this. Why is this called _no_delay() and why don't we want to delay when applying constraints? We don't want to ever be in a position where we think a supply is enabled but it has in fact not finished ramping, and of course enable() may in fact be blocking anyway. The use of the common code to do enable is good fix but this just seems odd.