1 #ifndef __OF_RESERVED_MEM_H 2 #define __OF_RESERVED_MEM_H 3 4 struct device; 5 struct of_phandle_args; 6 struct reserved_mem_ops; 7 8 struct reserved_mem { 9 const char *name; 10 unsigned long fdt_node; 11 unsigned long phandle; 12 const struct reserved_mem_ops *ops; 13 phys_addr_t base; 14 phys_addr_t size; 15 void *priv; 16 }; 17 18 struct reserved_mem_ops { 19 int (*device_init)(struct reserved_mem *rmem, 20 struct device *dev); 21 void (*device_release)(struct reserved_mem *rmem, 22 struct device *dev); 23 }; 24 25 typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem); 26 27 #define RESERVEDMEM_OF_DECLARE(name, compat, init) \ 28 _OF_DECLARE(reservedmem, name, compat, init, reservedmem_of_init_fn) 29 30 #ifdef CONFIG_OF_RESERVED_MEM 31 int of_reserved_mem_device_init(struct device *dev); 32 void of_reserved_mem_device_release(struct device *dev); 33 34 int early_init_dt_alloc_reserved_memory_arch(phys_addr_t size, 35 phys_addr_t align, 36 phys_addr_t start, 37 phys_addr_t end, 38 bool nomap, 39 phys_addr_t *res_base); 40 41 void fdt_init_reserved_mem(void); 42 void fdt_reserved_mem_save_node(unsigned long node, const char *uname, 43 phys_addr_t base, phys_addr_t size); 44 #else 45 static inline int of_reserved_mem_device_init(struct device *dev) 46 { 47 return -ENOSYS; 48 } 49 static inline void of_reserved_mem_device_release(struct device *pdev) { } 50 51 static inline void fdt_init_reserved_mem(void) { } 52 static inline void fdt_reserved_mem_save_node(unsigned long node, 53 const char *uname, phys_addr_t base, phys_addr_t size) { } 54 #endif 55 56 #endif /* __OF_RESERVED_MEM_H */ 57