diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2012-02-15 22:38:40 -0500 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2012-02-21 15:33:00 -0500 |
commit | 0f22dd395fc473cee252b9af50249b8e0f32fde7 (patch) | |
tree | 680ec5999048bd79f665ddeaa8bcaa259ee53ed7 | |
parent | 5411972995b27a9074062b6d8e106fc15bd1cd44 (diff) |
of: Only compile OF_DYNAMIC on PowerPC pseries and iseries
Only two architectures use the OF node reference counting and reclaim bits.
There is no need to compile it for the rest of the PowerPC platforms or for
any of the other architectures. This patch makes iseries and pseries
select CONFIG_OF_DYNAMIC, and makes it default to off for everything else.
It is still safe to turn on CONFIG_OF_DYNAMIC on all architectures, it just
isn't necessary.
v2: Also select OF_DYNAMIC for PPC_CHROMA and MPC885ADS as reported by Michael
Meuling
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: David S. Miller <davem@davemloft.net>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Jimi Xenidis <jimix@pobox.com> (for PPC_CHROMA bug fix)
Cc: Rob Herring <rob.herring@calxeda.com>
-rw-r--r-- | arch/powerpc/platforms/8xx/Kconfig | 1 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/Kconfig | 1 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/Kconfig | 1 | ||||
-rw-r--r-- | arch/powerpc/platforms/wsp/Kconfig | 1 | ||||
-rw-r--r-- | drivers/of/Kconfig | 5 | ||||
-rw-r--r-- | drivers/of/base.c | 4 | ||||
-rw-r--r-- | include/linux/of.h | 14 |
7 files changed, 15 insertions, 12 deletions
diff --git a/arch/powerpc/platforms/8xx/Kconfig b/arch/powerpc/platforms/8xx/Kconfig index ee56a9ea6a79..1fb0b3cddeb3 100644 --- a/arch/powerpc/platforms/8xx/Kconfig +++ b/arch/powerpc/platforms/8xx/Kconfig | |||
@@ -26,6 +26,7 @@ config MPC86XADS | |||
26 | config MPC885ADS | 26 | config MPC885ADS |
27 | bool "MPC885ADS" | 27 | bool "MPC885ADS" |
28 | select CPM1 | 28 | select CPM1 |
29 | select OF_DYNAMIC | ||
29 | help | 30 | help |
30 | Freescale Semiconductor MPC885 Application Development System (ADS). | 31 | Freescale Semiconductor MPC885 Application Development System (ADS). |
31 | Also known as DUET. | 32 | Also known as DUET. |
diff --git a/arch/powerpc/platforms/iseries/Kconfig b/arch/powerpc/platforms/iseries/Kconfig index b57cda3a0817..63835e09e5cc 100644 --- a/arch/powerpc/platforms/iseries/Kconfig +++ b/arch/powerpc/platforms/iseries/Kconfig | |||
@@ -1,6 +1,7 @@ | |||
1 | config PPC_ISERIES | 1 | config PPC_ISERIES |
2 | bool "IBM Legacy iSeries" | 2 | bool "IBM Legacy iSeries" |
3 | depends on PPC64 && PPC_BOOK3S | 3 | depends on PPC64 && PPC_BOOK3S |
4 | select OF_DYNAMIC | ||
4 | select PPC_SMP_MUXED_IPI | 5 | select PPC_SMP_MUXED_IPI |
5 | select PPC_INDIRECT_PIO | 6 | select PPC_INDIRECT_PIO |
6 | select PPC_INDIRECT_MMIO | 7 | select PPC_INDIRECT_MMIO |
diff --git a/arch/powerpc/platforms/pseries/Kconfig b/arch/powerpc/platforms/pseries/Kconfig index ae7b6d41fed3..1114f8f336df 100644 --- a/arch/powerpc/platforms/pseries/Kconfig +++ b/arch/powerpc/platforms/pseries/Kconfig | |||
@@ -3,6 +3,7 @@ config PPC_PSERIES | |||
3 | bool "IBM pSeries & new (POWER5-based) iSeries" | 3 | bool "IBM pSeries & new (POWER5-based) iSeries" |
4 | select HAVE_PCSPKR_PLATFORM | 4 | select HAVE_PCSPKR_PLATFORM |
5 | select MPIC | 5 | select MPIC |
6 | select OF_DYNAMIC | ||
6 | select PCI_MSI | 7 | select PCI_MSI |
7 | select PPC_XICS | 8 | select PPC_XICS |
8 | select PPC_ICP_NATIVE | 9 | select PPC_ICP_NATIVE |
diff --git a/arch/powerpc/platforms/wsp/Kconfig b/arch/powerpc/platforms/wsp/Kconfig index 57d22a2f4ba9..79d2225b7608 100644 --- a/arch/powerpc/platforms/wsp/Kconfig +++ b/arch/powerpc/platforms/wsp/Kconfig | |||
@@ -25,6 +25,7 @@ config PPC_CHROMA | |||
25 | bool "PowerEN PCIe Chroma Card" | 25 | bool "PowerEN PCIe Chroma Card" |
26 | select EPAPR_BOOT | 26 | select EPAPR_BOOT |
27 | select PPC_WSP | 27 | select PPC_WSP |
28 | select OF_DYNAMIC | ||
28 | default y | 29 | default y |
29 | 30 | ||
30 | endmenu | 31 | endmenu |
diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig index 268163dd71c7..6ea51dcbc728 100644 --- a/drivers/of/Kconfig +++ b/drivers/of/Kconfig | |||
@@ -35,9 +35,10 @@ config OF_EARLY_FLATTREE | |||
35 | config OF_PROMTREE | 35 | config OF_PROMTREE |
36 | bool | 36 | bool |
37 | 37 | ||
38 | # Hardly any platforms need this. It is safe to select, but only do so if you | ||
39 | # need it. | ||
38 | config OF_DYNAMIC | 40 | config OF_DYNAMIC |
39 | def_bool y | 41 | bool |
40 | depends on PPC_OF | ||
41 | 42 | ||
42 | config OF_ADDRESS | 43 | config OF_ADDRESS |
43 | def_bool y | 44 | def_bool y |
diff --git a/drivers/of/base.c b/drivers/of/base.c index 13ba72875e25..580644986945 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c | |||
@@ -88,7 +88,7 @@ int of_n_size_cells(struct device_node *np) | |||
88 | } | 88 | } |
89 | EXPORT_SYMBOL(of_n_size_cells); | 89 | EXPORT_SYMBOL(of_n_size_cells); |
90 | 90 | ||
91 | #if !defined(CONFIG_SPARC) /* SPARC doesn't do ref counting (yet) */ | 91 | #if defined(CONFIG_OF_DYNAMIC) |
92 | /** | 92 | /** |
93 | * of_node_get - Increment refcount of a node | 93 | * of_node_get - Increment refcount of a node |
94 | * @node: Node to inc refcount, NULL is supported to | 94 | * @node: Node to inc refcount, NULL is supported to |
@@ -161,7 +161,7 @@ void of_node_put(struct device_node *node) | |||
161 | kref_put(&node->kref, of_node_release); | 161 | kref_put(&node->kref, of_node_release); |
162 | } | 162 | } |
163 | EXPORT_SYMBOL(of_node_put); | 163 | EXPORT_SYMBOL(of_node_put); |
164 | #endif /* !CONFIG_SPARC */ | 164 | #endif /* CONFIG_OF_DYNAMIC */ |
165 | 165 | ||
166 | struct property *of_find_property(const struct device_node *np, | 166 | struct property *of_find_property(const struct device_node *np, |
167 | const char *name, | 167 | const char *name, |
diff --git a/include/linux/of.h b/include/linux/of.h index 5a4a3adb17e5..533603e26b9b 100644 --- a/include/linux/of.h +++ b/include/linux/of.h | |||
@@ -72,19 +72,17 @@ struct of_phandle_args { | |||
72 | uint32_t args[MAX_PHANDLE_ARGS]; | 72 | uint32_t args[MAX_PHANDLE_ARGS]; |
73 | }; | 73 | }; |
74 | 74 | ||
75 | #if defined(CONFIG_SPARC) || !defined(CONFIG_OF) | 75 | #ifdef CONFIG_OF_DYNAMIC |
76 | extern struct device_node *of_node_get(struct device_node *node); | ||
77 | extern void of_node_put(struct device_node *node); | ||
78 | #else /* CONFIG_OF_DYNAMIC */ | ||
76 | /* Dummy ref counting routines - to be implemented later */ | 79 | /* Dummy ref counting routines - to be implemented later */ |
77 | static inline struct device_node *of_node_get(struct device_node *node) | 80 | static inline struct device_node *of_node_get(struct device_node *node) |
78 | { | 81 | { |
79 | return node; | 82 | return node; |
80 | } | 83 | } |
81 | static inline void of_node_put(struct device_node *node) | 84 | static inline void of_node_put(struct device_node *node) { } |
82 | { | 85 | #endif /* !CONFIG_OF_DYNAMIC */ |
83 | } | ||
84 | #else | ||
85 | extern struct device_node *of_node_get(struct device_node *node); | ||
86 | extern void of_node_put(struct device_node *node); | ||
87 | #endif | ||
88 | 86 | ||
89 | #ifdef CONFIG_OF | 87 | #ifdef CONFIG_OF |
90 | 88 | ||