gpio: Don't override the error code in probe error handling

Otherwise, we return 0 in probe error paths when gpiochip_remove() returns 0.
Also show error message if gpiochip_remove() fails.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Cc: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Cc: Denis Turischev <denis@compulab.co.il>
Cc: Lars Poeschel <poeschel@lemonage.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Axel Lin 2013-05-19 14:00:47 +08:00 committed by Linus Walleij
parent 90dae4ebf0
commit cfb10898ef
4 changed files with 6 additions and 9 deletions

View File

@ -496,8 +496,7 @@ err_irq_alloc_descs:
err_gpiochip_add: err_gpiochip_add:
while (--i >= 0) { while (--i >= 0) {
chip--; chip--;
ret = gpiochip_remove(&chip->gpio); if (gpiochip_remove(&chip->gpio))
if (ret)
dev_err(&pdev->dev, "Failed gpiochip_remove(%d)\n", i); dev_err(&pdev->dev, "Failed gpiochip_remove(%d)\n", i);
} }
kfree(chip_save); kfree(chip_save);

View File

@ -424,8 +424,7 @@ end:
err_request_irq: err_request_irq:
irq_free_descs(irq_base, gpio_pins[chip->ioh]); irq_free_descs(irq_base, gpio_pins[chip->ioh]);
ret = gpiochip_remove(&chip->gpio); if (gpiochip_remove(&chip->gpio))
if (ret)
dev_err(&pdev->dev, "%s gpiochip_remove failed\n", __func__); dev_err(&pdev->dev, "%s gpiochip_remove failed\n", __func__);
err_gpiochip_add: err_gpiochip_add:

View File

@ -272,10 +272,8 @@ static int sch_gpio_probe(struct platform_device *pdev)
return 0; return 0;
err_sch_gpio_resume: err_sch_gpio_resume:
err = gpiochip_remove(&sch_gpio_core); if (gpiochip_remove(&sch_gpio_core))
if (err) dev_err(&pdev->dev, "%s gpiochip_remove failed\n", __func__);
dev_err(&pdev->dev, "%s failed, %d\n",
"gpiochip_remove()", err);
err_sch_gpio_core: err_sch_gpio_core:
release_region(res->start, resource_size(res)); release_region(res->start, resource_size(res));

View File

@ -446,7 +446,8 @@ static int vprbrd_gpio_probe(struct platform_device *pdev)
return ret; return ret;
err_gpiob: err_gpiob:
ret = gpiochip_remove(&vb_gpio->gpioa); if (gpiochip_remove(&vb_gpio->gpioa))
dev_err(&pdev->dev, "%s gpiochip_remove failed\n", __func__);
err_gpioa: err_gpioa:
return ret; return ret;