[PATCH 1/1] i2c: use dmaengine_desc_set_callback()

Frank.Li at oss.nxp.com Frank.Li at oss.nxp.com
Mon Nov 2 09:00:02 PST 2026


From: Frank Li <Frank.Li at nxp.com>

Replace open-coded assignments to callback and callback_param fields
of struct dma_async_tx_descriptor with calls to the
dmaengine_desc_set_callback() helper across various I2C bus drivers.

No functional change intended. Prepare make to struct
dma_async_tx_descriptor private to the DMA engine.

Signed-off-by: Frank Li <Frank.Li at nxp.com>
---
 drivers/i2c/busses/i2c-at91-master.c | 6 ++----
 drivers/i2c/busses/i2c-imx-lpi2c.c   | 3 +--
 drivers/i2c/busses/i2c-imx.c         | 3 +--
 drivers/i2c/busses/i2c-mxs.c         | 3 +--
 drivers/i2c/busses/i2c-qcom-geni.c   | 3 +--
 drivers/i2c/busses/i2c-qup.c         | 6 ++----
 drivers/i2c/busses/i2c-rcar.c        | 3 +--
 drivers/i2c/busses/i2c-sh_mobile.c   | 3 +--
 drivers/i2c/busses/i2c-stm32.c       | 3 +--
 drivers/i2c/busses/i2c-tegra.c       | 3 +--
 10 files changed, 12 insertions(+), 24 deletions(-)

diff --git a/drivers/i2c/busses/i2c-at91-master.c b/drivers/i2c/busses/i2c-at91-master.c
index e0c3de5e82033..24f45a1d00c1d 100644
--- a/drivers/i2c/busses/i2c-at91-master.c
+++ b/drivers/i2c/busses/i2c-at91-master.c
@@ -256,8 +256,7 @@ static void at91_twi_write_data_dma(struct at91_twi_dev *dev)
 		goto error;
 	}
 
-	txdesc->callback = at91_twi_write_data_dma_callback;
-	txdesc->callback_param = dev;
+	dmaengine_desc_set_callback(txdesc, at91_twi_write_data_dma_callback, NULL, dev);
 
 	dma->xfer_in_progress = true;
 	dmaengine_submit(txdesc);
@@ -374,8 +373,7 @@ static void at91_twi_read_data_dma(struct at91_twi_dev *dev)
 		goto error;
 	}
 
-	rxdesc->callback = at91_twi_read_data_dma_callback;
-	rxdesc->callback_param = dev;
+	dmaengine_desc_set_callback(rxdesc, at91_twi_read_data_dma_callback, NULL, dev);
 
 	dma->xfer_in_progress = true;
 	dmaengine_submit(rxdesc);
diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c b/drivers/i2c/busses/i2c-imx-lpi2c.c
index 7302464c371ae..7242f6409189d 100644
--- a/drivers/i2c/busses/i2c-imx-lpi2c.c
+++ b/drivers/i2c/busses/i2c-imx-lpi2c.c
@@ -887,8 +887,7 @@ static int lpi2c_dma_submit(struct lpi2c_imx_struct *lpi2c_imx)
 	}
 
 	reinit_completion(&lpi2c_imx->complete);
