diff options
author | Andrew Lunn <andrew@lunn.ch> | 2012-11-18 05:44:56 -0500 |
---|---|---|
committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2012-11-20 09:59:01 -0500 |
commit | 34c93c8657935d30649e777c4aa05f74f16aa418 (patch) | |
tree | 8a5fbb6cf15677350fd8dd83689ba8c4545f6598 /drivers/dma | |
parent | cd09fea446f485f1514ad444cb06a35e1dd63326 (diff) |
dma: mv_xor: Add a device_control function
The dmatest module for DMA engines calls
device_control(dtc->chan, DMA_TERMINATE_ALL, 0);
after completing the tests. The documentation in
include/linux/dmaengine.h suggests this function is optional and
dma_async_device_register() also does not BUG_ON() when not passed a
function. However, dmatest is not the only code in the kernel
unconditionally calling device_control. So add an implementation
indicating all operations are not implemented.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'drivers/dma')
-rw-r--r-- | drivers/dma/mv_xor.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c index 97c8611f5ffb..f450fe8cbd61 100644 --- a/drivers/dma/mv_xor.c +++ b/drivers/dma/mv_xor.c | |||
@@ -1070,6 +1070,14 @@ out: | |||
1070 | return err; | 1070 | return err; |
1071 | } | 1071 | } |
1072 | 1072 | ||
1073 | /* This driver does not implement any of the optional DMA operations. */ | ||
1074 | static int | ||
1075 | mv_xor_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd, | ||
1076 | unsigned long arg) | ||
1077 | { | ||
1078 | return -ENOSYS; | ||
1079 | } | ||
1080 | |||
1073 | static int mv_xor_channel_remove(struct mv_xor_chan *mv_chan) | 1081 | static int mv_xor_channel_remove(struct mv_xor_chan *mv_chan) |
1074 | { | 1082 | { |
1075 | struct dma_chan *chan, *_chan; | 1083 | struct dma_chan *chan, *_chan; |
@@ -1130,6 +1138,7 @@ mv_xor_channel_add(struct mv_xor_device *xordev, | |||
1130 | dma_dev->device_free_chan_resources = mv_xor_free_chan_resources; | 1138 | dma_dev->device_free_chan_resources = mv_xor_free_chan_resources; |
1131 | dma_dev->device_tx_status = mv_xor_status; | 1139 | dma_dev->device_tx_status = mv_xor_status; |
1132 | dma_dev->device_issue_pending = mv_xor_issue_pending; | 1140 | dma_dev->device_issue_pending = mv_xor_issue_pending; |
1141 | dma_dev->device_control = mv_xor_control; | ||
1133 | dma_dev->dev = &pdev->dev; | 1142 | dma_dev->dev = &pdev->dev; |
1134 | 1143 | ||
1135 | /* set prep routines based on capability */ | 1144 | /* set prep routines based on capability */ |