diff options
author | Gustavo Pimentel <Gustavo.Pimentel@synopsys.com> | 2021-02-18 22:04:03 +0300 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2021-03-16 20:28:53 +0300 |
commit | 31fb8c1ff962d93ed5025f39a6a186207c9805eb (patch) | |
tree | 6e99567ec3f6a9305de3eaa68a7959a2dd8f9d85 /drivers/dma/dw-edma/dw-edma-core.h | |
parent | f3167dc16378da4abd4ca19d6700170fcdfd5be7 (diff) | |
download | linux-31fb8c1ff962d93ed5025f39a6a186207c9805eb.tar.xz |
dmaengine: dw-edma: Improve the linked list and data blocks definition
In the previous implementation, the driver assumed that there existed
only two memory spaces that would equally distribute the amount of
read/write channels.
This might not be the case on some other implementations, therefore this
patch change this requirement so that each write/read channel has
its own linked list and data space well defined, which allows
different sizes and locations.
Signed-off-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
Link: https://lore.kernel.org/r/2e316cb983f8a1e09ce929029f87619dc92a52de.1613674948.git.gustavo.pimentel@synopsys.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/dma/dw-edma/dw-edma-core.h')
-rw-r--r-- | drivers/dma/dw-edma/dw-edma-core.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-edma-core.h index 650b1c7d30b7..cba543655e33 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -91,11 +91,8 @@ struct dw_edma_chan { int id; enum dw_edma_dir dir; - off_t ll_off; u32 ll_max; - off_t dt_off; - struct msi_msg msi; enum dw_edma_request request; @@ -126,8 +123,10 @@ struct dw_edma { u16 rd_ch_cnt; struct dw_edma_region rg_region; /* Registers */ - struct dw_edma_region ll_region; /* Linked list */ - struct dw_edma_region dt_region; /* Data */ + struct dw_edma_region ll_region_wr[EDMA_MAX_WR_CH]; + struct dw_edma_region ll_region_rd[EDMA_MAX_RD_CH]; + struct dw_edma_region dt_region_wr[EDMA_MAX_WR_CH]; + struct dw_edma_region dt_region_rd[EDMA_MAX_RD_CH]; struct dw_edma_irq *irq; int nr_irqs; |