]> git.hungrycats.org Git - linux/commitdiff
Add a wrapper function for serio ->interrupt callback.
authorVojtech Pavlik <vojtech@twilight.ucw.cz>
Thu, 11 Jul 2002 00:04:11 +0000 (02:04 +0200)
committerVojtech Pavlik <vojtech@twilight.ucw.cz>
Thu, 11 Jul 2002 00:04:11 +0000 (02:04 +0200)
This cleans up things somewhat and also will allow better
hotplugging detection in the future.

drivers/input/serio/ct82c710.c
drivers/input/serio/i8042.c
drivers/input/serio/parkbd.c
drivers/input/serio/rpckbd.c
drivers/input/serio/serport.c
include/linux/serio.h

index 8202a64606bb17e22f2dfba3c4637b724f32b2ae..7bb79a2ee2ea8a46f8099e3db25f231a2e58002a 100644 (file)
@@ -156,8 +156,7 @@ static struct serio ct82c710_port =
 
 static void ct82c710_interrupt(int cpl, void *dev_id, struct pt_regs * regs)
 {
-       if (ct82c710_port.dev)
-               ct82c710_port.dev->interrupt(&ct82c710_port, inb(ct82c710_data), 0);
+       serio_interrupt(&ct82c710_port, inb(ct82c710_data), 0);
 }
 
 /*
index 5e222b2f2e31f4512b7dedc183ca2e4873edcaa7..a508b6a02619fd67db95970e53104193476d669a 100644 (file)
@@ -387,14 +387,13 @@ static void i8042_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 #endif
 
                if (i8042_aux_values.exists && (str & I8042_STR_AUXDATA)) {
-                       if (i8042_aux_port.dev)
-                               i8042_aux_port.dev->interrupt(&i8042_aux_port, data, 0);
+                       serio_interrupt(&i8042_aux_port, data, 0);
                } else {
-                       if (i8042_kbd_values.exists && i8042_kbd_port.dev) {
+                       if (i8042_kbd_values.exists) {
                                if (!i8042_direct) {
                                        if (data > 0x7f) {
                                                if (test_and_clear_bit(data & 0x7f, i8042_unxlate_seen)) {
-                                                       i8042_kbd_port.dev->interrupt(&i8042_kbd_port, 0xf0, 0);        
+                                                       serio_interrupt(&i8042_kbd_port, 0xf0, 0);      
                                                        data = i8042_unxlate_table[data & 0x7f];
                                                }
                                        } else {
@@ -402,7 +401,7 @@ static void i8042_interrupt(int irq, void *dev_id, struct pt_regs *regs)
                                                data = i8042_unxlate_table[data];
                                        }
                                }
-                               i8042_kbd_port.dev->interrupt(&i8042_kbd_port, data, 0);
+                               serio_interrupt(&i8042_kbd_port, data, 0);
                        }
                }
        }
index 18e8c51256f444c52d481d4ae89905b3d75981a4..d957f5a056e061853326a4504ecd269b395d37ad 100644 (file)
@@ -135,10 +135,8 @@ static void parkbd_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 
                parkbd_buffer |= (parkbd_readlines() >> 1) << parkbd_counter++;
 
-               if (parkbd_counter == parkbd_mode + 10) {
-                       if (parkbd_port.dev)
-                               parkbd_port.dev->interrupt(&parkbd_port, (parkbd_buffer >> (2 - parkbd_mode)) & 0xff, 0);
-               }
+               if (parkbd_counter == parkbd_mode + 10)
+                       serio_interrupt(&parkbd_port, (parkbd_buffer >> (2 - parkbd_mode)) & 0xff, 0);
        }
 
        parkbd_last = jiffies;
index a90879b130476e0678948ec89bb27ef9b908e49d..c5a3dc1fc3d4267464dec45bc7ae8ed6bf1fe16e 100644 (file)
@@ -64,8 +64,7 @@ static void rpckbd_rx(int irq, void *dev_id, struct pt_regs *regs)
        kbd_pt_regs = regs;
 
        while (inb(IOMD_KCTRL) & (1 << 5))
-               if (rpckbd_port.dev)
-                                rpckbd_port.dev->interrupt(&rpckbd_port, inb(IOMD_KARTRX), 0);
+               serio_interrupt(&rpckbd_port, inb(IOMD_KARTRX), 0);
 
 }
 
index 9970ca228e0c69bd0f85428ba6de4b2e1662fdd1..4885a822a2701cc48b4fe2c67985309bb4fd5021 100644 (file)
@@ -138,8 +138,7 @@ static void serport_ldisc_receive(struct tty_struct *tty, const unsigned char *c
        struct serport *serport = (struct serport*) tty->disc_data;
        int i;
        for (i = 0; i < count; i++)
-               if (serport->serio.dev)
-                       serport->serio.dev->interrupt(&serport->serio, cp[i], 0);
+               serio_interrupt(&serport->serio, cp[i], 0);
 }
 
 /*
index fd5235309265d0f7ac1dde28fd62d8f249ba87fd..1e9de401018f3f02f08d3c696ec7f037da09aa4a 100644 (file)
@@ -89,9 +89,14 @@ static __inline__ int serio_write(struct serio *serio, unsigned char data)
 
 static __inline__ void serio_dev_write_wakeup(struct serio *serio)
 {
-       if (serio->dev && serio->dev->write_wakeup) {
+       if (serio->dev && serio->dev->write_wakeup)
                serio->dev->write_wakeup(serio);
-       }
+}
+
+static __inline__ void serio_interrupt(struct serio *serio, unsigned char data, unsigned int flags)
+{
+       if (serio->dev && serio->dev->interrupt) 
+               serio->dev->interrupt(serio, data, flags);
 }
 
 #define SERIO_TIMEOUT  1