summaryrefslogtreecommitdiffstats
path: root/drivers/sbus/char/pcikbd.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-02-23 00:40:54 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-02-23 00:40:54 +0000
commit529c593ece216e4aaffd36bd940cb94f1fa63129 (patch)
tree78f1c0b805f5656aa7b0417a043c5346f700a2cf /drivers/sbus/char/pcikbd.c
parent0bd079751d25808d1972baee5c4eaa1db2227257 (diff)
Merge with 2.3.43. I did ignore all modifications to the qlogicisp.c
driver due to the Origin A64 hacks.
Diffstat (limited to 'drivers/sbus/char/pcikbd.c')
-rw-r--r--drivers/sbus/char/pcikbd.c40
1 files changed, 16 insertions, 24 deletions
diff --git a/drivers/sbus/char/pcikbd.c b/drivers/sbus/char/pcikbd.c
index 1c5846ade..97ebda430 100644
--- a/drivers/sbus/char/pcikbd.c
+++ b/drivers/sbus/char/pcikbd.c
@@ -1,4 +1,4 @@
-/* $Id: pcikbd.c,v 1.41 2000/01/08 07:01:20 davem Exp $
+/* $Id: pcikbd.c,v 1.43 2000/02/09 22:33:25 davem Exp $
* pcikbd.c: Ultra/AX PC keyboard support.
*
* Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be)
@@ -21,6 +21,7 @@
#include <linux/random.h>
#include <linux/miscdevice.h>
#include <linux/kbd_ll.h>
+#include <linux/kbd_kern.h>
#include <linux/delay.h>
#include <linux/init.h>
@@ -325,7 +326,7 @@ pcikbd_interrupt(int irq, void *dev_id, struct pt_regs *regs)
handle_scancode(scancode, !(scancode & 0x80));
status = pcikbd_inb(pcikbd_iobase + KBD_STATUS_REG);
} while(status & KBD_STAT_OBF);
- mark_bh(KEYBOARD_BH);
+ tasklet_schedule(&keyboard_tasklet);
}
static int send_data(unsigned char data)
@@ -713,12 +714,13 @@ static DECLARE_MUTEX(aux_sema4);
static inline void aux_start_atomic(void)
{
down(&aux_sema4);
- disable_bh(KEYBOARD_BH);
+ tasklet_disable_nosync(&keyboard_tasklet);
+ tasklet_unlock_wait(&keyboard_tasklet);
}
static inline void aux_end_atomic(void)
{
- enable_bh(KEYBOARD_BH);
+ tasklet_enable(&keyboard_tasklet);
up(&aux_sema4);
}
@@ -889,18 +891,12 @@ static unsigned int aux_poll(struct file *file, poll_table * wait)
}
struct file_operations psaux_fops = {
- NULL, /* seek */
- aux_read,
- aux_write,
- NULL, /* readdir */
- aux_poll,
- NULL, /* ioctl */
- NULL, /* mmap */
- aux_open,
- NULL, /* flush */
- aux_release,
- NULL,
- aux_fasync,
+ read: aux_read,
+ write: aux_write,
+ poll: aux_poll,
+ open: aux_open,
+ release: aux_release,
+ fasync: aux_fasync,
};
static int aux_no_open(struct inode *inode, struct file *file)
@@ -909,14 +905,7 @@ static int aux_no_open(struct inode *inode, struct file *file)
}
struct file_operations psaux_no_fops = {
- NULL, /* seek */
- NULL,
- NULL,
- NULL, /* readdir */
- NULL,
- NULL, /* ioctl */
- NULL, /* mmap */
- aux_no_open,
+ open: aux_no_open,
};
static struct miscdevice psaux_mouse = {
@@ -1035,6 +1024,9 @@ int __init ps2kbd_probe(void)
goto found;
}
#endif
+ if (!pci_present())
+ goto do_enodev;
+
/*
* Get the nodes for keyboard and mouse from aliases on normal systems.
*/