patch-2.4.0-test6 linux/drivers/char/hp600_keyb.c
Next file: linux/drivers/char/joystick/Makefile
Previous file: linux/drivers/char/ftape/lowlevel/ftape-buffer.c
Back to the patch index
Back to the overall index
- Lines: 72
- Date:
Wed Aug 9 13:59:04 2000
- Orig file:
v2.4.0-test5/linux/drivers/char/hp600_keyb.c
- Orig date:
Thu Jul 27 17:38:00 2000
diff -u --recursive --new-file v2.4.0-test5/linux/drivers/char/hp600_keyb.c linux/drivers/char/hp600_keyb.c
@@ -5,7 +5,9 @@
*/
#include <linux/kernel.h>
+#include <linux/sched.h>
#include <linux/init.h>
+#include <asm/delay.h>
#include <asm/io.h>
#include "scan_keyb.h"
@@ -23,7 +25,7 @@
0x00, 0x00, 0x00, 0x2c, 0x00, 0x1c, 0x28, 0x35,
0x31, 0x30, 0x32, 0x33, 0x34, 0x2f, 0x2e, 0x2d,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x50,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x50,
0x7b, 0x38, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -46,25 +48,35 @@
};
+static const unsigned char hp690_switch[]= {
+ 0xfd, 0xff,
+ 0xdf, 0xff,
+ 0x7f, 0xff,
+ 0xff, 0xfe,
+ 0xff, 0xfd,
+ 0xff, 0xf7,
+ 0xff, 0xbf,
+ 0xff, 0x7f,
+};
+
+
static void hp690_japanese_scan_kbd(unsigned char *s)
{
- ctrl_outb(0xfd, PDDR); ctrl_outb(0xff, PEDR);
- *s++=ctrl_inb(PCDR); *s++=ctrl_inb(PFDR);
- ctrl_outb(0xdf, PDDR); ctrl_outb(0xff, PEDR);
- *s++=ctrl_inb(PCDR); *s++=ctrl_inb(PFDR);
- ctrl_outb(0x7f, PDDR); ctrl_outb(0xff, PEDR);
- *s++=ctrl_inb(PCDR); *s++=ctrl_inb(PFDR);
- ctrl_outb(0xff, PDDR); ctrl_outb(0xfe, PEDR);
- *s++=ctrl_inb(PCDR); *s++=ctrl_inb(PFDR);
- ctrl_outb(0xff, PDDR); ctrl_outb(0xfd, PEDR);
- *s++=ctrl_inb(PCDR); *s++=ctrl_inb(PFDR);
- ctrl_outb(0xff, PDDR); ctrl_outb(0xf7, PEDR);
- *s++=ctrl_inb(PCDR); *s++=ctrl_inb(PFDR);
- ctrl_outb(0xff, PDDR); ctrl_outb(0xbf, PEDR);
- *s++=ctrl_inb(PCDR); *s++=ctrl_inb(PFDR);
- ctrl_outb(0xff, PDDR); ctrl_outb(0x7f, PEDR);
- *s++=ctrl_inb(PCDR); *s++=ctrl_inb(PFDR);
- *s++=ctrl_inb(PGDR); *s++=ctrl_inb(PHDR);
+ int i;
+ unsigned const char *t=hp690_switch;
+
+ for(i=0; i<9; i++) {
+ ctrl_outb(*t++, PDDR);
+ ctrl_outb(*t++, PEDR);
+ *s++=ctrl_inb(PCDR);
+ *s++=ctrl_inb(PFDR);
+ }
+
+ ctrl_outb(0xff, PDDR);
+ ctrl_outb(0xff, PEDR);
+
+ *s++=ctrl_inb(PGDR);
+ *s++=ctrl_inb(PHDR);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)