diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2013-06-26 13:49:44 +0100 |
---|---|---|
committer | Jiri Slaby <jslaby@suse.cz> | 2014-08-26 14:12:07 +0200 |
commit | 8bac7a35e60ca70c8d12ddbfdf28a8df5a976b2b (patch) | |
tree | 882872027b4a5ad11a6c2c5929ba54c8e56f2341 /include | |
parent | d9be25f8975760c11671fb0d214bfeb25c9bc2b3 (diff) |
DMA-API: provide a helper to set both DMA and coherent DMA masks
commit 4aa806b771d16b810771d86ce23c4c3160888db3 upstream.
Provide a helper to set both the DMA and coherent DMA masks to the
same value - this avoids duplicated code in a number of drivers,
sometimes with buggy error handling, and also allows us identify
which drivers do things differently.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/dma-mapping.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 3a8d0a2af607..ec951f98e3d9 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -97,6 +97,20 @@ static inline int dma_set_coherent_mask(struct device *dev, u64 mask) } #endif +/* + * Set both the DMA mask and the coherent DMA mask to the same thing. + * Note that we don't check the return value from dma_set_coherent_mask() + * as the DMA API guarantees that the coherent DMA mask can be set to + * the same or smaller than the streaming DMA mask. + */ +static inline int dma_set_mask_and_coherent(struct device *dev, u64 mask) +{ + int rc = dma_set_mask(dev, mask); + if (rc == 0) + dma_set_coherent_mask(dev, mask); + return rc; +} + extern u64 dma_get_required_mask(struct device *dev); static inline unsigned int dma_get_max_seg_size(struct device *dev) |