i2c: gpio: Use devm_gpio_request()
authorJingoo Han <jg1.han@samsung.com>
Tue, 17 Dec 2013 06:48:19 +0000 (15:48 +0900)
committerWolfram Sang <wsa@the-dreams.de>
Thu, 22 May 2014 08:09:25 +0000 (10:09 +0200)
Use devm_gpio_request() to make cleanup paths simpler.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Reviewed-by: Violeta Menendez <violeta.menendez@codethink.co.uk>
Reviewed-by: Ian Molton <ian.molton@codethink.co.uk>
Tested-by: Violeta Menendez <violeta.menendez@codethink.co.uk>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-gpio.c

index 02d2d4abb9dd20a836d36b36a6ec5ae277ab2199..71a45b210a24057a3ad697acd17533ce0e7cf0df 100644 (file)
@@ -147,24 +147,22 @@ static int i2c_gpio_probe(struct platform_device *pdev)
                scl_pin = pdata->scl_pin;
        }
 
-       ret = gpio_request(sda_pin, "sda");
+       ret = devm_gpio_request(&pdev->dev, sda_pin, "sda");
        if (ret) {
                if (ret == -EINVAL)
                        ret = -EPROBE_DEFER;    /* Try again later */
-               goto err_request_sda;
+               return ret;
        }
-       ret = gpio_request(scl_pin, "scl");
+       ret = devm_gpio_request(&pdev->dev, scl_pin, "scl");
        if (ret) {
                if (ret == -EINVAL)
                        ret = -EPROBE_DEFER;    /* Try again later */
-               goto err_request_scl;
+               return ret;
        }
 
        priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
-       if (!priv) {
-               ret = -ENOMEM;
-               goto err_add_bus;
-       }
+       if (!priv)
+               return -ENOMEM;
        adap = &priv->adap;
        bit_data = &priv->bit_data;
        pdata = &priv->pdata;
@@ -225,7 +223,7 @@ static int i2c_gpio_probe(struct platform_device *pdev)
        adap->nr = pdev->id;
        ret = i2c_bit_add_numbered_bus(adap);
        if (ret)
-               goto err_add_bus;
+               return ret;
 
        platform_set_drvdata(pdev, priv);
 
@@ -235,13 +233,6 @@ static int i2c_gpio_probe(struct platform_device *pdev)
                 ? ", no clock stretching" : "");
 
        return 0;
-
-err_add_bus:
-       gpio_free(scl_pin);
-err_request_scl:
-       gpio_free(sda_pin);
-err_request_sda:
-       return ret;
 }
 
 static int i2c_gpio_remove(struct platform_device *pdev)
@@ -255,8 +246,6 @@ static int i2c_gpio_remove(struct platform_device *pdev)
        pdata = &priv->pdata;
 
        i2c_del_adapter(adap);
-       gpio_free(pdata->scl_pin);
-       gpio_free(pdata->sda_pin);
 
        return 0;
 }