]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
i3c: mipi-i3c-hci: Use own DMA bounce buffer management for I2C transfers
authorJarkko Nikula <jarkko.nikula@linux.intel.com>
Fri, 22 Aug 2025 10:56:30 +0000 (13:56 +0300)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Tue, 16 Sep 2025 15:06:42 +0000 (17:06 +0200)
Stop using I2C DMA-safe API for two reasons:
- Not needed if driver is using PIO mode.
- DMA transfers needs a DWORD align sized receive bounce buffer when the
  device DMA is IOMMU mapped, which is causing needless double bounce
  buffering in that case.

Cc: Billy Tsai <billy_tsai@aspeedtech.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://lore.kernel.org/r/20250822105630.2820009-5-jarkko.nikula@linux.intel.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master/mipi-i3c-hci/core.c

index b2977b6ac9f7a171edaebb23e558730e45db927c..7a467ef657870a6f4a3aa72c9245ff8bfda2e6f3 100644 (file)
@@ -348,7 +348,7 @@ static int i3c_hci_i2c_xfers(struct i2c_dev_desc *dev,
                return -ENOMEM;
 
        for (i = 0; i < nxfers; i++) {
-               xfer[i].data = i2c_get_dma_safe_msg_buf(&i2c_xfers[i], 1);
+               xfer[i].data = i2c_xfers[i].buf;
                xfer[i].data_len = i2c_xfers[i].len;
                xfer[i].rnw = i2c_xfers[i].flags & I2C_M_RD;
                hci->cmd->prep_i2c_xfer(hci, dev, &xfer[i]);
@@ -374,10 +374,6 @@ static int i3c_hci_i2c_xfers(struct i2c_dev_desc *dev,
        }
 
 out:
-       for (i = 0; i < nxfers; i++)
-               i2c_put_dma_safe_msg_buf(xfer[i].data, &i2c_xfers[i],
-                                        ret ? false : true);
-
        hci_free_xfer(xfer, nxfers);
        return ret;
 }