0001
0002 #ifndef __OF_RESERVED_MEM_H
0003 #define __OF_RESERVED_MEM_H
0004
0005 #include <linux/device.h>
0006 #include <linux/of.h>
0007
0008 struct of_phandle_args;
0009 struct reserved_mem_ops;
0010
0011 struct reserved_mem {
0012 const char *name;
0013 unsigned long fdt_node;
0014 unsigned long phandle;
0015 const struct reserved_mem_ops *ops;
0016 phys_addr_t base;
0017 phys_addr_t size;
0018 void *priv;
0019 };
0020
0021 struct reserved_mem_ops {
0022 int (*device_init)(struct reserved_mem *rmem,
0023 struct device *dev);
0024 void (*device_release)(struct reserved_mem *rmem,
0025 struct device *dev);
0026 };
0027
0028 typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem);
0029
0030 #ifdef CONFIG_OF_RESERVED_MEM
0031
0032 #define RESERVEDMEM_OF_DECLARE(name, compat, init) \
0033 _OF_DECLARE(reservedmem, name, compat, init, reservedmem_of_init_fn)
0034
0035 int of_reserved_mem_device_init_by_idx(struct device *dev,
0036 struct device_node *np, int idx);
0037 int of_reserved_mem_device_init_by_name(struct device *dev,
0038 struct device_node *np,
0039 const char *name);
0040 void of_reserved_mem_device_release(struct device *dev);
0041
0042 struct reserved_mem *of_reserved_mem_lookup(struct device_node *np);
0043 #else
0044
0045 #define RESERVEDMEM_OF_DECLARE(name, compat, init) \
0046 _OF_DECLARE_STUB(reservedmem, name, compat, init, reservedmem_of_init_fn)
0047
0048 static inline int of_reserved_mem_device_init_by_idx(struct device *dev,
0049 struct device_node *np, int idx)
0050 {
0051 return -ENOSYS;
0052 }
0053
0054 static inline int of_reserved_mem_device_init_by_name(struct device *dev,
0055 struct device_node *np,
0056 const char *name)
0057 {
0058 return -ENOSYS;
0059 }
0060
0061 static inline void of_reserved_mem_device_release(struct device *pdev) { }
0062
0063 static inline struct reserved_mem *of_reserved_mem_lookup(struct device_node *np)
0064 {
0065 return NULL;
0066 }
0067 #endif
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079 static inline int of_reserved_mem_device_init(struct device *dev)
0080 {
0081 return of_reserved_mem_device_init_by_idx(dev, dev->of_node, 0);
0082 }
0083
0084 #endif