Skip to content

Commit

Permalink
i2c: gpio: Use devm_gpio_request()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jingoo Han authored and Wolfram Sang committed May 22, 2014
1 parent fa96faa commit a0682a3
Showing 1 changed file with 7 additions and 18 deletions.
25 changes: 7 additions & 18 deletions drivers/i2c/busses/i2c-gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);

Expand All @@ -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)
Expand All @@ -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;
}
Expand Down

0 comments on commit a0682a3

Please sign in to comment.