Skip to content

Commit

Permalink
regulator: virtual: Convert to use devm_* APIs
Browse files Browse the repository at this point in the history
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Axel Lin authored and Mark Brown committed Apr 18, 2012
1 parent 5abe0c4 commit a81edbd
Showing 1 changed file with 5 additions and 13 deletions.
18 changes: 5 additions & 13 deletions drivers/regulator/virtual.c
Original file line number Diff line number Diff line change
Expand Up @@ -291,39 +291,34 @@ static int __devinit regulator_virtual_probe(struct platform_device *pdev)
struct virtual_consumer_data *drvdata;
int ret;

drvdata = kzalloc(sizeof(struct virtual_consumer_data), GFP_KERNEL);
drvdata = devm_kzalloc(&pdev->dev, sizeof(struct virtual_consumer_data),
GFP_KERNEL);
if (drvdata == NULL)
return -ENOMEM;

mutex_init(&drvdata->lock);

drvdata->regulator = regulator_get(&pdev->dev, reg_id);
drvdata->regulator = devm_regulator_get(&pdev->dev, reg_id);
if (IS_ERR(drvdata->regulator)) {
ret = PTR_ERR(drvdata->regulator);
dev_err(&pdev->dev, "Failed to obtain supply '%s': %d\n",
reg_id, ret);
goto err;
return ret;
}

ret = sysfs_create_group(&pdev->dev.kobj,
&regulator_virtual_attr_group);
if (ret != 0) {
dev_err(&pdev->dev,
"Failed to create attribute group: %d\n", ret);
goto err_regulator;
return ret;
}

drvdata->mode = regulator_get_mode(drvdata->regulator);

platform_set_drvdata(pdev, drvdata);

return 0;

err_regulator:
regulator_put(drvdata->regulator);
err:
kfree(drvdata);
return ret;
}

static int __devexit regulator_virtual_remove(struct platform_device *pdev)
Expand All @@ -334,9 +329,6 @@ static int __devexit regulator_virtual_remove(struct platform_device *pdev)

if (drvdata->enabled)
regulator_disable(drvdata->regulator);
regulator_put(drvdata->regulator);

kfree(drvdata);

platform_set_drvdata(pdev, NULL);

Expand Down

0 comments on commit a81edbd

Please sign in to comment.