summaryrefslogtreecommitdiffstats
path: root/uClinux-2.4.20-uc1/drivers/char/keyboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'uClinux-2.4.20-uc1/drivers/char/keyboard.c')
-rw-r--r--uClinux-2.4.20-uc1/drivers/char/keyboard.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/uClinux-2.4.20-uc1/drivers/char/keyboard.c b/uClinux-2.4.20-uc1/drivers/char/keyboard.c
index ac8795d..09242a3 100644
--- a/uClinux-2.4.20-uc1/drivers/char/keyboard.c
+++ b/uClinux-2.4.20-uc1/drivers/char/keyboard.c
@@ -21,6 +21,7 @@
*
* 27-05-97: Added support for the Magic SysRq Key (Martin Mares)
* 30-07-98: Dead keys redone, aeb@cwi.nl.
+ * 01-09-05: Winbond modifications by PC34 MCLi
*/
#include <linux/config.h>
@@ -191,6 +192,12 @@ int getkeycode(unsigned int scancode)
return kbd_getkeycode(scancode);
}
+#ifdef CONFIG_BOARD_W90N745
+extern unsigned char IsExt;
+extern unsigned char gvLEDCode;
+extern struct tty_struct *key_tty;
+#endif
+
void handle_scancode(unsigned char scancode, int down)
{
unsigned char keycode;
@@ -200,7 +207,12 @@ void handle_scancode(unsigned char scancode, int down)
pm_access(pm_kbd);
add_keyboard_randomness(scancode | up_flag);
+#ifndef CONFIG_BOARD_W90N745
tty = ttytab? ttytab[fg_console]: NULL;
+#else
+ tty = key_tty;
+#endif
+
if (tty && (!tty->driver_data)) {
/*
* We touch the tty structure via the ttytab array
@@ -282,7 +294,14 @@ void handle_scancode(unsigned char scancode, int down)
ushort *key_map = key_maps[shift_final];
if (key_map != NULL) {
+#ifndef CONFIG_BOARD_W90N745
keysym = key_map[keycode];
+#else
+ if(shift_state && !IsExt && (keycode==0x4A))
+ keysym=0xF03F;
+ else
+ keysym = key_map[keycode];
+#endif
type = KTYP(keysym);
if (type >= 0xf0) {
@@ -297,7 +316,13 @@ void handle_scancode(unsigned char scancode, int down)
keysym = key_map[keycode];
}
}
+#ifndef CONFIG_BOARD_W90N745
(*key_handler[type])(keysym & 0xff, up_flag);
+#else
+ if(keysym!=0xF303)
+ (*key_handler[type])(keysym & 0xff, up_flag);
+#endif
+
if (type != KT_SLOCK)
kbd->slockstate = 0;
} else {
@@ -907,11 +932,19 @@ static void kbd_bh(unsigned long dummy)
{
unsigned char leds = getleds();
+#ifndef CONFIG_BOARD_W90N745
if (leds != ledstate) {
ledstate = leds;
kbd_leds(leds);
if (kbd_ledfunc) kbd_ledfunc(leds);
}
+#else
+ if (gvLEDCode != ledstate) {
+ ledstate = gvLEDCode;
+ kbd_leds(gvLEDCode);
+ if (kbd_ledfunc) kbd_ledfunc(gvLEDCode);
+ }
+#endif
}
EXPORT_SYMBOL(keyboard_tasklet);