From: Frank Li <Frank.Li@nxp.com>
To: Vinod Koul <vkoul@kernel.org>, Shawn Guo <shawnguo@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
Fabio Estevam <festevam@gmail.com>
Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org,
imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
Frank Li <Frank.Li@nxp.com>
Subject: [PATCH 0/6] dmaengine: Add common dma_slave_config and split it into src and dst parts
Date: Wed, 14 Jan 2026 12:12:41 -0500 [thread overview]
Message-ID: <20260114-dma_common_config-v1-0-64feb836ff04@nxp.com> (raw)
Many DMA engine drivers store a dma_slave_config per channel. Propagate
this configuration into struct dma_chan to avoid duplicating the same
code in each driver.
Much of dma_slave_config is identical for source and destination. Split
the configuration into src and dst groups and use a union to preserve
backward compatibility. This reduces the need for drivers to repeatedly
check the DMA transfer direction.
This change introduces the general approach. If this method is accepted,
more drivers can be updated incrementally.
Looking ahead, this also enables improvements to the vchan
implementation. Most DMA engines follow one of two descriptor models:
- Cyclic hardware buffers (e.g. dw-edma)
- Linked-list descriptors (e.g. fsl-edma)
*
* ┌──────┐ ┌──────┐ ┌──────┐
* │ │ ┌─►│ │ ┌─►│ │
* │ │ │ │ │ │ │ │
* ├──────┤ │ ├──────┤ │ ├──────┤
* │ Next ├─┘ │ Next ├─┘ │ Next │
* └──────┘ └──────┘ └──────┘
A large portion of the software logic is shared between these models.
Recent work already shares circular buffer handling between eDMA and
HDMA [1], and this can be extended to support more hardware.
Ultimately, a DMA engine should only need to implement logic to fill a
single list item.
[1] https://lore.kernel.org/dmaengine/aWTyGpGN6WqtVCfN@ryzen/T/#t
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Frank Li (6):
dmaengine: Move struct dma_chan after struct dma_slave_config
dmaengine: Add common slave configuration to dma_chan
dmaengine: fsl-edma: use dma_chan common config
dmaengine: imx-sdma: use common config at dma_chan
dmaengine: Add union and dma_slave_get_config() helper for dma_slave_config
dmaengine: fsl-edma: use common dma_slave_get_cfg()
drivers/dma/fsl-edma-common.c | 141 +++++++++++++++++------------------
drivers/dma/fsl-edma-common.h | 1 -
drivers/dma/imx-sdma.c | 8 +-
include/linux/dmaengine.h | 166 +++++++++++++++++++++++++-----------------
4 files changed, 166 insertions(+), 150 deletions(-)
---
base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
change-id: 20260112-dma_common_config-cb87b461296f
Best regards,
--
Frank Li <Frank.Li@nxp.com>
next reply other threads:[~2026-01-14 17:13 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-14 17:12 Frank Li [this message]
2026-01-14 17:12 ` [PATCH 1/6] dmaengine: Move struct dma_chan after struct dma_slave_config Frank Li
2026-01-14 17:12 ` [PATCH 2/6] dmaengine: Add common slave configuration to dma_chan Frank Li
2026-01-14 17:12 ` [PATCH 3/6] dmaengine: fsl-edma: use dma_chan common config Frank Li
2026-01-14 17:12 ` [PATCH 4/6] dmaengine: imx-sdma: use common config at dma_chan Frank Li
2026-01-14 17:12 ` [PATCH 5/6] dmaengine: Add union and dma_slave_get_config() helper for dma_slave_config Frank Li
2026-01-14 17:12 ` [PATCH 6/6] dmaengine: fsl-edma: use common dma_slave_get_cfg() Frank Li
2026-03-09 11:24 ` [PATCH 0/6] dmaengine: Add common dma_slave_config and split it into src and dst parts Vinod Koul
2026-03-09 14:27 ` Frank Li
2026-03-17 10:26 ` Vinod Koul
2026-03-17 13:56 ` Frank Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260114-dma_common_config-v1-0-64feb836ff04@nxp.com \
--to=frank.li@nxp.com \
--cc=dmaengine@vger.kernel.org \
--cc=festevam@gmail.com \
--cc=imx@lists.linux.dev \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox