2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
6 * Routines for standard PC style keyboards accessible via I/O ports.
8 * Copyright (C) 1998, 1999 by Ralf Baechle
10 #include <linux/config.h>
11 #include <linux/ioport.h>
12 #include <linux/sched.h>
13 #include <linux/pc_keyb.h>
14 #include <asm/keyboard.h>
17 #define KEYBOARD_IRQ 1
20 static void std_kbd_request_region(void)
22 #ifdef CONFIG_MIPS_ITE8172
23 request_region(0x14000060, 16, "keyboard");
25 request_region(0x60, 16, "keyboard");
29 static int std_kbd_request_irq(void (*handler)(int, void *, struct pt_regs *))
31 return request_irq(KEYBOARD_IRQ, handler, 0, "keyboard", NULL);
34 static int std_aux_request_irq(void (*handler)(int, void *, struct pt_regs *))
36 return request_irq(AUX_IRQ, handler, 0, "PS/2 Mouse", NULL);
39 static void std_aux_free_irq(void)
41 free_irq(AUX_IRQ, NULL);
44 static unsigned char std_kbd_read_input(void)
46 return inb(KBD_DATA_REG);
49 static void std_kbd_write_output(unsigned char val)
54 status = inb(KBD_CNTL_REG);
55 } while (status & KBD_STAT_IBF);
56 outb(val, KBD_DATA_REG);
59 static void std_kbd_write_command(unsigned char val)
64 status = inb(KBD_CNTL_REG);
65 } while (status & KBD_STAT_IBF);
66 outb(val, KBD_CNTL_REG);
69 static unsigned char std_kbd_read_status(void)
71 return inb(KBD_STATUS_REG);
74 struct kbd_ops std_kbd_ops = {
75 std_kbd_request_region,
83 std_kbd_write_command,