aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm2708/patches-4.1/0093-i2c-bcm2708-Increase-timeouts-to-allow-larger-transf.patch
blob: 0be04dff8d09f0e0a9257666efe0d90bf7cdc805 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
From 40a4a1cc61a3e3e7baa9d623d8f4f68ffa815dd6 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 30 Jun 2015 10:28:59 +0100
Subject: [PATCH 093/203] i2c-bcm2708: Increase timeouts to allow larger
 transfers

Use the timeout value provided by the I2C_TIMEOUT ioctl when waiting
for completion. The default timeout is 1 second.

See: https://github.com/raspberrypi/linux/issues/260
---
 drivers/i2c/busses/i2c-bcm2708.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

--- a/drivers/i2c/busses/i2c-bcm2708.c
+++ b/drivers/i2c/busses/i2c-bcm2708.c
@@ -67,10 +67,9 @@
 #define BSC_S_DONE		0x00000002
 #define BSC_S_TA		0x00000001
 
-#define I2C_TIMEOUT_MS	150
-#define I2C_WAIT_LOOP_COUNT 40
+#define I2C_WAIT_LOOP_COUNT	200
 
-#define DRV_NAME	"bcm2708_i2c"
+#define DRV_NAME		"bcm2708_i2c"
 
 static unsigned int baudrate = CONFIG_I2C_BCM2708_BAUDRATE;
 module_param(baudrate, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
@@ -305,7 +304,7 @@ static int bcm2708_i2c_master_xfer(struc
 		goto error_timeout;
 	}
 
-	ret = wait_for_completion_timeout(&bi->done, msecs_to_jiffies(I2C_TIMEOUT_MS));
+	ret = wait_for_completion_timeout(&bi->done, adap->timeout);
 	if (ret == 0) {
 		dev_err(&adap->dev, "transfer timed out\n");
 		goto error_timeout;