regulator: ab8500: Unregister ab8500-ext regulators in probe() failure path
authorAxel Lin <axel.lin@ingics.com>
Thu, 11 Apr 2013 04:05:43 +0000 (12:05 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 11 Apr 2013 16:43:56 +0000 (17:43 +0100)
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Bengt Jonsson <bengt.g.jonsson@stericsson.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/regulator/ab8500.c

index c200f8bb61db5c7ca853668a8b051505fceeee45..ea182d3c23e60b286f2300bf349fd2382641bc9a 100644 (file)
@@ -3172,8 +3172,11 @@ static int ab8500_regulator_probe(struct platform_device *pdev)
        for (i = 0; i < abx500_regulator.info_size; i++) {
                err = ab8500_regulator_register(pdev, &pdata->regulator[i],
                                                i, NULL);
-               if (err < 0)
+               if (err < 0) {
+                       if (!is_ab8505(ab8500))
+                               ab8500_ext_regulator_exit(pdev);
                        return err;
+               }
        }
 
        return 0;