Skip to content

Commit

Permalink
ACPI: Use syscore_ops instead of sysdev class and sysdev
Browse files Browse the repository at this point in the history
ACPI uses a sysdev class and a sysdev for executing
irqrouter_resume() before turning on interrupts on the boot CPU.
However, since irqrouter_resume() ignores its argument, the entire
mechanism may be replaced with a struct syscore_ops object which
is considerably simpler.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Len Brown <len.brown@intel.com>
  • Loading branch information
Rafael J. Wysocki authored and Len Brown committed Mar 18, 2011
1 parent 4d3fbff commit c3146df
Showing 1 changed file with 8 additions and 22 deletions.
30 changes: 8 additions & 22 deletions drivers/acpi/pci_link.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
* for IRQ management (e.g. start()->_SRS).
*/

#include <linux/sysdev.h>
#include <linux/syscore_ops.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
Expand Down Expand Up @@ -757,14 +757,13 @@ static int acpi_pci_link_resume(struct acpi_pci_link *link)
return 0;
}

static int irqrouter_resume(struct sys_device *dev)
static void irqrouter_resume(void)
{
struct acpi_pci_link *link;

list_for_each_entry(link, &acpi_link_list, list) {
acpi_pci_link_resume(link);
}
return 0;
}

static int acpi_pci_link_remove(struct acpi_device *device, int type)
Expand Down Expand Up @@ -871,32 +870,19 @@ static int __init acpi_irq_balance_set(char *str)

__setup("acpi_irq_balance", acpi_irq_balance_set);

/* FIXME: we will remove this interface after all drivers call pci_disable_device */
static struct sysdev_class irqrouter_sysdev_class = {
.name = "irqrouter",
static struct syscore_ops irqrouter_syscore_ops = {
.resume = irqrouter_resume,
};

static struct sys_device device_irqrouter = {
.id = 0,
.cls = &irqrouter_sysdev_class,
};

static int __init irqrouter_init_sysfs(void)
static int __init irqrouter_init_ops(void)
{
int error;
if (!acpi_disabled && !acpi_noirq)
register_syscore_ops(&irqrouter_syscore_ops);

if (acpi_disabled || acpi_noirq)
return 0;

error = sysdev_class_register(&irqrouter_sysdev_class);
if (!error)
error = sysdev_register(&device_irqrouter);

return error;
return 0;
}

device_initcall(irqrouter_init_sysfs);
device_initcall(irqrouter_init_ops);

static int __init acpi_pci_link_init(void)
{
Expand Down

0 comments on commit c3146df

Please sign in to comment.