Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6001e13c authored by David Brownell's avatar David Brownell Committed by Liam Girdwood
Browse files

regulator: catch some registration errors



Prevent registration of duplicate "struct regulator" names.
They'd be unavailable, and clearly indicate something wrong.

[Edited to remove check for NULL consumer device until we have a
solution for things like cpufreq -- broonie]

Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
parent 9fe5817f
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -776,6 +776,20 @@ static int set_consumer_device_supply(struct regulator_dev *rdev,
	if (supply == NULL)
		return -EINVAL;

	list_for_each_entry(node, &regulator_map_list, list) {
		if (consumer_dev != node->dev)
			continue;
		if (strcmp(node->supply, supply) != 0)
			continue;

		dev_dbg(consumer_dev, "%s/%s is '%s' supply; fail %s/%s\n",
				dev_name(&node->regulator->dev),
				node->regulator->desc->name,
				supply,
				dev_name(&rdev->dev), rdev->desc->name);
		return -EBUSY;
	}

	node = kmalloc(sizeof(struct regulator_map), GFP_KERNEL);
	if (node == NULL)
		return -ENOMEM;