X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fparisc%2Fkernel%2Finventory.c;h=1a1c66422736e331710780ff929c00c29ec09ff7;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=ff3b9fe47392d5b46da8aecd66b3553df2b330b6;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/arch/parisc/kernel/inventory.c b/arch/parisc/kernel/inventory.c index ff3b9fe47..1a1c66422 100644 --- a/arch/parisc/kernel/inventory.c +++ b/arch/parisc/kernel/inventory.c @@ -25,7 +25,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -516,7 +518,7 @@ add_system_map_addresses(struct parisc_device *dev, int num_addrs, } /** - * do_system_map_inventory - Retrieve firmware devices via SYSTEM_MAP. + * system_map_inventory - Retrieve firmware devices via SYSTEM_MAP. * * This function attempts to retrieve and register all the devices firmware * knows about via the SYSTEM_MAP PDC call. @@ -526,16 +528,18 @@ static void __init system_map_inventory(void) int i; long status = PDC_OK; - for (i = 0; status != PDC_BAD_PROC && status != PDC_NE_MOD; i++) { + for (i = 0; i < 256; i++) { struct parisc_device *dev; struct pdc_system_map_mod_info module_result; struct pdc_module_path module_path; status = pdc_system_map_find_mods(&module_result, &module_path, i); + if ((status == PDC_BAD_PROC) || (status == PDC_NE_MOD)) + break; if (status != PDC_OK) continue; - + dev = alloc_pa_dev(module_result.mod_addr, &module_path.path); if (!dev) continue; @@ -582,10 +586,10 @@ void __init do_memory_inventory(void) void __init do_device_inventory(void) { - extern void parisc_generic_device_register(void); - printk(KERN_INFO "Searching for devices...\n"); + init_parisc_bus(); + switch (pdc_type) { case PDC_TYPE_PAT: @@ -603,7 +607,6 @@ void __init do_device_inventory(void) default: panic("Unknown PDC type!\n"); } - parisc_generic_device_register(); printk(KERN_INFO "Found devices:\n"); print_parisc_devices(); }