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

Commit e97bba91 authored by Jingoo Han's avatar Jingoo Han Committed by Mark Brown
Browse files

regulator: da9063: use devm_regulator_register()



Use devm_regulator_register() to make cleanup paths simpler.

Signed-off-by: default avatarJingoo Han <jg1.han@samsung.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent a4a6b9de
Loading
Loading
Loading
Loading
+4 −17
Original line number Diff line number Diff line
@@ -847,13 +847,13 @@ static int da9063_regulator_probe(struct platform_device *pdev)
		if (da9063_reg_matches)
			config.of_node = da9063_reg_matches[id].of_node;
		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)) {
			dev_err(&pdev->dev,
				"Failed to register %s regulator\n",
				regl->desc.name);
			ret = PTR_ERR(regl->rdev);
			goto err;
			return PTR_ERR(regl->rdev);
		}
		id++;
		n++;
@@ -862,9 +862,8 @@ static int da9063_regulator_probe(struct platform_device *pdev)
	/* LDOs overcurrent event support */
	irq = platform_get_irq_byname(pdev, "LDO_LIM");
	if (irq < 0) {
		ret = irq;
		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);
@@ -881,27 +880,15 @@ static int da9063_regulator_probe(struct platform_device *pdev)
	}

	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)
{
	struct da9063_regulators *regulators = platform_get_drvdata(pdev);
	struct da9063_regulator *regl;

	free_irq(regulators->irq_ldo_lim, 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;
}