aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/regulator/core.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index c9f72019bd68..68b616580533 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -640,6 +640,8 @@ static int drms_uA_update(struct regulator_dev *rdev)
640 int current_uA = 0, output_uV, input_uV, err; 640 int current_uA = 0, output_uV, input_uV, err;
641 unsigned int mode; 641 unsigned int mode;
642 642
643 lockdep_assert_held_once(&rdev->mutex);
644
643 /* 645 /*
644 * first check to see if we can set modes at all, otherwise just 646 * first check to see if we can set modes at all, otherwise just
645 * tell the consumer everything is OK. 647 * tell the consumer everything is OK.
@@ -760,6 +762,8 @@ static int suspend_set_state(struct regulator_dev *rdev,
760/* locks held by caller */ 762/* locks held by caller */
761static int suspend_prepare(struct regulator_dev *rdev, suspend_state_t state) 763static int suspend_prepare(struct regulator_dev *rdev, suspend_state_t state)
762{ 764{
765 lockdep_assert_held_once(&rdev->mutex);
766
763 if (!rdev->constraints) 767 if (!rdev->constraints)
764 return -EINVAL; 768 return -EINVAL;
765 769
@@ -1587,6 +1591,8 @@ static void _regulator_put(struct regulator *regulator)
1587 if (regulator == NULL || IS_ERR(regulator)) 1591 if (regulator == NULL || IS_ERR(regulator))
1588 return; 1592 return;
1589 1593
1594 lockdep_assert_held_once(&regulator_list_mutex);
1595
1590 rdev = regulator->rdev; 1596 rdev = regulator->rdev;
1591 1597
1592 debugfs_remove_recursive(regulator->debugfs); 1598 debugfs_remove_recursive(regulator->debugfs);
@@ -1965,6 +1971,8 @@ static int _regulator_enable(struct regulator_dev *rdev)
1965{ 1971{
1966 int ret; 1972 int ret;
1967 1973
1974 lockdep_assert_held_once(&rdev->mutex);
1975
1968 /* check voltage and requested load before enabling */ 1976 /* check voltage and requested load before enabling */
1969 if (rdev->constraints && 1977 if (rdev->constraints &&
1970 (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS)) 1978 (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_DRMS))
@@ -2065,6 +2073,8 @@ static int _regulator_disable(struct regulator_dev *rdev)
2065{ 2073{
2066 int ret = 0; 2074 int ret = 0;
2067 2075
2076 lockdep_assert_held_once(&rdev->mutex);
2077
2068 if (WARN(rdev->use_count <= 0, 2078 if (WARN(rdev->use_count <= 0,
2069 "unbalanced disables for %s\n", rdev_get_name(rdev))) 2079 "unbalanced disables for %s\n", rdev_get_name(rdev)))
2070 return -EIO; 2080 return -EIO;
@@ -2143,6 +2153,8 @@ static int _regulator_force_disable(struct regulator_dev *rdev)
2143{ 2153{
2144 int ret = 0; 2154 int ret = 0;
2145 2155
2156 lockdep_assert_held_once(&rdev->mutex);
2157
2146 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE | 2158 ret = _notifier_call_chain(rdev, REGULATOR_EVENT_FORCE_DISABLE |
2147 REGULATOR_EVENT_PRE_DISABLE, NULL); 2159 REGULATOR_EVENT_PRE_DISABLE, NULL);
2148 if (ret & NOTIFY_STOP_MASK) 2160 if (ret & NOTIFY_STOP_MASK)
@@ -3439,6 +3451,8 @@ EXPORT_SYMBOL_GPL(regulator_bulk_free);
3439int regulator_notifier_call_chain(struct regulator_dev *rdev, 3451int regulator_notifier_call_chain(struct regulator_dev *rdev,
3440 unsigned long event, void *data) 3452 unsigned long event, void *data)
3441{ 3453{
3454 lockdep_assert_held_once(&rdev->mutex);
3455
3442 _notifier_call_chain(rdev, event, data); 3456 _notifier_call_chain(rdev, event, data);
3443 return NOTIFY_DONE; 3457 return NOTIFY_DONE;
3444 3458