From: Russell King Date: Fri, 9 May 2014 14:58:15 +0000 (+0100) Subject: DMA-API: provide a helper to setup DMA masks X-Git-Tag: firefly_0821_release~3680^2~122^2~2^2~7 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1487ad49044023a8ce9b7fc5a9cdf6bbec0b8748;p=firefly-linux-kernel-4.4.55.git DMA-API: provide a helper to setup DMA masks Many drivers contain code such as: dev->dma_mask = &dev->coherent_dma_mask; dev->coherent_dma_mask = MASK; Let's move this pattern out of drivers and have the DMA API provide a helper for it. This helper uses dma_set_mask_and_coherent() to allow platform issues to be properly dealt with via dma_set_mask()/ dma_is_supported(). Signed-off-by: Russell King (cherry picked from commit fa6a8d6d65b19ab44e5244ea499bcd553cc72343) Signed-off-by: Ryan Harkin Signed-off-by: Mark Brown --- diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 8f7a2e84e527..48ef6f50d86c 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -111,6 +111,16 @@ static inline int dma_set_mask_and_coherent(struct device *dev, u64 mask) return rc; } +/* + * Similar to the above, except it deals with the case where the device + * does not have dev->dma_mask appropriately setup. + */ +static inline int dma_coerce_mask_and_coherent(struct device *dev, u64 mask) +{ + dev->dma_mask = &dev->coherent_dma_mask; + return dma_set_mask_and_coherent(dev, mask); +} + extern u64 dma_get_required_mask(struct device *dev); static inline unsigned int dma_get_max_seg_size(struct device *dev)