diff options
| author | Michael Ellerman <michael@ellerman.id.au> | 2007-06-19 02:07:58 -0400 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2007-07-10 07:53:46 -0400 |
| commit | d3b814bb1e8b0c63449a3430196c20cbe24a3e67 (patch) | |
| tree | efc3e7df26def2a93768d78e55b0cc8bc4d96b80 | |
| parent | 972d17c9dbad378da61baa17f4c3ea6e154b186a (diff) | |
[POWERPC] Generalise device_node flag interface
The struct device_node currently has a _flags variable, although
it's only used for one flag - OF_DYNAMIC. Generalise the flag
accessors so we can use them with other flags in future.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
| -rw-r--r-- | arch/powerpc/kernel/prom.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/platforms/pseries/reconfig.c | 2 | ||||
| -rw-r--r-- | include/asm-powerpc/prom.h | 14 |
3 files changed, 13 insertions, 5 deletions
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index cc9632c7149e..bcd1c5ed44a3 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c | |||
| @@ -1375,7 +1375,7 @@ static void of_node_release(struct kref *kref) | |||
| 1375 | struct device_node *node = kref_to_device_node(kref); | 1375 | struct device_node *node = kref_to_device_node(kref); |
| 1376 | struct property *prop = node->properties; | 1376 | struct property *prop = node->properties; |
| 1377 | 1377 | ||
| 1378 | if (!OF_IS_DYNAMIC(node)) | 1378 | if (!of_node_check_flag(node, OF_DYNAMIC)) |
| 1379 | return; | 1379 | return; |
| 1380 | while (prop) { | 1380 | while (prop) { |
| 1381 | struct property *next = prop->next; | 1381 | struct property *next = prop->next; |
diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c index 5aa97aff3391..c02f8742c54d 100644 --- a/arch/powerpc/platforms/pseries/reconfig.c +++ b/arch/powerpc/platforms/pseries/reconfig.c | |||
| @@ -123,7 +123,7 @@ static int pSeries_reconfig_add_node(const char *path, struct property *proplist | |||
| 123 | strcpy(np->full_name, path); | 123 | strcpy(np->full_name, path); |
| 124 | 124 | ||
| 125 | np->properties = proplist; | 125 | np->properties = proplist; |
| 126 | OF_MARK_DYNAMIC(np); | 126 | of_node_set_flag(np, OF_DYNAMIC); |
| 127 | kref_init(&np->kref); | 127 | kref_init(&np->kref); |
| 128 | 128 | ||
| 129 | np->parent = derive_parent(path); | 129 | np->parent = derive_parent(path); |
diff --git a/include/asm-powerpc/prom.h b/include/asm-powerpc/prom.h index 1122a9278afd..f1006b91bd1a 100644 --- a/include/asm-powerpc/prom.h +++ b/include/asm-powerpc/prom.h | |||
| @@ -98,10 +98,18 @@ struct device_node { | |||
| 98 | extern struct device_node *of_chosen; | 98 | extern struct device_node *of_chosen; |
| 99 | 99 | ||
| 100 | /* flag descriptions */ | 100 | /* flag descriptions */ |
| 101 | #define OF_DYNAMIC 1 /* node and properties were allocated via kmalloc */ | 101 | #define OF_DYNAMIC 1 /* node and properties were allocated via kmalloc */ |
| 102 | |||
| 103 | static inline int of_node_check_flag(struct device_node *n, unsigned long flag) | ||
| 104 | { | ||
| 105 | return test_bit(flag, &n->_flags); | ||
| 106 | } | ||
| 107 | |||
| 108 | static inline void of_node_set_flag(struct device_node *n, unsigned long flag) | ||
| 109 | { | ||
| 110 | set_bit(flag, &n->_flags); | ||
| 111 | } | ||
| 102 | 112 | ||
| 103 | #define OF_IS_DYNAMIC(x) test_bit(OF_DYNAMIC, &x->_flags) | ||
| 104 | #define OF_MARK_DYNAMIC(x) set_bit(OF_DYNAMIC, &x->_flags) | ||
| 105 | 113 | ||
| 106 | #define HAVE_ARCH_DEVTREE_FIXUPS | 114 | #define HAVE_ARCH_DEVTREE_FIXUPS |
| 107 | 115 | ||
