of: Only compile OF_DYNAMIC on PowerPC pseries and iseries
authorGrant Likely <grant.likely@secretlab.ca>
Thu, 16 Feb 2012 03:38:40 +0000 (20:38 -0700)
committerGrant Likely <grant.likely@secretlab.ca>
Tue, 21 Feb 2012 20:33:00 +0000 (13:33 -0700)
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>
arch/powerpc/platforms/8xx/Kconfig
arch/powerpc/platforms/iseries/Kconfig
arch/powerpc/platforms/pseries/Kconfig
arch/powerpc/platforms/wsp/Kconfig
drivers/of/Kconfig
drivers/of/base.c
include/linux/of.h

index ee56a9ea6a792d95761c53b0ac5821654d0f065b..1fb0b3cddeb35ee173c9022c25c4d60f8baea475 100644 (file)
@@ -26,6 +26,7 @@ config MPC86XADS
 config MPC885ADS
        bool "MPC885ADS"
        select CPM1
+       select OF_DYNAMIC
        help
          Freescale Semiconductor MPC885 Application Development System (ADS).
          Also known as DUET.
index b57cda3a0817098953e64ff63427f25891462dae..63835e09e5cccf81997470c10194365d9628280b 100644 (file)
@@ -1,6 +1,7 @@
 config PPC_ISERIES
        bool "IBM Legacy iSeries"
        depends on PPC64 && PPC_BOOK3S
+       select OF_DYNAMIC
        select PPC_SMP_MUXED_IPI
        select PPC_INDIRECT_PIO
        select PPC_INDIRECT_MMIO
index ae7b6d41fed363580575aa4ea6b56d053b702c84..1114f8f336df0adc060d7936660a8eb1517b5671 100644 (file)
@@ -3,6 +3,7 @@ config PPC_PSERIES
        bool "IBM pSeries & new (POWER5-based) iSeries"
        select HAVE_PCSPKR_PLATFORM
        select MPIC
+       select OF_DYNAMIC
        select PCI_MSI
        select PPC_XICS
        select PPC_ICP_NATIVE
index 57d22a2f4ba9cff69569bf33115e184408a26ec5..79d2225b76081da109cd39a59a4c59a0c8430ca5 100644 (file)
@@ -25,6 +25,7 @@ config PPC_CHROMA
        bool "PowerEN PCIe Chroma Card"
        select EPAPR_BOOT
        select PPC_WSP
+       select OF_DYNAMIC
        default y
 
 endmenu
index 268163dd71c7ae52f6b309d9f46117e27fa58c46..6ea51dcbc728d43685aa20ef4553c743698e749e 100644 (file)
@@ -35,9 +35,10 @@ config OF_EARLY_FLATTREE
 config OF_PROMTREE
        bool
 
+# Hardly any platforms need this.  It is safe to select, but only do so if you
+# need it.
 config OF_DYNAMIC
-       def_bool y
-       depends on PPC_OF
+       bool
 
 config OF_ADDRESS
        def_bool y
index 13ba72875e256bcee7afd1bf1c6123d09e3c564f..580644986945cb704d94de09bb602848fd13aede 100644 (file)
@@ -88,7 +88,7 @@ int of_n_size_cells(struct device_node *np)
 }
 EXPORT_SYMBOL(of_n_size_cells);
 
-#if !defined(CONFIG_SPARC)   /* SPARC doesn't do ref counting (yet) */
+#if defined(CONFIG_OF_DYNAMIC)
 /**
  *     of_node_get - Increment refcount of a node
  *     @node:  Node to inc refcount, NULL is supported to
@@ -161,7 +161,7 @@ void of_node_put(struct device_node *node)
                kref_put(&node->kref, of_node_release);
 }
 EXPORT_SYMBOL(of_node_put);
-#endif /* !CONFIG_SPARC */
+#endif /* CONFIG_OF_DYNAMIC */
 
 struct property *of_find_property(const struct device_node *np,
                                  const char *name,
index 5a4a3adb17e5f9f30bba75909c58fd73ecb9eb7c..533603e26b9bcef4b7bb019e910897006b4ad357 100644 (file)
@@ -72,19 +72,17 @@ struct of_phandle_args {
        uint32_t args[MAX_PHANDLE_ARGS];
 };
 
-#if defined(CONFIG_SPARC) || !defined(CONFIG_OF)
+#ifdef CONFIG_OF_DYNAMIC
+extern struct device_node *of_node_get(struct device_node *node);
+extern void of_node_put(struct device_node *node);
+#else /* CONFIG_OF_DYNAMIC */
 /* Dummy ref counting routines - to be implemented later */
 static inline struct device_node *of_node_get(struct device_node *node)
 {
        return node;
 }
-static inline void of_node_put(struct device_node *node)
-{
-}
-#else
-extern struct device_node *of_node_get(struct device_node *node);
-extern void of_node_put(struct device_node *node);
-#endif
+static inline void of_node_put(struct device_node *node) { }
+#endif /* !CONFIG_OF_DYNAMIC */
 
 #ifdef CONFIG_OF