Currently, when looking up a regulator supply, the regulator name takes priority over the consumer mappings. As there are a lot of regulator names that are in fairly common use (VDD, MICVDD, etc.) this can easily lead to obtaining the wrong supply, when a system contains two regulators that share a name.
The explicit consumer mappings contain much less ambiguity as they specify both a name and a consumer device. As such prioritise those if one exists and only fall back to the regulator name if there are no matching explicit mappings. Signed-off-by: Charles Keepax <[email protected]> --- drivers/regulator/core.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 919b7f1..d257952 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -1490,8 +1490,6 @@ static struct regulator_dev *regulator_dev_lookup(struct device *dev, devname = dev_name(dev); r = regulator_lookup_by_name(supply); - if (r) - return r; mutex_lock(®ulator_list_mutex); list_for_each_entry(map, ®ulator_map_list, list) { -- 2.1.4