-	desc->callback = lpi2c_dma_callback;
-	desc->callback_param = lpi2c_imx;
+	dmaengine_desc_set_callback(desc, lpi2c_dma_callback, NULL, lpi2c_imx);
 
 	cookie = dmaengine_submit(desc);
 	if (dma_submit_error(cookie)) {
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index ccf08cd63151f..38d15a8253c7e 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -498,8 +498,7 @@ static int i2c_imx_dma_xfer(struct imx_i2c_struct *i2c_imx,
 	}
 
 	reinit_completion(&dma->cmd_complete);
-	txdesc->callback = i2c_imx_dma_callback;
-	txdesc->callback_param = i2c_imx;
+	dmaengine_desc_set_callback(txdesc, i2c_imx_dma_callback, NULL, i2c_imx);
 	if (dma_submit_error(dmaengine_submit(txdesc))) {
 		dev_err(dev, "DMA submit failed\n");
 		goto err_submit;
diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
index eee4fdcd9df31..cf3fbfdacbe4a 100644
--- a/drivers/i2c/busses/i2c-mxs.c
+++ b/drivers/i2c/busses/i2c-mxs.c
@@ -283,8 +283,7 @@ static int mxs_i2c_dma_setup_xfer(struct i2c_adapter *adap,
 	 * The last descriptor must have this callback,
 	 * to finish the DMA transaction.
 	 */
-	desc->callback = mxs_i2c_dma_irq_callback;
-	desc->callback_param = i2c;
+	dmaengine_desc_set_callback(desc, mxs_i2c_dma_irq_callback, NULL, i2c);
 
 	/* Start the transfer. */
 	dmaengine_submit(desc);
diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c
index 50f4fc1330859..0151257036893 100644
--- a/drivers/i2c/busses/i2c-qcom-geni.c
+++ b/drivers/i2c/busses/i2c-qcom-geni.c
@@ -800,8 +800,7 @@ static int geni_i2c_gpi(struct geni_i2c_dev *gi2c, struct i2c_msg msgs[],
 		goto err_config;
 	}
 
-	desc->callback_result = i2c_gpi_cb_result;
-	desc->callback_param = gi2c;
+	dmaengine_desc_set_callback(desc, NULL, i2c_gpi_cb_result, gi2c);
 
 	if (!((msgs[msg_idx].flags & I2C_M_RD) && op == I2C_WRITE))
 		gi2c_gpi_xfer->msg_idx_cnt++;
diff --git a/drivers/i2c/busses/i2c-qup.c b/drivers/i2c/busses/i2c-qup.c
index ce30634e1f402..ff3d1278c750b 100644
--- a/drivers/i2c/busses/i2c-qup.c
+++ b/drivers/i2c/busses/i2c-qup.c
@@ -784,8 +784,7 @@ static int qup_i2c_bam_schedule_desc(struct qup_i2c_dev *qup)
 	}
 
 	if (!rx_cnt) {
-		txd->callback = qup_i2c_bam_cb;
-		txd->callback_param = qup;
+		dmaengine_desc_set_callback(txd, qup_i2c_bam_cb, NULL, qup);
 	}
 
 	cookie_tx = dmaengine_submit(txd);
@@ -809,8 +808,7 @@ static int qup_i2c_bam_schedule_desc(struct qup_i2c_dev *qup)
 			goto desc_err;
 		}
 
-		rxd->callback = qup_i2c_bam_cb;
-		rxd->callback_param = qup;
+		dmaengine_desc_set_callback(rxd, qup_i2c_bam_cb, NULL, qup);
 		cookie_rx = dmaengine_submit(rxd);
 		if (dma_submit_error(cookie_rx)) {
 			ret = -EINVAL;
diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c
index 755064804cb21..15b54d9f56a16 100644
--- a/drivers/i2c/busses/i2c-rcar.c
+++ b/drivers/i2c/busses/i2c-rcar.c
@@ -531,8 +531,7 @@ static bool rcar_i2c_dma(struct rcar_i2c_priv *priv)
 		return false;
 	}
 
-	txdesc->callback = rcar_i2c_dma_callback;
-	txdesc->callback_param = priv;
+	dmaengine_desc_set_callback(txdesc, rcar_i2c_dma_callback, NULL, priv);
 
 	cookie = dmaengine_submit(txdesc);
 	if (dma_submit_error(cookie)) {
diff --git a/drivers/i2c/busses/i2c-sh_mobile.c b/drivers/i2c/busses/i2c-sh_mobile.c
index 3a55f803e4f15..27f838dd38de7 100644
--- a/drivers/i2c/busses/i2c-sh_mobile.c
+++ b/drivers/i2c/busses/i2c-sh_mobile.c
@@ -546,8 +546,7 @@ static void sh_mobile_i2c_xfer_dma(struct sh_mobile_i2c_data *pd)
 		return;
 	}
 
-	txdesc->callback = sh_mobile_i2c_dma_callback;
-	txdesc->callback_param = pd;
+	dmaengine_desc_set_callback(txdesc, sh_mobile_i2c_dma_callback, NULL, pd);
 
 	cookie = dmaengine_submit(txdesc);
 	if (dma_submit_error(cookie)) {
diff --git a/drivers/i2c/busses/i2c-stm32.c b/drivers/i2c/busses/i2c-stm32.c
index 064e47d6c96fd..7a0881addd816 100644
--- a/drivers/i2c/busses/i2c-stm32.c
+++ b/drivers/i2c/busses/i2c-stm32.c
@@ -134,8 +134,7 @@ int stm32_i2c_prep_dma_xfer(struct device *dev, struct stm32_i2c_dma *dma,
 
 	reinit_completion(&dma->dma_complete);
 
-	txdesc->callback = callback;
-	txdesc->callback_param = dma_async_param;
+	dmaengine_desc_set_callback(txdesc, callback, NULL, dma_async_param);
 	ret = dma_submit_error(dmaengine_submit(txdesc));
 	if (ret < 0) {
 		dev_err(dev, "DMA submit failed\n");
diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index 76d21bc51c618..a3c8db6d72ccc 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -657,8 +657,7 @@ static int tegra_i2c_dma_submit(struct tegra_i2c_dev *i2c_dev, size_t len)
 		return -EINVAL;
 	}
 
-	dma_desc->callback = tegra_i2c_dma_complete;
-	dma_desc->callback_param = i2c_dev;
+	dmaengine_desc_set_callback(dma_desc, tegra_i2c_dma_complete, NULL, i2c_dev);
 
 	dmaengine_submit(dma_desc);
 	dma_async_issue_pending(i2c_dev->dma_chan);
-- 
2.43.0




More information about the linux-arm-kernel mailing list