X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Facpi%2Fpci_root.c;h=4c313eab6313d94ff6e345555fa1eb53e24bedd0;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=0984a1ee24edceecbd9593b8da72b139f1fc4201;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 0984a1ee2..4c313eab6 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c @@ -58,7 +58,7 @@ static struct acpi_driver acpi_pci_root_driver = { struct acpi_pci_root { struct list_head node; - struct acpi_device * device; + acpi_handle handle; struct acpi_pci_id id; struct pci_bus *bus; }; @@ -83,7 +83,7 @@ int acpi_pci_register_driver(struct acpi_pci_driver *driver) list_for_each(entry, &acpi_pci_roots) { struct acpi_pci_root *root; root = list_entry(entry, struct acpi_pci_root, node); - driver->add(root->device->handle); + driver->add(root->handle); n++; } @@ -110,7 +110,7 @@ void acpi_pci_unregister_driver(struct acpi_pci_driver *driver) list_for_each(entry, &acpi_pci_roots) { struct acpi_pci_root *root; root = list_entry(entry, struct acpi_pci_root, node); - driver->remove(root->device->handle); + driver->remove(root->handle); } } @@ -160,17 +160,18 @@ static int acpi_pci_root_add(struct acpi_device *device) unsigned long value = 0; acpi_handle handle = NULL; + ACPI_FUNCTION_TRACE("acpi_pci_root_add"); if (!device) - return -EINVAL; + return_VALUE(-EINVAL); root = kmalloc(sizeof(struct acpi_pci_root), GFP_KERNEL); if (!root) - return -ENOMEM; + return_VALUE(-ENOMEM); memset(root, 0, sizeof(struct acpi_pci_root)); INIT_LIST_HEAD(&root->node); - root->device = device; + root->handle = device->handle; strcpy(acpi_device_name(device), ACPI_PCI_ROOT_DEVICE_NAME); strcpy(acpi_device_class(device), ACPI_PCI_ROOT_CLASS); acpi_driver_data(device) = root; @@ -185,7 +186,7 @@ static int acpi_pci_root_add(struct acpi_device *device) * ------- * Obtained via _SEG, if exists, otherwise assumed to be zero (0). */ - status = acpi_evaluate_integer(device->handle, METHOD_NAME__SEG, NULL, + status = acpi_evaluate_integer(root->handle, METHOD_NAME__SEG, NULL, &value); switch (status) { case AE_OK: @@ -197,7 +198,7 @@ static int acpi_pci_root_add(struct acpi_device *device) root->id.segment = 0; break; default: - ACPI_EXCEPTION((AE_INFO, status, "Evaluating _SEG")); + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _SEG\n")); result = -ENODEV; goto end; } @@ -207,7 +208,7 @@ static int acpi_pci_root_add(struct acpi_device *device) * --- * Obtained via _BBN, if exists, otherwise assumed to be zero (0). */ - status = acpi_evaluate_integer(device->handle, METHOD_NAME__BBN, NULL, + status = acpi_evaluate_integer(root->handle, METHOD_NAME__BBN, NULL, &value); switch (status) { case AE_OK: @@ -218,7 +219,7 @@ static int acpi_pci_root_add(struct acpi_device *device) root->id.bus = 0; break; default: - ACPI_EXCEPTION((AE_INFO, status, "Evaluating _BBN")); + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _BBN\n")); result = -ENODEV; goto end; } @@ -230,11 +231,10 @@ static int acpi_pci_root_add(struct acpi_device *device) int bus = 0; acpi_status status; - printk(KERN_ERR PREFIX - "Wrong _BBN value, reboot" - " and use option 'pci=noacpi'\n"); + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, + "Wrong _BBN value, please reboot and using option 'pci=noacpi'\n")); - status = try_get_root_bridge_busnr(device->handle, &bus); + status = try_get_root_bridge_busnr(root->handle, &bus); if (ACPI_FAILURE(status)) break; if (bus != root->id.bus) { @@ -273,9 +273,9 @@ static int acpi_pci_root_add(struct acpi_device *device) */ root->bus = pci_acpi_scan_root(device, root->id.segment, root->id.bus); if (!root->bus) { - printk(KERN_ERR PREFIX - "Bus %04x:%02x not present in PCI namespace\n", - root->id.segment, root->id.bus); + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, + "Bus %04x:%02x not present in PCI namespace\n", + root->id.segment, root->id.bus)); result = -ENODEV; goto end; } @@ -294,9 +294,9 @@ static int acpi_pci_root_add(struct acpi_device *device) * ----------------- * Evaluate and parse _PRT, if exists. */ - status = acpi_get_handle(device->handle, METHOD_NAME__PRT, &handle); + status = acpi_get_handle(root->handle, METHOD_NAME__PRT, &handle); if (ACPI_SUCCESS(status)) - result = acpi_pci_irq_add_prt(device->handle, root->id.segment, + result = acpi_pci_irq_add_prt(root->handle, root->id.segment, root->id.bus); end: @@ -306,43 +306,46 @@ static int acpi_pci_root_add(struct acpi_device *device) kfree(root); } - return result; + return_VALUE(result); } static int acpi_pci_root_start(struct acpi_device *device) { struct acpi_pci_root *root; + ACPI_FUNCTION_TRACE("acpi_pci_root_start"); list_for_each_entry(root, &acpi_pci_roots, node) { - if (root->device == device) { + if (root->handle == device->handle) { pci_bus_add_devices(root->bus); - return 0; + return_VALUE(0); } } - return -ENODEV; + return_VALUE(-ENODEV); } static int acpi_pci_root_remove(struct acpi_device *device, int type) { struct acpi_pci_root *root = NULL; + ACPI_FUNCTION_TRACE("acpi_pci_root_remove"); if (!device || !acpi_driver_data(device)) - return -EINVAL; + return_VALUE(-EINVAL); root = (struct acpi_pci_root *)acpi_driver_data(device); kfree(root); - return 0; + return_VALUE(0); } static int __init acpi_pci_root_init(void) { + ACPI_FUNCTION_TRACE("acpi_pci_root_init"); if (acpi_pci_disabled) - return 0; + return_VALUE(0); /* DEBUG: acpi_dbg_layer = ACPI_PCI_COMPONENT; @@ -350,9 +353,9 @@ static int __init acpi_pci_root_init(void) */ if (acpi_bus_register_driver(&acpi_pci_root_driver) < 0) - return -ENODEV; + return_VALUE(-ENODEV); - return 0; + return_VALUE(0); } subsys_initcall(acpi_pci_root_init);