i2c-mux-gpio: Check gpio_direction_output return value
PATCH v2 1/1 i2c-mux-gpio: Check gpio_direction_output return value
gpio_direction_output() may fail, check for that and deal with it appropriately. Also log an error message if gpio_request() fails.
Signed-off-by Jean Delvare <[email protected]>
Cc Wolfram Sang <wsa-z923LK4zBo2bacvFa/[email protected]>
---
Changes since v1:
* Add a comment on i++ as suggested by Peter.
drivers/i2c/muxes/i2c-mux-gpio.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-)
drivers/i2c/muxes/i2c-mux-gpio.c +14 -3
@@ -123,10 +123,21 @@ static int __devinit i2c_mux_gpio_probe(for (i =0 ; i < pdata->n_gpios; i++) { ret =gpio_request (gpio_base + pdata->gpios[i],"i2c-mux-gpio" ); -if (ret) +if (ret) { +dev_err (&pdev->dev,"Failed to request GPIO %d\n" , + pdata->gpios[i]); goto err_request_gpio; -gpio_direction_output (gpio_base + pdata->gpios[i], - initial_state & (1 << i)); + } + + ret =gpio_direction_output (gpio_base + pdata->gpios[i], + initial_state & (1 << i)); +if (ret) { +dev_err (&pdev->dev, +"Failed to set direction of GPIO %d to output\n" , + pdata->gpios[i]); + i++;/* gpio_request above succeeded, so must free */ + goto err_request_gpio; + } }for (i =0 ; i < pdata->n_values; i++) {
Signature · 1 line
Jean Delvare