[POWERPC] Remove old interface find_path_device

Replaced by of_find_node_by_path.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Stephen Rothwell 2007-04-24 13:50:55 +10:00 коммит произвёл Paul Mackerras
Родитель 112466b4d0
Коммит 8c8dc32248
12 изменённых файлов: 62 добавлений и 45 удалений

Просмотреть файл

@ -321,7 +321,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v)
struct device_node *rtas_node; struct device_node *rtas_node;
const int *lrdrp = NULL; const int *lrdrp = NULL;
rtas_node = find_path_device("/rtas"); rtas_node = of_find_node_by_path("/rtas");
if (rtas_node) if (rtas_node)
lrdrp = of_get_property(rtas_node, "ibm,lrdr-capacity", NULL); lrdrp = of_get_property(rtas_node, "ibm,lrdr-capacity", NULL);
@ -330,6 +330,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v)
} else { } else {
partition_potential_processors = *(lrdrp + 4); partition_potential_processors = *(lrdrp + 4);
} }
of_node_put(rtas_node);
partition_active_processors = lparcfg_count_active_processors(); partition_active_processors = lparcfg_count_active_processors();
@ -537,7 +538,7 @@ static int lparcfg_data(struct seq_file *m, void *v)
seq_printf(m, "%s %s \n", MODULE_NAME, MODULE_VERS); seq_printf(m, "%s %s \n", MODULE_NAME, MODULE_VERS);
rootdn = find_path_device("/"); rootdn = of_find_node_by_path("/");
if (rootdn) { if (rootdn) {
tmp = of_get_property(rootdn, "model", NULL); tmp = of_get_property(rootdn, "model", NULL);
if (tmp) { if (tmp) {
@ -557,6 +558,7 @@ static int lparcfg_data(struct seq_file *m, void *v)
NULL); NULL);
if (lp_index_ptr) if (lp_index_ptr)
lp_index = *lp_index_ptr; lp_index = *lp_index_ptr;
of_node_put(rootdn);
} }
seq_printf(m, "serial_number=%s\n", system_id); seq_printf(m, "serial_number=%s\n", system_id);
seq_printf(m, "system_type=%s\n", model); seq_printf(m, "system_type=%s\n", model);

Просмотреть файл

