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 const struct reserved_mem_ops *ops; 12 phys_addr_t base; 13 phys_addr_t size; 14 void *priv; 15 }; 16 17 struct reserved_mem_ops { 18 void (*device_init)(struct reserved_mem *rmem, 19 struct device *dev); 20 void (*device_release)(struct reserved_mem *rmem, 21 struct device *dev); 22 }; 23 24 typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem, 25 unsigned long node, const char *uname); 26 27 #ifdef CONFIG_OF_RESERVED_MEM 28 void fdt_init_reserved_mem(void); 29 void fdt_reserved_mem_save_node(unsigned long node, const char *uname, 30 phys_addr_t base, phys_addr_t size); 31 32 #define RESERVEDMEM_OF_DECLARE(name, compat, init) \ 33 static const struct of_device_id __reservedmem_of_table_##name \ 34 __used __section(__reservedmem_of_table) \ 35 = { .compatible = compat, \ 36 .data = (init == (reservedmem_of_init_fn)NULL) ? \ 37 init : init } 38 39 #else 40 static inline void fdt_init_reserved_mem(void) { } 41 static inline void fdt_reserved_mem_save_node(unsigned long node, 42 const char *uname, phys_addr_t base, phys_addr_t size) { } 43 44 #define RESERVEDMEM_OF_DECLARE(name, compat, init) \ 45 static const struct of_device_id __reservedmem_of_table_##name \ 46 __attribute__((unused)) \ 47 = { .compatible = compat, \ 48 .data = (init == (reservedmem_of_init_fn)NULL) ? \ 49 init : init } 50 51 #endif 52 53 #endif /* __OF_RESERVED_MEM_H */ 54