Remove the resume and shutdown of i8259A from the sysdev_class to the syscore_ops since these members had removed from the structure sysdev_class. Signed-off-by: Pengfei Zhang <zoppof.zhang@xxxxxxxxx> --- arch/mips/kernel/i8259.c | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-) diff --git a/arch/mips/kernel/i8259.c b/arch/mips/kernel/i8259.c index c018696..a74a8ea 100644 --- a/arch/mips/kernel/i8259.c +++ b/arch/mips/kernel/i8259.c @@ -16,6 +16,7 @@ #include <linux/spinlock.h> #include <linux/sysdev.h> #include <linux/irq.h> +#include <linux/syscore_ops.h> #include <asm/i8259.h> #include <asm/io.h> @@ -215,14 +216,13 @@ spurious_8259A_irq: } } -static int i8259A_resume(struct sys_device *dev) +static void i8259A_resume(void) { if (i8259A_auto_eoi >= 0) init_8259A(i8259A_auto_eoi); - return 0; } -static int i8259A_shutdown(struct sys_device *dev) +static void i8259A_shutdown(void) { /* Put the i8259A into a quiescent state that * the kernel initialization code can get it @@ -232,15 +232,17 @@ static int i8259A_shutdown(struct sys_device *dev) outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-1 */ } - return 0; } -static struct sysdev_class i8259_sysdev_class = { - .name = "i8259", +static struct syscore_ops i8259_syscore_ops = { .resume = i8259A_resume, .shutdown = i8259A_shutdown, }; +static struct sysdev_class i8259_sysdev_class = { + .name = "i8259", +}; + static struct sys_device device_i8259A = { .id = 0, .cls = &i8259_sysdev_class, @@ -248,7 +250,11 @@ static struct sys_device device_i8259A = { static int __init i8259A_init_sysfs(void) { - int error = sysdev_class_register(&i8259_sysdev_class); + int error; + + register_syscore_ops(&i8259_syscore_ops); + + error = sysdev_class_register(&i8259_sysdev_class); if (!error) error = sysdev_register(&device_i8259A); return error; -- 1.7.4.1