If the DMA mapping failed, it produced an error log with the wrong
device name:
"stm32-dma3 40400000.dma-controller: rejecting DMA map of vmalloc memory"
Fix this issue by replacing the dev with the I2C dev.

Fixes: bb8822cbbc53 ("i2c: i2c-stm32: Add generic DMA API")
Acked-by: Alain Volmat <[email protected]>
Signed-off-by: Clément Le Goffic <[email protected]>
---
 drivers/i2c/busses/i2c-stm32.c   | 8 +++-----
 drivers/i2c/busses/i2c-stm32f7.c | 4 ++--
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/i2c/busses/i2c-stm32.c b/drivers/i2c/busses/i2c-stm32.c
index 157c64e27d0b..f84ec056e36d 100644
--- a/drivers/i2c/busses/i2c-stm32.c
+++ b/drivers/i2c/busses/i2c-stm32.c
@@ -102,7 +102,6 @@ int stm32_i2c_prep_dma_xfer(struct device *dev, struct 
stm32_i2c_dma *dma,
                            void *dma_async_param)
 {
        struct dma_async_tx_descriptor *txdesc;
-       struct device *chan_dev;
        int ret;
 
        if (rd_wr) {
@@ -116,11 +115,10 @@ int stm32_i2c_prep_dma_xfer(struct device *dev, struct 
stm32_i2c_dma *dma,
        }
 
        dma->dma_len = len;
-       chan_dev = dma->chan_using->device->dev;
 
-       dma->dma_buf = dma_map_single(chan_dev, buf, dma->dma_len,
+       dma->dma_buf = dma_map_single(dev, buf, dma->dma_len,
                                      dma->dma_data_dir);
-       if (dma_mapping_error(chan_dev, dma->dma_buf)) {
+       if (dma_mapping_error(dev, dma->dma_buf)) {
                dev_err(dev, "DMA mapping failed\n");
                return -EINVAL;
        }
@@ -150,7 +148,7 @@ int stm32_i2c_prep_dma_xfer(struct device *dev, struct 
stm32_i2c_dma *dma,
        return 0;
 
 err:
-       dma_unmap_single(chan_dev, dma->dma_buf, dma->dma_len,
+       dma_unmap_single(dev, dma->dma_buf, dma->dma_len,
                         dma->dma_data_dir);
        return ret;
 }
diff --git a/drivers/i2c/busses/i2c-stm32f7.c b/drivers/i2c/busses/i2c-stm32f7.c
index e4aaeb2262d0..817d081460c2 100644
--- a/drivers/i2c/busses/i2c-stm32f7.c
+++ b/drivers/i2c/busses/i2c-stm32f7.c
@@ -741,10 +741,10 @@ static void stm32f7_i2c_dma_callback(void *arg)
 {
        struct stm32f7_i2c_dev *i2c_dev = (struct stm32f7_i2c_dev *)arg;
        struct stm32_i2c_dma *dma = i2c_dev->dma;
-       struct device *dev = dma->chan_using->device->dev;
 
        stm32f7_i2c_disable_dma_req(i2c_dev);
-       dma_unmap_single(dev, dma->dma_buf, dma->dma_len, dma->dma_data_dir);
+       dma_unmap_single(i2c_dev->dev, dma->dma_buf, dma->dma_len,
+                        dma->dma_data_dir);
        complete(&dma->dma_complete);
 }
 

-- 
2.43.0

Reply via email to