Fix some AB3100 regulator issues

This patch will remove surplus register writes on shut down of
LDO D (this magic was not needed), remove an unnecessary (!) error
check and really unregister the regulators when the module is
unloaded.

Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
This commit is contained in:
Linus Walleij 2009-10-28 17:30:15 +01:00 committed by Liam Girdwood
parent 495353a3f7
commit 176f45b9c9

View file

@ -241,24 +241,12 @@ static int ab3100_disable_regulator(struct regulator_dev *reg)
* LDO D is a special regulator. When it is disabled, the entire * LDO D is a special regulator. When it is disabled, the entire
* system is shut down. So this is handled specially. * system is shut down. So this is handled specially.
*/ */
pr_info("Called ab3100_disable_regulator\n");
if (abreg->regreg == AB3100_LDO_D) { if (abreg->regreg == AB3100_LDO_D) {
int i;
dev_info(&reg->dev, "disabling LDO D - shut down system\n"); dev_info(&reg->dev, "disabling LDO D - shut down system\n");
/*
* Set regulators to default values, ignore any errors,
* we're going DOWN
*/
for (i = 0; i < ARRAY_SIZE(ab3100_reg_init_order); i++) {
(void) ab3100_set_register_interruptible(abreg->ab3100,
ab3100_reg_init_order[i],
abreg->plfdata->reg_initvals[i]);
}
/* Setting LDO D to 0x00 cuts the power to the SoC */ /* Setting LDO D to 0x00 cuts the power to the SoC */
return ab3100_set_register_interruptible(abreg->ab3100, return ab3100_set_register_interruptible(abreg->ab3100,
AB3100_LDO_D, 0x00U); AB3100_LDO_D, 0x00U);
} }
/* /*
@ -607,13 +595,6 @@ static int __init ab3100_regulators_probe(struct platform_device *pdev)
} }
} }
if (err) {
dev_err(&pdev->dev,
"LDO D regulator initialization failed with error %d\n",
err);
return err;
}
/* Register the regulators */ /* Register the regulators */
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];
@ -688,7 +669,7 @@ static __init int ab3100_regulators_init(void)
static __exit void ab3100_regulators_exit(void) static __exit void ab3100_regulators_exit(void)
{ {
platform_driver_register(&ab3100_regulators_driver); platform_driver_unregister(&ab3100_regulators_driver);
} }
subsys_initcall(ab3100_regulators_init); subsys_initcall(ab3100_regulators_init);