diff options
Diffstat (limited to 'include/linux/dmaengine.h')
-rw-r--r-- | include/linux/dmaengine.h | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 017433712833..30de0197263a 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
@@ -804,6 +804,9 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_slave_single( | |||
804 | sg_dma_address(&sg) = buf; | 804 | sg_dma_address(&sg) = buf; |
805 | sg_dma_len(&sg) = len; | 805 | sg_dma_len(&sg) = len; |
806 | 806 | ||
807 | if (!chan || !chan->device || !chan->device->device_prep_slave_sg) | ||
808 | return NULL; | ||
809 | |||
807 | return chan->device->device_prep_slave_sg(chan, &sg, 1, | 810 | return chan->device->device_prep_slave_sg(chan, &sg, 1, |
808 | dir, flags, NULL); | 811 | dir, flags, NULL); |
809 | } | 812 | } |
@@ -812,6 +815,9 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_slave_sg( | |||
812 | struct dma_chan *chan, struct scatterlist *sgl, unsigned int sg_len, | 815 | struct dma_chan *chan, struct scatterlist *sgl, unsigned int sg_len, |
813 | enum dma_transfer_direction dir, unsigned long flags) | 816 | enum dma_transfer_direction dir, unsigned long flags) |
814 | { | 817 | { |
818 | if (!chan || !chan->device || !chan->device->device_prep_slave_sg) | ||
819 | return NULL; | ||
820 | |||
815 | return chan->device->device_prep_slave_sg(chan, sgl, sg_len, | 821 | return chan->device->device_prep_slave_sg(chan, sgl, sg_len, |
816 | dir, flags, NULL); | 822 | dir, flags, NULL); |
817 | } | 823 | } |
@@ -823,6 +829,9 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_rio_sg( | |||
823 | enum dma_transfer_direction dir, unsigned long flags, | 829 | enum dma_transfer_direction dir, unsigned long flags, |
824 | struct rio_dma_ext *rio_ext) | 830 | struct rio_dma_ext *rio_ext) |
825 | { | 831 | { |
832 | if (!chan || !chan->device || !chan->device->device_prep_slave_sg) | ||
833 | return NULL; | ||
834 | |||
826 | return chan->device->device_prep_slave_sg(chan, sgl, sg_len, | 835 | return chan->device->device_prep_slave_sg(chan, sgl, sg_len, |
827 | dir, flags, rio_ext); | 836 | dir, flags, rio_ext); |
828 | } | 837 | } |
@@ -833,6 +842,9 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_cyclic( | |||
833 | size_t period_len, enum dma_transfer_direction dir, | 842 | size_t period_len, enum dma_transfer_direction dir, |
834 | unsigned long flags) | 843 | unsigned long flags) |
835 | { | 844 | { |
845 | if (!chan || !chan->device || !chan->device->device_prep_dma_cyclic) | ||
846 | return NULL; | ||
847 | |||
836 | return chan->device->device_prep_dma_cyclic(chan, buf_addr, buf_len, | 848 | return chan->device->device_prep_dma_cyclic(chan, buf_addr, buf_len, |
837 | period_len, dir, flags); | 849 | period_len, dir, flags); |
838 | } | 850 | } |
@@ -841,6 +853,9 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_interleaved_dma( | |||
841 | struct dma_chan *chan, struct dma_interleaved_template *xt, | 853 | struct dma_chan *chan, struct dma_interleaved_template *xt, |
842 | unsigned long flags) | 854 | unsigned long flags) |
843 | { | 855 | { |
856 | if (!chan || !chan->device || !chan->device->device_prep_interleaved_dma) | ||
857 | return NULL; | ||
858 | |||
844 | return chan->device->device_prep_interleaved_dma(chan, xt, flags); | 859 | return chan->device->device_prep_interleaved_dma(chan, xt, flags); |
845 | } | 860 | } |
846 | 861 | ||
@@ -848,7 +863,7 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_memset( | |||
848 | struct dma_chan *chan, dma_addr_t dest, int value, size_t len, | 863 | struct dma_chan *chan, dma_addr_t dest, int value, size_t len, |
849 | unsigned long flags) | 864 | unsigned long flags) |
850 | { | 865 | { |
851 | if (!chan || !chan->device) | 866 | if (!chan || !chan->device || !chan->device->device_prep_dma_memset) |
852 | return NULL; | 867 | return NULL; |
853 | 868 | ||
854 | return chan->device->device_prep_dma_memset(chan, dest, value, | 869 | return chan->device->device_prep_dma_memset(chan, dest, value, |
@@ -861,6 +876,9 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_sg( | |||
861 | struct scatterlist *src_sg, unsigned int src_nents, | 876 | struct scatterlist *src_sg, unsigned int src_nents, |
862 | unsigned long flags) | 877 | unsigned long flags) |
863 | { | 878 | { |
879 | if (!chan || !chan->device || !chan->device->device_prep_dma_sg) | ||
880 | return NULL; | ||
881 | |||
864 | return chan->device->device_prep_dma_sg(chan, dst_sg, dst_nents, | 882 | return chan->device->device_prep_dma_sg(chan, dst_sg, dst_nents, |
865 | src_sg, src_nents, flags); | 883 | src_sg, src_nents, flags); |
866 | } | 884 | } |