1 diff -Nur c3000_pre/linux/drivers/char/Config.in c3000_work/linux/drivers/char/Config.in
2 --- c3000_pre/linux/drivers/char/Config.in 2004-12-06 17:24:32.000000000 +0900
3 +++ c3000_work/linux/drivers/char/Config.in 2004-12-06 17:25:51.000000000 +0900
5 bool ' SL-series Bluetooth support' CONFIG_BLUETOOTH_SL
8 +bool 'Use Keyboard device file (EXPERIMENTAL)' CONFIG_KBD_DEV_FILE
9 if [ "$CONFIG_ARCH_DBMX1" = "y" ]; then
10 tristate 'DragonBall MX1 serial port support' CONFIG_SERIAL_DBMX1
11 if [ "$CONFIG_SERIAL_DBMX1" = "y" ]; then
12 diff -Nur c3000_pre/linux/drivers/char/keyboard.c c3000_work/linux/drivers/char/keyboard.c
13 --- c3000_pre/linux/drivers/char/keyboard.c 2004-08-21 09:48:25.000000000 +0900
14 +++ c3000_work/linux/drivers/char/keyboard.c 2004-12-06 17:32:08.000000000 +0900
17 #include <asm/keyboard.h>
18 #include <asm/bitops.h>
19 +#include <asm/uaccess.h>
21 #include <linux/kbd_kern.h>
22 #include <linux/kbd_diacr.h>
25 pm_callback pm_kbd_request_override = NULL;
27 +#if defined(CONFIG_KBD_DEV_FILE)
28 +#define KBD_MAJOR 241
29 +struct fasync_struct *fasync_kbd;
31 +static int kbd_open(struct inode *, struct file *);
32 +static int kbd_release(struct inode *, struct file *);
33 +static int kbd_fasync(int fd, struct file *filp, int on);
34 +static ssize_t kbd_read(struct file *, char *, size_t, loff_t *);
35 +static ssize_t kbd_write(struct file *, const char *, size_t, loff_t *);
37 +struct file_operations kbd_fops = {
39 + release: kbd_release,
46 int __init kbd_init(void)
49 struct kbd_struct kbd0;
50 extern struct tty_driver console_driver;
52 +#if defined(CONFIG_KBD_DEV_FILE)
53 + if ( register_chrdev(KBD_MAJOR,"kbd",&kbd_fops) )
54 + printk("unable to get major %d for keyboard\n", KBD_MAJOR);
56 kbd0.ledflagstate = kbd0.default_ledflagstate = KBD_DEFLEDS;
57 kbd0.ledmode = LED_SHOW_FLAGS;
58 kbd0.lockstate = KBD_DEFLOCK;
64 +#if defined(CONFIG_KBD_DEV_FILE)
65 +static int kbd_open(struct inode *inode, struct file *file)
67 + kdev_t dev = inode->i_rdev;
73 +static int kbd_release(struct inode *inode, struct file *file)
75 + kbd_fasync(-1, file, 0);
79 +static int kbd_fasync(int fd, struct file *filp, int on)
83 + retval = fasync_helper(fd, filp, on, &fasync_kbd);
89 +static ssize_t kbd_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
91 +// printk("kbd read\n");
95 +static ssize_t kbd_write(struct file *file, const char *buffer, size_t count, loff_t *ppos)
99 + int kbd_scancode,kbd_down;
103 + if(len>count) len=count;
104 + copy_from_user(tmp,buffer,len);
107 + if (sscanf(tmp,"%d %d",&kbd_scancode, &kbd_down) == 2) {
108 +// printk("kbd write %02x %02x\n",kbd_scancode,kbd_down);
109 + handle_scancode(kbd_scancode,kbd_down);
112 +// printk("kbd write\n");