brcm2708: rename all patches from raspberrypi git tree to use 950 prefix
[openwrt/openwrt.git] / target / linux / brcm2708 / patches-4.9 / 950-0109-i2c-bcm2835-Can-t-support-I2C_M_IGNORE_NAK.patch
1 From 40c63177d4c0f4755a148503c3b8bb2192ce8c0e Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
3 Date: Thu, 22 Sep 2016 22:05:50 +0200
4 Subject: [PATCH] i2c: bcm2835: Can't support I2C_M_IGNORE_NAK
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 The controller can't support this flag, so remove it.
10
11 Documentation/i2c/i2c-protocol states that all of the message is sent:
12
13 I2C_M_IGNORE_NAK:
14 Normally message is interrupted immediately if there is [NA] from the
15 client. Setting this flag treats any [NA] as [A], and all of
16 message is sent.
17
18 From the BCM2835 ARM Peripherals datasheet:
19
20 The ERR field is set when the slave fails to acknowledge either
21 its address or a data byte written to it.
22
23 So when the controller doesn't receive an ack, it sets ERR and raises
24 an interrupt. In other words, the whole message is not sent.
25
26 Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
27 Reviewed-by: Eric Anholt <eric@anholt.net>
28 ---
29 drivers/i2c/busses/i2c-bcm2835.c | 4 ----
30 1 file changed, 4 deletions(-)
31
32 --- a/drivers/i2c/busses/i2c-bcm2835.c
33 +++ b/drivers/i2c/busses/i2c-bcm2835.c
34 @@ -212,10 +212,6 @@ static int bcm2835_i2c_xfer_msg(struct b
35 if (likely(!i2c_dev->msg_err))
36 return 0;
37
38 - if ((i2c_dev->msg_err & BCM2835_I2C_S_ERR) &&
39 - (msg->flags & I2C_M_IGNORE_NAK))
40 - return 0;
41 -
42 dev_dbg(i2c_dev->dev, "i2c transfer failed: %x\n", i2c_dev->msg_err);
43
44 if (i2c_dev->msg_err & BCM2835_I2C_S_ERR)