summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2021-08-23 23:41:45 +0200
committerWolfram Sang <wsa@kernel.org>2021-09-14 12:22:54 +0200
commit294b29f15469e90893c2b72a738a962ee02a12eb (patch)
treeafa534f6aa9756dfb1979eea5456b17a531f5835 /drivers
parenti2c: xiic: Only ever transfer single message (diff)
downloadlinux-294b29f15469e90893c2b72a738a962ee02a12eb.tar.xz
linux-294b29f15469e90893c2b72a738a962ee02a12eb.zip
i2c: xiic: Fix RX IRQ busy check
In case the XIIC does TX/RX transfer, make sure no other kernel thread can start another TX transfer at the same time. This could happen since the driver only checks tx_msg for being non-NULL and returns -EBUSY in that case, however it is necessary to check also rx_msg for the same. Signed-off-by: Marek Vasut <marex@denx.de> Acked-by: Michal Simek <michal.simek@xilinx.com> Signed-off-by: Wolfram Sang <wsa@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/i2c/busses/i2c-xiic.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
index 6cd7830fe489..eb789cfb9973 100644
--- a/drivers/i2c/busses/i2c-xiic.c
+++ b/drivers/i2c/busses/i2c-xiic.c
@@ -543,7 +543,7 @@ static int xiic_busy(struct xiic_i2c *i2c)
int tries = 3;
int err;
- if (i2c->tx_msg)
+ if (i2c->tx_msg || i2c->rx_msg)
return -EBUSY;
/* In single master mode bus can only be busy, when in use by this