]> 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 a10348bb25e983e4a69cc16ed648e4f4bc904c90..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>
@@ -202,7 +201,7 @@ static void hp_sdc_take (int irq, void *dev_id, uint8_t status, uint8_t data) {
        }
 }
 
-static irqreturn_t hp_sdc_isr(int irq, void *dev_id, struct pt_regs * regs) {
+static irqreturn_t hp_sdc_isr(int irq, void *dev_id) {
        uint8_t status, data;
 
        status = hp_sdc_status_in8();
@@ -253,7 +252,7 @@ static irqreturn_t hp_sdc_isr(int irq, void *dev_id, struct pt_regs * regs) {
 }
 
 
-static irqreturn_t hp_sdc_nmisr(int irq, void *dev_id, struct pt_regs * regs) {
+static irqreturn_t hp_sdc_nmisr(int irq, void *dev_id) {
        int status;
        
        status = hp_sdc_status_in8();
@@ -310,7 +309,7 @@ static void hp_sdc_tasklet(unsigned long foo) {
                                 * in tasklet/bh context.
                                 */
                                if (curr->act.irqhook) 
-                                       curr->act.irqhook(0, 0, 0, 0);
+                                       curr->act.irqhook(0, NULL, 0, 0);
                        }
                        curr->actidx = curr->idx;
                        curr->idx++;
@@ -525,7 +524,7 @@ actdone:
                up(curr->act.semaphore);
        }
        else if (act & HP_SDC_ACT_CALLBACK) {
-               curr->act.irqhook(0,0,0,0);
+               curr->act.irqhook(0,NULL,0,0);
        }
        if (curr->idx >= curr->endidx) { /* This transaction is over. */
                if (act & HP_SDC_ACT_DEALLOC) kfree(curr);
@@ -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);