|
@@ -132,6 +132,14 @@ static bool have_full_constraints(void)
|
|
return has_full_constraints || of_have_populated_dt();
|
|
return has_full_constraints || of_have_populated_dt();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static inline struct regulator_dev *rdev_get_supply(struct regulator_dev *rdev)
|
|
|
|
+{
|
|
|
|
+ if (rdev && rdev->supply)
|
|
|
|
+ return rdev->supply->rdev;
|
|
|
|
+
|
|
|
|
+ return NULL;
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* regulator_lock_supply - lock a regulator and its supplies
|
|
* regulator_lock_supply - lock a regulator and its supplies
|
|
* @rdev: regulator source
|
|
* @rdev: regulator source
|
|
@@ -140,8 +148,7 @@ static void regulator_lock_supply(struct regulator_dev *rdev)
|
|
{
|
|
{
|
|
int i;
|
|
int i;
|
|
|
|
|
|
- mutex_lock(&rdev->mutex);
|
|
|
|
- for (i = 1; rdev; rdev = rdev->supply->rdev, i++)
|
|
|
|
|
|
+ for (i = 0; rdev; rdev = rdev_get_supply(rdev), i++)
|
|
mutex_lock_nested(&rdev->mutex, i);
|
|
mutex_lock_nested(&rdev->mutex, i);
|
|
}
|
|
}
|
|
|
|
|