public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] i2c-mux-gpio: Check gpio_direction_output return value
@ 2013-03-03 18:58 Jean Delvare
       [not found] ` <20130303195815.10ba20b1-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Jean Delvare @ 2013-03-03 18:58 UTC (permalink / raw)
  To: Peter Korsgaard; +Cc: Linux I2C, Wolfram Sang

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 <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>
Cc: Peter Korsgaard <peter.korsgaard-ob4gmnvZ1/cAvxtiuMwx3w@public.gmane.org>
Cc: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>
---
 drivers/i2c/muxes/i2c-mux-gpio.c |   17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

--- linux-3.7.orig/drivers/i2c/muxes/i2c-mux-gpio.c	2012-12-15 14:52:47.368991730 +0100
+++ linux-3.7/drivers/i2c/muxes/i2c-mux-gpio.c	2013-03-03 14:27:21.003905620 +0100
@@ -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++;
+			goto err_request_gpio;
+		}
 	}
 
 	for (i = 0; i < pdata->n_values; i++) {

-- 
Jean Delvare

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] i2c-mux-gpio: Check gpio_direction_output return value
       [not found] ` <20130303195815.10ba20b1-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
@ 2013-03-03 19:37   ` Peter Korsgaard
  0 siblings, 0 replies; 2+ messages in thread
From: Peter Korsgaard @ 2013-03-03 19:37 UTC (permalink / raw)
  To: Jean Delvare; +Cc: Linux I2C, Wolfram Sang

>>>>> "JD" == Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org> writes:

JD> gpio_direction_output() may fail, check for that and deal with it
JD> appropriately. Also log an error message if gpio_request() fails.

JD> Signed-off-by: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>
JD> Cc: Peter Korsgaard <peter.korsgaard-ob4gmnvZ1/cAvxtiuMwx3w@public.gmane.org>
JD> Cc: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>
JD> ---
JD>  drivers/i2c/muxes/i2c-mux-gpio.c |   17 ++++++++++++++---
JD>  1 file changed, 14 insertions(+), 3 deletions(-)

JD> --- linux-3.7.orig/drivers/i2c/muxes/i2c-mux-gpio.c	2012-12-15 14:52:47.368991730 +0100
JD> +++ linux-3.7/drivers/i2c/muxes/i2c-mux-gpio.c	2013-03-03 14:27:21.003905620 +0100
JD> @@ -123,10 +123,21 @@ static int __devinit i2c_mux_gpio_probe(
 
JD>  	for (i = 0; i < pdata->n_gpios; i++) {
JD>  		ret = gpio_request(gpio_base + pdata->gpios[i], "i2c-mux-gpio");
JD> -		if (ret)
JD> +		if (ret) {
JD> +			dev_err(&pdev->dev, "Failed to request GPIO %d\n",
JD> +				pdata->gpios[i]);
JD>  			goto err_request_gpio;
JD> -		gpio_direction_output(gpio_base + pdata->gpios[i],
JD> -				      initial_state & (1 << i));
JD> +		}
JD> +
JD> +		ret = gpio_direction_output(gpio_base + pdata->gpios[i],
JD> +					    initial_state & (1 << i));
JD> +		if (ret) {
JD> +			dev_err(&pdev->dev,
JD> +				"Failed to set direction of GPIO %d to output\n",
JD> +				pdata->gpios[i]);
JD> +			i++;
JD> +			goto err_request_gpio;

The i++ is a bit nonobvious, so a comment would be good. Other than that
it looks fine.

Acked-by: Peter Korsgaard <peter.korsgaard-ob4gmnvZ1/cAvxtiuMwx3w@public.gmane.org>

-- 
Sorry about disclaimer - It's out of my control.
Bye, Peter Korsgaard


DISCLAIMER:
Unless indicated otherwise, the information contained in this message is privileged and confidential, and is intended only for the use of the addressee(s) named above and others who have been specifically authorized to receive it. If you are not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this message and/or attachments is strictly prohibited. The company accepts no liability for any damage caused by any virus transmitted by this email. Furthermore, the company does not warrant a proper and complete transmission of this information, nor does it accept liability for any delays. If you have received this message in error, please contact the sender and delete the message. Thank you.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-03-03 19:37 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-03 18:58 [PATCH] i2c-mux-gpio: Check gpio_direction_output return value Jean Delvare
     [not found] ` <20130303195815.10ba20b1-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2013-03-03 19:37   ` Peter Korsgaard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox