Skip to content

Commit

Permalink
regulator: empty the old suspend functions
Browse files Browse the repository at this point in the history
Regualtor suspend/resume functions should only be called by PM suspend
core via registering dev_pm_ops, and regulator devices should implement
the callback functions.  Thus, any regulator consumer shouldn't call
the regulator suspend/resume functions directly.

In order to avoid compile errors, two empty functions with the same name
still be left for the time being.

Signed-off-by: Chunyan Zhang <zhang.chunyan@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Chunyan Zhang authored and Mark Brown committed Jan 26, 2018
1 parent 72069f9 commit aa27bbc
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 77 deletions.
74 changes: 0 additions & 74 deletions drivers/regulator/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -4179,80 +4179,6 @@ void regulator_unregister(struct regulator_dev *rdev)
}
EXPORT_SYMBOL_GPL(regulator_unregister);

static int _regulator_suspend_prepare(struct device *dev, void *data)
{
struct regulator_dev *rdev = dev_to_rdev(dev);
const suspend_state_t *state = data;
int ret;

mutex_lock(&rdev->mutex);
ret = suspend_prepare(rdev, *state);
mutex_unlock(&rdev->mutex);

return ret;
}

/**
* regulator_suspend_prepare - prepare regulators for system wide suspend
* @state: system suspend state
*
* Configure each regulator with it's suspend operating parameters for state.
* This will usually be called by machine suspend code prior to supending.
*/
int regulator_suspend_prepare(suspend_state_t state)
{
/* ON is handled by regulator active state */
if (state == PM_SUSPEND_ON)
return -EINVAL;

return class_for_each_device(&regulator_class, NULL, &state,
_regulator_suspend_prepare);
}
EXPORT_SYMBOL_GPL(regulator_suspend_prepare);

static int _regulator_suspend_finish(struct device *dev, void *data)
{
struct regulator_dev *rdev = dev_to_rdev(dev);
int ret;

mutex_lock(&rdev->mutex);
if (rdev->use_count > 0 || rdev->constraints->always_on) {
if (!_regulator_is_enabled(rdev)) {
ret = _regulator_do_enable(rdev);
if (ret)
dev_err(dev,
"Failed to resume regulator %d\n",
ret);
}
} else {
if (!have_full_constraints())
goto unlock;
if (!_regulator_is_enabled(rdev))
goto unlock;

ret = _regulator_do_disable(rdev);
if (ret)
dev_err(dev, "Failed to suspend regulator %d\n", ret);
}
unlock:
mutex_unlock(&rdev->mutex);

/* Keep processing regulators in spite of any errors */
return 0;
}

/**
* regulator_suspend_finish - resume regulators from system wide suspend
*
* Turn on regulators that might be turned off by regulator_suspend_prepare
* and that should be turned on according to the regulators properties.
*/
int regulator_suspend_finish(void)
{
return class_for_each_device(&regulator_class, NULL, NULL,
_regulator_suspend_finish);
}
EXPORT_SYMBOL_GPL(regulator_suspend_finish);

/**
* regulator_has_full_constraints - the system has fully specified constraints
Expand Down
5 changes: 2 additions & 3 deletions include/linux/regulator/machine.h
Original file line number Diff line number Diff line change
Expand Up @@ -236,12 +236,12 @@ struct regulator_init_data {

#ifdef CONFIG_REGULATOR
void regulator_has_full_constraints(void);
int regulator_suspend_prepare(suspend_state_t state);
int regulator_suspend_finish(void);
#else
static inline void regulator_has_full_constraints(void)
{
}
#endif

static inline int regulator_suspend_prepare(suspend_state_t state)
{
return 0;
Expand All @@ -250,6 +250,5 @@ static inline int regulator_suspend_finish(void)
{
return 0;
}
#endif

#endif

0 comments on commit aa27bbc

Please sign in to comment.