forked from swarren/WSL2-Linux-Kernel
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dma-mapping: move swiotlb arch helpers to a new header
phys_to_dma, dma_to_phys and dma_capable are helpers published by architecture code for use of swiotlb and xen-swiotlb only. Drivers are not supposed to use these directly, but use the DMA API instead. Move these to a new asm/dma-direct.h helper, included by a linux/dma-direct.h wrapper that provides the default linear mapping unless the architecture wants to override it. In the MIPS case the existing dma-coherent.h is reused for now as untangling it will take a bit of work. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Robin Murphy <robin.murphy@arm.com>
- Loading branch information
Christoph Hellwig
committed
Jan 10, 2018
1 parent
10dac04
commit ea8c64a
Showing
34 changed files
with
165 additions
and
195 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef ASM_ARM_DMA_DIRECT_H | ||
#define ASM_ARM_DMA_DIRECT_H 1 | ||
|
||
static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr) | ||
{ | ||
unsigned int offset = paddr & ~PAGE_MASK; | ||
return pfn_to_dma(dev, __phys_to_pfn(paddr)) + offset; | ||
} | ||
|
||
static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t dev_addr) | ||
{ | ||
unsigned int offset = dev_addr & ~PAGE_MASK; | ||
return __pfn_to_phys(dma_to_pfn(dev, dev_addr)) + offset; | ||
} | ||
|
||
static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size) | ||
{ | ||
u64 limit, mask; | ||
|
||
if (!dev->dma_mask) | ||
return 0; | ||
|
||
mask = *dev->dma_mask; | ||
|
||
limit = (mask + 1) & ~mask; | ||
if (limit && size > limit) | ||
return 0; | ||
|
||
if ((addr | (addr + size - 1)) & ~mask) | ||
return 0; | ||
|
||
return 1; | ||
} | ||
|
||
#endif /* ASM_ARM_DMA_DIRECT_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
#include <asm/dma-coherence.h> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef ASM_POWERPC_DMA_DIRECT_H | ||
#define ASM_POWERPC_DMA_DIRECT_H 1 | ||
|
||
static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size) | ||
{ | ||
#ifdef CONFIG_SWIOTLB | ||
struct dev_archdata *sd = &dev->archdata; | ||
|
||
if (sd->max_direct_dma_addr && addr + size > sd->max_direct_dma_addr) | ||
return false; | ||
#endif | ||
|
||
if (!dev->dma_mask) | ||
return false; | ||
|
||
return addr + size - 1 <= *dev->dma_mask; | ||
} | ||
|
||
static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr) | ||
{ | ||
return paddr + get_dma_offset(dev); | ||
} | ||
|
||
static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr) | ||
{ | ||
return daddr - get_dma_offset(dev); | ||
} | ||
#endif /* ASM_POWERPC_DMA_DIRECT_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.