gpio: sch311x: Use devm_gpiochip_add_data() to simplify remove path
Use devm version of gpiochip_add() function to handle removal for us. Signed-off-by: Andrew Davis <afd@ti.com> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
parent
81b010990b
commit
4cf381bf8e
@ -281,8 +281,6 @@ static int sch311x_gpio_probe(struct platform_device *pdev)
|
||||
if (!priv)
|
||||
return -ENOMEM;
|
||||
|
||||
platform_set_drvdata(pdev, priv);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(priv->blocks); i++) {
|
||||
block = &priv->blocks[i];
|
||||
|
||||
@ -305,42 +303,22 @@ static int sch311x_gpio_probe(struct platform_device *pdev)
|
||||
block->data_reg = sch311x_gpio_blocks[i].data_reg;
|
||||
block->runtime_reg = pdata->runtime_reg;
|
||||
|
||||
err = gpiochip_add_data(&block->chip, block);
|
||||
err = devm_gpiochip_add_data(&pdev->dev, &block->chip, block);
|
||||
if (err < 0) {
|
||||
dev_err(&pdev->dev,
|
||||
"Could not register gpiochip, %d\n", err);
|
||||
goto exit_err;
|
||||
return err;
|
||||
}
|
||||
dev_info(&pdev->dev,
|
||||
"SMSC SCH311x GPIO block %d registered.\n", i);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
exit_err:
|
||||
/* release already registered chips */
|
||||
for (--i; i >= 0; i--)
|
||||
gpiochip_remove(&priv->blocks[i].chip);
|
||||
return err;
|
||||
}
|
||||
|
||||
static int sch311x_gpio_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct sch311x_gpio_priv *priv = platform_get_drvdata(pdev);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(priv->blocks); i++) {
|
||||
gpiochip_remove(&priv->blocks[i].chip);
|
||||
dev_info(&pdev->dev,
|
||||
"SMSC SCH311x GPIO block %d unregistered.\n", i);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver sch311x_gpio_driver = {
|
||||
.driver.name = DRV_NAME,
|
||||
.probe = sch311x_gpio_probe,
|
||||
.remove = sch311x_gpio_remove,
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user