X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=arch%2Farm%2Finclude%2Fasm%2Ftypes.h;h=d108915ff5c1e1accc0f4d80be10921707dea667;hb=ef36d9ae1646e5aee7c1425ee507d275699a072e;hp=ee77c4179f1aa04c24d37944b870c69ddebb13c3;hpb=e536ab8849b2b4f6d68bbc8e1d1f9bc033db06bd;p=oweals%2Fu-boot.git diff --git a/arch/arm/include/asm/types.h b/arch/arm/include/asm/types.h index ee77c4179f..d108915ff5 100644 --- a/arch/arm/include/asm/types.h +++ b/arch/arm/include/asm/types.h @@ -45,12 +45,29 @@ typedef unsigned long long u64; #define BITS_PER_LONG 32 #endif /* CONFIG_ARM64 */ -/* Dma addresses are 32-bits wide. */ - -typedef u32 dma_addr_t; - +#ifdef CONFIG_PHYS_64BIT +typedef unsigned long long phys_addr_t; +typedef unsigned long long phys_size_t; +#else +/* DMA addresses are 32-bits wide */ typedef unsigned long phys_addr_t; typedef unsigned long phys_size_t; +#endif + +/* + * A dma_addr_t can hold any valid DMA address, i.e., any address returned + * by the DMA API. + * + * If the DMA API only uses 32-bit addresses, dma_addr_t need only be 32 + * bits wide. Bus addresses, e.g., PCI BARs, may be wider than 32 bits, + * but drivers do memory-mapped I/O to ioremapped kernel virtual addresses, + * so they don't care about the size of the actual bus addresses. + */ +#ifdef CONFIG_DMA_ADDR_T_64BIT +typedef unsigned long long dma_addr_t; +#else +typedef u32 dma_addr_t; +#endif #endif /* __KERNEL__ */