Skip to content

Commit

Permalink
regulator: Fix support for deviceless supply mappings
Browse files Browse the repository at this point in the history
The patch to add support for looking up consumers by device name
had the side effect of causing us to require a device which is
at best premature since at least cpufreq still operates outside
the device model. Remove that requirement.

Reported-by: Haojian Zhuang <haojian.zhuang@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
  • Loading branch information
Mark Brown authored and Liam Girdwood committed Sep 22, 2009
1 parent 6bf87d1 commit 9ed2099
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions drivers/regulator/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -872,6 +872,7 @@ static int set_consumer_device_supply(struct regulator_dev *rdev,
const char *supply)
{
struct regulator_map *node;
int has_dev;

if (consumer_dev && consumer_dev_name)
return -EINVAL;
Expand All @@ -882,6 +883,11 @@ static int set_consumer_device_supply(struct regulator_dev *rdev,
if (supply == NULL)
return -EINVAL;

if (consumer_dev_name != NULL)
has_dev = 1;
else
has_dev = 0;

list_for_each_entry(node, &regulator_map_list, list) {
if (consumer_dev_name != node->dev_name)
continue;
Expand All @@ -896,17 +902,19 @@ static int set_consumer_device_supply(struct regulator_dev *rdev,
return -EBUSY;
}

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

node->regulator = rdev;
node->dev_name = kstrdup(consumer_dev_name, GFP_KERNEL);
node->supply = supply;

if (node->dev_name == NULL) {
kfree(node);
return -ENOMEM;
if (has_dev) {
node->dev_name = kstrdup(consumer_dev_name, GFP_KERNEL);
if (node->dev_name == NULL) {
kfree(node);
return -ENOMEM;
}
}

list_add(&node->list, &regulator_map_list);
Expand Down

0 comments on commit 9ed2099

Please sign in to comment.