@ -669,6 +669,7 @@ pcibios_make_OF_bus_map(void)
int i; int i;
struct pci_controller* hose; struct pci_controller* hose;
struct property *map_prop; struct property *map_prop;
struct device_node *dn;
pci_to_OF_bus_map = kmalloc(pci_bus_count, GFP_KERNEL); pci_to_OF_bus_map = kmalloc(pci_bus_count, GFP_KERNEL);
if (!pci_to_OF_bus_map) { if (!pci_to_OF_bus_map) {
@ -690,12 +691,13 @@ pcibios_make_OF_bus_map(void)
continue; continue;
make_one_node_map(node, hose->first_busno); make_one_node_map(node, hose->first_busno);
} }
map_prop = of_find_property(find_path_device("/"), dn = of_find_node_by_path("/");
"pci-OF-bus-map", NULL); map_prop = of_find_property(dn, "pci-OF-bus-map", NULL);
if (map_prop) { if (map_prop) {
BUG_ON(pci_bus_count > map_prop->length); BUG_ON(pci_bus_count > map_prop->length);
memcpy(map_prop->value, pci_to_OF_bus_map, pci_bus_count); memcpy(map_prop->value, pci_to_OF_bus_map, pci_bus_count);
} }
of_node_put(dn);
#ifdef DEBUG #ifdef DEBUG
printk("PCI->OF bus map:\n"); printk("PCI->OF bus map:\n");
for (i=0; i<pci_bus_count; i++) { for (i=0; i<pci_bus_count; i++) {
@ -1006,14 +1008,19 @@ void __init
pci_create_OF_bus_map(void) pci_create_OF_bus_map(void)
{ {
struct property* of_prop; struct property* of_prop;
struct device_node *dn;
of_prop = (struct property*) alloc_bootmem(sizeof(struct property) + 256); of_prop = (struct property*) alloc_bootmem(sizeof(struct property) + 256);
if (of_prop && find_path_device("/")) { if (!of_prop)
return;
dn = of_find_node_by_path("/");
if (dn) {
memset(of_prop, -1, sizeof(struct property) + 256); memset(of_prop, -1, sizeof(struct property) + 256);
of_prop->name = "pci-OF-bus-map"; of_prop->name = "pci-OF-bus-map";
of_prop->length = 256; of_prop->length = 256;
of_prop->value = &of_prop[1]; of_prop->value = &of_prop[1];
prom_add_property(find_path_device("/"), of_prop); prom_add_property(dn, of_prop);
of_node_put(dn);
} }
} }

Просмотреть файл

@ -1153,20 +1153,6 @@ int machine_is_compatible(const char *compat)
} }
EXPORT_SYMBOL(machine_is_compatible); EXPORT_SYMBOL(machine_is_compatible);
/**
* Find the device_node with a given full_name.
*/
struct device_node *find_path_device(const char *path)
{
struct device_node *np;
for (np = allnodes; np != 0; np = np->allnext)
if (np->full_name != 0 && strcasecmp(np->full_name, path) == 0)
return np;
return NULL;
}
EXPORT_SYMBOL(find_path_device);
/******* /*******
* *
* New implementation of the OF "find" APIs, return a refcounted * New implementation of the OF "find" APIs, return a refcounted

Просмотреть файл

@ -192,7 +192,7 @@ void rtas_progress(char *s, unsigned short hex)
if (display_width == 0) { if (display_width == 0) {
display_width = 0x10; display_width = 0x10;
if ((root = find_path_device("/rtas"))) { if ((root = of_find_node_by_path("/rtas"))) {
if ((p = of_get_property(root, if ((p = of_get_property(root,
"ibm,display-line-length", NULL))) "ibm,display-line-length", NULL)))
display_width = *p; display_width = *p;
@ -204,6 +204,7 @@ void rtas_progress(char *s, unsigned short hex)
display_lines = *p; display_lines = *p;
row_width = of_get_property(root, row_width = of_get_property(root,
"ibm,display-truncation-length", NULL); "ibm,display-truncation-length", NULL);
of_node_put(root);
} }
display_character = rtas_token("display-character"); display_character = rtas_token("display-character");
set_indicator = rtas_token("set-indicator"); set_indicator = rtas_token("set-indicator");

Просмотреть файл

@ -66,7 +66,7 @@ static int __init smt_setup(void)
if (!cpu_has_feature(CPU_FTR_SMT)) if (!cpu_has_feature(CPU_FTR_SMT))
return -ENODEV; return -ENODEV;
options = find_path_device("/options"); options = of_find_node_by_path("/options");
if (!options) if (!options)
return -ENODEV; return -ENODEV;
@ -76,6 +76,7 @@ static int __init smt_setup(void)
per_cpu(smt_snooze_delay, cpu) = *val; per_cpu(smt_snooze_delay, cpu) = *val;
} }
of_node_put(options);
return 0; return 0;
} }
__initcall(smt_setup); __initcall(smt_setup);

Просмотреть файл

@ -185,10 +185,9 @@ setup_python(struct pci_controller *hose, struct device_node *dev)
/* Marvell Discovery II based Pegasos 2 */ /* Marvell Discovery II based Pegasos 2 */
static void __init setup_peg2(struct pci_controller *hose, struct device_node *dev) static void __init setup_peg2(struct pci_controller *hose, struct device_node *dev)
{ {
struct device_node *root = find_path_device("/"); struct device_node *root = of_find_node_by_path("/");
struct device_node *rtas; struct device_node *rtas;
of_node_get(root);
rtas = of_find_node_by_name (root, "rtas"); rtas = of_find_node_by_name (root, "rtas");
if (rtas) { if (rtas) {
hose->ops = &rtas_pci_ops; hose->ops = &rtas_pci_ops;
@ -198,6 +197,7 @@ static void __init setup_peg2(struct pci_controller *hose, struct device_node *d
" your firmware\n"); " your firmware\n");
} }
pci_assign_all_buses = 1; pci_assign_all_buses = 1;
/* keep the reference to the root node */
} }
void __init void __init
@ -210,7 +210,7 @@ chrp_find_bridges(void)
const unsigned int *dma; const unsigned int *dma;
const char *model, *machine; const char *model, *machine;
int is_longtrail = 0, is_mot = 0, is_pegasos = 0; int is_longtrail = 0, is_mot = 0, is_pegasos = 0;
struct device_node *root = find_path_device("/"); struct device_node *root = of_find_node_by_path("/");
struct resource r; struct resource r;
/* /*
* The PCI host bridge nodes on some machines don't have * The PCI host bridge nodes on some machines don't have
@ -309,6 +309,7 @@ chrp_find_bridges(void)
printk("pci_dram_offset = %lx\n", pci_dram_offset); printk("pci_dram_offset = %lx\n", pci_dram_offset);
} }
} }
of_node_put(root);
} }
/* SL82C105 IDE Control/Status Register */ /* SL82C105 IDE Control/Status Register */

