Browse Source

i2c: sh_mobile: fix timeout error handling

In a timeout case return an error immediately from the driver's
.master_xfer() method, instead of continuing and letting higher layers
fail.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Wolfram Sang <wolfram@the-dreams.de>
Guennadi Liakhovetski 12 years ago
parent
commit
5687265b31
1 changed files with 4 additions and 1 deletions
  1. 4 1
      drivers/i2c/busses/i2c-sh_mobile.c

+ 4 - 1
drivers/i2c/busses/i2c-sh_mobile.c

@@ -521,8 +521,11 @@ static int sh_mobile_i2c_xfer(struct i2c_adapter *adapter,
 		k = wait_event_timeout(pd->wait,
 				       pd->sr & (ICSR_TACK | SW_DONE),
 				       5 * HZ);
-		if (!k)
+		if (!k) {
 			dev_err(pd->dev, "Transfer request timed out\n");
+			err = -ETIMEDOUT;
+			break;
+		}
 
 		retry_count = 1000;
 again: