Author: cts
Date: Fri Feb 10 14:51:37 2006
New Revision: 5811

Added:
   dists/sid/linux-2.6/debian/patches/m68k-amikbd.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/6-extra
Log:
amiga keyboard patch


Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog        (original)
+++ dists/sid/linux-2.6/debian/changelog        Fri Feb 10 14:51:37 2006
@@ -35,6 +35,7 @@
   [ Christian T. Steigies ]
   * [m68k] Add fix for m68k/buddha IDE and m68k/mac SCSI driver
   * [m68k] Patch by Peter Krummrich to stop flickering pixels with PicassoII
+  * [m68k] make Amiga keyboard usable again, patch by Roman Zippel
 
  -- Christian T. Steigies <[EMAIL PROTECTED]>  Fri, 10 Feb 2006 12:31:55 +0100
 

Added: dists/sid/linux-2.6/debian/patches/m68k-amikbd.patch
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6/debian/patches/m68k-amikbd.patch        Fri Feb 10 
14:51:37 2006
@@ -0,0 +1,94 @@
+Log message:
+Dump the extra mapping in the amikbd interrupt handler, so old Amiga
+keymaps work again. Amigas need a special keymap anyway, standard
+keymaps are not usable and recreating all keymaps is simply not worth
+the trouble.
+
+Modified files:
+    linux/drivers/input/keyboard:
+       amikbd.c 
+
+
+Index: linux/drivers/input/keyboard/amikbd.c
+Stats: 17 insertions, 6 deletions, 9 modifications
+http://linux-m68k-cvs.ubb.ca/c/cvsweb/linux/drivers/input/keyboard/amikbd%2ec.diff?r1=1.1.1.13&r2=1.12
+========================================================================
+--- linux/drivers/input/keyboard/amikbd.c      14 Jan 2006 23:10:37 -0000      
1.1.1.13
++++ linux/drivers/input/keyboard/amikbd.c      28 Jan 2006 21:27:33 -0000      
1.12
+@@ -36,6 +36,7 @@
+ #include <linux/input.h>
+ #include <linux/delay.h>
+ #include <linux/interrupt.h>
++#include <linux/keyboard.h>
+ 
+ #include <asm/amigaints.h>
+ #include <asm/amigahw.h>
+@@ -45,7 +46,7 @@
+ MODULE_DESCRIPTION("Amiga keyboard driver");
+ MODULE_LICENSE("GPL");
+ 
+-static unsigned char amikbd_keycode[0x78] = {
++static unsigned char amikbd_keycode[0x78] __initdata = {
+       [0]      = KEY_GRAVE,
+       [1]      = KEY_1,
+       [2]      = KEY_2,
+@@ -170,12 +171,9 @@
+       scancode >>= 1;
+ 
+       if (scancode < 0x78) {          /* scancodes < 0x78 are keys */
+-
+-              scancode = amikbd_keycode[scancode];
+-
+               input_regs(amikbd_dev, fp);
+ 
+-              if (scancode == KEY_CAPSLOCK) { /* CapsLock is a toggle switch 
key on Amiga */
++              if (scancode == 98) {   /* CapsLock is a toggle switch key on 
Amiga */
+                       input_report_key(amikbd_dev, scancode, 1);
+                       input_report_key(amikbd_dev, scancode, 0);
+               } else {
+@@ -191,7 +189,7 @@
+ 
+ static int __init amikbd_init(void)
+ {
+-      int i;
++      int i, j;
+ 
+       if (!AMIGAHW_PRESENT(AMI_KEYBOARD))
+               return -EIO;
+@@ -214,14 +212,26 @@
+       amikbd_dev->id.version = 0x0100;
+ 
+       amikbd_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
+-      amikbd_dev->keycode = amikbd_keycode;
+-      amikbd_dev->keycodesize = sizeof(unsigned char);
+-      amikbd_dev->keycodemax = ARRAY_SIZE(amikbd_keycode);
+ 
+       for (i = 0; i < 0x78; i++)
+-              if (amikbd_keycode[i])
+-                      set_bit(amikbd_keycode[i], amikbd_dev->keybit);
++              set_bit(i, amikbd_dev->keybit);
+ 
++      for (i = 0; i < MAX_NR_KEYMAPS; i++) {
++              static u_short temp_map[NR_KEYS] __initdata;
++              if (!key_maps[i])
++                      continue;
++              memset(temp_map, 0, sizeof(temp_map));
++              for (j = 0; j < 0x78; j++) {
++                      if (!amikbd_keycode[j])
++                              continue;
++                      temp_map[j] = key_maps[i][amikbd_keycode[j]];
++              }
++              for (j = 0; j < NR_KEYS; j++) {
++                      if (!temp_map[j])
++                              temp_map[j] = 0xf200;
++              }
++              memcpy(key_maps[i], temp_map, sizeof(temp_map));
++      }
+       ciaa.cra &= ~0x41;       /* serial data in, turn off TA */
+       request_irq(IRQ_AMIGA_CIAA_SP, amikbd_interrupt, 0, "amikbd", 
amikbd_interrupt);
+ 
+-
+To unsubscribe from this list: send the line "unsubscribe 
linux-m68k-cvscommit" in
+the body of a message to [EMAIL PROTECTED]
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+

Modified: dists/sid/linux-2.6/debian/patches/series/6-extra
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/6-extra   (original)
+++ dists/sid/linux-2.6/debian/patches/series/6-extra   Fri Feb 10 14:51:37 2006
@@ -1,3 +1,4 @@
 + m68k-buddha.patch m68k
 + m68k-mac68k_cvs_via_cleanup_and_fix2.patch m68k
 + m68k-cirrusfb.patch m68k
++ m68k-amikbd.patch m68k

_______________________________________________
Kernel-svn-changes mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/kernel-svn-changes

Reply via email to