Просмотреть файл

@ -110,7 +110,7 @@ void chrp_show_cpuinfo(struct seq_file *m)
struct device_node *root; struct device_node *root;
const char *model = ""; const char *model = "";
root = find_path_device("/"); root = of_find_node_by_path("/");
if (root) if (root)
model = of_get_property(root, "model", NULL); model = of_get_property(root, "model", NULL);
seq_printf(m, "machine\t\t: CHRP %s\n", model); seq_printf(m, "machine\t\t: CHRP %s\n", model);
@ -160,6 +160,7 @@ void chrp_show_cpuinfo(struct seq_file *m)
gg2_cachetypes[(t>>2) & 3], gg2_cachetypes[(t>>2) & 3],
gg2_cachemodes[t & 3]); gg2_cachemodes[t & 3]);
} }
of_node_put(root);
} }
/* /*
@ -204,7 +205,7 @@ static void __init sio_init(void)
{ {
struct device_node *root; struct device_node *root;
if ((root = find_path_device("/")) && if ((root = of_find_node_by_path("/")) &&
!strncmp(of_get_property(root, "model", NULL), !strncmp(of_get_property(root, "model", NULL),
"IBM,LongTrail", 13)) { "IBM,LongTrail", 13)) {
/* logical device 0 (KBC/Keyboard) */ /* logical device 0 (KBC/Keyboard) */
@ -212,6 +213,7 @@ static void __init sio_init(void)
/* select logical device 1 (KBC/Mouse) */ /* select logical device 1 (KBC/Mouse) */
sio_fixup_irq("mouse", 1, 12, 2); sio_fixup_irq("mouse", 1, 12, 2);
} }
of_node_put(root);
} }
@ -250,7 +252,7 @@ static void briq_restart(char *cmd)
void __init chrp_setup_arch(void) void __init chrp_setup_arch(void)
{ {
struct device_node *root = find_path_device ("/"); struct device_node *root = of_find_node_by_path("/");
const char *machine = NULL; const char *machine = NULL;
/* init to some ~sane value until calibrate_delay() runs */ /* init to some ~sane value until calibrate_delay() runs */
@ -273,6 +275,7 @@ void __init chrp_setup_arch(void)
/* Let's assume it is an IBM chrp if all else fails */ /* Let's assume it is an IBM chrp if all else fails */
_chrp_type = _CHRP_IBM; _chrp_type = _CHRP_IBM;
} }
of_node_put(root);
printk("chrp type = %x [%s]\n", _chrp_type, chrp_names[_chrp_type]); printk("chrp type = %x [%s]\n", _chrp_type, chrp_names[_chrp_type]);
rtas_initialize(); rtas_initialize();

Просмотреть файл

@ -1044,6 +1044,7 @@ core99_reset_cpu(struct device_node *node, long param, long value)
unsigned long flags; unsigned long flags;
struct macio_chip *macio; struct macio_chip *macio;
struct device_node *np; struct device_node *np;
struct device_node *cpus;
const int dflt_reset_lines[] = { KL_GPIO_RESET_CPU0, const int dflt_reset_lines[] = { KL_GPIO_RESET_CPU0,
KL_GPIO_RESET_CPU1, KL_GPIO_RESET_CPU1,
KL_GPIO_RESET_CPU2, KL_GPIO_RESET_CPU2,
@ -1053,10 +1054,10 @@ core99_reset_cpu(struct device_node *node, long param, long value)
if (macio->type != macio_keylargo) if (macio->type != macio_keylargo)
return -ENODEV; return -ENODEV;
np = find_path_device("/cpus"); cpus = of_find_node_by_path("/cpus");
if (np == NULL) if (cpus == NULL)
return -ENODEV; return -ENODEV;
for (np = np->child; np != NULL; np = np->sibling) { for (np = cpus->child; np != NULL; np = np->sibling) {
const u32 *num = of_get_property(np, "reg", NULL); const u32 *num = of_get_property(np, "reg", NULL);
const u32 *rst = of_get_property(np, "soft-reset", NULL); const u32 *rst = of_get_property(np, "soft-reset", NULL);
if (num == NULL || rst == NULL) if (num == NULL || rst == NULL)
@ -1066,6 +1067,7 @@ core99_reset_cpu(struct device_node *node, long param, long value)
break; break;
} }
} }
of_node_put(cpus);
if (np == NULL || reset_io == 0) if (np == NULL || reset_io == 0)
reset_io = dflt_reset_lines[param]; reset_io = dflt_reset_lines[param];
@ -1497,15 +1499,16 @@ static long g5_reset_cpu(struct device_node *node, long param, long value)
unsigned long flags; unsigned long flags;
struct macio_chip *macio; struct macio_chip *macio;
struct device_node *np; struct device_node *np;
struct device_node *cpus;
macio = &macio_chips[0]; macio = &macio_chips[0];
if (macio->type != macio_keylargo2 && macio->type != macio_shasta) if (macio->type != macio_keylargo2 && macio->type != macio_shasta)
return -ENODEV; return -ENODEV;
np = find_path_device("/cpus"); cpus = of_find_node_by_path("/cpus");
if (np == NULL) if (cpus == NULL)
return -ENODEV; return -ENODEV;
for (np = np->child; np != NULL; np = np->sibling) { for (np = cpus->child; np != NULL; np = np->sibling) {
const u32 *num = of_get_property(np, "reg", NULL); const u32 *num = of_get_property(np, "reg", NULL);
const u32 *rst = of_get_property(np, "soft-reset", NULL); const u32 *rst = of_get_property(np, "soft-reset", NULL);
if (num == NULL || rst == NULL) if (num == NULL || rst == NULL)
@ -1515,6 +1518,7 @@ static long g5_reset_cpu(struct device_node *node, long param, long value)
break; break;
} }
} }
of_node_put(cpus);
if (np == NULL || reset_io == 0) if (np == NULL || reset_io == 0)
return -ENODEV; return -ENODEV;
@ -2499,18 +2503,26 @@ found:
* that all Apple OF revs did it properly, I do it the paranoid way. * that all Apple OF revs did it properly, I do it the paranoid way.
*/ */
while (uninorth_base && uninorth_rev > 3) { while (uninorth_base && uninorth_rev > 3) {
struct device_node *np = find_path_device("/cpus"); struct device_node *cpus = of_find_node_by_path("/cpus");
if (!np || !np->child) { struct device_node *np;
if (!cpus || !cpus->child) {
printk(KERN_WARNING "Can't find CPU(s) in device tree !\n"); printk(KERN_WARNING "Can't find CPU(s) in device tree !\n");
of_node_put(cpus);
break; break;
} }
np = np->child; np = cpus->child;
/* Nap mode not supported on SMP */ /* Nap mode not supported on SMP */
if (np->sibling) if (np->sibling) {
of_node_put(cpus);
break; break;
}
/* Nap mode not supported if flush-on-lock property is present */ /* Nap mode not supported if flush-on-lock property is present */
if (of_get_property(np, "flush-on-lock", NULL)) if (of_get_property(np, "flush-on-lock", NULL)) {
of_node_put(cpus);
break; break;
}
of_node_put(cpus);
powersave_nap = 1; powersave_nap = 1;
printk(KERN_DEBUG "Processor NAP mode on idle enabled.\n"); printk(KERN_DEBUG "Processor NAP mode on idle enabled.\n");
break; break;

Просмотреть файл

@ -202,13 +202,16 @@ static struct miscdevice briq_panel_miscdev = {
static int __init briq_panel_init(void) static int __init briq_panel_init(void)
{ {
struct device_node *root = find_path_device("/"); struct device_node *root = of_find_node_by_path("/");
const char *machine; const char *machine;
int i; int i;
machine = of_get_property(root, "model", NULL); machine = of_get_property(root, "model", NULL);
if (!machine || strncmp(machine, "TotalImpact,BRIQ-1", 18) != 0) if (!machine || strncmp(machine, "TotalImpact,BRIQ-1", 18) != 0) {
of_node_put(root);
return -ENODEV; return -ENODEV;
}
of_node_put(root);
printk(KERN_INFO printk(KERN_INFO
"briq_panel: v%s Dr. Karsten Jeppesen (kj@totalimpact.com)\n", "briq_panel: v%s Dr. Karsten Jeppesen (kj@totalimpact.com)\n",

Просмотреть файл

@ -899,7 +899,7 @@ static int get_system_info(void)
const char *id, *model, *name; const char *id, *model, *name;
const unsigned int *num; const unsigned int *num;
rootdn = find_path_device("/"); rootdn = of_find_node_by_path("/");
if (!rootdn) if (!rootdn)
return -ENOENT; return -ENOENT;
@ -916,6 +916,7 @@ static int get_system_info(void)
if (num) if (num)
partition_number = *num; partition_number = *num;
of_node_put(rootdn);
return 0; return 0;
} }

Просмотреть файл

@ -157,7 +157,7 @@ static void gather_partition_info(void)
const unsigned int *p_number_ptr; const unsigned int *p_number_ptr;
/* Retrieve information about this partition */ /* Retrieve information about this partition */
rootdn = find_path_device("/"); rootdn = of_find_node_by_path("/");
if (!rootdn) { if (!rootdn) {
return; return;
} }
@ -169,6 +169,7 @@ static void gather_partition_info(void)
p_number_ptr = of_get_property(rootdn, "ibm,partition-no", NULL); p_number_ptr = of_get_property(rootdn, "ibm,partition-no", NULL);
if (p_number_ptr) if (p_number_ptr)
partition_number = *p_number_ptr; partition_number = *p_number_ptr;
of_node_put(rootdn);
} }
static void set_adapter_info(struct ibmvscsi_host_data *hostdata) static void set_adapter_info(struct ibmvscsi_host_data *hostdata)

Просмотреть файл

@ -115,7 +115,6 @@ static inline void set_node_proc_entry(struct device_node *dn, struct proc_dir_e
/* OBSOLETE: Old style node lookup */ /* OBSOLETE: Old style node lookup */
extern struct device_node *find_devices(const char *name); extern struct device_node *find_devices(const char *name);
extern struct device_node *find_type_devices(const char *type); extern struct device_node *find_type_devices(const char *type);
extern struct device_node *find_path_device(const char *path);
/* New style node lookup */ /* New style node lookup */
extern struct device_node *of_find_node_by_name(struct device_node *from, extern struct device_node *of_find_node_by_name(struct device_node *from,