i2c: rcar: use correct length when unmapping DMA
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Sun, 28 May 2017 07:52:17 +0000 (09:52 +0200)
committerWolfram Sang <wsa@the-dreams.de>
Thu, 15 Jun 2017 13:51:44 +0000 (15:51 +0200)
Because we need to transfer some bytes with PIO, the msg length is not
the length of the DMA buffer. Use the correct value which we used when
doing the mapping.

Fixes: 73e8b0528346e8 ("i2c: rcar: add DMA support")
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-rcar.c

index 214bf2835d1f95ff176cb0ded24654b20b821944..8be3e6cb8fe686a02b62eb1b699a1763e0186df5 100644 (file)
@@ -319,7 +319,7 @@ static void rcar_i2c_dma_unmap(struct rcar_i2c_priv *priv)
        rcar_i2c_write(priv, ICFBSCR, TCYC06);
 
        dma_unmap_single(chan->device->dev, sg_dma_address(&priv->sg),
-                        priv->msg->len, priv->dma_direction);
+                        sg_dma_len(&priv->sg), priv->dma_direction);
 
        priv->dma_direction = DMA_NONE;
 }