regulator: s5m8767: Fix to work even if no DVS gpio present
authorAmit Daniel Kachhap <amit.daniel@samsung.com>
Mon, 10 Dec 2012 12:49:41 +0000 (18:19 +0530)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 11 Dec 2012 03:44:05 +0000 (12:44 +0900)
Signed-off-by: Amit Daniel Kachhap <amit.daniel@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/regulator/s5m8767.c

index 4afca9d..8ef5b33 100644 (file)
@@ -626,9 +626,16 @@ static __devinit int s5m8767_pmic_probe(struct platform_device *pdev)
                }
        }
 
-       if (gpio_is_valid(pdata->buck_gpios[0]) &&
-               gpio_is_valid(pdata->buck_gpios[1]) &&
-               gpio_is_valid(pdata->buck_gpios[2])) {
+       if (pdata->buck2_gpiodvs || pdata->buck3_gpiodvs ||
+                                               pdata->buck4_gpiodvs) {
+
+               if (!gpio_is_valid(pdata->buck_gpios[0]) ||
+                       !gpio_is_valid(pdata->buck_gpios[1]) ||
+                       !gpio_is_valid(pdata->buck_gpios[2])) {
+                       dev_err(&pdev->dev, "GPIO NOT VALID\n");
+                       return -EINVAL;
+               }
+
                ret = devm_gpio_request(&pdev->dev, pdata->buck_gpios[0],
                                        "S5M8767 SET1");
                if (ret)
@@ -653,10 +660,6 @@ static __devinit int s5m8767_pmic_probe(struct platform_device *pdev)
                /* SET3 GPIO */
                gpio_direction_output(pdata->buck_gpios[2],
                                (s5m8767->buck_gpioindex >> 0) & 0x1);
-       } else {
-               dev_err(&pdev->dev, "GPIO NOT VALID\n");
-               ret = -EINVAL;
-               return ret;
        }
 
        ret = devm_gpio_request(&pdev->dev, pdata->buck_ds[0], "S5M8767 DS2");