diff options
Diffstat (limited to 'drivers/dma/xilinx')
-rw-r--r-- | drivers/dma/xilinx/xilinx_vdma.c | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/drivers/dma/xilinx/xilinx_vdma.c b/drivers/dma/xilinx/xilinx_vdma.c index 4a3a8f3137b3..bdd2a5dd7220 100644 --- a/drivers/dma/xilinx/xilinx_vdma.c +++ b/drivers/dma/xilinx/xilinx_vdma.c | |||
@@ -1001,13 +1001,17 @@ error: | |||
1001 | * xilinx_vdma_terminate_all - Halt the channel and free descriptors | 1001 | * xilinx_vdma_terminate_all - Halt the channel and free descriptors |
1002 | * @chan: Driver specific VDMA Channel pointer | 1002 | * @chan: Driver specific VDMA Channel pointer |
1003 | */ | 1003 | */ |
1004 | static void xilinx_vdma_terminate_all(struct xilinx_vdma_chan *chan) | 1004 | static int xilinx_vdma_terminate_all(struct dma_chan *dchan) |
1005 | { | 1005 | { |
1006 | struct xilinx_vdma_chan *chan = to_xilinx_chan(dchan); | ||
1007 | |||
1006 | /* Halt the DMA engine */ | 1008 | /* Halt the DMA engine */ |
1007 | xilinx_vdma_halt(chan); | 1009 | xilinx_vdma_halt(chan); |
1008 | 1010 | ||
1009 | /* Remove and free all of the descriptors in the lists */ | 1011 | /* Remove and free all of the descriptors in the lists */ |
1010 | xilinx_vdma_free_descriptors(chan); | 1012 | xilinx_vdma_free_descriptors(chan); |
1013 | |||
1014 | return 0; | ||
1011 | } | 1015 | } |
1012 | 1016 | ||
1013 | /** | 1017 | /** |
@@ -1075,27 +1079,6 @@ int xilinx_vdma_channel_set_config(struct dma_chan *dchan, | |||
1075 | } | 1079 | } |
1076 | EXPORT_SYMBOL(xilinx_vdma_channel_set_config); | 1080 | EXPORT_SYMBOL(xilinx_vdma_channel_set_config); |
1077 | 1081 | ||
1078 | /** | ||
1079 | * xilinx_vdma_device_control - Configure DMA channel of the device | ||
1080 | * @dchan: DMA Channel pointer | ||
1081 | * @cmd: DMA control command | ||
1082 | * @arg: Channel configuration | ||
1083 | * | ||
1084 | * Return: '0' on success and failure value on error | ||
1085 | */ | ||
1086 | static int xilinx_vdma_device_control(struct dma_chan *dchan, | ||
1087 | enum dma_ctrl_cmd cmd, unsigned long arg) | ||
1088 | { | ||
1089 | struct xilinx_vdma_chan *chan = to_xilinx_chan(dchan); | ||
1090 | |||
1091 | if (cmd != DMA_TERMINATE_ALL) | ||
1092 | return -ENXIO; | ||
1093 | |||
1094 | xilinx_vdma_terminate_all(chan); | ||
1095 | |||
1096 | return 0; | ||
1097 | } | ||
1098 | |||
1099 | /* ----------------------------------------------------------------------------- | 1082 | /* ----------------------------------------------------------------------------- |
1100 | * Probe and remove | 1083 | * Probe and remove |
1101 | */ | 1084 | */ |
@@ -1300,7 +1283,7 @@ static int xilinx_vdma_probe(struct platform_device *pdev) | |||
1300 | xilinx_vdma_free_chan_resources; | 1283 | xilinx_vdma_free_chan_resources; |
1301 | xdev->common.device_prep_interleaved_dma = | 1284 | xdev->common.device_prep_interleaved_dma = |
1302 | xilinx_vdma_dma_prep_interleaved; | 1285 | xilinx_vdma_dma_prep_interleaved; |
1303 | xdev->common.device_control = xilinx_vdma_device_control; | 1286 | xdev->common.device_terminate_all = xilinx_vdma_terminate_all; |
1304 | xdev->common.device_tx_status = xilinx_vdma_tx_status; | 1287 | xdev->common.device_tx_status = xilinx_vdma_tx_status; |
1305 | xdev->common.device_issue_pending = xilinx_vdma_issue_pending; | 1288 | xdev->common.device_issue_pending = xilinx_vdma_issue_pending; |
1306 | 1289 | ||