mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 08:15:07 -04:00
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>
This commit is contained in:
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user