mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-22 12:14:01 +08:00
f618c4703a
Add support for custom reserved memory drivers. Call their init() function for each reserved region and prepare for using operations provided by them with by the reserved_mem->ops array. 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>
54 lines
1.5 KiB
C
54 lines
1.5 KiB
C
#ifndef __OF_RESERVED_MEM_H
|
|
#define __OF_RESERVED_MEM_H
|
|
|
|
struct device;
|
|
struct of_phandle_args;
|
|
struct reserved_mem_ops;
|
|
|
|
struct reserved_mem {
|
|
const char *name;
|
|
unsigned long fdt_node;
|
|
const struct reserved_mem_ops *ops;
|
|
phys_addr_t base;
|
|
phys_addr_t size;
|
|
void *priv;
|
|
};
|
|
|
|
struct reserved_mem_ops {
|
|
void (*device_init)(struct reserved_mem *rmem,
|
|
struct device *dev);
|
|
void (*device_release)(struct reserved_mem *rmem,
|
|
struct device *dev);
|
|
};
|
|
|
|
typedef int (*reservedmem_of_init_fn)(struct reserved_mem *rmem,
|
|
unsigned long node, const char *uname);
|
|
|
|
#ifdef CONFIG_OF_RESERVED_MEM
|
|
void fdt_init_reserved_mem(void);
|
|
void fdt_reserved_mem_save_node(unsigned long node, const char *uname,
|
|
phys_addr_t base, phys_addr_t size);
|
|
|
|
#define RESERVEDMEM_OF_DECLARE(name, compat, init) \
|
|
static const struct of_device_id __reservedmem_of_table_##name \
|
|
__used __section(__reservedmem_of_table) \
|
|
= { .compatible = compat, \
|
|
.data = (init == (reservedmem_of_init_fn)NULL) ? \
|
|
init : init }
|
|
|
|
#else
|
|
static inline void fdt_init_reserved_mem(void) { }
|
|
static inline void fdt_reserved_mem_save_node(unsigned long node,
|
|
const char *uname, phys_addr_t base, phys_addr_t size) { }
|
|
|
|
#define RESERVEDMEM_OF_DECLARE(name, compat, init) \
|
|
static const struct of_device_id __reservedmem_of_table_##name \
|
|
__attribute__((unused)) \
|
|
= { .compatible = compat, \
|
|
.data = (init == (reservedmem_of_init_fn)NULL) ? \
|
|
init : init }
|
|
|
|
#endif
|
|
|
|
#endif /* __OF_RESERVED_MEM_H */
|