regulator: core: Don't allow to get regulator until all couples resolved

Don't allow to get regulator until all of its couples resolved because
consumer will get EPERM and coupling shall be transparent for the drivers.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Dmitry Osipenko 2018-10-05 18:36:31 +03:00 committed by Mark Brown
parent f9503385b1
commit 79d6f049f4
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -1747,6 +1747,16 @@ struct regulator *_regulator_get(struct device *dev, const char *id,
return regulator; return regulator;
} }
mutex_lock(&regulator_list_mutex);
ret = (rdev->coupling_desc.n_resolved != rdev->coupling_desc.n_coupled);
mutex_unlock(&regulator_list_mutex);
if (ret != 0) {
regulator = ERR_PTR(-EPROBE_DEFER);
put_device(&rdev->dev);
return regulator;
}
ret = regulator_resolve_supply(rdev); ret = regulator_resolve_supply(rdev);
if (ret < 0) { if (ret < 0) {
regulator = ERR_PTR(ret); regulator = ERR_PTR(ret);