diff options
| author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2009-08-04 15:08:22 -0400 |
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-08-28 00:24:09 -0400 |
| commit | 762afb7317b1987fa0851135fe4f2947f68c3c2a (patch) | |
| tree | 1cf83145c1bdd55b6a166d428af8ee195b09985b /arch/powerpc/include/asm/dma-mapping.h | |
| parent | 2864697cefb6e7596e39aef933b4131f6c9fa9e1 (diff) | |
powerpc: Remove addr_needs_map in struct dma_mapping_ops
This patch adds max_direct_dma_addr to struct dev_archdata to remove
addr_needs_map in struct dma_mapping_ops. It also converts
dma_capable() to use max_direct_dma_addr.
max_direct_dma_addr is initialized in pci_dma_dev_setup_swiotlb(),
called via ppc_md.pci_dma_dev_setup hook.
For further information:
http://marc.info/?t=124719060200001&r=1&w=2
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Acked-by: Becky Bruce <beckyb@kernel.crashing.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/include/asm/dma-mapping.h')
| -rw-r--r-- | arch/powerpc/include/asm/dma-mapping.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/powerpc/include/asm/dma-mapping.h b/arch/powerpc/include/asm/dma-mapping.h index 0c34371ec49c..1765c379138a 100644 --- a/arch/powerpc/include/asm/dma-mapping.h +++ b/arch/powerpc/include/asm/dma-mapping.h | |||
| @@ -87,8 +87,6 @@ struct dma_mapping_ops { | |||
| 87 | dma_addr_t dma_address, size_t size, | 87 | dma_addr_t dma_address, size_t size, |
| 88 | enum dma_data_direction direction, | 88 | enum dma_data_direction direction, |
| 89 | struct dma_attrs *attrs); | 89 | struct dma_attrs *attrs); |
| 90 | int (*addr_needs_map)(struct device *dev, dma_addr_t addr, | ||
| 91 | size_t size); | ||
| 92 | #ifdef CONFIG_PPC_NEED_DMA_SYNC_OPS | 90 | #ifdef CONFIG_PPC_NEED_DMA_SYNC_OPS |
| 93 | void (*sync_single_range_for_cpu)(struct device *hwdev, | 91 | void (*sync_single_range_for_cpu)(struct device *hwdev, |
| 94 | dma_addr_t dma_handle, unsigned long offset, | 92 | dma_addr_t dma_handle, unsigned long offset, |
| @@ -426,10 +424,12 @@ static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) | |||
| 426 | 424 | ||
| 427 | static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size) | 425 | static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size) |
| 428 | { | 426 | { |
| 429 | struct dma_mapping_ops *ops = get_dma_ops(dev); | 427 | #ifdef CONFIG_SWIOTLB |
| 428 | struct dev_archdata *sd = &dev->archdata; | ||
| 430 | 429 | ||
| 431 | if (ops->addr_needs_map && ops->addr_needs_map(dev, addr, size)) | 430 | if (sd->max_direct_dma_addr && addr + size > sd->max_direct_dma_addr) |
| 432 | return 0; | 431 | return 0; |
| 432 | #endif | ||
| 433 | 433 | ||
| 434 | if (!dev->dma_mask) | 434 | if (!dev->dma_mask) |
| 435 | return 0; | 435 | return 0; |
