[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260127033420.3460579-1-den@valinux.co.jp>
Date: Tue, 27 Jan 2026 12:34:13 +0900
From: Koichiro Den <den@...inux.co.jp>
To: vkoul@...nel.org,
mani@...nel.org,
Frank.Li@....com,
jingoohan1@...il.com,
lpieralisi@...nel.org,
kwilczynski@...nel.org,
robh@...nel.org,
bhelgaas@...gle.com
Cc: dmaengine@...r.kernel.org,
linux-pci@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH v2 0/7] dmaengine: dw-edma, PCI: dwc: Enable remote use of integrated DesignWare eDMA
Hi,
Per Frank Li's suggestion [1], this revision combines the previously posted
PCI/dwc helper series and the dmaengine/dw-edma series into a single
7-patch set. This series therefore supersedes the two earlier postings:
- [PATCH 0/5] dmaengine: dw-edma: Add helpers for remote eDMA use scenarios
https://lore.kernel.org/dmaengine/20260126073652.3293564-1-den@valinux.co.jp/
- [PATCH 0/2] PCI: dwc: Expose integrated DesignWare eDMA windows
https://lore.kernel.org/linux-pci/20260126071550.3233631-1-den@valinux.co.jp/
[1] https://lore.kernel.org/linux-pci/aXeoxxG+9cFML1sx@lizhi-Precision-Tower-5810/
Some DesignWare PCIe endpoint platforms integrate a DesignWare eDMA
instance alongside the PCIe controller. In remote eDMA use cases, the host
needs access to the eDMA register block and the per-channel linked-list
(LL) regions via PCIe BARs, while the endpoint may still boot with a
standard EP configuration (and may also use dw-edma locally).
This series provides the following building blocks:
* dmaengine: Add an optional dma_slave_caps.hw_id so DMA providers can expose
a provider-defined hardware channel identifier to clients, and report it
from dw-edma. This allows users to correlate a DMA channel with
hardware-specific resources such as per-channel LL regions.
* dmaengine/dw-edma: Add features useful for remote-controlled EP eDMA usage:
- per-channel interrupt routing control (configured via dmaengine_slave_config(),
passing a small dw-edma-specific structure through
dma_slave_config.peripheral_config / dma_slave_config.peripheral_size),
- optional completion polling when local IRQ handling is disabled, and
- notify-only channels for cases where the local side needs interrupt
notification without cookie-based accounting (i.e. its peer
prepares and submits the descriptors), useful when host-to-endpoint
interrupt delivery is difficult or unavailable without it.
* PCI: dwc: Add query-only helper APIs to expose resources of an integrated
DesignWare eDMA instance:
- the physical base/size of the eDMA register window, and
- the per-channel LL region base/size, keyed by transfer direction and
the hardware channel identifier (hw_id).
The first real user will likely be the DesignWare backend in the NTB transport work:
[RFC PATCH v4 25/38] NTB: hw: Add remote eDMA backend registry and DesignWare backend
https://lore.kernel.org/linux-pci/20260118135440.1958279-26-den@valinux.co.jp/
(Note: the implementation in this series has been updated since that
RFC v4, so the RFC series will also need some adjustments. I have an
updated RFC series locally and can post an RFC v5 if that would help
review/testing.)
Apply/merge notes:
- Patches 1-5 apply cleanly on dmaengine.git next.
- Patches 6-7 apply cleanly on pci.git controller/dwc.
Changes in v2:
- Combine the two previously posted series into a single set (per Frank's
suggestion). Order dmaengine/dw-edma patches first so hw_id support
lands before the PCI LL-region helper, which assumes
dma_slave_caps.hw_id availability.
Thanks for reviewing,
Koichiro Den (7):
dmaengine: Add hw_id to dma_slave_caps
dmaengine: dw-edma: Report channel hw_id in dma_slave_caps
dmaengine: dw-edma: Add per-channel interrupt routing control
dmaengine: dw-edma: Poll completion when local IRQ handling is
disabled
dmaengine: dw-edma: Add notify-only channels support
PCI: dwc: Add helper to query integrated dw-edma register window
PCI: dwc: Add helper to query integrated dw-edma linked-list region
MAINTAINERS | 2 +-
drivers/dma/dmaengine.c | 1 +
drivers/dma/dw-edma/dw-edma-core.c | 167 +++++++++++++++++--
drivers/dma/dw-edma/dw-edma-core.h | 21 +++
drivers/dma/dw-edma/dw-edma-v0-core.c | 26 ++-
drivers/pci/controller/dwc/pcie-designware.c | 74 ++++++++
drivers/pci/controller/dwc/pcie-designware.h | 2 +
include/linux/dma/edma.h | 57 +++++++
include/linux/dmaengine.h | 2 +
include/linux/pcie-dwc-edma.h | 72 ++++++++
10 files changed, 398 insertions(+), 26 deletions(-)
create mode 100644 include/linux/pcie-dwc-edma.h
--
2.51.0
Powered by blists - more mailing lists