|
@@ -53,23 +53,19 @@ ACPI_MODULE_NAME("pci_link");
|
|
|
#define ACPI_PCI_LINK_FILE_STATUS "state"
|
|
|
#define ACPI_PCI_LINK_MAX_POSSIBLE 16
|
|
|
|
|
|
-static int acpi_pci_link_add(struct acpi_device *device);
|
|
|
-static int acpi_pci_link_remove(struct acpi_device *device);
|
|
|
+static int acpi_pci_link_add(struct acpi_device *device,
|
|
|
+ const struct acpi_device_id *not_used);
|
|
|
+static void acpi_pci_link_remove(struct acpi_device *device);
|
|
|
|
|
|
static const struct acpi_device_id link_device_ids[] = {
|
|
|
{"PNP0C0F", 0},
|
|
|
{"", 0},
|
|
|
};
|
|
|
-MODULE_DEVICE_TABLE(acpi, link_device_ids);
|
|
|
|
|
|
-static struct acpi_driver acpi_pci_link_driver = {
|
|
|
- .name = "pci_link",
|
|
|
- .class = ACPI_PCI_LINK_CLASS,
|
|
|
+static struct acpi_scan_handler pci_link_handler = {
|
|
|
.ids = link_device_ids,
|
|
|
- .ops = {
|
|
|
- .add = acpi_pci_link_add,
|
|
|
- .remove = acpi_pci_link_remove,
|
|
|
- },
|
|
|
+ .attach = acpi_pci_link_add,
|
|
|
+ .detach = acpi_pci_link_remove,
|
|
|
};
|
|
|
|
|
|
/*
|
|
@@ -692,7 +688,8 @@ int acpi_pci_link_free_irq(acpi_handle handle)
|
|
|
Driver Interface
|
|
|
-------------------------------------------------------------------------- */
|
|
|
|
|
|
-static int acpi_pci_link_add(struct acpi_device *device)
|
|
|
+static int acpi_pci_link_add(struct acpi_device *device,
|
|
|
+ const struct acpi_device_id *not_used)
|
|
|
{
|
|
|
int result;
|
|
|
struct acpi_pci_link *link;
|
|
@@ -746,7 +743,7 @@ static int acpi_pci_link_add(struct acpi_device *device)
|
|
|
if (result)
|
|
|
kfree(link);
|
|
|
|
|
|
- return result;
|
|
|
+ return result < 0 ? result : 1;
|
|
|
}
|
|
|
|
|
|
static int acpi_pci_link_resume(struct acpi_pci_link *link)
|
|
@@ -766,7 +763,7 @@ static void irqrouter_resume(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static int acpi_pci_link_remove(struct acpi_device *device)
|
|
|
+static void acpi_pci_link_remove(struct acpi_device *device)
|
|
|
{
|
|
|
struct acpi_pci_link *link;
|
|
|
|
|
@@ -777,7 +774,6 @@ static int acpi_pci_link_remove(struct acpi_device *device)
|
|
|
mutex_unlock(&acpi_link_lock);
|
|
|
|
|
|
kfree(link);
|
|
|
- return 0;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -874,20 +870,10 @@ static struct syscore_ops irqrouter_syscore_ops = {
|
|
|
.resume = irqrouter_resume,
|
|
|
};
|
|
|
|
|
|
-static int __init irqrouter_init_ops(void)
|
|
|
-{
|
|
|
- if (!acpi_disabled && !acpi_noirq)
|
|
|
- register_syscore_ops(&irqrouter_syscore_ops);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-device_initcall(irqrouter_init_ops);
|
|
|
-
|
|
|
-static int __init acpi_pci_link_init(void)
|
|
|
+void __init acpi_pci_link_init(void)
|
|
|
{
|
|
|
if (acpi_noirq)
|
|
|
- return 0;
|
|
|
+ return;
|
|
|
|
|
|
if (acpi_irq_balance == -1) {
|
|
|
/* no command line switch: enable balancing in IOAPIC mode */
|
|
@@ -896,11 +882,6 @@ static int __init acpi_pci_link_init(void)
|
|
|
else
|
|
|
acpi_irq_balance = 0;
|
|
|
}
|
|
|
-
|
|
|
- if (acpi_bus_register_driver(&acpi_pci_link_driver) < 0)
|
|
|
- return -ENODEV;
|
|
|
-
|
|
|
- return 0;
|
|
|
+ register_syscore_ops(&irqrouter_syscore_ops);
|
|
|
+ acpi_scan_add_handler(&pci_link_handler);
|
|
|
}
|
|
|
-
|
|
|
-subsys_initcall(acpi_pci_link_init);
|