X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=arch%2Farm%2Finclude%2Fasm%2Ftypes.h;h=9af7353f0866f05dbe298a603d52d90e9c8e6d28;hb=0176399b79330ffecb9a18fa392ec7e48a7b6a58;hp=ee77c4179f1aa04c24d37944b870c69ddebb13c3;hpb=20913018fbce5a2e3c93b6eeb56e67460e29542c;p=oweals%2Fu-boot.git diff --git a/arch/arm/include/asm/types.h b/arch/arm/include/asm/types.h index ee77c4179f..9af7353f08 100644 --- a/arch/arm/include/asm/types.h +++ b/arch/arm/include/asm/types.h @@ -45,14 +45,30 @@ 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__ */ -typedef unsigned long resource_size_t; #endif