dmaengine: xilinx: Split device_control
Split the device_control callback of the Xilinx VDMA driver to make use of the newly introduced callbacks, that will eventually be used to retrieve slave capabilities. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
662f1ac312
commit
ba7140462f
|
@ -1001,13 +1001,17 @@ xilinx_vdma_dma_prep_interleaved(struct dma_chan *dchan,
|
||||||
* xilinx_vdma_terminate_all - Halt the channel and free descriptors
|
* xilinx_vdma_terminate_all - Halt the channel and free descriptors
|
||||||
* @chan: Driver specific VDMA Channel pointer
|
* @chan: Driver specific VDMA Channel pointer
|
||||||
*/
|
*/
|
||||||
static void xilinx_vdma_terminate_all(struct xilinx_vdma_chan *chan)
|
static int xilinx_vdma_terminate_all(struct dma_chan *dchan)
|
||||||
{
|
{
|
||||||
|
struct xilinx_vdma_chan *chan = to_xilinx_chan(dchan);
|
||||||
|
|
||||||
/* Halt the DMA engine */
|
/* Halt the DMA engine */
|
||||||
xilinx_vdma_halt(chan);
|
xilinx_vdma_halt(chan);
|
||||||
|
|
||||||
/* Remove and free all of the descriptors in the lists */
|
/* Remove and free all of the descriptors in the lists */
|
||||||
xilinx_vdma_free_descriptors(chan);
|
xilinx_vdma_free_descriptors(chan);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1075,27 +1079,6 @@ int xilinx_vdma_channel_set_config(struct dma_chan *dchan,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(xilinx_vdma_channel_set_config);
|
EXPORT_SYMBOL(xilinx_vdma_channel_set_config);
|
||||||
|
|
||||||
/**
|
|
||||||
* xilinx_vdma_device_control - Configure DMA channel of the device
|
|
||||||
* @dchan: DMA Channel pointer
|
|
||||||
* @cmd: DMA control command
|
|
||||||
* @arg: Channel configuration
|
|
||||||
*
|
|
||||||
* Return: '0' on success and failure value on error
|
|
||||||
*/
|
|
||||||
static int xilinx_vdma_device_control(struct dma_chan *dchan,
|
|
||||||
enum dma_ctrl_cmd cmd, unsigned long arg)
|
|
||||||
{
|
|
||||||
struct xilinx_vdma_chan *chan = to_xilinx_chan(dchan);
|
|
||||||
|
|
||||||
if (cmd != DMA_TERMINATE_ALL)
|
|
||||||
return -ENXIO;
|
|
||||||
|
|
||||||
xilinx_vdma_terminate_all(chan);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* Probe and remove
|
* Probe and remove
|
||||||
*/
|
*/
|
||||||
|
@ -1300,7 +1283,7 @@ static int xilinx_vdma_probe(struct platform_device *pdev)
|
||||||
xilinx_vdma_free_chan_resources;
|
xilinx_vdma_free_chan_resources;
|
||||||
xdev->common.device_prep_interleaved_dma =
|
xdev->common.device_prep_interleaved_dma =
|
||||||
xilinx_vdma_dma_prep_interleaved;
|
xilinx_vdma_dma_prep_interleaved;
|
||||||
xdev->common.device_control = xilinx_vdma_device_control;
|
xdev->common.device_terminate_all = xilinx_vdma_terminate_all;
|
||||||
xdev->common.device_tx_status = xilinx_vdma_tx_status;
|
xdev->common.device_tx_status = xilinx_vdma_tx_status;
|
||||||
xdev->common.device_issue_pending = xilinx_vdma_issue_pending;
|
xdev->common.device_issue_pending = xilinx_vdma_issue_pending;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue