Skip to content

Commit

Permalink
of: Only compile OF_DYNAMIC on PowerPC pseries and iseries
Browse files Browse the repository at this point in the history
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 <[email protected]>
Acked-by: David S. Miller <[email protected]>
Acked-by: Benjamin Herrenschmidt <[email protected]>
Acked-by: Jimi Xenidis <[email protected]> (for PPC_CHROMA bug fix)
Cc: Rob Herring <[email protected]>
  • Loading branch information
glikely committed Feb 21, 2012
1 parent 5411972 commit 0f22dd3
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 12 deletions.
1 change: 1 addition & 0 deletions arch/powerpc/platforms/8xx/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
1 change: 1 addition & 0 deletions arch/powerpc/platforms/iseries/Kconfig
Original file line number Diff line number Diff line change
@@ -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
Expand Down
1 change: 1 addition & 0 deletions arch/powerpc/platforms/pseries/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions arch/powerpc/platforms/wsp/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ config PPC_CHROMA
bool "PowerEN PCIe Chroma Card"
select EPAPR_BOOT
select PPC_WSP
select OF_DYNAMIC
default y

endmenu
Expand Down
5 changes: 3 additions & 2 deletions drivers/of/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions drivers/of/base.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand Down
14 changes: 6 additions & 8 deletions include/linux/of.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit 0f22dd3

Please sign in to comment.