powerpc+of: Add of node/property notification chain for adds and removes
This patch moves the notification chain for updates to the device tree from the powerpc/pseries code to the base OF code. This makes this functionality available to all architectures. Additionally the notification chain is updated to allow notifications for property add/remove/update. To make this work a pointer to a new struct (of_prop_reconfig) is passed to the routines in the notification chain. The of_prop_reconfig property contains a pointer to the node containing the property and a pointer to the property itself. In the case of property updates, the property pointer refers to the new property. Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com> Acked-by: Rob Herring <rob.herring@calxeda.com> Acked-by: Grant Likely <grant.likely@secretlab.ca> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:

committed by
Benjamin Herrenschmidt

parent
f594972083
commit
1cf3d8b3d2
@@ -32,6 +32,7 @@
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
#include <asm/prom.h>
|
||||
#include <asm/rtas.h>
|
||||
@@ -49,7 +50,6 @@
|
||||
#include <asm/btext.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/pSeries_reconfig.h>
|
||||
#include <asm/pci-bridge.h>
|
||||
#include <asm/kexec.h>
|
||||
#include <asm/opal.h>
|
||||
@@ -802,7 +802,7 @@ static int prom_reconfig_notifier(struct notifier_block *nb,
|
||||
int err;
|
||||
|
||||
switch (action) {
|
||||
case PSERIES_RECONFIG_ADD:
|
||||
case OF_RECONFIG_ATTACH_NODE:
|
||||
err = of_finish_dynamic_node(node);
|
||||
if (err < 0)
|
||||
printk(KERN_ERR "finish_node returned %d\n", err);
|
||||
@@ -821,7 +821,7 @@ static struct notifier_block prom_reconfig_nb = {
|
||||
|
||||
static int __init prom_reconfig_setup(void)
|
||||
{
|
||||
return pSeries_reconfig_notifier_register(&prom_reconfig_nb);
|
||||
return of_reconfig_notifier_register(&prom_reconfig_nb);
|
||||
}
|
||||
__initcall(prom_reconfig_setup);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user