diff options
| author | Marek Szyprowski <m.szyprowski@samsung.com> | 2014-07-14 04:28:04 -0400 |
|---|---|---|
| committer | Grant Likely <grant.likely@linaro.org> | 2014-08-01 14:22:21 -0400 |
| commit | 9dcfee01930e6cc1e84d28c232664f0c19a1f86c (patch) | |
| tree | 747884063ec2dfb1dda29f616d87ceb4d6211e04 /include/linux | |
| parent | 3069f0c07f8d64ebf6ff5d2d1553e0a6dad4316e (diff) | |
drivers: of: add automated assignment of reserved regions to client devices
This patch adds code for automated assignment of reserved memory regions
to struct device. reserved_mem->ops->device_init()/device_cleanup()
callbacks are called to perform reserved memory driver specific
initialization and cleanup
Based on previous code provided by Josh Cartwright <joshc@codeaurora.org>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Grant Likely <grant.likely@linaro.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/of_reserved_mem.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/of_reserved_mem.h b/include/linux/of_reserved_mem.h index 4669ddfdd5af..5b5efae09135 100644 --- a/include/linux/of_reserved_mem.h +++ b/include/linux/of_reserved_mem.h | |||
| @@ -8,6 +8,7 @@ struct reserved_mem_ops; | |||
| 8 | struct reserved_mem { | 8 | struct reserved_mem { |
| 9 | const char *name; | 9 | const char *name; |
| 10 | unsigned long fdt_node; | 10 | unsigned long fdt_node; |
| 11 | unsigned long phandle; | ||
| 11 | const struct reserved_mem_ops *ops; | 12 | const struct reserved_mem_ops *ops; |
| 12 | phys_addr_t base; | 13 | phys_addr_t base; |
| 13 | phys_addr_t size; | 14 | phys_addr_t size; |
| @@ -27,10 +28,16 @@ typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem); | |||
| 27 | _OF_DECLARE(reservedmem, name, compat, init, reservedmem_of_init_fn) | 28 | _OF_DECLARE(reservedmem, name, compat, init, reservedmem_of_init_fn) |
| 28 | 29 | ||
| 29 | #ifdef CONFIG_OF_RESERVED_MEM | 30 | #ifdef CONFIG_OF_RESERVED_MEM |
| 31 | void of_reserved_mem_device_init(struct device *dev); | ||
| 32 | void of_reserved_mem_device_release(struct device *dev); | ||
| 33 | |||
| 30 | void fdt_init_reserved_mem(void); | 34 | void fdt_init_reserved_mem(void); |
| 31 | void fdt_reserved_mem_save_node(unsigned long node, const char *uname, | 35 | void fdt_reserved_mem_save_node(unsigned long node, const char *uname, |
| 32 | phys_addr_t base, phys_addr_t size); | 36 | phys_addr_t base, phys_addr_t size); |
| 33 | #else | 37 | #else |
| 38 | static inline void of_reserved_mem_device_init(struct device *dev) { } | ||
| 39 | static inline void of_reserved_mem_device_release(struct device *pdev) { } | ||
| 40 | |||
| 34 | static inline void fdt_init_reserved_mem(void) { } | 41 | static inline void fdt_init_reserved_mem(void) { } |
| 35 | static inline void fdt_reserved_mem_save_node(unsigned long node, | 42 | static inline void fdt_reserved_mem_save_node(unsigned long node, |
| 36 | const char *uname, phys_addr_t base, phys_addr_t size) { } | 43 | const char *uname, phys_addr_t base, phys_addr_t size) { } |
