dmaengine: dw-axi-dmac: Add device_config operation
Add device_config() callback function so that the device address can be passed to the dma driver. DMA clients use this interface to pass in the device address to the AxiDMA. Without this interface, data transfer between device to memory and memory to device would failed. Signed-off-by: Sia Jee Heng <jee.heng.sia@intel.com> Tested-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> Link: https://lore.kernel.org/r/20210125013255.25799-6-jee.heng.sia@intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
Родитель
67b2e39f4a
Коммит
66c6c9455e
|
@ -559,6 +559,16 @@ err_desc_get:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static int dw_axi_dma_chan_slave_config(struct dma_chan *dchan,
|
||||
struct dma_slave_config *config)
|
||||
{
|
||||
struct axi_dma_chan *chan = dchan_to_axi_dma_chan(dchan);
|
||||
|
||||
memcpy(&chan->config, config, sizeof(*config));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void axi_chan_dump_lli(struct axi_dma_chan *chan,
|
||||
struct axi_dma_hw_desc *desc)
|
||||
{
|
||||
|
@ -948,6 +958,7 @@ static int dw_probe(struct platform_device *pdev)
|
|||
|
||||
dw->dma.device_prep_dma_memcpy = dma_chan_prep_dma_memcpy;
|
||||
dw->dma.device_synchronize = dw_axi_dma_synchronize;
|
||||
dw->dma.device_config = dw_axi_dma_chan_slave_config;
|
||||
|
||||
platform_set_drvdata(pdev, chip);
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@ struct axi_dma_chan {
|
|||
struct virt_dma_chan vc;
|
||||
|
||||
struct axi_dma_desc *desc;
|
||||
struct dma_slave_config config;
|
||||
/* these other elements are all protected by vc.lock */
|
||||
bool is_paused;
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче