mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
dma-mapping: use unsigned long for dma_attrs
The dma-mapping core and the implementations do not change the DMA
attributes passed by pointer. Thus the pointer can point to const data.
However the attributes do not have to be a bitfield. Instead unsigned
long will do fine:
1. This is just simpler. Both in terms of reading the code and setting
attributes. Instead of initializing local attributes on the stack
and passing pointer to it to dma_set_attr(), just set the bits.
2. It brings safeness and checking for const correctness because the
attributes are passed by value.
Semantic patches for this change (at least most of them):
virtual patch
virtual context
@r@
identifier f, attrs;
@@
f(...,
- struct dma_attrs *attrs
+ unsigned long attrs
, ...)
{
...
}
@@
identifier r.f;
@@
f(...,
- NULL
+ 0
)
and
// Options: --all-includes
virtual patch
virtual context
@r@
identifier f, attrs;
type t;
@@
t f(..., struct dma_attrs *attrs);
@@
identifier r.f;
@@
f(...,
- NULL
+ 0
)
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Krzysztof Kozlowski <[email protected]>
Acked-by: Vineet Gupta <[email protected]>
Acked-by: Robin Murphy <[email protected]>
Acked-by: Hans-Christian Noren Egtvedt <[email protected]>
Acked-by: Mark Salter <[email protected]> [c6x]
Acked-by: Jesper Nilsson <[email protected]> [cris]
Acked-by: Daniel Vetter <[email protected]> [drm]
Reviewed-by: Bart Van Assche <[email protected]>
Acked-by: Joerg Roedel <[email protected]> [iommu]
Acked-by: Fabien Dessenne <[email protected]> [bdisp]
Reviewed-by: Marek Szyprowski <[email protected]> [vb2-core]
Acked-by: David Vrabel <[email protected]> [xen]
Acked-by: Konrad Rzeszutek Wilk <[email protected]> [xen swiotlb]
Acked-by: Joerg Roedel <[email protected]> [iommu]
Acked-by: Richard Kuo <[email protected]> [hexagon]
Acked-by: Geert Uytterhoeven <[email protected]> [m68k]
Acked-by: Gerald Schaefer <[email protected]> [s390]
Acked-by: Bjorn Andersson <[email protected]>
Acked-by: Hans-Christian Noren Egtvedt <[email protected]> [avr32]
Acked-by: Vineet Gupta <[email protected]> [arc]
Acked-by: Robin Murphy <[email protected]> [arm64 and dma-iommu]
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
1605d2715a
commit
00085f1efa
111 changed files with 705 additions and 804 deletions
|
|
@ -790,7 +790,7 @@ ccio_map_single(struct device *dev, void *addr, size_t size,
|
|||
static dma_addr_t
|
||||
ccio_map_page(struct device *dev, struct page *page, unsigned long offset,
|
||||
size_t size, enum dma_data_direction direction,
|
||||
struct dma_attrs *attrs)
|
||||
unsigned long attrs)
|
||||
{
|
||||
return ccio_map_single(dev, page_address(page) + offset, size,
|
||||
direction);
|
||||
|
|
@ -806,7 +806,7 @@ ccio_map_page(struct device *dev, struct page *page, unsigned long offset,
|
|||
*/
|
||||
static void
|
||||
ccio_unmap_page(struct device *dev, dma_addr_t iova, size_t size,
|
||||
enum dma_data_direction direction, struct dma_attrs *attrs)
|
||||
enum dma_data_direction direction, unsigned long attrs)
|
||||
{
|
||||
struct ioc *ioc;
|
||||
unsigned long flags;
|
||||
|
|
@ -844,7 +844,7 @@ ccio_unmap_page(struct device *dev, dma_addr_t iova, size_t size,
|
|||
*/
|
||||
static void *
|
||||
ccio_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag,
|
||||
struct dma_attrs *attrs)
|
||||
unsigned long attrs)
|
||||
{
|
||||
void *ret;
|
||||
#if 0
|
||||
|
|
@ -878,9 +878,9 @@ ccio_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag,
|
|||
*/
|
||||
static void
|
||||
ccio_free(struct device *dev, size_t size, void *cpu_addr,
|
||||
dma_addr_t dma_handle, struct dma_attrs *attrs)
|
||||
dma_addr_t dma_handle, unsigned long attrs)
|
||||
{
|
||||
ccio_unmap_page(dev, dma_handle, size, 0, NULL);
|
||||
ccio_unmap_page(dev, dma_handle, size, 0, 0);
|
||||
free_pages((unsigned long)cpu_addr, get_order(size));
|
||||
}
|
||||
|
||||
|
|
@ -907,7 +907,7 @@ ccio_free(struct device *dev, size_t size, void *cpu_addr,
|
|||
*/
|
||||
static int
|
||||
ccio_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||
enum dma_data_direction direction, struct dma_attrs *attrs)
|
||||
enum dma_data_direction direction, unsigned long attrs)
|
||||
{
|
||||
struct ioc *ioc;
|
||||
int coalesced, filled = 0;
|
||||
|
|
@ -984,7 +984,7 @@ ccio_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
|||
*/
|
||||
static void
|
||||
ccio_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||
enum dma_data_direction direction, struct dma_attrs *attrs)
|
||||
enum dma_data_direction direction, unsigned long attrs)
|
||||
{
|
||||
struct ioc *ioc;
|
||||
|
||||
|
|
@ -1004,7 +1004,7 @@ ccio_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
|||
ioc->usg_pages += sg_dma_len(sglist) >> PAGE_SHIFT;
|
||||
#endif
|
||||
ccio_unmap_page(dev, sg_dma_address(sglist),
|
||||
sg_dma_len(sglist), direction, NULL);
|
||||
sg_dma_len(sglist), direction, 0);
|
||||
++sglist;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -783,7 +783,7 @@ sba_map_single(struct device *dev, void *addr, size_t size,
|
|||
static dma_addr_t
|
||||
sba_map_page(struct device *dev, struct page *page, unsigned long offset,
|
||||
size_t size, enum dma_data_direction direction,
|
||||
struct dma_attrs *attrs)
|
||||
unsigned long attrs)
|
||||
{
|
||||
return sba_map_single(dev, page_address(page) + offset, size,
|
||||
direction);
|
||||
|
|
@ -801,7 +801,7 @@ sba_map_page(struct device *dev, struct page *page, unsigned long offset,
|
|||
*/
|
||||
static void
|
||||
sba_unmap_page(struct device *dev, dma_addr_t iova, size_t size,
|
||||
enum dma_data_direction direction, struct dma_attrs *attrs)
|
||||
enum dma_data_direction direction, unsigned long attrs)
|
||||
{
|
||||
struct ioc *ioc;
|
||||
#if DELAYED_RESOURCE_CNT > 0
|
||||
|
|
@ -876,7 +876,7 @@ sba_unmap_page(struct device *dev, dma_addr_t iova, size_t size,
|
|||
* See Documentation/DMA-API-HOWTO.txt
|
||||
*/
|
||||
static void *sba_alloc(struct device *hwdev, size_t size, dma_addr_t *dma_handle,
|
||||
gfp_t gfp, struct dma_attrs *attrs)
|
||||
gfp_t gfp, unsigned long attrs)
|
||||
{
|
||||
void *ret;
|
||||
|
||||
|
|
@ -908,9 +908,9 @@ static void *sba_alloc(struct device *hwdev, size_t size, dma_addr_t *dma_handle
|
|||
*/
|
||||
static void
|
||||
sba_free(struct device *hwdev, size_t size, void *vaddr,
|
||||
dma_addr_t dma_handle, struct dma_attrs *attrs)
|
||||
dma_addr_t dma_handle, unsigned long attrs)
|
||||
{
|
||||
sba_unmap_page(hwdev, dma_handle, size, 0, NULL);
|
||||
sba_unmap_page(hwdev, dma_handle, size, 0, 0);
|
||||
free_pages((unsigned long) vaddr, get_order(size));
|
||||
}
|
||||
|
||||
|
|
@ -943,7 +943,7 @@ int dump_run_sg = 0;
|
|||
*/
|
||||
static int
|
||||
sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||
enum dma_data_direction direction, struct dma_attrs *attrs)
|
||||
enum dma_data_direction direction, unsigned long attrs)
|
||||
{
|
||||
struct ioc *ioc;
|
||||
int coalesced, filled = 0;
|
||||
|
|
@ -1026,7 +1026,7 @@ sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
|||
*/
|
||||
static void
|
||||
sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||
enum dma_data_direction direction, struct dma_attrs *attrs)
|
||||
enum dma_data_direction direction, unsigned long attrs)
|
||||
{
|
||||
struct ioc *ioc;
|
||||
#ifdef ASSERT_PDIR_SANITY
|
||||
|
|
@ -1051,7 +1051,7 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
|||
while (sg_dma_len(sglist) && nents--) {
|
||||
|
||||
sba_unmap_page(dev, sg_dma_address(sglist), sg_dma_len(sglist),
|
||||
direction, NULL);
|
||||
direction, 0);
|
||||
#ifdef SBA_COLLECT_STATS
|
||||
ioc->usg_pages += ((sg_dma_address(sglist) & ~IOVP_MASK) + sg_dma_len(sglist) + IOVP_SIZE - 1) >> PAGE_SHIFT;
|
||||
ioc->usingle_calls--; /* kluge since call is unmap_sg() */
|
||||
|
|
|
|||
Loading…
Reference in a new issue