1 #ifndef __OF_ADDRESS_H 2 #define __OF_ADDRESS_H 3 #include <linux/ioport.h> 4 #include <linux/errno.h> 5 #include <linux/of.h> 6 7 #ifdef CONFIG_OF_ADDRESS 8 extern u64 of_translate_address(struct device_node *np, const __be32 *addr); 9 extern bool of_can_translate_address(struct device_node *dev); 10 extern int of_address_to_resource(struct device_node *dev, int index, 11 struct resource *r); 12 extern struct device_node *of_find_matching_node_by_address( 13 struct device_node *from, 14 const struct of_device_id *matches, 15 u64 base_address); 16 extern void __iomem *of_iomap(struct device_node *device, int index); 17 18 /* Extract an address from a device, returns the region size and 19 * the address space flags too. The PCI version uses a BAR number 20 * instead of an absolute index 21 */ 22 extern const __be32 *of_get_address(struct device_node *dev, int index, 23 u64 *size, unsigned int *flags); 24 25 #ifndef pci_address_to_pio 26 static inline unsigned long pci_address_to_pio(phys_addr_t addr) { return -1; } 27 #define pci_address_to_pio pci_address_to_pio 28 #endif 29 30 #else /* CONFIG_OF_ADDRESS */ 31 #ifndef of_address_to_resource 32 static inline int of_address_to_resource(struct device_node *dev, int index, 33 struct resource *r) 34 { 35 return -EINVAL; 36 } 37 #endif 38 static inline struct device_node *of_find_matching_node_by_address( 39 struct device_node *from, 40 const struct of_device_id *matches, 41 u64 base_address) 42 { 43 return NULL; 44 } 45 #ifndef of_iomap 46 static inline void __iomem *of_iomap(struct device_node *device, int index) 47 { 48 return NULL; 49 } 50 #endif 51 static inline const __be32 *of_get_address(struct device_node *dev, int index, 52 u64 *size, unsigned int *flags) 53 { 54 return NULL; 55 } 56 #endif /* CONFIG_OF_ADDRESS */ 57 58 59 #if defined(CONFIG_OF_ADDRESS) && defined(CONFIG_PCI) 60 extern const __be32 *of_get_pci_address(struct device_node *dev, int bar_no, 61 u64 *size, unsigned int *flags); 62 extern int of_pci_address_to_resource(struct device_node *dev, int bar, 63 struct resource *r); 64 #else /* CONFIG_OF_ADDRESS && CONFIG_PCI */ 65 static inline int of_pci_address_to_resource(struct device_node *dev, int bar, 66 struct resource *r) 67 { 68 return -ENOSYS; 69 } 70 71 static inline const __be32 *of_get_pci_address(struct device_node *dev, 72 int bar_no, u64 *size, unsigned int *flags) 73 { 74 return NULL; 75 } 76 #endif /* CONFIG_OF_ADDRESS && CONFIG_PCI */ 77 78 #endif /* __OF_ADDRESS_H */ 79 80