Merge remote-tracking branch 'regulator/topic/devm' into regulator-next

This commit is contained in:
Mark Brown 2013-10-24 11:11:35 +01:00
Родитель 3242a86170 5e0855759c
Коммит b735e47f6e
14 изменённых файлов: 29 добавлений и 189 удалений

Просмотреть файл

@ -535,7 +535,7 @@ static int ab3100_regulator_register(struct platform_device *pdev,
config.dev = &pdev->dev; config.dev = &pdev->dev;
config.driver_data = reg; config.driver_data = reg;
rdev = regulator_register(desc, &config); rdev = devm_regulator_register(&pdev->dev, desc, &config);
if (IS_ERR(rdev)) { if (IS_ERR(rdev)) {
err = PTR_ERR(rdev); err = PTR_ERR(rdev);
dev_err(&pdev->dev, dev_err(&pdev->dev,
@ -616,7 +616,6 @@ static int ab3100_regulators_remove(struct platform_device *pdev)
for (i = 0; i < AB3100_NUM_REGULATORS; i++) { for (i = 0; i < AB3100_NUM_REGULATORS; i++) {
struct ab3100_regulator *reg = &ab3100_regulators[i]; struct ab3100_regulator *reg = &ab3100_regulators[i];
regulator_unregister(reg->rdev);
reg->rdev = NULL; reg->rdev = NULL;
} }
return 0; return 0;

Просмотреть файл

@ -413,16 +413,12 @@ static int ab8500_ext_regulator_probe(struct platform_device *pdev)
&pdata->ext_regulator[i]; &pdata->ext_regulator[i];
/* register regulator with framework */ /* register regulator with framework */
info->rdev = regulator_register(&info->desc, &config); info->rdev = devm_regulator_register(&pdev->dev, &info->desc,
&config);
if (IS_ERR(info->rdev)) { if (IS_ERR(info->rdev)) {
err = PTR_ERR(info->rdev); err = PTR_ERR(info->rdev);
dev_err(&pdev->dev, "failed to register regulator %s\n", dev_err(&pdev->dev, "failed to register regulator %s\n",
info->desc.name); info->desc.name);
/* when we fail, un-register all earlier regulators */
while (--i >= 0) {
info = &ab8500_ext_regulator_info[i];
regulator_unregister(info->rdev);
}
return err; return err;
} }
@ -433,26 +429,8 @@ static int ab8500_ext_regulator_probe(struct platform_device *pdev)
return 0; return 0;
} }
static int ab8500_ext_regulator_remove(struct platform_device *pdev)
{
int i;
for (i = 0; i < ARRAY_SIZE(ab8500_ext_regulator_info); i++) {
struct ab8500_ext_regulator_info *info = NULL;
info = &ab8500_ext_regulator_info[i];
dev_vdbg(rdev_get_dev(info->rdev),
"%s-remove\n", info->desc.name);
regulator_unregister(info->rdev);
}
return 0;
}
static struct platform_driver ab8500_ext_regulator_driver = { static struct platform_driver ab8500_ext_regulator_driver = {
.probe = ab8500_ext_regulator_probe, .probe = ab8500_ext_regulator_probe,
.remove = ab8500_ext_regulator_remove,
.driver = { .driver = {
.name = "ab8500-ext-regulator", .name = "ab8500-ext-regulator",
.owner = THIS_MODULE, .owner = THIS_MODULE,

Просмотреть файл

@ -847,13 +847,13 @@ static int da9063_regulator_probe(struct platform_device *pdev)
if (da9063_reg_matches) if (da9063_reg_matches)
config.of_node = da9063_reg_matches[id].of_node; config.of_node = da9063_reg_matches[id].of_node;
config.regmap = da9063->regmap; config.regmap = da9063->regmap;
regl->rdev = regulator_register(&regl->desc, &config); regl->rdev = devm_regulator_register(&pdev->dev, &regl->desc,
&config);
if (IS_ERR(regl->rdev)) { if (IS_ERR(regl->rdev)) {
dev_err(&pdev->dev, dev_err(&pdev->dev,
"Failed to register %s regulator\n", "Failed to register %s regulator\n",
regl->desc.name); regl->desc.name);
ret = PTR_ERR(regl->rdev); return PTR_ERR(regl->rdev);
goto err;
} }
id++; id++;
n++; n++;
@ -862,9 +862,8 @@ static int da9063_regulator_probe(struct platform_device *pdev)
/* LDOs overcurrent event support */ /* LDOs overcurrent event support */
irq = platform_get_irq_byname(pdev, "LDO_LIM"); irq = platform_get_irq_byname(pdev, "LDO_LIM");
if (irq < 0) { if (irq < 0) {
ret = irq;
dev_err(&pdev->dev, "Failed to get IRQ.\n"); dev_err(&pdev->dev, "Failed to get IRQ.\n");
goto err; return irq;
} }
regulators->irq_ldo_lim = regmap_irq_get_virq(da9063->regmap_irq, irq); regulators->irq_ldo_lim = regmap_irq_get_virq(da9063->regmap_irq, irq);
@ -881,27 +880,15 @@ static int da9063_regulator_probe(struct platform_device *pdev)
} }
return 0; return 0;
err:
/* Wind back regulators registeration */
while (--n >= 0)
regulator_unregister(regulators->regulator[n].rdev);
return ret;
} }
static int da9063_regulator_remove(struct platform_device *pdev) static int da9063_regulator_remove(struct platform_device *pdev)
{ {
struct da9063_regulators *regulators = platform_get_drvdata(pdev); struct da9063_regulators *regulators = platform_get_drvdata(pdev);
struct da9063_regulator *regl;
free_irq(regulators->irq_ldo_lim, regulators); free_irq(regulators->irq_ldo_lim, regulators);
free_irq(regulators->irq_uvov, regulators); free_irq(regulators->irq_uvov, regulators);
for (regl = &regulators->regulator[regulators->n_regulators - 1];
regl >= &regulators->regulator[0]; regl--)
regulator_unregister(regl->rdev);
return 0; return 0;
} }

Просмотреть файл

@ -155,7 +155,7 @@ static int da9210_i2c_probe(struct i2c_client *i2c,
config.regmap = chip->regmap; config.regmap = chip->regmap;
config.of_node = dev->of_node; config.of_node = dev->of_node;
rdev = regulator_register(&da9210_reg, &config); rdev = devm_regulator_register(&i2c->dev, &da9210_reg, &config);
if (IS_ERR(rdev)) { if (IS_ERR(rdev)) {
dev_err(&i2c->dev, "Failed to register DA9210 regulator\n"); dev_err(&i2c->dev, "Failed to register DA9210 regulator\n");
return PTR_ERR(rdev); return PTR_ERR(rdev);
@ -168,13 +168,6 @@ static int da9210_i2c_probe(struct i2c_client *i2c,
return 0; return 0;
} }
static int da9210_i2c_remove(struct i2c_client *i2c)
{
struct da9210 *chip = i2c_get_clientdata(i2c);
regulator_unregister(chip->rdev);
return 0;
}
static const struct i2c_device_id da9210_i2c_id[] = { static const struct i2c_device_id da9210_i2c_id[] = {
{"da9210", 0}, {"da9210", 0},
{}, {},
@ -188,7 +181,6 @@ static struct i2c_driver da9210_regulator_driver = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
.probe = da9210_i2c_probe, .probe = da9210_i2c_probe,
.remove = da9210_i2c_remove,
.id_table = da9210_i2c_id, .id_table = da9210_i2c_id,
}; };

Просмотреть файл

@ -785,7 +785,7 @@ static int lp872x_regulator_register(struct lp872x *lp)
struct regulator_desc *desc; struct regulator_desc *desc;
struct regulator_config cfg = { }; struct regulator_config cfg = { };
struct regulator_dev *rdev; struct regulator_dev *rdev;
int i, ret; int i;
for (i = 0; i < lp->num_regulators; i++) { for (i = 0; i < lp->num_regulators; i++) {
desc = (lp->chipid == LP8720) ? &lp8720_regulator_desc[i] : desc = (lp->chipid == LP8720) ? &lp8720_regulator_desc[i] :
@ -796,34 +796,16 @@ static int lp872x_regulator_register(struct lp872x *lp)
cfg.driver_data = lp; cfg.driver_data = lp;
cfg.regmap = lp->regmap; cfg.regmap = lp->regmap;
rdev = regulator_register(desc, &cfg); rdev = devm_regulator_register(lp->dev, desc, &cfg);
if (IS_ERR(rdev)) { if (IS_ERR(rdev)) {
dev_err(lp->dev, "regulator register err"); dev_err(lp->dev, "regulator register err");
ret = PTR_ERR(rdev); return PTR_ERR(rdev);
goto err;
} }
*(lp->regulators + i) = rdev; *(lp->regulators + i) = rdev;
} }
return 0; return 0;
err:
while (--i >= 0) {
rdev = *(lp->regulators + i);
regulator_unregister(rdev);
}
return ret;
}
static void lp872x_regulator_unregister(struct lp872x *lp)
{
struct regulator_dev *rdev;
int i;
for (i = 0; i < lp->num_regulators; i++) {
rdev = *(lp->regulators + i);
regulator_unregister(rdev);
}
} }
static const struct regmap_config lp872x_regmap_config = { static const struct regmap_config lp872x_regmap_config = {
@ -979,14 +961,6 @@ err_dev:
return ret; return ret;
} }
static int lp872x_remove(struct i2c_client *cl)
{
struct lp872x *lp = i2c_get_clientdata(cl);
lp872x_regulator_unregister(lp);
return 0;
}
static const struct of_device_id lp872x_dt_ids[] = { static const struct of_device_id lp872x_dt_ids[] = {
{ .compatible = "ti,lp8720", }, { .compatible = "ti,lp8720", },
{ .compatible = "ti,lp8725", }, { .compatible = "ti,lp8725", },
@ -1008,7 +982,6 @@ static struct i2c_driver lp872x_driver = {
.of_match_table = of_match_ptr(lp872x_dt_ids), .of_match_table = of_match_ptr(lp872x_dt_ids),
}, },
.probe = lp872x_probe, .probe = lp872x_probe,
.remove = lp872x_remove,
.id_table = lp872x_ids, .id_table = lp872x_ids,
}; };

Просмотреть файл

@ -515,7 +515,7 @@ static int lp8788_buck_probe(struct platform_device *pdev)
cfg.driver_data = buck; cfg.driver_data = buck;
cfg.regmap = lp->regmap; cfg.regmap = lp->regmap;
rdev = regulator_register(&lp8788_buck_desc[id], &cfg); rdev = devm_regulator_register(&pdev->dev, &lp8788_buck_desc[id], &cfg);
if (IS_ERR(rdev)) { if (IS_ERR(rdev)) {
ret = PTR_ERR(rdev); ret = PTR_ERR(rdev);
dev_err(&pdev->dev, "BUCK%d regulator register err = %d\n", dev_err(&pdev->dev, "BUCK%d regulator register err = %d\n",
@ -529,18 +529,8 @@ static int lp8788_buck_probe(struct platform_device *pdev)
return 0; return 0;
} }
static int lp8788_buck_remove(struct platform_device *pdev)
{
struct lp8788_buck *buck = platform_get_drvdata(pdev);
regulator_unregister(buck->regulator);
return 0;
}
static struct platform_driver lp8788_buck_driver = { static struct platform_driver lp8788_buck_driver = {
.probe = lp8788_buck_probe, .probe = lp8788_buck_probe,
.remove = lp8788_buck_remove,
.driver = { .driver = {
.name = LP8788_DEV_BUCK, .name = LP8788_DEV_BUCK,
.owner = THIS_MODULE, .owner = THIS_MODULE,

Просмотреть файл

@ -543,7 +543,7 @@ static int lp8788_dldo_probe(struct platform_device *pdev)
cfg.driver_data = ldo; cfg.driver_data = ldo;
cfg.regmap = lp->regmap; cfg.regmap = lp->regmap;
rdev = regulator_register(&lp8788_dldo_desc[id], &cfg); rdev = devm_regulator_register(&pdev->dev, &lp8788_dldo_desc[id], &cfg);
if (IS_ERR(rdev)) { if (IS_ERR(rdev)) {
ret = PTR_ERR(rdev); ret = PTR_ERR(rdev);
dev_err(&pdev->dev, "DLDO%d regulator register err = %d\n", dev_err(&pdev->dev, "DLDO%d regulator register err = %d\n",
@ -557,18 +557,8 @@ static int lp8788_dldo_probe(struct platform_device *pdev)
return 0; return 0;
} }
static int lp8788_dldo_remove(struct platform_device *pdev)
{
struct lp8788_ldo *ldo = platform_get_drvdata(pdev);
regulator_unregister(ldo->regulator);
return 0;
}
static struct platform_driver lp8788_dldo_driver = { static struct platform_driver lp8788_dldo_driver = {
.probe = lp8788_dldo_probe, .probe = lp8788_dldo_probe,
.remove = lp8788_dldo_remove,
.driver = { .driver = {
.name = LP8788_DEV_DLDO, .name = LP8788_DEV_DLDO,
.owner = THIS_MODULE, .owner = THIS_MODULE,
@ -603,7 +593,7 @@ static int lp8788_aldo_probe(struct platform_device *pdev)
cfg.driver_data = ldo; cfg.driver_data = ldo;
cfg.regmap = lp->regmap; cfg.regmap = lp->regmap;
rdev = regulator_register(&lp8788_aldo_desc[id], &cfg); rdev = devm_regulator_register(&pdev->dev, &lp8788_aldo_desc[id], &cfg);
if (IS_ERR(rdev)) { if (IS_ERR(rdev)) {
ret = PTR_ERR(rdev); ret = PTR_ERR(rdev);
dev_err(&pdev->dev, "ALDO%d regulator register err = %d\n", dev_err(&pdev->dev, "ALDO%d regulator register err = %d\n",
@ -617,18 +607,8 @@ static int lp8788_aldo_probe(struct platform_device *pdev)
return 0; return 0;
} }
static int lp8788_aldo_remove(struct platform_device *pdev)
{
struct lp8788_ldo *ldo = platform_get_drvdata(pdev);
regulator_unregister(ldo->regulator);
return 0;
}
static struct platform_driver lp8788_aldo_driver = { static struct platform_driver lp8788_aldo_driver = {
.probe = lp8788_aldo_probe, .probe = lp8788_aldo_probe,
.remove = lp8788_aldo_remove,
.driver = { .driver = {
.name = LP8788_DEV_ALDO, .name = LP8788_DEV_ALDO,
.owner = THIS_MODULE, .owner = THIS_MODULE,

Просмотреть файл

@ -312,7 +312,7 @@ static int max8925_regulator_probe(struct platform_device *pdev)
if (pdata) if (pdata)
config.init_data = pdata; config.init_data = pdata;
rdev = regulator_register(&ri->desc, &config); rdev = devm_regulator_register(&pdev->dev, &ri->desc, &config);
if (IS_ERR(rdev)) { if (IS_ERR(rdev)) {
dev_err(&pdev->dev, "failed to register regulator %s\n", dev_err(&pdev->dev, "failed to register regulator %s\n",
ri->desc.name); ri->desc.name);
@ -323,22 +323,12 @@ static int max8925_regulator_probe(struct platform_device *pdev)
return 0; return 0;
} }
static int max8925_regulator_remove(struct platform_device *pdev)
{
struct regulator_dev *rdev = platform_get_drvdata(pdev);
regulator_unregister(rdev);
return 0;
}
static struct platform_driver max8925_regulator_driver = { static struct platform_driver max8925_regulator_driver = {
.driver = { .driver = {
.name = "max8925-regulator", .name = "max8925-regulator",
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
.probe = max8925_regulator_probe, .probe = max8925_regulator_probe,
.remove = max8925_regulator_remove,
}; };
static int __init max8925_regulator_init(void) static int __init max8925_regulator_init(void)

Просмотреть файл

@ -246,7 +246,8 @@ static int pcap_regulator_probe(struct platform_device *pdev)
config.init_data = dev_get_platdata(&pdev->dev); config.init_data = dev_get_platdata(&pdev->dev);
config.driver_data = pcap; config.driver_data = pcap;
rdev = regulator_register(&pcap_regulators[pdev->id], &config); rdev = devm_regulator_register(&pdev->dev, &pcap_regulators[pdev->id],
&config);
if (IS_ERR(rdev)) if (IS_ERR(rdev))
return PTR_ERR(rdev); return PTR_ERR(rdev);
@ -255,22 +256,12 @@ static int pcap_regulator_probe(struct platform_device *pdev)
return 0; return 0;
} }
static int pcap_regulator_remove(struct platform_device *pdev)
{
struct regulator_dev *rdev = platform_get_drvdata(pdev);
regulator_unregister(rdev);
return 0;
}
static struct platform_driver pcap_regulator_driver = { static struct platform_driver pcap_regulator_driver = {
.driver = { .driver = {
.name = "pcap-regulator", .name = "pcap-regulator",
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
.probe = pcap_regulator_probe, .probe = pcap_regulator_probe,
.remove = pcap_regulator_remove,
}; };
static int __init pcap_regulator_init(void) static int __init pcap_regulator_init(void)

Просмотреть файл

@ -90,7 +90,8 @@ static int pcf50633_regulator_probe(struct platform_device *pdev)
config.driver_data = pcf; config.driver_data = pcf;
config.regmap = pcf->regmap; config.regmap = pcf->regmap;
rdev = regulator_register(&regulators[pdev->id], &config); rdev = devm_regulator_register(&pdev->dev, &regulators[pdev->id],
&config);
if (IS_ERR(rdev)) if (IS_ERR(rdev))
return PTR_ERR(rdev); return PTR_ERR(rdev);
@ -102,21 +103,11 @@ static int pcf50633_regulator_probe(struct platform_device *pdev)
return 0; return 0;
} }
static int pcf50633_regulator_remove(struct platform_device *pdev)
{
struct regulator_dev *rdev = platform_get_drvdata(pdev);
regulator_unregister(rdev);
return 0;
}
static struct platform_driver pcf50633_regulator_driver = { static struct platform_driver pcf50633_regulator_driver = {
.driver = { .driver = {
.name = "pcf50633-regltr", .name = "pcf50633-regltr",
}, },
.probe = pcf50633_regulator_probe, .probe = pcf50633_regulator_probe,
.remove = pcf50633_regulator_remove,
}; };
static int __init pcf50633_regulator_init(void) static int __init pcf50633_regulator_init(void)

Просмотреть файл

@ -146,8 +146,9 @@ static int tps6105x_regulator_probe(struct platform_device *pdev)
config.driver_data = tps6105x; config.driver_data = tps6105x;
/* Register regulator with framework */ /* Register regulator with framework */
tps6105x->regulator = regulator_register(&tps6105x_regulator_desc, tps6105x->regulator = devm_regulator_register(&pdev->dev,
&config); &tps6105x_regulator_desc,
&config);
if (IS_ERR(tps6105x->regulator)) { if (IS_ERR(tps6105x->regulator)) {
ret = PTR_ERR(tps6105x->regulator); ret = PTR_ERR(tps6105x->regulator);
dev_err(&tps6105x->client->dev, dev_err(&tps6105x->client->dev,
@ -159,20 +160,12 @@ static int tps6105x_regulator_probe(struct platform_device *pdev)
return 0; return 0;
} }
static int tps6105x_regulator_remove(struct platform_device *pdev)
{
struct tps6105x *tps6105x = dev_get_platdata(&pdev->dev);
regulator_unregister(tps6105x->regulator);
return 0;
}
static struct platform_driver tps6105x_regulator_driver = { static struct platform_driver tps6105x_regulator_driver = {
.driver = { .driver = {
.name = "tps6105x-regulator", .name = "tps6105x-regulator",
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
.probe = tps6105x_regulator_probe, .probe = tps6105x_regulator_probe,
.remove = tps6105x_regulator_remove,
}; };
static __init int tps6105x_regulator_init(void) static __init int tps6105x_regulator_init(void)

Просмотреть файл

@ -577,21 +577,6 @@ static struct regulator_ops regulator_ops = {
.get_current_limit = get_current_limit, .get_current_limit = get_current_limit,
}; };
static int pmic_remove(struct spi_device *spi)
{
struct tps6524x *hw = spi_get_drvdata(spi);
int i;
if (!hw)
return 0;
for (i = 0; i < N_REGULATORS; i++) {
regulator_unregister(hw->rdev[i]);
hw->rdev[i] = NULL;
}
spi_set_drvdata(spi, NULL);
return 0;
}
static int pmic_probe(struct spi_device *spi) static int pmic_probe(struct spi_device *spi)
{ {
struct tps6524x *hw; struct tps6524x *hw;
@ -599,7 +584,7 @@ static int pmic_probe(struct spi_device *spi)
const struct supply_info *info = supply_info; const struct supply_info *info = supply_info;
struct regulator_init_data *init_data; struct regulator_init_data *init_data;
struct regulator_config config = { }; struct regulator_config config = { };
int ret = 0, i; int i;
init_data = dev_get_platdata(dev); init_data = dev_get_platdata(dev);
if (!init_data) { if (!init_data) {
@ -632,24 +617,17 @@ static int pmic_probe(struct spi_device *spi)
config.init_data = init_data; config.init_data = init_data;
config.driver_data = hw; config.driver_data = hw;
hw->rdev[i] = regulator_register(&hw->desc[i], &config); hw->rdev[i] = devm_regulator_register(dev, &hw->desc[i],
if (IS_ERR(hw->rdev[i])) { &config);
ret = PTR_ERR(hw->rdev[i]); if (IS_ERR(hw->rdev[i]))
hw->rdev[i] = NULL; return PTR_ERR(hw->rdev[i]);
goto fail;
}
} }
return 0; return 0;
fail:
pmic_remove(spi);
return ret;
} }
static struct spi_driver pmic_driver = { static struct spi_driver pmic_driver = {
.probe = pmic_probe, .probe = pmic_probe,
.remove = pmic_remove,
.driver = { .driver = {
.name = "tps6524x", .name = "tps6524x",
.owner = THIS_MODULE, .owner = THIS_MODULE,

Просмотреть файл

@ -1188,7 +1188,7 @@ static int twlreg_probe(struct platform_device *pdev)
config.driver_data = info; config.driver_data = info;
config.of_node = pdev->dev.of_node; config.of_node = pdev->dev.of_node;
rdev = regulator_register(&info->desc, &config); rdev = devm_regulator_register(&pdev->dev, &info->desc, &config);
if (IS_ERR(rdev)) { if (IS_ERR(rdev)) {
dev_err(&pdev->dev, "can't register %s, %ld\n", dev_err(&pdev->dev, "can't register %s, %ld\n",
info->desc.name, PTR_ERR(rdev)); info->desc.name, PTR_ERR(rdev));
@ -1217,7 +1217,6 @@ static int twlreg_remove(struct platform_device *pdev)
struct regulator_dev *rdev = platform_get_drvdata(pdev); struct regulator_dev *rdev = platform_get_drvdata(pdev);
struct twlreg_info *info = rdev->reg_data; struct twlreg_info *info = rdev->reg_data;
regulator_unregister(rdev);
kfree(info); kfree(info);
return 0; return 0;
} }

Просмотреть файл

@ -96,7 +96,7 @@ static int vexpress_regulator_probe(struct platform_device *pdev)
config.driver_data = reg; config.driver_data = reg;
config.of_node = pdev->dev.of_node; config.of_node = pdev->dev.of_node;
reg->regdev = regulator_register(&reg->desc, &config); reg->regdev = devm_regulator_register(&pdev->dev, &reg->desc, &config);
if (IS_ERR(reg->regdev)) { if (IS_ERR(reg->regdev)) {
err = PTR_ERR(reg->regdev); err = PTR_ERR(reg->regdev);
goto error_regulator_register; goto error_regulator_register;
@ -119,7 +119,6 @@ static int vexpress_regulator_remove(struct platform_device *pdev)
struct vexpress_regulator *reg = platform_get_drvdata(pdev); struct vexpress_regulator *reg = platform_get_drvdata(pdev);
vexpress_config_func_put(reg->func); vexpress_config_func_put(reg->func);
regulator_unregister(reg->regdev);
return 0; return 0;
} }