[kernel] r5811 - in dists/sid/linux-2.6/debian: . patches patches/series

Christian T. Steigies cts at costa.debian.org
Fri Feb 10 14:51:38 UTC 2006


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 <cts at debian.org>  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 majordomo at vger.kernel.org
+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



More information about the Kernel-svn-changes mailing list