| From c4469ce3fc1776bc3c44ad3f9087f6b542cf4db9 Mon Sep 17 00:00:00 2001 |
| From: Wolfram Sang <wsa+renesas@sang-engineering.com> |
| Date: Sat, 4 Nov 2017 21:20:09 +0100 |
| Subject: [PATCH 0777/1795] i2c: rcar: skip DMA if buffer is not safe |
| |
| This HW is prone to races, so it needs to setup new messages in irq |
| context. That means we can't alloc bounce buffers if a message buffer is |
| not DMA safe. So, in that case, simply fall back to PIO. |
| |
| Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> |
| Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> |
| Signed-off-by: Wolfram Sang <wsa@the-dreams.de> |
| (cherry picked from commit adbd77b589d0345cfc42f1ae0b3414e62a2bf866) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| --- |
| drivers/i2c/busses/i2c-rcar.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c |
| index 15d764afec3b..8a2ae3e6c561 100644 |
| --- a/drivers/i2c/busses/i2c-rcar.c |
| +++ b/drivers/i2c/busses/i2c-rcar.c |
| @@ -359,7 +359,7 @@ static void rcar_i2c_dma(struct rcar_i2c_priv *priv) |
| int len; |
| |
| /* Do not use DMA if it's not available or for messages < 8 bytes */ |
| - if (IS_ERR(chan) || msg->len < 8) |
| + if (IS_ERR(chan) || msg->len < 8 || !(msg->flags & I2C_M_DMA_SAFE)) |
| return; |
| |
| if (read) { |
| -- |
| 2.19.0 |
| |