diff options
Diffstat (limited to 'include/linux/of.h')
| -rw-r--r-- | include/linux/of.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/include/linux/of.h b/include/linux/of.h index e6f0988c1c68..196b34c1ef4e 100644 --- a/include/linux/of.h +++ b/include/linux/of.h | |||
| @@ -130,6 +130,12 @@ static inline int of_node_check_flag(struct device_node *n, unsigned long flag) | |||
| 130 | return test_bit(flag, &n->_flags); | 130 | return test_bit(flag, &n->_flags); |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | static inline int of_node_test_and_set_flag(struct device_node *n, | ||
| 134 | unsigned long flag) | ||
| 135 | { | ||
| 136 | return test_and_set_bit(flag, &n->_flags); | ||
| 137 | } | ||
| 138 | |||
| 133 | static inline void of_node_set_flag(struct device_node *n, unsigned long flag) | 139 | static inline void of_node_set_flag(struct device_node *n, unsigned long flag) |
| 134 | { | 140 | { |
| 135 | set_bit(flag, &n->_flags); | 141 | set_bit(flag, &n->_flags); |
| @@ -197,6 +203,7 @@ static inline unsigned long of_read_ulong(const __be32 *cell, int size) | |||
| 197 | /* flag descriptions */ | 203 | /* flag descriptions */ |
| 198 | #define OF_DYNAMIC 1 /* node and properties were allocated via kmalloc */ | 204 | #define OF_DYNAMIC 1 /* node and properties were allocated via kmalloc */ |
| 199 | #define OF_DETACHED 2 /* node has been detached from the device tree */ | 205 | #define OF_DETACHED 2 /* node has been detached from the device tree */ |
| 206 | #define OF_POPULATED 3 /* device already created for the node */ | ||
| 200 | 207 | ||
| 201 | #define OF_IS_DYNAMIC(x) test_bit(OF_DYNAMIC, &x->_flags) | 208 | #define OF_IS_DYNAMIC(x) test_bit(OF_DYNAMIC, &x->_flags) |
| 202 | #define OF_MARK_DYNAMIC(x) set_bit(OF_DYNAMIC, &x->_flags) | 209 | #define OF_MARK_DYNAMIC(x) set_bit(OF_DYNAMIC, &x->_flags) |
| @@ -757,4 +764,26 @@ static inline int of_get_available_child_count(const struct device_node *np) | |||
| 757 | return num; | 764 | return num; |
| 758 | } | 765 | } |
| 759 | 766 | ||
| 767 | #ifdef CONFIG_OF | ||
| 768 | #define _OF_DECLARE(table, name, compat, fn, fn_type) \ | ||
| 769 | static const struct of_device_id __of_table_##name \ | ||
| 770 | __used __section(__##table##_of_table) \ | ||
| 771 | = { .compatible = compat, \ | ||
| 772 | .data = (fn == (fn_type)NULL) ? fn : fn } | ||
| 773 | #else | ||
| 774 | #define _OF_DECLARE(table, name, compat, fn, fn_type) \ | ||
| 775 | static const struct of_device_id __of_table_##name \ | ||
| 776 | __attribute__((unused)) \ | ||
| 777 | = { .compatible = compat, \ | ||
| 778 | .data = (fn == (fn_type)NULL) ? fn : fn } | ||
| 779 | #endif | ||
| 780 | |||
| 781 | typedef int (*of_init_fn_2)(struct device_node *, struct device_node *); | ||
| 782 | typedef void (*of_init_fn_1)(struct device_node *); | ||
| 783 | |||
| 784 | #define OF_DECLARE_1(table, name, compat, fn) \ | ||
| 785 | _OF_DECLARE(table, name, compat, fn, of_init_fn_1) | ||
| 786 | #define OF_DECLARE_2(table, name, compat, fn) \ | ||
| 787 | _OF_DECLARE(table, name, compat, fn, of_init_fn_2) | ||
| 788 | |||
| 760 | #endif /* _LINUX_OF_H */ | 789 | #endif /* _LINUX_OF_H */ |
