mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 17:18:59 +00:00
104 lines
3.1 KiB
Diff
104 lines
3.1 KiB
Diff
|
From 203e0c39b262fc1da6f976495c32ec38ea93a137 Mon Sep 17 00:00:00 2001
|
||
|
From: Christoph Hellwig <hch@lst.de>
|
||
|
Date: Tue, 12 Nov 2019 17:06:04 +0100
|
||
|
Subject: [PATCH] dma-direct: unify the dma_capable definitions
|
||
|
|
||
|
commit 130c1ccbf55330b55e82612a6e54eebb82c9d746 upstream.
|
||
|
|
||
|
Currently each architectures that wants to override dma_to_phys and
|
||
|
phys_to_dma also has to provide dma_capable. But there isn't really
|
||
|
any good reason for that. powerpc and mips just have copies of the
|
||
|
generic one minus the latests fix, and the arm one was the inspiration
|
||
|
for said fix, but misses the bus_dma_mask handling.
|
||
|
Make all architectures use the generic version instead.
|
||
|
|
||
|
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
||
|
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
|
||
|
Reviewed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
||
|
---
|
||
|
arch/arm/include/asm/dma-direct.h | 19 -------------------
|
||
|
arch/mips/include/asm/dma-direct.h | 8 --------
|
||
|
arch/powerpc/include/asm/dma-direct.h | 9 ---------
|
||
|
include/linux/dma-direct.h | 2 +-
|
||
|
4 files changed, 1 insertion(+), 37 deletions(-)
|
||
|
|
||
|
--- a/arch/arm/include/asm/dma-direct.h
|
||
|
+++ b/arch/arm/include/asm/dma-direct.h
|
||
|
@@ -14,23 +14,4 @@ static inline phys_addr_t __dma_to_phys(
|
||
|
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 */
|
||
|
--- a/arch/mips/include/asm/dma-direct.h
|
||
|
+++ b/arch/mips/include/asm/dma-direct.h
|
||
|
@@ -2,14 +2,6 @@
|
||
|
#ifndef _MIPS_DMA_DIRECT_H
|
||
|
#define _MIPS_DMA_DIRECT_H 1
|
||
|
|
||
|
-static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
|
||
|
-{
|
||
|
- if (!dev->dma_mask)
|
||
|
- return false;
|
||
|
-
|
||
|
- return addr + size - 1 <= *dev->dma_mask;
|
||
|
-}
|
||
|
-
|
||
|
dma_addr_t __phys_to_dma(struct device *dev, phys_addr_t paddr);
|
||
|
phys_addr_t __dma_to_phys(struct device *dev, dma_addr_t daddr);
|
||
|
|
||
|
--- a/arch/powerpc/include/asm/dma-direct.h
|
||
|
+++ b/arch/powerpc/include/asm/dma-direct.h
|
||
|
@@ -2,15 +2,6 @@
|
||
|
#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)
|
||
|
-{
|
||
|
- if (!dev->dma_mask)
|
||
|
- return false;
|
||
|
-
|
||
|
- return addr + size - 1 <=
|
||
|
- min_not_zero(*dev->dma_mask, dev->bus_dma_mask);
|
||
|
-}
|
||
|
-
|
||
|
static inline dma_addr_t __phys_to_dma(struct device *dev, phys_addr_t paddr)
|
||
|
{
|
||
|
if (!dev)
|
||
|
--- a/include/linux/dma-direct.h
|
||
|
+++ b/include/linux/dma-direct.h
|
||
|
@@ -26,6 +26,7 @@ static inline phys_addr_t __dma_to_phys(
|
||
|
|
||
|
return paddr + ((phys_addr_t)dev->dma_pfn_offset << PAGE_SHIFT);
|
||
|
}
|
||
|
+#endif /* !CONFIG_ARCH_HAS_PHYS_TO_DMA */
|
||
|
|
||
|
static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
|
||
|
{
|
||
|
@@ -40,7 +41,6 @@ static inline bool dma_capable(struct de
|
||
|
|
||
|
return end <= min_not_zero(*dev->dma_mask, dev->bus_dma_mask);
|
||
|
}
|
||
|
-#endif /* !CONFIG_ARCH_HAS_PHYS_TO_DMA */
|
||
|
|
||
|
#ifdef CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED
|
||
|
bool force_dma_unencrypted(struct device *dev);
|