]> git.karo-electronics.de Git - linux-beck.git/blobdiff - drivers/input/serio/hp_sdc.c
Input: HIL - various fixes for HIL drivers
[linux-beck.git] / drivers / input / serio / hp_sdc.c
index 9907ad3bea23252547a6a26c6cfd4d4dafae1269..353a8a18948b79a75032aaf59d48f776599987b8 100644 (file)
@@ -62,7 +62,6 @@
  */
 
 #include <linux/hp_sdc.h>
-#include <linux/sched.h>
 #include <linux/errno.h>
 #include <linux/init.h>
 #include <linux/module.h>
@@ -749,7 +748,7 @@ void hp_sdc_kicker (unsigned long data) {
 
 #if defined(__hppa__)
 
-static struct parisc_device_id hp_sdc_tbl[] = {
+static const struct parisc_device_id hp_sdc_tbl[] = {
        {
                .hw_type =      HPHW_FIO, 
                .hversion_rev = HVERSION_REV_ANY_ID,
@@ -818,12 +817,12 @@ static int __init hp_sdc_init(void)
 #endif 
 
        errstr = "IRQ not available for";
-        if(request_irq(hp_sdc.irq, &hp_sdc_isr, 0, "HP SDC",
-                      (void *) hp_sdc.base_io)) goto err1;
+       if (request_irq(hp_sdc.irq, &hp_sdc_isr, IRQF_SHARED|IRQF_SAMPLE_RANDOM,
+               "HP SDC", &hp_sdc)) goto err1;
 
        errstr = "NMI not available for";
-       if (request_irq(hp_sdc.nmi, &hp_sdc_nmisr, 0, "HP SDC NMI", 
-                       (void *) hp_sdc.base_io)) goto err2;
+       if (request_irq(hp_sdc.nmi, &hp_sdc_nmisr, IRQF_SHARED,
+               "HP SDC NMI", &hp_sdc)) goto err2;
 
        printk(KERN_INFO PREFIX "HP SDC at 0x%p, IRQ %d (NMI IRQ %d)\n", 
               (void *)hp_sdc.base_io, hp_sdc.irq, hp_sdc.nmi);
@@ -855,7 +854,7 @@ static int __init hp_sdc_init(void)
        hp_sdc.dev_err = 0;
        return 0;
  err2:
-       free_irq(hp_sdc.irq, NULL);
+       free_irq(hp_sdc.irq, &hp_sdc);
  err1:
        release_region(hp_sdc.data_io, 2);
  err0:
@@ -899,8 +898,8 @@ static void hp_sdc_exit(void)
        /* Wait until we know this has been processed by the i8042 */
        hp_sdc_spin_ibf();
 
-       free_irq(hp_sdc.nmi, NULL);
-       free_irq(hp_sdc.irq, NULL);
+       free_irq(hp_sdc.nmi, &hp_sdc);
+       free_irq(hp_sdc.irq, &hp_sdc);
        write_unlock_irq(&hp_sdc.lock);
 
        del_timer(&hp_sdc.kicker);