Merge remote-tracking branches 'regulator/fix/gpio-enable' and 'regulator/fix/tps65910' into regulator-linus
This commit is contained in:
commit
8ca8f32666
2 changed files with 18 additions and 17 deletions
|
@ -1839,10 +1839,12 @@ static int _regulator_do_enable(struct regulator_dev *rdev)
|
|||
}
|
||||
|
||||
if (rdev->ena_pin) {
|
||||
ret = regulator_ena_gpio_ctrl(rdev, true);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
rdev->ena_gpio_state = 1;
|
||||
if (!rdev->ena_gpio_state) {
|
||||
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);
|
||||
if (ret < 0)
|
||||
|
@ -1939,10 +1941,12 @@ static int _regulator_do_disable(struct regulator_dev *rdev)
|
|||
trace_regulator_disable(rdev_get_name(rdev));
|
||||
|
||||
if (rdev->ena_pin) {
|
||||
ret = regulator_ena_gpio_ctrl(rdev, false);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
rdev->ena_gpio_state = 0;
|
||||
if (rdev->ena_gpio_state) {
|
||||
ret = regulator_ena_gpio_ctrl(rdev, false);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
rdev->ena_gpio_state = 0;
|
||||
}
|
||||
|
||||
} else if (rdev->desc->ops->disable) {
|
||||
ret = rdev->desc->ops->disable(rdev);
|
||||
|
@ -3626,12 +3630,6 @@ regulator_register(const struct regulator_desc *regulator_desc,
|
|||
config->ena_gpio, ret);
|
||||
goto wash;
|
||||
}
|
||||
|
||||
if (config->ena_gpio_flags & GPIOF_OUT_INIT_HIGH)
|
||||
rdev->ena_gpio_state = 1;
|
||||
|
||||
if (config->ena_gpio_invert)
|
||||
rdev->ena_gpio_state = !rdev->ena_gpio_state;
|
||||
}
|
||||
|
||||
/* set regulator constraints */
|
||||
|
@ -3800,9 +3798,11 @@ int regulator_suspend_finish(void)
|
|||
list_for_each_entry(rdev, ®ulator_list, list) {
|
||||
mutex_lock(&rdev->mutex);
|
||||
if (rdev->use_count > 0 || rdev->constraints->always_on) {
|
||||
error = _regulator_do_enable(rdev);
|
||||
if (error)
|
||||
ret = error;
|
||||
if (!_regulator_is_enabled(rdev)) {
|
||||
error = _regulator_do_enable(rdev);
|
||||
if (error)
|
||||
ret = error;
|
||||
}
|
||||
} else {
|
||||
if (!have_full_constraints())
|
||||
goto unlock;
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regulator/driver.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
|
|
Loading…
Reference in a new issue