Update of_find_node_by_path(): 1) Ignore any part of the path beyond and including the ':' separator. 2) Set the new provided pointer argument to the beginning of the string following the ':' separator. Coccinelle fixup using: @@ expression E1; @@ - of_find_node_by_path(E1) + of_find_node_by_path(E1, NULL) drivers/of/resolver.c manually updated, since spatch fails to parse it correctly. Signed-off-by: Leif Lindholm <leif.lindholm@xxxxxxxxxx> --- arch/arm/kernel/devtree.c | 2 +- arch/arm/mach-bcm/kona_smp.c | 2 +- arch/arm/mach-imx/clk.c | 2 +- arch/arm/mach-imx/cpu.c | 2 +- arch/arm/mach-integrator/integrator_ap.c | 4 +- arch/arm/mach-mxs/mach-mxs.c | 2 +- arch/arm/mach-nomadik/cpu-8815.c | 2 +- arch/arm/mach-shmobile/timer.c | 2 +- arch/arm/mach-u300/core.c | 2 +- arch/arm64/kernel/topology.c | 2 +- arch/microblaze/kernel/reset.c | 2 +- arch/powerpc/include/asm/kvm_para.h | 2 +- arch/powerpc/kernel/btext.c | 2 +- arch/powerpc/kernel/ibmebus.c | 4 +- arch/powerpc/kernel/legacy_serial.c | 4 +- arch/powerpc/kernel/machine_kexec.c | 2 +- arch/powerpc/kernel/machine_kexec_64.c | 2 +- arch/powerpc/kernel/pci_32.c | 4 +- arch/powerpc/kernel/proc_powerpc.c | 2 +- arch/powerpc/kernel/rtas.c | 2 +- arch/powerpc/kernel/rtas_pci.c | 2 +- arch/powerpc/kernel/setup-common.c | 6 +- arch/powerpc/kernel/setup_64.c | 2 +- arch/powerpc/mm/numa.c | 15 +++-- arch/powerpc/platforms/52xx/efika.c | 4 +- arch/powerpc/platforms/85xx/xes_mpc85xx.c | 2 +- arch/powerpc/platforms/8xx/mpc885ads_setup.c | 4 +- arch/powerpc/platforms/cell/celleb_setup.c | 2 +- arch/powerpc/platforms/cell/qpace_setup.c | 2 +- arch/powerpc/platforms/cell/ras.c | 2 +- arch/powerpc/platforms/cell/setup.c | 4 +- arch/powerpc/platforms/cell/spufs/inode.c | 2 +- arch/powerpc/platforms/chrp/pci.c | 4 +- arch/powerpc/platforms/chrp/setup.c | 12 ++-- arch/powerpc/platforms/embedded6xx/ls_uart.c | 2 +- arch/powerpc/platforms/maple/pci.c | 2 +- arch/powerpc/platforms/maple/setup.c | 2 +- arch/powerpc/platforms/pasemi/pci.c | 2 +- arch/powerpc/platforms/pasemi/setup.c | 2 +- arch/powerpc/platforms/powermac/feature.c | 6 +- arch/powerpc/platforms/powermac/pci.c | 2 +- arch/powerpc/platforms/powermac/setup.c | 7 ++- arch/powerpc/platforms/powermac/smp.c | 4 +- arch/powerpc/platforms/powermac/udbg_scc.c | 2 +- arch/powerpc/platforms/powernv/opal-async.c | 2 +- arch/powerpc/platforms/powernv/opal-sysparam.c | 2 +- arch/powerpc/platforms/powernv/opal.c | 4 +- arch/powerpc/platforms/powernv/setup.c | 2 +- arch/powerpc/platforms/ps3/os-area.c | 4 +- arch/powerpc/platforms/pseries/dlpar.c | 8 +-- arch/powerpc/platforms/pseries/hotplug-memory.c | 6 +- arch/powerpc/platforms/pseries/io_event_irq.c | 2 +- arch/powerpc/platforms/pseries/lparcfg.c | 6 +- arch/powerpc/platforms/pseries/pseries_energy.c | 4 +- arch/powerpc/platforms/pseries/ras.c | 4 +- arch/powerpc/platforms/pseries/reconfig.c | 6 +- arch/powerpc/platforms/pseries/setup.c | 4 +- arch/powerpc/sysdev/mpic_msgr.c | 2 +- arch/powerpc/sysdev/mv64x60_dev.c | 2 +- arch/powerpc/sysdev/mv64x60_udbg.c | 2 +- arch/sparc/kernel/chmc.c | 2 +- arch/sparc/kernel/irq_64.c | 2 +- arch/sparc/kernel/leon_kernel.c | 2 +- arch/sparc/kernel/leon_smp.c | 2 +- arch/sparc/kernel/of_device_32.c | 2 +- arch/sparc/kernel/of_device_64.c | 2 +- arch/sparc/kernel/prom_32.c | 2 +- arch/sparc/kernel/time_64.c | 2 +- arch/x86/platform/olpc/olpc.c | 2 +- drivers/ata/pata_macio.c | 2 +- drivers/cpufreq/pmac64-cpufreq.c | 5 +- drivers/cpufreq/powernv-cpufreq.c | 2 +- drivers/cpuidle/cpuidle-big_little.c | 2 +- drivers/cpuidle/cpuidle-powernv.c | 2 +- drivers/edac/cpc925_edac.c | 2 +- drivers/hwmon/ibmpowernv.c | 4 +- drivers/ide/pmac.c | 2 +- drivers/input/misc/sparcspkr.c | 2 +- drivers/input/serio/i8042-sparcio.h | 4 +- drivers/irqchip/irq-atmel-aic-common.c | 2 +- drivers/macintosh/therm_pm72.c | 4 +- drivers/macintosh/via-pmu-led.c | 2 +- drivers/macintosh/windfarm_mpu.h | 2 +- drivers/macintosh/windfarm_pm72.c | 2 +- drivers/mtd/nand/mpc5121_nfc.c | 2 +- drivers/net/ethernet/amd/sunlance.c | 2 +- drivers/of/base.c | 31 +++++++--- drivers/of/platform.c | 4 +- drivers/of/resolver.c | 4 +- drivers/of/selftest.c | 73 ++++++++++++++--------- drivers/sbus/char/display7seg.c | 2 +- drivers/sbus/char/envctrl.c | 2 +- drivers/sbus/char/openprom.c | 10 ++-- drivers/scsi/ibmvscsi/ibmvfc.c | 2 +- drivers/scsi/ibmvscsi/ibmvscsi.c | 2 +- drivers/soc/tegra/common.c | 2 +- drivers/tty/hvc/hvc_opal.c | 4 +- drivers/tty/serial/nwpserial.c | 2 +- drivers/tty/serial/suncore.c | 2 +- drivers/tty/serial/sunsu.c | 6 +- drivers/tty/sysrq.c | 2 +- drivers/video/fbdev/aty/radeon_monitor.c | 2 +- drivers/virt/fsl_hypervisor.c | 2 +- drivers/watchdog/cpwd.c | 2 +- fs/openpromfs/inode.c | 2 +- include/linux/of.h | 5 +- sound/soc/fsl/fsl_ssi.c | 2 +- 107 files changed, 232 insertions(+), 194 deletions(-) diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c index 11c54de..9cbcea6 100644 --- a/arch/arm/kernel/devtree.c +++ b/arch/arm/kernel/devtree.c @@ -81,7 +81,7 @@ void __init arm_dt_init_cpu_maps(void) u32 tmp_map[NR_CPUS] = { [0 ... NR_CPUS-1] = MPIDR_INVALID }; bool bootcpu_valid = false; - cpus = of_find_node_by_path("/cpus"); + cpus = of_find_node_by_path("/cpus", NULL); if (!cpus) return; diff --git a/arch/arm/mach-bcm/kona_smp.c b/arch/arm/mach-bcm/kona_smp.c index 66a0465..f363b17 100644 --- a/arch/arm/mach-bcm/kona_smp.c +++ b/arch/arm/mach-bcm/kona_smp.c @@ -89,7 +89,7 @@ static void __init bcm_smp_prepare_cpus(unsigned int max_cpus) * and has an "enable-method" property that selects the SMP * operations defined herein. */ - node = of_find_node_by_path("/cpus"); + node = of_find_node_by_path("/cpus", NULL); BUG_ON(!node); /* diff --git a/arch/arm/mach-imx/clk.c b/arch/arm/mach-imx/clk.c index df12b53..b29926b 100644 --- a/arch/arm/mach-imx/clk.c +++ b/arch/arm/mach-imx/clk.c @@ -27,7 +27,7 @@ static struct clk * __init imx_obtain_fixed_clock_from_dt(const char *name) if (!path) return ERR_PTR(-ENOMEM); - phandle.np = of_find_node_by_path(path); + phandle.np = of_find_node_by_path(path, NULL); kfree(path); if (phandle.np) { diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c index df42c14..72ac87a 100644 --- a/arch/arm/mach-imx/cpu.c +++ b/arch/arm/mach-imx/cpu.c @@ -87,7 +87,7 @@ struct device * __init imx_soc_device_init(void) soc_dev_attr->family = "Freescale i.MX"; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); ret = of_property_read_string(root, "model", &soc_dev_attr->machine); of_node_put(root); if (ret) diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c index 8ca290b..5013b96 100644 --- a/arch/arm/mach-integrator/integrator_ap.c +++ b/arch/arm/mach-integrator/integrator_ap.c @@ -407,7 +407,7 @@ static void __init ap_of_timer_init(void) "arm,timer-primary", &path); if (WARN_ON(err)) return; - node = of_find_node_by_path(path); + node = of_find_node_by_path(path, NULL); base = of_iomap(node, 0); if (WARN_ON(!base)) return; @@ -424,7 +424,7 @@ static void __init ap_of_timer_init(void) "arm,timer-secondary", &path); if (WARN_ON(err)) return; - node = of_find_node_by_path(path); + node = of_find_node_by_path(path, NULL); base = of_iomap(node, 0); if (WARN_ON(!base)) return; diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c index 2e7cec8..2014599 100644 --- a/arch/arm/mach-mxs/mach-mxs.c +++ b/arch/arm/mach-mxs/mach-mxs.c @@ -465,7 +465,7 @@ static void __init mxs_machine_init(void) if (!soc_dev_attr) return; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); ret = of_property_read_string(root, "model", &soc_dev_attr->machine); if (ret) return; diff --git a/arch/arm/mach-nomadik/cpu-8815.c b/arch/arm/mach-nomadik/cpu-8815.c index 9116ca4..ffb74ef 100644 --- a/arch/arm/mach-nomadik/cpu-8815.c +++ b/arch/arm/mach-nomadik/cpu-8815.c @@ -118,7 +118,7 @@ static int __init cpu8815_mmcsd_init(void) struct device_node *cdbias; int gpio, err; - cdbias = of_find_node_by_path("/usb-s8815/mmcsd-gpio"); + cdbias = of_find_node_by_path("/usb-s8815/mmcsd-gpio", NULL); if (!cdbias) { pr_info("could not find MMC/SD card detect bias node\n"); return 0; diff --git a/arch/arm/mach-shmobile/timer.c b/arch/arm/mach-shmobile/timer.c index 87c6be1..e044946 100644 --- a/arch/arm/mach-shmobile/timer.c +++ b/arch/arm/mach-shmobile/timer.c @@ -47,7 +47,7 @@ void __init shmobile_init_delay(void) bool is_a15 = false; u32 max_freq = 0; - cpus = of_find_node_by_path("/cpus"); + cpus = of_find_node_by_path("/cpus", NULL); if (!cpus) return; diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c index 35670b1..2f180ce 100644 --- a/arch/arm/mach-u300/core.c +++ b/arch/arm/mach-u300/core.c @@ -351,7 +351,7 @@ static void __init u300_init_irq_dt(void) struct device_node *syscon; struct clk *clk; - syscon = of_find_node_by_path("/syscon@c0011000"); + syscon = of_find_node_by_path("/syscon@c0011000", NULL); if (!syscon) { pr_crit("could not find syscon node\n"); return; diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c index b6ee26b..53a5d07 100644 --- a/arch/arm64/kernel/topology.c +++ b/arch/arm64/kernel/topology.c @@ -167,7 +167,7 @@ static int __init parse_dt_topology(void) int ret = 0; int cpu; - cn = of_find_node_by_path("/cpus"); + cn = of_find_node_by_path("/cpus", NULL); if (!cn) { pr_err("No CPU information found in DT\n"); return 0; diff --git a/arch/microblaze/kernel/reset.c b/arch/microblaze/kernel/reset.c index fbe58c6..7b10434 100644 --- a/arch/microblaze/kernel/reset.c +++ b/arch/microblaze/kernel/reset.c @@ -22,7 +22,7 @@ static unsigned int reset_val; void of_platform_reset_gpio_probe(void) { int ret; - handle = of_get_named_gpio(of_find_node_by_path("/"), + handle = of_get_named_gpio(of_find_node_by_path("/", NULL), "hard-reset-gpios", 0); if (!gpio_is_valid(handle)) { diff --git a/arch/powerpc/include/asm/kvm_para.h b/arch/powerpc/include/asm/kvm_para.h index 336a91a..f2830c1 100644 --- a/arch/powerpc/include/asm/kvm_para.h +++ b/arch/powerpc/include/asm/kvm_para.h @@ -29,7 +29,7 @@ static inline int kvm_para_available(void) { struct device_node *hyper_node; - hyper_node = of_find_node_by_path("/hypervisor"); + hyper_node = of_find_node_by_path("/hypervisor", NULL); if (!hyper_node) return 0; diff --git a/arch/powerpc/kernel/btext.c b/arch/powerpc/kernel/btext.c index 41c011c..6a350c8 100644 --- a/arch/powerpc/kernel/btext.c +++ b/arch/powerpc/kernel/btext.c @@ -237,7 +237,7 @@ int __init btext_find_display(int allow_nonstdout) name = of_get_property(of_chosen, "linux,stdout-path", NULL); if (name != NULL) { - np = of_find_node_by_path(name); + np = of_find_node_by_path(name, NULL); if (np != NULL) { if (strcmp(np->type, "display") != 0) { printk("boot stdout isn't a display !\n"); diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c index ac86c53..d85d71d 100644 --- a/arch/powerpc/kernel/ibmebus.c +++ b/arch/powerpc/kernel/ibmebus.c @@ -182,7 +182,7 @@ static int ibmebus_create_devices(const struct of_device_id *matches) struct device_node *root, *child; int ret = 0; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); for_each_child_of_node(root, child) { if (!of_match_node(matches, child)) @@ -277,7 +277,7 @@ static ssize_t ibmebus_store_probe(struct bus_type *bus, goto out; } - if ((dn = of_find_node_by_path(path))) { + if ((dn = of_find_node_by_path(path, NULL))) { rc = ibmebus_create_device(dn); of_node_put(dn); } else { diff --git a/arch/powerpc/kernel/legacy_serial.c b/arch/powerpc/kernel/legacy_serial.c index 7b750c4..5f86fb2 100644 --- a/arch/powerpc/kernel/legacy_serial.c +++ b/arch/powerpc/kernel/legacy_serial.c @@ -371,7 +371,7 @@ void __init find_legacy_serial_ports(void) /* Now find out if one of these is out firmware console */ path = of_get_property(of_chosen, "linux,stdout-path", NULL); if (path != NULL) { - stdout = of_find_node_by_path(path); + stdout = of_find_node_by_path(path, NULL); if (stdout) DBG("stdout is %s\n", stdout->full_name); } else { @@ -597,7 +597,7 @@ static int __init check_legacy_serial_console(void) DBG(" no linux,stdout-path !\n"); return -ENODEV; } - prom_stdout = of_find_node_by_path(name); + prom_stdout = of_find_node_by_path(name, NULL); if (!prom_stdout) { DBG(" can't find stdout package %s !\n", name); return -ENODEV; diff --git a/arch/powerpc/kernel/machine_kexec.c b/arch/powerpc/kernel/machine_kexec.c index 015ae55..53b3e96 100644 --- a/arch/powerpc/kernel/machine_kexec.c +++ b/arch/powerpc/kernel/machine_kexec.c @@ -260,7 +260,7 @@ static int __init kexec_setup(void) struct device_node *node; struct property *prop; - node = of_find_node_by_path("/chosen"); + node = of_find_node_by_path("/chosen", NULL); if (!node) return -ENOENT; diff --git a/arch/powerpc/kernel/machine_kexec_64.c b/arch/powerpc/kernel/machine_kexec_64.c index 879b3aa..c67fc02 100644 --- a/arch/powerpc/kernel/machine_kexec_64.c +++ b/arch/powerpc/kernel/machine_kexec_64.c @@ -392,7 +392,7 @@ static int __init export_htab_values(void) if (!htab_address) return -ENODEV; - node = of_find_node_by_path("/chosen"); + node = of_find_node_by_path("/chosen", NULL); if (!node) return -ENODEV; diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c index 432459c..609adbb 100644 --- a/arch/powerpc/kernel/pci_32.c +++ b/arch/powerpc/kernel/pci_32.c @@ -132,7 +132,7 @@ pcibios_make_OF_bus_map(void) continue; make_one_node_map(node, hose->first_busno); } - dn = of_find_node_by_path("/"); + dn = of_find_node_by_path("/", NULL); map_prop = of_find_property(dn, "pci-OF-bus-map", NULL); if (map_prop) { BUG_ON(pci_bus_count > map_prop->length); @@ -202,7 +202,7 @@ pci_create_OF_bus_map(void) of_prop = (struct property*) alloc_bootmem(sizeof(struct property) + 256); if (!of_prop) return; - dn = of_find_node_by_path("/"); + dn = of_find_node_by_path("/", NULL); if (dn) { memset(of_prop, -1, sizeof(struct property) + 256); of_prop->name = "pci-OF-bus-map"; diff --git a/arch/powerpc/kernel/proc_powerpc.c b/arch/powerpc/kernel/proc_powerpc.c index c30612a..ed88000 100644 --- a/arch/powerpc/kernel/proc_powerpc.c +++ b/arch/powerpc/kernel/proc_powerpc.c @@ -92,7 +92,7 @@ static int __init proc_ppc64_create(void) pr_err("Failed to create link /proc/ppc64 -> /proc/powerpc\n"); #endif - if (!of_find_node_by_path("/rtas")) + if (!of_find_node_by_path("/rtas", NULL)) return 0; if (!proc_mkdir("rtas", root)) diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index 8b4c857..3723477 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c @@ -218,7 +218,7 @@ void rtas_progress(char *s, unsigned short hex) if (display_width == 0) { display_width = 0x10; - if ((root = of_find_node_by_path("/rtas"))) { + if ((root = of_find_node_by_path("/rtas", NULL))) { if ((p = of_get_property(root, "ibm,display-line-length", NULL))) display_width = be32_to_cpu(*p); diff --git a/arch/powerpc/kernel/rtas_pci.c b/arch/powerpc/kernel/rtas_pci.c index 7c55b86..3101891 100644 --- a/arch/powerpc/kernel/rtas_pci.c +++ b/arch/powerpc/kernel/rtas_pci.c @@ -283,7 +283,7 @@ void __init find_and_init_phbs(void) { struct device_node *node; struct pci_controller *phb; - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); for_each_child_of_node(root, node) { if (node->type == NULL || (strcmp(node->type, "pci") != 0 && diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index 1362cd6..443808c 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c @@ -192,7 +192,7 @@ static void show_cpuinfo_summary(struct seq_file *m) seq_printf(m, "timebase\t: %lu\n", ppc_tb_freq); if (ppc_md.name) seq_printf(m, "platform\t: %s\n", ppc_md.name); - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root) model = of_get_property(root, "model", NULL); if (model) @@ -501,7 +501,7 @@ void __init smp_setup_cpu_maps(void) * could possibly be added to this partition. */ if (machine_is(pseries) && firmware_has_feature(FW_FEATURE_LPAR) && - (dn = of_find_node_by_path("/rtas"))) { + (dn = of_find_node_by_path("/rtas", NULL))) { int num_addr_cell, num_size_cell, maxcpus; const __be32 *ireg; @@ -706,7 +706,7 @@ static int __init check_cache_coherency(void) const void *prop; int devtree_coherency; - np = of_find_node_by_path("/"); + np = of_find_node_by_path("/", NULL); prop = of_get_property(np, "coherency-off", NULL); of_node_put(np); diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index 4f3cfe1..2b1d227 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c @@ -158,7 +158,7 @@ static void check_smt_enabled(void) min(threads_per_core, smt); } } else { - dn = of_find_node_by_path("/options"); + dn = of_find_node_by_path("/options", NULL); if (dn) { smt_option = of_get_property(dn, "ibm,smt-enabled", NULL); diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index b9d1dfd..edcea78 100644 --- a/arch/powerpc/mm/numa.c +++ b/arch/powerpc/mm/numa.c @@ -319,11 +319,11 @@ static int __init find_min_common_depth(void) struct device_node *root; if (firmware_has_feature(FW_FEATURE_OPAL)) - root = of_find_node_by_path("/ibm,opal"); + root = of_find_node_by_path("/ibm,opal", NULL); else - root = of_find_node_by_path("/rtas"); + root = of_find_node_by_path("/rtas", NULL); if (!root) - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); /* * This property is a set of 32-bit integers, each representing @@ -827,7 +827,8 @@ new_range: * ibm,dynamic-memory property in the * ibm,dynamic-reconfiguration-memory node. */ - memory = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory"); + memory = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory", + NULL); if (memory) parse_drconf_memory(memory); @@ -1276,7 +1277,8 @@ int hot_add_scn_to_nid(unsigned long scn_addr) if (!numa_enabled || (min_common_depth < 0)) return first_online_node; - memory = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory"); + memory = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory", + NULL); if (memory) { nid = hot_add_drconf_scn_to_nid(memory, scn_addr); of_node_put(memory); @@ -1308,7 +1310,8 @@ static u64 hot_add_drconf_memory_max(void) u64 lmb_size = 0; const __be32 *dm = NULL; - memory = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory"); + memory = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory", + NULL); if (memory) { drconf_cell_cnt = of_get_drconf_memory(memory, &dm); lmb_size = of_get_lmb_size(memory); diff --git a/arch/powerpc/platforms/52xx/efika.c b/arch/powerpc/platforms/52xx/efika.c index 3feffde..549e049 100644 --- a/arch/powerpc/platforms/52xx/efika.c +++ b/arch/powerpc/platforms/52xx/efika.c @@ -75,7 +75,7 @@ static void __init efika_pcisetup(void) struct device_node *root; struct device_node *pcictrl; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root == NULL) { printk(KERN_WARNING EFIKA_PLATFORM_NAME ": Unable to find the root node\n"); @@ -148,7 +148,7 @@ static void efika_show_cpuinfo(struct seq_file *m) const char *codegendescription; const char *codegenvendor; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (!root) return; diff --git a/arch/powerpc/platforms/85xx/xes_mpc85xx.c b/arch/powerpc/platforms/85xx/xes_mpc85xx.c index 1a9c108..0b0ee19 100644 --- a/arch/powerpc/platforms/85xx/xes_mpc85xx.c +++ b/arch/powerpc/platforms/85xx/xes_mpc85xx.c @@ -119,7 +119,7 @@ static void __init xes_mpc85xx_setup_arch(void) struct device_node *root; const char *model = "Unknown"; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root == NULL) return; diff --git a/arch/powerpc/platforms/8xx/mpc885ads_setup.c b/arch/powerpc/platforms/8xx/mpc885ads_setup.c index 4d62bf9..55e7974 100644 --- a/arch/powerpc/platforms/8xx/mpc885ads_setup.c +++ b/arch/powerpc/platforms/8xx/mpc885ads_setup.c @@ -176,9 +176,9 @@ static void __init mpc885ads_setup_arch(void) setbits32(&bcsr[1], BCSR1_ETHEN); - np = of_find_node_by_path("/soc@ff000000/cpm@9c0/serial@a80"); + np = of_find_node_by_path("/soc@ff000000/cpm@9c0/serial@a80", NULL); #else - np = of_find_node_by_path("/soc@ff000000/cpm@9c0/ethernet@a40"); + np = of_find_node_by_path("/soc@ff000000/cpm@9c0/ethernet@a40", NULL); #endif /* The SCC3 enet registers overlap the SMC1 registers, so diff --git a/arch/powerpc/platforms/cell/celleb_setup.c b/arch/powerpc/platforms/cell/celleb_setup.c index 34e8ce2..655b2dc 100644 --- a/arch/powerpc/platforms/cell/celleb_setup.c +++ b/arch/powerpc/platforms/cell/celleb_setup.c @@ -71,7 +71,7 @@ static void celleb_show_cpuinfo(struct seq_file *m) struct device_node *root; const char *model = ""; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root) model = of_get_property(root, "model", NULL); /* using "CHRP" is to trick anaconda into installing FCx into Celleb */ diff --git a/arch/powerpc/platforms/cell/qpace_setup.c b/arch/powerpc/platforms/cell/qpace_setup.c index 6e3409d..1ad8ac6 100644 --- a/arch/powerpc/platforms/cell/qpace_setup.c +++ b/arch/powerpc/platforms/cell/qpace_setup.c @@ -49,7 +49,7 @@ static void qpace_show_cpuinfo(struct seq_file *m) struct device_node *root; const char *model = ""; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root) model = of_get_property(root, "model", NULL); seq_printf(m, "machine\t\t: CHRP %s\n", model); diff --git a/arch/powerpc/platforms/cell/ras.c b/arch/powerpc/platforms/cell/ras.c index e865d74..429f3547 100644 --- a/arch/powerpc/platforms/cell/ras.c +++ b/arch/powerpc/platforms/cell/ras.c @@ -169,7 +169,7 @@ static int __init cbe_ptcal_enable(void) struct device_node *np; int order, found_mic = 0; - np = of_find_node_by_path("/rtas"); + np = of_find_node_by_path("/rtas", NULL); if (!np) return -ENODEV; diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c index 6ae25fb..379a903 100644 --- a/arch/powerpc/platforms/cell/setup.c +++ b/arch/powerpc/platforms/cell/setup.c @@ -69,7 +69,7 @@ static void cell_show_cpuinfo(struct seq_file *m) struct device_node *root; const char *model = ""; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root) model = of_get_property(root, "model", NULL); seq_printf(m, "machine\t\t: CHRP %s\n", model); @@ -154,7 +154,7 @@ static const struct of_device_id cell_bus_ids[] __initconst = { static int __init cell_publish_devices(void) { - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); struct device_node *np; int node; diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index 87ba7cf..f3fe01d 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c @@ -659,7 +659,7 @@ spufs_init_isolated_loader(void) const char *loader; int size; - dn = of_find_node_by_path("/spu-isolation"); + dn = of_find_node_by_path("/spu-isolation", NULL); if (!dn) return; diff --git a/arch/powerpc/platforms/chrp/pci.c b/arch/powerpc/platforms/chrp/pci.c index 1b87e19..8fa3192 100644 --- a/arch/powerpc/platforms/chrp/pci.c +++ b/arch/powerpc/platforms/chrp/pci.c @@ -188,7 +188,7 @@ setup_python(struct pci_controller *hose, struct device_node *dev) /* Marvell Discovery II based Pegasos 2 */ static void __init setup_peg2(struct pci_controller *hose, struct device_node *dev) { - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); struct device_node *rtas; rtas = of_find_node_by_name (root, "rtas"); @@ -213,7 +213,7 @@ chrp_find_bridges(void) const unsigned int *dma; const char *model, *machine; int is_longtrail = 0, is_mot = 0, is_pegasos = 0; - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); struct resource r; /* * The PCI host bridge nodes on some machines don't have diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c index 5b77b19..f820d61 100644 --- a/arch/powerpc/platforms/chrp/setup.c +++ b/arch/powerpc/platforms/chrp/setup.c @@ -100,7 +100,7 @@ void chrp_show_cpuinfo(struct seq_file *m) struct device_node *root; const char *model = ""; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root) model = of_get_property(root, "model", NULL); seq_printf(m, "machine\t\t: CHRP %s\n", model); @@ -196,7 +196,7 @@ static void __init sio_init(void) struct device_node *root; const char *model; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (!root) return; @@ -263,7 +263,7 @@ static void chrp_init_early(void) /* find the boot console from /chosen/stdout */ if (!of_chosen) return; - node = of_find_node_by_path("/"); + node = of_find_node_by_path("/", NULL); if (!node) return; property = of_get_property(node, "model", NULL); @@ -276,7 +276,7 @@ static void chrp_init_early(void) if (!property) goto out_put; of_node_put(node); - node = of_find_node_by_path(property); + node = of_find_node_by_path(property, NULL); if (!node) return; property = of_get_property(node, "device_type", NULL); @@ -300,7 +300,7 @@ out_put: void __init chrp_setup_arch(void) { - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); const char *machine = NULL; /* init to some ~sane value until calibrate_delay() runs */ @@ -390,7 +390,7 @@ static void __init chrp_find_openpic(void) np = of_find_node_by_type(NULL, "open-pic"); if (np == NULL) return; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root) { opprop = of_get_property(root, "platform-open-pic", &oplen); na = of_n_addr_cells(root); diff --git a/arch/powerpc/platforms/embedded6xx/ls_uart.c b/arch/powerpc/platforms/embedded6xx/ls_uart.c index 9d891bd..51d5373 100644 --- a/arch/powerpc/platforms/embedded6xx/ls_uart.c +++ b/arch/powerpc/platforms/embedded6xx/ls_uart.c @@ -117,7 +117,7 @@ static int __init ls_uarts_init(void) phys_addr_t phys_addr; int len; - avr = of_find_node_by_path("/soc10x/serial@80004500"); + avr = of_find_node_by_path("/soc10x/serial@80004500", NULL); if (!avr) return -EINVAL; diff --git a/arch/powerpc/platforms/maple/pci.c b/arch/powerpc/platforms/maple/pci.c index f7136aa..2c60cc4 100644 --- a/arch/powerpc/platforms/maple/pci.c +++ b/arch/powerpc/platforms/maple/pci.c @@ -578,7 +578,7 @@ void __init maple_pci_init(void) * and actually added last as it's resource management relies * on the AGP resources to have been setup first */ - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root == NULL) { printk(KERN_CRIT "maple_find_bridges: can't find root of device tree\n"); return; diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c index cb1b0b3..6306997 100644 --- a/arch/powerpc/platforms/maple/setup.c +++ b/arch/powerpc/platforms/maple/setup.c @@ -244,7 +244,7 @@ static void __init maple_init_IRQ(void) } /* Find address list in /platform-open-pic */ - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); naddr = of_n_addr_cells(root); opprop = of_get_property(root, "platform-open-pic", &opplen); if (opprop != 0) { diff --git a/arch/powerpc/platforms/pasemi/pci.c b/arch/powerpc/platforms/pasemi/pci.c index aa86271..39eb8a5 100644 --- a/arch/powerpc/platforms/pasemi/pci.c +++ b/arch/powerpc/platforms/pasemi/pci.c @@ -214,7 +214,7 @@ void __init pas_pci_init(void) { struct device_node *np, *root; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (!root) { printk(KERN_CRIT "pas_pci_init: can't find root " "of device tree\n"); diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c index d71b2c7..f8bfc42 100644 --- a/arch/powerpc/platforms/pasemi/setup.c +++ b/arch/powerpc/platforms/pasemi/setup.c @@ -213,7 +213,7 @@ static __init void pas_init_IRQ(void) } /* Find address list in /platform-open-pic */ - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); naddr = of_n_addr_cells(root); opprop = of_get_property(root, "platform-open-pic", &opplen); if (!opprop) { diff --git a/arch/powerpc/platforms/powermac/feature.c b/arch/powerpc/platforms/powermac/feature.c index 4882bfd..cdcdf05 100644 --- a/arch/powerpc/platforms/powermac/feature.c +++ b/arch/powerpc/platforms/powermac/feature.c @@ -1059,7 +1059,7 @@ core99_reset_cpu(struct device_node *node, long param, long value) if (macio->type != macio_keylargo) return -ENODEV; - cpus = of_find_node_by_path("/cpus"); + cpus = of_find_node_by_path("/cpus", NULL); if (cpus == NULL) return -ENODEV; for (np = cpus->child; np != NULL; np = np->sibling) { @@ -1510,7 +1510,7 @@ static long g5_reset_cpu(struct device_node *node, long param, long value) if (macio->type != macio_keylargo2 && macio->type != macio_shasta) return -ENODEV; - cpus = of_find_node_by_path("/cpus"); + cpus = of_find_node_by_path("/cpus", NULL); if (cpus == NULL) return -ENODEV; for (np = cpus->child; np != NULL; np = np->sibling) { @@ -2516,7 +2516,7 @@ found: * that all Apple OF revs did it properly, I do it the paranoid way. */ while (uninorth_base && uninorth_rev > 3) { - struct device_node *cpus = of_find_node_by_path("/cpus"); + struct device_node *cpus = of_find_node_by_path("/cpus", NULL); struct device_node *np; if (!cpus || !cpus->child) { diff --git a/arch/powerpc/platforms/powermac/pci.c b/arch/powerpc/platforms/powermac/pci.c index 7e868cc..012100f 100644 --- a/arch/powerpc/platforms/powermac/pci.c +++ b/arch/powerpc/platforms/powermac/pci.c @@ -1014,7 +1014,7 @@ void __init pmac_pci_init(void) pci_set_flags(PCI_CAN_SKIP_ISA_ALIGN); - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root == NULL) { printk(KERN_CRIT "pmac_pci_init: can't find root " "of device tree\n"); diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c index b127a29..5d98010 100644 --- a/arch/powerpc/platforms/powermac/setup.c +++ b/arch/powerpc/platforms/powermac/setup.c @@ -121,7 +121,7 @@ static void pmac_show_cpuinfo(struct seq_file *m) /* find motherboard type */ seq_printf(m, "machine\t\t: "); - np = of_find_node_by_path("/"); + np = of_find_node_by_path("/", NULL); if (np != NULL) { pp = of_get_property(np, "model", NULL); if (pp != NULL) @@ -510,7 +510,8 @@ static int __init pmac_declare_of_platform_devices(void) np = of_find_node_by_type(NULL, "fcu"); if (np == NULL) { /* Some machines have strangely broken device-tree */ - np = of_find_node_by_path("/u3@0,f8000000/i2c@f8001000/fan@15e"); + np = of_find_node_by_path("/u3@0,f8000000/i2c@f8001000/fan@15e", + NULL); } if (np) { of_platform_device_create(np, "temperature", NULL); @@ -559,7 +560,7 @@ static int __init check_pmac_serial_console(void) pr_debug(" no linux,stdout-path !\n"); return -ENODEV; } - prom_stdout = of_find_node_by_path(name); + prom_stdout = of_find_node_by_path(name, NULL); if (!prom_stdout) { pr_debug(" can't find stdout package %s !\n", name); return -ENODEV; diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c index af094ae..00ed6a0 100644 --- a/arch/powerpc/platforms/powermac/smp.c +++ b/arch/powerpc/platforms/powermac/smp.c @@ -637,7 +637,7 @@ static void smp_core99_pfunc_tb_freeze(int freeze) struct device_node *cpus; struct pmf_args args; - cpus = of_find_node_by_path("/cpus"); + cpus = of_find_node_by_path("/cpus", NULL); BUG_ON(cpus == NULL); args.count = 1; args.u[0].v = !freeze; @@ -713,7 +713,7 @@ static void __init smp_core99_setup(int ncpus) /* pfunc based HW sync on recent G5s */ if (pmac_tb_freeze == NULL) { struct device_node *cpus = - of_find_node_by_path("/cpus"); + of_find_node_by_path("/cpus", NULL); if (cpus && of_get_property(cpus, "platform-cpu-timebase", NULL)) { pmac_tb_freeze = smp_core99_pfunc_tb_freeze; diff --git a/arch/powerpc/platforms/powermac/udbg_scc.c b/arch/powerpc/platforms/powermac/udbg_scc.c index d83135a9..f4140c3 100644 --- a/arch/powerpc/platforms/powermac/udbg_scc.c +++ b/arch/powerpc/platforms/powermac/udbg_scc.c @@ -83,7 +83,7 @@ void udbg_scc_init(int force_scc) goto bail; path = of_get_property(of_chosen, "linux,stdout-path", NULL); if (path != NULL) - stdout = of_find_node_by_path(path); + stdout = of_find_node_by_path(path, NULL); for (ch = NULL; (ch = of_get_next_child(escc, ch)) != NULL;) { if (ch == stdout) ch_def = of_node_get(ch); diff --git a/arch/powerpc/platforms/powernv/opal-async.c b/arch/powerpc/platforms/powernv/opal-async.c index e462ab9..07c10f8 100644 --- a/arch/powerpc/platforms/powernv/opal-async.c +++ b/arch/powerpc/platforms/powernv/opal-async.c @@ -154,7 +154,7 @@ static int __init opal_async_comp_init(void) const __be32 *async; int err; - opal_node = of_find_node_by_path("/ibm,opal"); + opal_node = of_find_node_by_path("/ibm,opal", NULL); if (!opal_node) { pr_err("%s: Opal node not found\n", __func__); err = -ENOENT; diff --git a/arch/powerpc/platforms/powernv/opal-sysparam.c b/arch/powerpc/platforms/powernv/opal-sysparam.c index 9d1acf2..2a4d596 100644 --- a/arch/powerpc/platforms/powernv/opal-sysparam.c +++ b/arch/powerpc/platforms/powernv/opal-sysparam.c @@ -176,7 +176,7 @@ void __init opal_sys_param_init(void) goto out_kobj_put; } - sysparam = of_find_node_by_path("/ibm,opal/sysparams"); + sysparam = of_find_node_by_path("/ibm,opal/sysparams", NULL); if (!sysparam) { pr_err("SYSPARAM: Opal sysparam node not found\n"); goto out_param_buf; diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c index d019b08..300b70c 100644 --- a/arch/powerpc/platforms/powernv/opal.c +++ b/arch/powerpc/platforms/powernv/opal.c @@ -650,7 +650,7 @@ static int __init opal_init(void) const __be32 *irqs; int rc, i, irqlen; - opal_node = of_find_node_by_path("/ibm,opal"); + opal_node = of_find_node_by_path("/ibm,opal", NULL); if (!opal_node) { pr_warn("opal: Node not found\n"); return -ENODEV; @@ -658,7 +658,7 @@ static int __init opal_init(void) /* Register OPAL consoles if any ports */ if (firmware_has_feature(FW_FEATURE_OPALv2)) - consoles = of_find_node_by_path("/ibm,opal/consoles"); + consoles = of_find_node_by_path("/ibm,opal/consoles", NULL); else consoles = of_node_get(opal_node); if (consoles) { diff --git a/arch/powerpc/platforms/powernv/setup.c b/arch/powerpc/platforms/powernv/setup.c index 3f9546d..f78868a 100644 --- a/arch/powerpc/platforms/powernv/setup.c +++ b/arch/powerpc/platforms/powernv/setup.c @@ -87,7 +87,7 @@ static void pnv_show_cpuinfo(struct seq_file *m) struct device_node *root; const char *model = ""; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root) model = of_get_property(root, "model", NULL); seq_printf(m, "machine\t\t: PowerNV %s\n", model); diff --git a/arch/powerpc/platforms/ps3/os-area.c b/arch/powerpc/platforms/ps3/os-area.c index 0978713..f0c4695 100644 --- a/arch/powerpc/platforms/ps3/os-area.c +++ b/arch/powerpc/platforms/ps3/os-area.c @@ -694,7 +694,7 @@ static void os_area_queue_work_handler(struct work_struct *work) pr_debug(" -> %s:%d\n", __func__, __LINE__); - node = of_find_node_by_path("/"); + node = of_find_node_by_path("/", NULL); if (node) { os_area_set_property(node, &property_rtc_diff); of_node_put(node); @@ -792,7 +792,7 @@ void __init ps3_os_area_init(void) pr_debug(" -> %s:%d\n", __func__, __LINE__); - node = of_find_node_by_path("/"); + node = of_find_node_by_path("/", NULL); if (!saved_params.valid && node) { /* Second stage kernels should have a dt entry. */ diff --git a/arch/powerpc/platforms/pseries/dlpar.c b/arch/powerpc/platforms/pseries/dlpar.c index c22bb1b..888b7bb 100644 --- a/arch/powerpc/platforms/pseries/dlpar.c +++ b/arch/powerpc/platforms/pseries/dlpar.c @@ -249,7 +249,7 @@ static struct device_node *derive_parent(const char *path) last_slash = strrchr(path, '/'); if (last_slash == path) { - parent = of_find_node_by_path("/"); + parent = of_find_node_by_path("/", NULL); } else { char *parent_path; int parent_path_len = last_slash - path + 1; @@ -258,7 +258,7 @@ static struct device_node *derive_parent(const char *path) return NULL; strlcpy(parent_path, path, parent_path_len); - parent = of_find_node_by_path(parent_path); + parent = of_find_node_by_path(parent_path, NULL); kfree(parent_path); } @@ -410,7 +410,7 @@ static ssize_t dlpar_cpu_probe(const char *buf, size_t count) if (rc) return -EINVAL; - parent = of_find_node_by_path("/cpus"); + parent = of_find_node_by_path("/cpus", NULL); if (!parent) return -ENODEV; @@ -502,7 +502,7 @@ static ssize_t dlpar_cpu_release(const char *buf, size_t count) u32 drc_index; int rc; - dn = of_find_node_by_path(buf); + dn = of_find_node_by_path(buf, NULL); if (!dn) return -EINVAL; diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c index 3c4c0dc..3acb8d1 100644 --- a/arch/powerpc/platforms/pseries/hotplug-memory.c +++ b/arch/powerpc/platforms/pseries/hotplug-memory.c @@ -28,7 +28,7 @@ unsigned long pseries_memory_block_size(void) unsigned int memblock_size = MIN_MEMORY_BLOCK_SIZE; struct resource r; - np = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory"); + np = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory", NULL); if (np) { const __be64 *size; @@ -40,7 +40,7 @@ unsigned long pseries_memory_block_size(void) /* This fallback really only applies to pseries */ unsigned int memzero_size = 0; - np = of_find_node_by_path("/memory@0"); + np = of_find_node_by_path("/memory@0", NULL); if (np) { if (!of_address_to_resource(np, 0, &r)) memzero_size = resource_size(&r); @@ -54,7 +54,7 @@ unsigned long pseries_memory_block_size(void) char buf[64]; sprintf(buf, "/memory@%x", memzero_size); - np = of_find_node_by_path(buf); + np = of_find_node_by_path(buf, NULL); if (np) { if (!of_address_to_resource(np, 0, &r)) memblock_size = resource_size(&r); diff --git a/arch/powerpc/platforms/pseries/io_event_irq.c b/arch/powerpc/platforms/pseries/io_event_irq.c index 0240c4f..dd165a6 100644 --- a/arch/powerpc/platforms/pseries/io_event_irq.c +++ b/arch/powerpc/platforms/pseries/io_event_irq.c @@ -151,7 +151,7 @@ static int __init ioei_init(void) if (ioei_check_exception_token == RTAS_UNKNOWN_SERVICE) return -ENODEV; - np = of_find_node_by_path("/event-sources/ibm,io-events"); + np = of_find_node_by_path("/event-sources/ibm,io-events", NULL); if (np) { request_event_sources_irqs(np, ioei_interrupt, "IO_EVENT"); pr_info("IBM I/O event interrupts enabled\n"); diff --git a/arch/powerpc/platforms/pseries/lparcfg.c b/arch/powerpc/platforms/pseries/lparcfg.c index c9fecf0..79fda79 100644 --- a/arch/powerpc/platforms/pseries/lparcfg.c +++ b/arch/powerpc/platforms/pseries/lparcfg.c @@ -196,7 +196,7 @@ static void parse_ppp_data(struct seq_file *m) * valid if the ibm,partition-performance-parameters-level * property is >= 1. */ - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root) { perf_level = of_get_property(root, "ibm,partition-performance-parameters-level", @@ -437,7 +437,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v) struct device_node *rtas_node; const __be32 *lrdrp = NULL; - rtas_node = of_find_node_by_path("/rtas"); + rtas_node = of_find_node_by_path("/rtas", NULL); if (rtas_node) lrdrp = of_get_property(rtas_node, "ibm,lrdr-capacity", NULL); @@ -659,7 +659,7 @@ static int lparcfg_data(struct seq_file *m, void *v) seq_printf(m, "%s %s\n", MODULE_NAME, MODULE_VERS); - rootdn = of_find_node_by_path("/"); + rootdn = of_find_node_by_path("/", NULL); if (rootdn) { tmp = of_get_property(rootdn, "model", NULL); if (tmp) diff --git a/arch/powerpc/platforms/pseries/pseries_energy.c b/arch/powerpc/platforms/pseries/pseries_energy.c index 9276779..1e859f6 100644 --- a/arch/powerpc/platforms/pseries/pseries_energy.c +++ b/arch/powerpc/platforms/pseries/pseries_energy.c @@ -43,7 +43,7 @@ static u32 cpu_to_drc_index(int cpu) int rc = 1; u32 ret = 0; - dn = of_find_node_by_path("/cpus"); + dn = of_find_node_by_path("/cpus", NULL); if (dn == NULL) goto err; indexes = of_get_property(dn, "ibm,drc-indexes", NULL); @@ -75,7 +75,7 @@ static int drc_index_to_cpu(u32 drc_index) int i, cpu = 0; int rc = 1; - dn = of_find_node_by_path("/cpus"); + dn = of_find_node_by_path("/cpus", NULL); if (dn == NULL) goto err; indexes = of_get_property(dn, "ibm,drc-indexes", NULL); diff --git a/arch/powerpc/platforms/pseries/ras.c b/arch/powerpc/platforms/pseries/ras.c index 5a4d0fc..87d590b 100644 --- a/arch/powerpc/platforms/pseries/ras.c +++ b/arch/powerpc/platforms/pseries/ras.c @@ -55,7 +55,7 @@ static int __init init_ras_IRQ(void) ras_check_exception_token = rtas_token("check-exception"); /* Internal Errors */ - np = of_find_node_by_path("/event-sources/internal-errors"); + np = of_find_node_by_path("/event-sources/internal-errors", NULL); if (np != NULL) { request_event_sources_irqs(np, ras_error_interrupt, "RAS_ERROR"); @@ -63,7 +63,7 @@ static int __init init_ras_IRQ(void) } /* EPOW Events */ - np = of_find_node_by_path("/event-sources/epow-events"); + np = of_find_node_by_path("/event-sources/epow-events", NULL); if (np != NULL) { request_event_sources_irqs(np, ras_epow_interrupt, "RAS_EPOW"); of_node_put(np); diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c index 0f31952..5eec4ef 100644 --- a/arch/powerpc/platforms/pseries/reconfig.c +++ b/arch/powerpc/platforms/pseries/reconfig.c @@ -46,7 +46,7 @@ static struct device_node *derive_parent(const char *path) return ERR_PTR(-ENOMEM); strlcpy(parent_path, path, parent_path_len); } - parent = of_find_node_by_path(parent_path); + parent = of_find_node_by_path(parent_path, NULL); if (!parent) return ERR_PTR(-EINVAL); if (strcmp(parent_path, "/")) @@ -242,7 +242,7 @@ static int do_add_node(char *buf, size_t bufsize) *buf = '\0'; buf++; - if ((np = of_find_node_by_path(path))) { + if ((np = of_find_node_by_path(path, NULL))) { of_node_put(np); return -EINVAL; } @@ -277,7 +277,7 @@ static int do_remove_node(char *buf) struct device_node *node; int rv = -ENODEV; - if ((node = of_find_node_by_path(buf))) + if ((node = of_find_node_by_path(buf, NULL))) rv = pSeries_reconfig_remove_node(node); of_node_put(node); diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index 125c589..71e75a3 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c @@ -83,7 +83,7 @@ static void pSeries_show_cpuinfo(struct seq_file *m) struct device_node *root; const char *model = ""; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root) model = of_get_property(root, "model", NULL); seq_printf(m, "machine\t\t: CHRP %s\n", model); @@ -179,7 +179,7 @@ static void __init pseries_mpic_init_IRQ(void) int naddr, n, i, opplen; struct mpic *mpic; - np = of_find_node_by_path("/"); + np = of_find_node_by_path("/", NULL); naddr = of_n_addr_cells(np); opprop = of_get_property(np, "platform-open-pic", &opplen); if (opprop != NULL) { diff --git a/arch/powerpc/sysdev/mpic_msgr.c b/arch/powerpc/sysdev/mpic_msgr.c index 7bdf3cc..ca692e3 100644 --- a/arch/powerpc/sysdev/mpic_msgr.c +++ b/arch/powerpc/sysdev/mpic_msgr.c @@ -151,7 +151,7 @@ static int mpic_msgr_block_number(struct device_node *node) snprintf(buf, sizeof(buf), "mpic-msgr-block%d", index); prop = of_find_property(aliases, buf, NULL); - if (node == of_find_node_by_path(prop->value)) + if (node == of_find_node_by_path(prop->value, NULL)) break; } diff --git a/arch/powerpc/sysdev/mv64x60_dev.c b/arch/powerpc/sysdev/mv64x60_dev.c index 026bbc3..69717c8 100644 --- a/arch/powerpc/sysdev/mv64x60_dev.c +++ b/arch/powerpc/sysdev/mv64x60_dev.c @@ -516,7 +516,7 @@ static int __init mv64x60_add_mpsc_console(void) if (prop == NULL) goto not_mpsc; - np = of_find_node_by_path(prop); + np = of_find_node_by_path(prop, NULL); if (!np) goto not_mpsc; diff --git a/arch/powerpc/sysdev/mv64x60_udbg.c b/arch/powerpc/sysdev/mv64x60_udbg.c index 3b8734b..0aab2e6b 100644 --- a/arch/powerpc/sysdev/mv64x60_udbg.c +++ b/arch/powerpc/sysdev/mv64x60_udbg.c @@ -81,7 +81,7 @@ static void mv64x60_udbg_init(void) if (!path) return; - stdout = of_find_node_by_path(path); + stdout = of_find_node_by_path(path, NULL); if (!stdout) return; diff --git a/arch/sparc/kernel/chmc.c b/arch/sparc/kernel/chmc.c index dbb210d..81de6e4 100644 --- a/arch/sparc/kernel/chmc.c +++ b/arch/sparc/kernel/chmc.c @@ -402,7 +402,7 @@ static int jbusmc_probe(struct platform_device *op) const void *ml; err = -ENODEV; - mem_node = of_find_node_by_path("/memory"); + mem_node = of_find_node_by_path("/memory", NULL); if (!mem_node) { printk(KERN_ERR PFX "Cannot find /memory node.\n"); goto out; diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c index 4033c23..daf86b9 100644 --- a/arch/sparc/kernel/irq_64.c +++ b/arch/sparc/kernel/irq_64.c @@ -907,7 +907,7 @@ static void map_prom_timers(void) const unsigned int *addr; /* PROM timer node hangs out in the top level of device siblings... */ - dp = of_find_node_by_path("/"); + dp = of_find_node_by_path("/", NULL); dp = dp->child; while (dp) { if (!strcmp(dp->name, "counter-timer")) diff --git a/arch/sparc/kernel/leon_kernel.c b/arch/sparc/kernel/leon_kernel.c index 9bbb8f2..d39a8db 100644 --- a/arch/sparc/kernel/leon_kernel.c +++ b/arch/sparc/kernel/leon_kernel.c @@ -326,7 +326,7 @@ void __init leon_init_timers(void) master_l10_counter = (u32 __iomem *)&dummy_master_l10_counter; dummy_master_l10_counter = 0; - rootnp = of_find_node_by_path("/ambapp0"); + rootnp = of_find_node_by_path("/ambapp0", NULL); if (!rootnp) goto bad; diff --git a/arch/sparc/kernel/leon_smp.c b/arch/sparc/kernel/leon_smp.c index ea2bad3..3305338 100644 --- a/arch/sparc/kernel/leon_smp.c +++ b/arch/sparc/kernel/leon_smp.c @@ -280,7 +280,7 @@ static void __init leon_ipi_init(void) unsigned long flags; /* Find IPI IRQ or stick with default value */ - rootnp = of_find_node_by_path("/ambapp0"); + rootnp = of_find_node_by_path("/ambapp0", NULL); if (rootnp) { pp = of_find_property(rootnp, "ipi_num", &len); if (pp && (*(int *)pp->value)) diff --git a/arch/sparc/kernel/of_device_32.c b/arch/sparc/kernel/of_device_32.c index 185aa96..859216e 100644 --- a/arch/sparc/kernel/of_device_32.c +++ b/arch/sparc/kernel/of_device_32.c @@ -404,7 +404,7 @@ static void __init scan_tree(struct device_node *dp, struct device *parent) static int __init scan_of_devices(void) { - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); struct platform_device *parent; parent = scan_one_device(root, NULL); diff --git a/arch/sparc/kernel/of_device_64.c b/arch/sparc/kernel/of_device_64.c index 7bbdc26..2abbb43 100644 --- a/arch/sparc/kernel/of_device_64.c +++ b/arch/sparc/kernel/of_device_64.c @@ -699,7 +699,7 @@ static void __init scan_tree(struct device_node *dp, struct device *parent) static int __init scan_of_devices(void) { - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); struct platform_device *parent; parent = scan_one_device(root, NULL); diff --git a/arch/sparc/kernel/prom_32.c b/arch/sparc/kernel/prom_32.c index b51cbb9..f7e037c 100644 --- a/arch/sparc/kernel/prom_32.c +++ b/arch/sparc/kernel/prom_32.c @@ -307,7 +307,7 @@ void __init of_console_init(void) } else { const char *path; - dp = of_find_node_by_path("/"); + dp = of_find_node_by_path("/", NULL); path = of_get_property(dp, "stdout-path", NULL); if (!path) { prom_printf("No stdout-path in root node.\n"); diff --git a/arch/sparc/kernel/time_64.c b/arch/sparc/kernel/time_64.c index 59da0c3..efbde9e 100644 --- a/arch/sparc/kernel/time_64.c +++ b/arch/sparc/kernel/time_64.c @@ -605,7 +605,7 @@ static unsigned long sparc64_init_timers(void) struct device_node *dp; unsigned long freq; - dp = of_find_node_by_path("/"); + dp = of_find_node_by_path("/", NULL); if (tlb_type == spitfire) { unsigned long ver, manuf, impl; diff --git a/arch/x86/platform/olpc/olpc.c b/arch/x86/platform/olpc/olpc.c index 2737608..735cd23 100644 --- a/arch/x86/platform/olpc/olpc.c +++ b/arch/x86/platform/olpc/olpc.c @@ -286,7 +286,7 @@ static u32 __init get_board_revision(struct device_node *root) static bool __init platform_detect(void) { - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); bool success; if (!root) diff --git a/drivers/ata/pata_macio.c b/drivers/ata/pata_macio.c index a02f76f..d514062 100644 --- a/drivers/ata/pata_macio.c +++ b/drivers/ata/pata_macio.c @@ -480,7 +480,7 @@ static int pata_macio_cable_detect(struct ata_port *ap) priv->kind == controller_sh_ata6) { const char* cable = of_get_property(priv->node, "cable-type", NULL); - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); const char *model = of_get_property(root, "model", NULL); if (cable && !strncmp(cable, "80-", 3)) { diff --git a/drivers/cpufreq/pmac64-cpufreq.c b/drivers/cpufreq/pmac64-cpufreq.c index 4ff8687..03b0674 100644 --- a/drivers/cpufreq/pmac64-cpufreq.c +++ b/drivers/cpufreq/pmac64-cpufreq.c @@ -401,7 +401,7 @@ static int __init g5_neo2_cpufreq_init(struct device_node *cpunode) } else if (use_volts_vdnap) { struct device_node *root; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root == NULL) { printk(KERN_ERR "cpufreq: Can't find root of " "device tree\n"); @@ -489,7 +489,8 @@ static int __init g5_pm72_cpufreq_init(struct device_node *cpunode) " RackMac3,1...\n"); /* Lookup the cpuid eeprom node */ - cpuid = of_find_node_by_path("/u3@0,f8000000/i2c@f8001000/cpuid@a0"); + cpuid = of_find_node_by_path("/u3@0,f8000000/i2c@f8001000/cpuid@a0", + NULL); if (cpuid != NULL) eeprom = of_get_property(cpuid, "cpuid", NULL); if (eeprom == NULL) { diff --git a/drivers/cpufreq/powernv-cpufreq.c b/drivers/cpufreq/powernv-cpufreq.c index 2dfd4fd..e5f2d9d 100644 --- a/drivers/cpufreq/powernv-cpufreq.c +++ b/drivers/cpufreq/powernv-cpufreq.c @@ -64,7 +64,7 @@ static int init_powernv_pstates(void) const __be32 *pstate_ids, *pstate_freqs; u32 len_ids, len_freqs; - power_mgt = of_find_node_by_path("/ibm,opal/power-mgt"); + power_mgt = of_find_node_by_path("/ibm,opal/power-mgt", NULL); if (!power_mgt) { pr_warn("power-mgt node not found\n"); return -ENODEV; diff --git a/drivers/cpuidle/cpuidle-big_little.c b/drivers/cpuidle/cpuidle-big_little.c index fbc00a1..f489686 100644 --- a/drivers/cpuidle/cpuidle-big_little.c +++ b/drivers/cpuidle/cpuidle-big_little.c @@ -174,7 +174,7 @@ static const struct of_device_id compatible_machine_match[] = { static int __init bl_idle_init(void) { int ret; - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); if (!root) return -ENODEV; diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c index 7d3a349..741c3e1 100644 --- a/drivers/cpuidle/cpuidle-powernv.c +++ b/drivers/cpuidle/cpuidle-powernv.c @@ -169,7 +169,7 @@ static int powernv_add_idle_states(void) /* Currently we have snooze statically defined */ - power_mgt = of_find_node_by_path("/ibm,opal/power-mgt"); + power_mgt = of_find_node_by_path("/ibm,opal/power-mgt", NULL); if (!power_mgt) { pr_warn("opal: PowerMgmt Node not found\n"); return nr_idle_states; diff --git a/drivers/edac/cpc925_edac.c b/drivers/edac/cpc925_edac.c index 682288c..8d66b7c 100644 --- a/drivers/edac/cpc925_edac.c +++ b/drivers/edac/cpc925_edac.c @@ -604,7 +604,7 @@ static u32 cpc925_cpu_mask_disabled(void) mask = APIMASK_ADI0 | APIMASK_ADI1; - cpus = of_find_node_by_path("/cpus"); + cpus = of_find_node_by_path("/cpus", NULL); if (cpus == NULL) { cpc925_printk(KERN_DEBUG, "No /cpus node !\n"); return 0; diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c index 6a30eee..fa5325b 100644 --- a/drivers/hwmon/ibmpowernv.c +++ b/drivers/hwmon/ibmpowernv.c @@ -179,7 +179,7 @@ static int __init populate_attr_groups(struct platform_device *pdev) struct device_node *opal, *np; enum sensors type; - opal = of_find_node_by_path("/ibm,opal/sensors"); + opal = of_find_node_by_path("/ibm,opal/sensors", NULL); if (!opal) { dev_dbg(&pdev->dev, "Opal node 'sensors' not found\n"); return -ENODEV; @@ -232,7 +232,7 @@ static int __init create_device_attrs(struct platform_device *pdev) u32 count = 0; int err = 0; - opal = of_find_node_by_path("/ibm,opal/sensors"); + opal = of_find_node_by_path("/ibm,opal/sensors", NULL); sdata = devm_kzalloc(&pdev->dev, pdata->sensors_count * sizeof(*sdata), GFP_KERNEL); if (!sdata) { diff --git a/drivers/ide/pmac.c b/drivers/ide/pmac.c index 2db803c..dc6d033 100644 --- a/drivers/ide/pmac.c +++ b/drivers/ide/pmac.c @@ -917,7 +917,7 @@ static u8 pmac_ide_cable_detect(ide_hwif_t *hwif) pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); struct device_node *np = pmif->node; const char *cable = of_get_property(np, "cable-type", NULL); - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); const char *model = of_get_property(root, "model", NULL); /* Get cable type from device-tree. */ diff --git a/drivers/input/misc/sparcspkr.c b/drivers/input/misc/sparcspkr.c index 179ff1c..72564f8 100644 --- a/drivers/input/misc/sparcspkr.c +++ b/drivers/input/misc/sparcspkr.c @@ -197,7 +197,7 @@ static int bbc_beep_probe(struct platform_device *op) state->event = bbc_spkr_event; spin_lock_init(&state->lock); - dp = of_find_node_by_path("/"); + dp = of_find_node_by_path("/", NULL); err = -ENODEV; if (!dp) goto out_free; diff --git a/drivers/input/serio/i8042-sparcio.h b/drivers/input/serio/i8042-sparcio.h index 93cb791..53c69a6 100644 --- a/drivers/input/serio/i8042-sparcio.h +++ b/drivers/input/serio/i8042-sparcio.h @@ -108,7 +108,7 @@ static struct platform_driver sparc_i8042_driver = { static int __init i8042_platform_init(void) { - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); if (!strcmp(root->name, "SUNW,JavaStation-1")) { /* Hardcoded values for MrCoffee. */ @@ -138,7 +138,7 @@ static int __init i8042_platform_init(void) static inline void i8042_platform_exit(void) { - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); if (strcmp(root->name, "SUNW,JavaStation-1")) platform_driver_unregister(&sparc_i8042_driver); diff --git a/drivers/irqchip/irq-atmel-aic-common.c b/drivers/irqchip/irq-atmel-aic-common.c index 6ae3cdee..768e402 100644 --- a/drivers/irqchip/irq-atmel-aic-common.c +++ b/drivers/irqchip/irq-atmel-aic-common.c @@ -169,7 +169,7 @@ void __init aic_common_rtc_irq_fixup(struct device_node *root) void __init aic_common_irq_fixup(const struct of_device_id *matches) { - struct device_node *root = of_find_node_by_path("/"); + struct device_node *root = of_find_node_by_path("/", NULL); const struct of_device_id *match; if (!root) diff --git a/drivers/macintosh/therm_pm72.c b/drivers/macintosh/therm_pm72.c index 97cfc5a..67a9e78 100644 --- a/drivers/macintosh/therm_pm72.c +++ b/drivers/macintosh/therm_pm72.c @@ -644,7 +644,7 @@ static int read_eeprom(int cpu, struct mpu_data *out) * will work for these machines */ sprintf(nodename, "/u3@0,f8000000/i2c@f8001000/cpuid@a%d", cpu ? 2 : 0); - np = of_find_node_by_path(nodename); + np = of_find_node_by_path(nodename, NULL); if (np == NULL) { printk(KERN_ERR "therm_pm72: Failed to retrieve cpuid node from device-tree\n"); return -ENODEV; @@ -1331,7 +1331,7 @@ static int init_backside_state(struct backside_pid_state *state) * There are different PID params for machines with U3 and machines * with U3H, pick the right ones now */ - u3 = of_find_node_by_path("/u3@0,f8000000"); + u3 = of_find_node_by_path("/u3@0,f8000000", NULL); if (u3 != NULL) { const u32 *vers = of_get_property(u3, "device-rev", NULL); if (vers) diff --git a/drivers/macintosh/via-pmu-led.c b/drivers/macintosh/via-pmu-led.c index 19c3718..630ba0a 100644 --- a/drivers/macintosh/via-pmu-led.c +++ b/drivers/macintosh/via-pmu-led.c @@ -88,7 +88,7 @@ static int __init via_pmu_led_init(void) if (pmu_get_model() != PMU_KEYLARGO_BASED) return -ENODEV; - dt = of_find_node_by_path("/"); + dt = of_find_node_by_path("/", NULL); if (dt == NULL) return -ENODEV; model = of_get_property(dt, "model", NULL); diff --git a/drivers/macintosh/windfarm_mpu.h b/drivers/macintosh/windfarm_mpu.h index 046edc8..ca3170e 100644 --- a/drivers/macintosh/windfarm_mpu.h +++ b/drivers/macintosh/windfarm_mpu.h @@ -85,7 +85,7 @@ static inline const struct mpu_data *wf_get_mpu(int cpu) * will work for these machines */ sprintf(nodename, "/u3@0,f8000000/i2c@f8001000/cpuid@a%d", cpu ? 2 : 0); - np = of_find_node_by_path(nodename); + np = of_find_node_by_path(nodename, NULL); if (!np) return NULL; data = of_get_property(np, "cpuid", &len); diff --git a/drivers/macintosh/windfarm_pm72.c b/drivers/macintosh/windfarm_pm72.c index 2f506b9..a2327ff 100644 --- a/drivers/macintosh/windfarm_pm72.c +++ b/drivers/macintosh/windfarm_pm72.c @@ -509,7 +509,7 @@ static void backside_setup_pid(void) struct device_node *u3; int u3h = 1; /* conservative by default */ - u3 = of_find_node_by_path("/u3@0,f8000000"); + u3 = of_find_node_by_path("/u3@0,f8000000", NULL); if (u3 != NULL) { const u32 *vers = of_get_property(u3, "device-rev", NULL); if (vers) diff --git a/drivers/mtd/nand/mpc5121_nfc.c b/drivers/mtd/nand/mpc5121_nfc.c index e78841a..bc39644 100644 --- a/drivers/mtd/nand/mpc5121_nfc.c +++ b/drivers/mtd/nand/mpc5121_nfc.c @@ -714,7 +714,7 @@ static int mpc5121_nfc_probe(struct platform_device *op) chip->ecc.mode = NAND_ECC_SOFT; /* Support external chip-select logic on ADS5121 board */ - rootnode = of_find_node_by_path("/"); + rootnode = of_find_node_by_path("/", NULL); if (of_device_is_compatible(rootnode, "fsl,mpc5121ads")) { retval = ads5121_chipselect_init(mtd); if (retval) { diff --git a/drivers/net/ethernet/amd/sunlance.c b/drivers/net/ethernet/amd/sunlance.c index 5e4273b..2f7c799 100644 --- a/drivers/net/ethernet/amd/sunlance.c +++ b/drivers/net/ethernet/amd/sunlance.c @@ -1413,7 +1413,7 @@ static int sparc_lance_probe_one(struct platform_device *op, printk(KERN_INFO "SunLance: using " "auto-carrier-detection.\n"); - nd = of_find_node_by_path("/options"); + nd = of_find_node_by_path("/options", NULL); if (!nd) goto no_link_test; diff --git a/drivers/of/base.c b/drivers/of/base.c index 3823edf..3e764bd 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -493,7 +493,7 @@ int of_machine_is_compatible(const char *compat) struct device_node *root; int rc = 0; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root) { rc = of_device_is_compatible(root, compat); of_node_put(root); @@ -699,10 +699,15 @@ static struct device_node *__of_find_node_by_path(struct device_node *parent, { struct device_node *child; int len = strchrnul(path, '/') - path; + int term; if (!len) return NULL; + term = strchrnul(path, ':') - path; + if (term < len) + len = term; + __for_each_child_of_node(parent, child) { const char *name = strrchr(child->full_name, '/'); if (WARN(!name, "malformed device_node %s\n", child->full_name)) @@ -720,6 +725,9 @@ static struct device_node *__of_find_node_by_path(struct device_node *parent, * start with '/', the name of a property of the /aliases * node (an alias). In the case of an alias, the node * matching the alias' value will be returned. + * @opts: Address of a pointer into which to store the start of + * an options string appended to the end of the path with + * a ':' separator. * * Valid paths: * /foo/bar Full path @@ -729,19 +737,24 @@ static struct device_node *__of_find_node_by_path(struct device_node *parent, * Returns a node pointer with refcount incremented, use * of_node_put() on it when done. */ -struct device_node *of_find_node_by_path(const char *path) +struct device_node *of_find_node_by_path(const char *path, char **opts) { struct device_node *np = NULL; struct property *pp; unsigned long flags; + char *separator; if (strcmp(path, "/") == 0) return of_node_get(of_allnodes); + separator = strchr(path, ':'); + if (separator && opts) + *opts = separator + 1; + /* The path could begin with an alias */ if (*path != '/') { char *p = strchrnul(path, '/'); - int len = p - path; + int len = separator ? separator - path : p - path; /* of_aliases must not be NULL */ if (!of_aliases) @@ -749,7 +762,7 @@ struct device_node *of_find_node_by_path(const char *path) for_each_property_of_node(of_aliases, pp) { if (strlen(pp->name) == len && !strncmp(pp->name, path, len)) { - np = of_find_node_by_path(pp->value); + np = of_find_node_by_path(pp->value, NULL); break; } } @@ -1818,10 +1831,10 @@ void of_alias_scan(void * (*dt_alloc)(u64 size, u64 align)) { struct property *pp; - of_aliases = of_find_node_by_path("/aliases"); - of_chosen = of_find_node_by_path("/chosen"); + of_aliases = of_find_node_by_path("/aliases", NULL); + of_chosen = of_find_node_by_path("/chosen", NULL); if (of_chosen == NULL) - of_chosen = of_find_node_by_path("/chosen@0"); + of_chosen = of_find_node_by_path("/chosen@0", NULL); if (of_chosen) { /* linux,stdout-path and /aliases/stdout are for legacy compatibility */ @@ -1831,7 +1844,7 @@ void of_alias_scan(void * (*dt_alloc)(u64 size, u64 align)) if (IS_ENABLED(CONFIG_PPC) && !name) name = of_get_property(of_aliases, "stdout", NULL); if (name) - of_stdout = of_find_node_by_path(name); + of_stdout = of_find_node_by_path(name, NULL); } if (!of_aliases) @@ -1850,7 +1863,7 @@ void of_alias_scan(void * (*dt_alloc)(u64 size, u64 align)) !strcmp(pp->name, "linux,phandle")) continue; - np = of_find_node_by_path(pp->value); + np = of_find_node_by_path(pp->value, NULL); if (!np) continue; diff --git a/drivers/of/platform.c b/drivers/of/platform.c index 3b64d0b..546c583 100644 --- a/drivers/of/platform.c +++ b/drivers/of/platform.c @@ -441,7 +441,7 @@ int of_platform_bus_probe(struct device_node *root, struct device_node *child; int rc = 0; - root = root ? of_node_get(root) : of_find_node_by_path("/"); + root = root ? of_node_get(root) : of_find_node_by_path("/", NULL); if (!root) return -EINVAL; @@ -491,7 +491,7 @@ int of_platform_populate(struct device_node *root, struct device_node *child; int rc = 0; - root = root ? of_node_get(root) : of_find_node_by_path("/"); + root = root ? of_node_get(root) : of_find_node_by_path("/", NULL); if (!root) return -EINVAL; diff --git a/drivers/of/resolver.c b/drivers/of/resolver.c index aed7959..1f6bb8d 100644 --- a/drivers/of/resolver.c +++ b/drivers/of/resolver.c @@ -264,7 +264,7 @@ int of_resolve_phandles(struct device_node *resolve) resolve_fix = NULL; /* this may fail (if no fixups are required) */ - root_sym = of_find_node_by_path("/__symbols__"); + root_sym = of_find_node_by_path("/__symbols__", NULL); /* locate the symbols & fixups nodes on resolve */ for_each_child_of_node(resolve, child) { @@ -308,7 +308,7 @@ int of_resolve_phandles(struct device_node *resolve) goto out; } - refnode = of_find_node_by_path(refpath); + refnode = of_find_node_by_path(refpath, NULL); if (!refnode) { pr_err("%s: Could not find node by path '%s'\n", __func__, refpath); diff --git a/drivers/of/selftest.c b/drivers/of/selftest.c index e2d79af..988126d 100644 --- a/drivers/of/selftest.c +++ b/drivers/of/selftest.c @@ -43,46 +43,57 @@ static bool selftest_live_tree; static void __init of_selftest_find_node_by_name(void) { struct device_node *np; + char *options; - np = of_find_node_by_path("/testcase-data"); + np = of_find_node_by_path("/testcase-data", NULL); selftest(np && !strcmp("/testcase-data", np->full_name), "find /testcase-data failed\n"); of_node_put(np); /* Test if trailing '/' works */ - np = of_find_node_by_path("/testcase-data/"); + np = of_find_node_by_path("/testcase-data/", NULL); selftest(!np, "trailing '/' on /testcase-data/ should fail\n"); - np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a"); + np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a", + NULL); selftest(np && !strcmp("/testcase-data/phandle-tests/consumer-a", np->full_name), "find /testcase-data/phandle-tests/consumer-a failed\n"); of_node_put(np); - np = of_find_node_by_path("testcase-alias"); + np = of_find_node_by_path("testcase-alias", NULL); selftest(np && !strcmp("/testcase-data", np->full_name), "find testcase-alias failed\n"); of_node_put(np); /* Test if trailing '/' works on aliases */ - np = of_find_node_by_path("testcase-alias/"); + np = of_find_node_by_path("testcase-alias/", NULL); selftest(!np, "trailing '/' on testcase-alias/ should fail\n"); - np = of_find_node_by_path("testcase-alias/phandle-tests/consumer-a"); + np = of_find_node_by_path("testcase-alias/phandle-tests/consumer-a", + NULL); selftest(np && !strcmp("/testcase-data/phandle-tests/consumer-a", np->full_name), "find testcase-alias/phandle-tests/consumer-a failed\n"); of_node_put(np); - np = of_find_node_by_path("/testcase-data/missing-path"); + np = of_find_node_by_path("/testcase-data/missing-path", NULL); selftest(!np, "non-existent path returned node %s\n", np->full_name); of_node_put(np); - np = of_find_node_by_path("missing-alias"); + np = of_find_node_by_path("missing-alias", NULL); selftest(!np, "non-existent alias returned node %s\n", np->full_name); of_node_put(np); - np = of_find_node_by_path("testcase-alias/missing-path"); + np = of_find_node_by_path("testcase-alias/missing-path", NULL); selftest(!np, "non-existent alias with relative path returned node %s\n", np->full_name); of_node_put(np); + + np = of_find_node_by_path("/testcase-data:testoption", &options); + selftest(!np || strcmp("testoption", options), "option path test failed\n"); + of_node_put(np); + + np = of_find_node_by_path("testcase-alias:testaliasoption", &options); + selftest(!np || strcmp("testaliasoption", options), "option alias path test failed\n"); + of_node_put(np); } static void __init of_selftest_dynamic(void) @@ -90,7 +101,7 @@ static void __init of_selftest_dynamic(void) struct device_node *np; struct property *prop; - np = of_find_node_by_path("/testcase-data"); + np = of_find_node_by_path("/testcase-data", NULL); if (!np) { pr_err("missing testcase data\n"); return; @@ -243,7 +254,8 @@ static void __init of_selftest_parse_phandle_with_args(void) struct of_phandle_args args; int i, rc; - np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a"); + np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a", + NULL); if (!np) { pr_err("missing testcase data\n"); return; @@ -345,7 +357,8 @@ static void __init of_selftest_property_string(void) struct device_node *np; int rc; - np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a"); + np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a", + NULL); if (!np) { pr_err("No testcase data in device tree\n"); return; @@ -461,7 +474,8 @@ static void __init of_selftest_changeset(void) selftest(n2, "testcase setup failure\n"); n21 = __of_node_alloc("/testcase-data/changeset/n2/n21", GFP_KERNEL); selftest(n21, "testcase setup failure %p\n", n21); - nremove = of_find_node_by_path("/testcase-data/changeset/node-remove"); + nremove = of_find_node_by_path("/testcase-data/changeset/node-remove", + NULL); selftest(nremove, "testcase setup failure\n"); ppadd = __of_prop_dup(&padd, GFP_KERNEL); selftest(ppadd, "testcase setup failure\n"); @@ -501,7 +515,8 @@ static void __init of_selftest_parse_interrupts(void) struct of_phandle_args args; int i, rc; - np = of_find_node_by_path("/testcase-data/interrupts/interrupts0"); + np = of_find_node_by_path("/testcase-data/interrupts/interrupts0", + NULL); if (!np) { pr_err("missing testcase data\n"); return; @@ -521,7 +536,8 @@ static void __init of_selftest_parse_interrupts(void) } of_node_put(np); - np = of_find_node_by_path("/testcase-data/interrupts/interrupts1"); + np = of_find_node_by_path("/testcase-data/interrupts/interrupts1", + NULL); if (!np) { pr_err("missing testcase data\n"); return; @@ -573,7 +589,8 @@ static void __init of_selftest_parse_interrupts_extended(void) struct of_phandle_args args; int i, rc; - np = of_find_node_by_path("/testcase-data/interrupts/interrupts-extended0"); + np = of_find_node_by_path("/testcase-data/interrupts/interrupts-extended0", + NULL); if (!np) { pr_err("missing testcase data\n"); return; @@ -678,7 +695,7 @@ static void __init of_selftest_match_node(void) int i; for (i = 0; i < ARRAY_SIZE(match_node_tests); i++) { - np = of_find_node_by_path(match_node_tests[i].path); + np = of_find_node_by_path(match_node_tests[i].path, NULL); if (!np) { selftest(0, "missing testcase node %s\n", match_node_tests[i].path); @@ -712,11 +729,11 @@ static void __init of_selftest_platform_populate(void) {} }; - np = of_find_node_by_path("/testcase-data"); + np = of_find_node_by_path("/testcase-data", NULL); of_platform_populate(np, of_default_bus_match_table, NULL, NULL); /* Test that a missing irq domain returns -EPROBE_DEFER */ - np = of_find_node_by_path("/testcase-data/testcase-device1"); + np = of_find_node_by_path("/testcase-data/testcase-device1", NULL); pdev = of_find_device_by_node(np); selftest(pdev, "device 1 creation failed\n"); @@ -724,13 +741,13 @@ static void __init of_selftest_platform_populate(void) selftest(irq == -EPROBE_DEFER, "device deferred probe failed - %d\n", irq); /* Test that a parsing failure does not return -EPROBE_DEFER */ - np = of_find_node_by_path("/testcase-data/testcase-device2"); + np = of_find_node_by_path("/testcase-data/testcase-device2", NULL); pdev = of_find_device_by_node(np); selftest(pdev, "device 2 creation failed\n"); irq = platform_get_irq(pdev, 0); selftest(irq < 0 && irq != -EPROBE_DEFER, "device parsing error failed - %d\n", irq); - np = of_find_node_by_path("/testcase-data/platform-tests"); + np = of_find_node_by_path("/testcase-data/platform-tests", NULL); if (!np) { pr_err("No testcase data in device tree\n"); return; @@ -792,7 +809,7 @@ static int attach_node_and_children(struct device_node *np) while (np) { next = np->allnext; - dup = of_find_node_by_path(np->full_name); + dup = of_find_node_by_path(np->full_name, NULL); if (dup) update_node_properties(np, dup); else { @@ -853,8 +870,8 @@ static int __init selftest_data_add(void) for_each_of_allnodes(np) __of_attach_node_sysfs(np); - of_aliases = of_find_node_by_path("/aliases"); - of_chosen = of_find_node_by_path("/chosen"); + of_aliases = of_find_node_by_path("/aliases", NULL); + of_chosen = of_find_node_by_path("/chosen", NULL); return 0; } @@ -898,7 +915,8 @@ static void selftest_data_remove(void) while (last_node_index-- > 0) { if (nodes[last_node_index]) { - np = of_find_node_by_path(nodes[last_node_index]->full_name); + np = of_find_node_by_path(nodes[last_node_index]->full_name, + NULL); if (np == nodes[last_node_index]) { if (of_aliases == np) { of_node_put(of_aliases); @@ -925,9 +943,10 @@ static int __init of_selftest(void) if (res) return res; if (!of_aliases) - of_aliases = of_find_node_by_path("/aliases"); + of_aliases = of_find_node_by_path("/aliases", NULL); - np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a"); + np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a", + NULL); if (!np) { pr_info("No testcase data in device tree; not running tests\n"); return 0; diff --git a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c index 2b0ce7c..815e7e0 100644 --- a/drivers/sbus/char/display7seg.c +++ b/drivers/sbus/char/display7seg.c @@ -200,7 +200,7 @@ static int d7s_probe(struct platform_device *op) * device, and reset default when detached */ regs = readb(p->regs); - opts = of_find_node_by_path("/options"); + opts = of_find_node_by_path("/options", NULL); if (opts && of_get_property(opts, "d7s-flipped?", NULL)) p->flipped = true; diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c index af15a2f..4a5f3e0 100644 --- a/drivers/sbus/char/envctrl.c +++ b/drivers/sbus/char/envctrl.c @@ -905,7 +905,7 @@ static void envctrl_init_i2c_child(struct device_node *dp, struct device_node *root_node; int len; - root_node = of_find_node_by_path("/"); + root_node = of_find_node_by_path("/", NULL); if (!strcmp(root_node->name, "SUNW,UltraSPARC-IIi-cEngine")) { for (len = 0; len < PCF8584_MAX_CHANNELS; ++len) { pchild->mon_type[len] = ENVCTRL_NOMON; diff --git a/drivers/sbus/char/openprom.c b/drivers/sbus/char/openprom.c index 5843288..0c077ae 100644 --- a/drivers/sbus/char/openprom.c +++ b/drivers/sbus/char/openprom.c @@ -228,7 +228,7 @@ static int opromnext(void __user *argp, unsigned int cmd, struct device_node *dp if (cmd != OPROMNEXT) return -EINVAL; - dp = of_find_node_by_path("/"); + dp = of_find_node_by_path("/", NULL); } ph = 0; @@ -271,7 +271,7 @@ static int oprompath2node(void __user *argp, struct device_node *dp, struct open { phandle ph = 0; - dp = of_find_node_by_path(op->oprom_array); + dp = of_find_node_by_path(op->oprom_array, NULL); if (dp) ph = dp->phandle; data->current_node = dp; @@ -532,7 +532,7 @@ static int opiocgetnext(unsigned int cmd, void __user *argp) if (nd == 0) { if (cmd != OPIOCGETNEXT) return -EINVAL; - dp = of_find_node_by_path("/"); + dp = of_find_node_by_path("/", NULL); } else { dp = of_find_node_by_phandle(nd); nd = 0; @@ -698,7 +698,7 @@ static int openprom_open(struct inode * inode, struct file * file) return -ENOMEM; mutex_lock(&openprom_mutex); - data->current_node = of_find_node_by_path("/"); + data->current_node = of_find_node_by_path("/", NULL); data->lastnode = data->current_node; file->private_data = (void *) data; mutex_unlock(&openprom_mutex); @@ -736,7 +736,7 @@ static int __init openprom_init(void) if (err) return err; - dp = of_find_node_by_path("/"); + dp = of_find_node_by_path("/", NULL); dp = dp->child; while (dp) { if (!strcmp(dp->name, "options")) diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c index 598c42c..39c3430 100644 --- a/drivers/scsi/ibmvscsi/ibmvfc.c +++ b/drivers/scsi/ibmvscsi/ibmvfc.c @@ -1143,7 +1143,7 @@ static void ibmvfc_gather_partition_info(struct ibmvfc_host *vhost) const char *name; const unsigned int *num; - rootdn = of_find_node_by_path("/"); + rootdn = of_find_node_by_path("/", NULL); if (!rootdn) return; diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c index 7b23f21..f72aa1f 100644 --- a/drivers/scsi/ibmvscsi/ibmvscsi.c +++ b/drivers/scsi/ibmvscsi/ibmvscsi.c @@ -254,7 +254,7 @@ static void gather_partition_info(void) const __be32 *p_number_ptr; /* Retrieve information about this partition */ - rootdn = of_find_node_by_path("/"); + rootdn = of_find_node_by_path("/", NULL); if (!rootdn) { return; } diff --git a/drivers/soc/tegra/common.c b/drivers/soc/tegra/common.c index a71cb74..c80ccf1 100644 --- a/drivers/soc/tegra/common.c +++ b/drivers/soc/tegra/common.c @@ -22,7 +22,7 @@ bool soc_is_tegra(void) { struct device_node *root; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (!root) return false; diff --git a/drivers/tty/hvc/hvc_opal.c b/drivers/tty/hvc/hvc_opal.c index a2cc5f8..2a46ce6 100644 --- a/drivers/tty/hvc/hvc_opal.c +++ b/drivers/tty/hvc/hvc_opal.c @@ -354,11 +354,11 @@ void __init hvc_opal_init_early(void) /* Current OPAL takeover doesn't provide the stdout * path, so we hard wire it */ - opal = of_find_node_by_path("/ibm,opal/consoles"); + opal = of_find_node_by_path("/ibm,opal/consoles", NULL); if (opal) pr_devel("hvc_opal: Found consoles in new location\n"); if (!opal) { - opal = of_find_node_by_path("/ibm,opal"); + opal = of_find_node_by_path("/ibm,opal", NULL); if (opal) pr_devel("hvc_opal: " "Found consoles in old location\n"); diff --git a/drivers/tty/serial/nwpserial.c b/drivers/tty/serial/nwpserial.c index 5da7622..392153e 100644 --- a/drivers/tty/serial/nwpserial.c +++ b/drivers/tty/serial/nwpserial.c @@ -452,7 +452,7 @@ static int __init nwpserial_console_init(void) if (name == NULL) return -1; - dn = of_find_node_by_path(name); + dn = of_find_node_by_path(name, NULL); if (!dn) return -1; diff --git a/drivers/tty/serial/suncore.c b/drivers/tty/serial/suncore.c index 6e4ac8d..46a05a4 100644 --- a/drivers/tty/serial/suncore.c +++ b/drivers/tty/serial/suncore.c @@ -108,7 +108,7 @@ void sunserial_console_termios(struct console *con, struct device_node *uart_dp) mode_prop[3] = c; - dp = of_find_node_by_path("/options"); + dp = of_find_node_by_path("/options", NULL); mode = of_get_property(dp, mode_prop, NULL); if (!mode) mode = "9600,8,n,1,-"; diff --git a/drivers/tty/serial/sunsu.c b/drivers/tty/serial/sunsu.c index 5326ae1..610df7b 100644 --- a/drivers/tty/serial/sunsu.c +++ b/drivers/tty/serial/sunsu.c @@ -1379,18 +1379,18 @@ static inline struct console *SUNSU_CONSOLE(void) static enum su_type su_get_type(struct device_node *dp) { - struct device_node *ap = of_find_node_by_path("/aliases"); + struct device_node *ap = of_find_node_by_path("/aliases", NULL); if (ap) { const char *keyb = of_get_property(ap, "keyboard", NULL); const char *ms = of_get_property(ap, "mouse", NULL); if (keyb) { - if (dp == of_find_node_by_path(keyb)) + if (dp == of_find_node_by_path(keyb, NULL)) return SU_PORT_KBD; } if (ms) { - if (dp == of_find_node_by_path(ms)) + if (dp == of_find_node_by_path(ms, NULL)) return SU_PORT_MS; } } diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c index 42bad18..515ca21 100644 --- a/drivers/tty/sysrq.c +++ b/drivers/tty/sysrq.c @@ -692,7 +692,7 @@ static void sysrq_of_get_keyreset_config(void) struct property *prop; const __be32 *p; - np = of_find_node_by_path("/chosen/linux,sysrq-reset-seq"); + np = of_find_node_by_path("/chosen/linux,sysrq-reset-seq", NULL); if (!np) { pr_debug("No sysrq node found"); return; diff --git a/drivers/video/fbdev/aty/radeon_monitor.c b/drivers/video/fbdev/aty/radeon_monitor.c index bc078d5..1750360 100644 --- a/drivers/video/fbdev/aty/radeon_monitor.c +++ b/drivers/video/fbdev/aty/radeon_monitor.c @@ -737,7 +737,7 @@ static int is_powerblade(const char *model) const char* cp; int len, l, rc = 0; - root = of_find_node_by_path("/"); + root = of_find_node_by_path("/", NULL); if (root && model) { l = strlen(model); cp = of_get_property(root, "model", &len); diff --git a/drivers/virt/fsl_hypervisor.c b/drivers/virt/fsl_hypervisor.c index 32c8fc5..f7cea32 100644 --- a/drivers/virt/fsl_hypervisor.c +++ b/drivers/virt/fsl_hypervisor.c @@ -797,7 +797,7 @@ static int has_fsl_hypervisor(void) struct device_node *node; int ret; - node = of_find_node_by_path("/hypervisor"); + node = of_find_node_by_path("/hypervisor", NULL); if (!node) return 0; diff --git a/drivers/watchdog/cpwd.c b/drivers/watchdog/cpwd.c index e55ed70..f880848 100644 --- a/drivers/watchdog/cpwd.c +++ b/drivers/watchdog/cpwd.c @@ -556,7 +556,7 @@ static int cpwd_probe(struct platform_device *op) goto out_free; } - options = of_find_node_by_path("/options"); + options = of_find_node_by_path("/options", NULL); err = -ENODEV; if (!options) { pr_err("Unable to find /options node\n"); diff --git a/fs/openpromfs/inode.c b/fs/openpromfs/inode.c index 15e4500..bbc15a2 100644 --- a/fs/openpromfs/inode.c +++ b/fs/openpromfs/inode.c @@ -400,7 +400,7 @@ static int openprom_fill_super(struct super_block *s, void *data, int silent) oi = OP_I(root_inode); oi->type = op_inode_node; - oi->u.node = of_find_node_by_path("/"); + oi->u.node = of_find_node_by_path("/", NULL); s->s_root = d_make_root(root_inode); if (!s->s_root) diff --git a/include/linux/of.h b/include/linux/of.h index 29f0adc..3adb4a4 100644 --- a/include/linux/of.h +++ b/include/linux/of.h @@ -228,7 +228,7 @@ extern struct device_node *of_find_matching_node_and_match( const struct of_device_id *matches, const struct of_device_id **match); -extern struct device_node *of_find_node_by_path(const char *path); +extern struct device_node *of_find_node_by_path(const char *path, char **opts); extern struct device_node *of_find_node_by_phandle(phandle handle); extern struct device_node *of_get_parent(const struct device_node *node); extern struct device_node *of_get_next_parent(struct device_node *node); @@ -380,7 +380,8 @@ static inline struct device_node *of_find_matching_node_and_match( return NULL; } -static inline struct device_node *of_find_node_by_path(const char *path) +static inline struct device_node *of_find_node_by_path(const char *path, + char **opts) { return NULL; } diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index e695517..0056963 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c @@ -1427,7 +1427,7 @@ static int fsl_ssi_probe(struct platform_device *pdev) * device tree. We also pass the address of the CPU DAI driver * structure. */ - sprop = of_get_property(of_find_node_by_path("/"), "compatible", NULL); + sprop = of_get_property(of_find_node_by_path("/", NULL), "compatible", NULL); /* Sometimes the compatible name has a "fsl," prefix, so we strip it. */ p = strrchr(sprop, ','); if (p) -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html