diff options
| author | Koichiro Den <den@valinux.co.jp> | 2026-07-21 15:28:11 +0900 |
|---|---|---|
| committer | Vinod Koul <vkoul@kernel.org> | 2026-07-21 16:00:36 +0530 |
| commit | 9504c24325ede003d111cd004e56803969764355 (patch) | |
| tree | 44bf38fda30722b68bf05ce0a4524d2c135d20ce | |
| parent | f8850e66ae8b3f2809b665375ba9a7106a4779f8 (diff) | |
dmaengine: dw-edma-pcie: Add register offset match flag
Add a match-data flag for devices whose DMA register block starts at an
offset inside the mapped BAR. Existing Synopsys EDDA and AMD (Xilinx)
MDB/CPM6 matches keep using the BAR mapping base directly.
The offsets handled here come from static, trusted match data. Later
metadata-derived offsets are validated when the endpoint DMA metadata
path parses them at that trust boundary.
No functional change intended.
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Koichiro Den <den@valinux.co.jp>
Link: https://patch.msgid.link/20260721062815.4117887-11-den@valinux.co.jp
Signed-off-by: Vinod Koul <vkoul@kernel.org>
| -rw-r--r-- | drivers/dma/dw-edma/dw-edma-pcie.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/dma/dw-edma/dw-edma-pcie.c b/drivers/dma/dw-edma/dw-edma-pcie.c index 99ddb6e6da34..4b2757c1eda2 100644 --- a/drivers/dma/dw-edma/dw-edma-pcie.c +++ b/drivers/dma/dw-edma/dw-edma-pcie.c @@ -89,6 +89,7 @@ struct dw_edma_pcie_match_data { }; #define DW_EDMA_PCIE_F_DEVMEM_PHYS_OFF BIT(0) +#define DW_EDMA_PCIE_F_REG_OFFSET BIT(1) static const struct dw_edma_pcie_data snps_edda_data = { /* eDMA registers location */ @@ -464,6 +465,8 @@ static int dw_edma_pcie_probe(struct pci_dev *pdev, chip->reg_base = pcim_iomap_table(pdev)[dma_data->rg.bar]; if (!chip->reg_base) return -ENOMEM; + if (match->flags & DW_EDMA_PCIE_F_REG_OFFSET) + chip->reg_base += dma_data->rg.off; for (i = 0; i < chip->ll_wr_cnt && !dma_data->cfg_non_ll; i++) { struct dw_edma_region *ll_region = &chip->ll_region_wr[i]; |
