Merge tag 'xilinx-for-v2017.09' of git://www.denx.de/git/u-boot-microblaze
[oweals/u-boot.git] / arch / arm / include / asm / types.h
index 2326420a7f755f9837dc165f10fa83b08a7cd2e1..9af7353f0866f05dbe298a603d52d90e9c8e6d28 100644 (file)
@@ -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__ */