mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
62b7f5931c
bcm2708: boot tested on RPi B+ v1.2
bcm2709: boot tested on RPi 3B v1.2 and RPi 4B v1.1 4G
bcm2710: boot tested on RPi 3B v1.2
bcm2711: boot tested on RPi 4B v1.1 4G
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry-picked from commit f07e572f64
)
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);
|