[kernel] r7691 - in dists/trunk/linux-2.6/debian: .
patches/features patches/series
maximilian attems
maks-guest at alioth.debian.org
Sat Nov 4 13:50:18 UTC 2006
Author: maks-guest
Date: Sat Nov 4 14:50:17 2006
New Revision: 7691
Added:
dists/trunk/linux-2.6/debian/patches/features/input-atkb-supress-too-may-keys.patch
Modified:
dists/trunk/linux-2.6/debian/changelog
dists/trunk/linux-2.6/debian/patches/series/4
Log:
backport kill "too many key pressed" mesage
happens rutinely on my x41
Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog (original)
+++ dists/trunk/linux-2.6/debian/changelog Sat Nov 4 14:50:17 2006
@@ -1,4 +1,4 @@
-linux-2.6 (2.6.18-4) unstable; urgency=low
+linux-2.6 (2.6.18-4) UNRELEASED; urgency=low
[ Norbert Tretkowski ]
* [alpha] Switched to gcc-4.1.
@@ -111,6 +111,7 @@
- NFS: nfs_lookup - don't hash dentry when optimising away the lookup
- uml: make Uml compile on FC6 kernel headers
- Fix potential interrupts during alternative patching
+ * Backport atkbd - supress "too many keys" error message.
[ Sven Luther ]
* [powerpc] Added exception alignement patch from Benjamin Herrenschmidt.
@@ -154,7 +155,7 @@
- bugfix/mips/dec-serial.patch, replaces mips-dec-serial.patch, fix
serial console handling on DECstations.
- -- maximilian attems <maks at sternwelten.at> Sat, 4 Nov 2006 10:49:46 +0100
+ -- maximilian attems <maks at sternwelten.at> Sat, 4 Nov 2006 14:46:21 +0100
linux-2.6 (2.6.18-3) unstable; urgency=low
Added: dists/trunk/linux-2.6/debian/patches/features/input-atkb-supress-too-may-keys.patch
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/patches/features/input-atkb-supress-too-may-keys.patch Sat Nov 4 14:50:17 2006
@@ -0,0 +1,135 @@
+From git-commits-head-owner at vger.kernel.org Tue Oct 17 23:30:30 2006
+From: Linux Kernel Mailing List <linux-kernel at vger.kernel.org>
+To: git-commits-head at vger.kernel.org
+Subject: Input: atkbd - supress "too many keys" error message
+
+commit 86255d9d0bede79140f4912482447963f00818c0
+tree a3d18df86ecd58f3e84168141084b848507a42a3
+parent 817e6ba3623de9cdc66c6aba90eae30b5588ff11
+author Dmitry Torokhov <dtor at insightbb.com> 1160545486 -0400
+committer Dmitry Torokhov <dtor at insightbb.com> 1160545486 -0400
+
+Input: atkbd - supress "too many keys" error message
+
+Many users seems to be annoyed by this warning so kill the message
+and implement a counter exported as a sysfs attribute so we still
+know what is going on. Make atkbd use attribute groups while we are
+at it.
+
+Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
+
+ drivers/input/keyboard/atkbd.c | 54 +++++++++++++++++++++++++++++++----------
+ 1 file changed, 41 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
+index b6ef9ea..cbb9366 100644
+--- a/drivers/input/keyboard/atkbd.c
++++ b/drivers/input/keyboard/atkbd.c
+@@ -221,6 +221,7 @@ struct atkbd {
+ unsigned long xl_bit;
+ unsigned int last;
+ unsigned long time;
++ unsigned long err_count;
+
+ struct work_struct event_work;
+ struct mutex event_mutex;
+@@ -234,11 +235,13 @@ static ssize_t atkbd_attr_set_helper(str
+ #define ATKBD_DEFINE_ATTR(_name) \
+ static ssize_t atkbd_show_##_name(struct atkbd *, char *); \
+ static ssize_t atkbd_set_##_name(struct atkbd *, const char *, size_t); \
+-static ssize_t atkbd_do_show_##_name(struct device *d, struct device_attribute *attr, char *b) \
++static ssize_t atkbd_do_show_##_name(struct device *d, \
++ struct device_attribute *attr, char *b) \
+ { \
+ return atkbd_attr_show_helper(d, b, atkbd_show_##_name); \
+ } \
+-static ssize_t atkbd_do_set_##_name(struct device *d, struct device_attribute *attr, const char *b, size_t s) \
++static ssize_t atkbd_do_set_##_name(struct device *d, \
++ struct device_attribute *attr, const char *b, size_t s) \
+ { \
+ return atkbd_attr_set_helper(d, b, s, atkbd_set_##_name); \
+ } \
+@@ -251,6 +254,32 @@ ATKBD_DEFINE_ATTR(set);
+ ATKBD_DEFINE_ATTR(softrepeat);
+ ATKBD_DEFINE_ATTR(softraw);
+
++#define ATKBD_DEFINE_RO_ATTR(_name) \
++static ssize_t atkbd_show_##_name(struct atkbd *, char *); \
++static ssize_t atkbd_do_show_##_name(struct device *d, \
++ struct device_attribute *attr, char *b) \
++{ \
++ return atkbd_attr_show_helper(d, b, atkbd_show_##_name); \
++} \
++static struct device_attribute atkbd_attr_##_name = \
++ __ATTR(_name, S_IRUGO, atkbd_do_show_##_name, NULL);
++
++ATKBD_DEFINE_RO_ATTR(err_count);
++
++static struct attribute *atkbd_attributes[] = {
++ &atkbd_attr_extra.attr,
++ &atkbd_attr_scroll.attr,
++ &atkbd_attr_set.attr,
++ &atkbd_attr_softrepeat.attr,
++ &atkbd_attr_softraw.attr,
++ &atkbd_attr_err_count.attr,
++ NULL
++};
++
++static struct attribute_group atkbd_attribute_group = {
++ .attrs = atkbd_attributes,
++};
++
+ static const unsigned int xl_table[] = {
+ ATKBD_RET_BAT, ATKBD_RET_ERR, ATKBD_RET_ACK,
+ ATKBD_RET_NAK, ATKBD_RET_HANJA, ATKBD_RET_HANGEUL,
+@@ -396,7 +425,10 @@ #endif
+ add_release_event = 1;
+ break;
+ case ATKBD_RET_ERR:
++ atkbd->err_count++;
++#ifdef ATKBD_DEBUG
+ printk(KERN_DEBUG "atkbd.c: Keyboard on %s reports too many keys pressed.\n", serio->phys);
++#endif
+ goto out;
+ }
+
+@@ -786,12 +818,7 @@ static void atkbd_disconnect(struct seri
+ synchronize_sched(); /* Allow atkbd_interrupt()s to complete. */
+ flush_scheduled_work();
+
+- device_remove_file(&serio->dev, &atkbd_attr_extra);
+- device_remove_file(&serio->dev, &atkbd_attr_scroll);
+- device_remove_file(&serio->dev, &atkbd_attr_set);
+- device_remove_file(&serio->dev, &atkbd_attr_softrepeat);
+- device_remove_file(&serio->dev, &atkbd_attr_softraw);
+-
++ sysfs_remove_group(&serio->dev.kobj, &atkbd_attribute_group);
+ input_unregister_device(atkbd->dev);
+ serio_close(serio);
+ serio_set_drvdata(serio, NULL);
+@@ -961,11 +988,7 @@ static int atkbd_connect(struct serio *s
+ atkbd_set_keycode_table(atkbd);
+ atkbd_set_device_attrs(atkbd);
+
+- device_create_file(&serio->dev, &atkbd_attr_extra);
+- device_create_file(&serio->dev, &atkbd_attr_scroll);
+- device_create_file(&serio->dev, &atkbd_attr_set);
+- device_create_file(&serio->dev, &atkbd_attr_softrepeat);
+- device_create_file(&serio->dev, &atkbd_attr_softraw);
++ sysfs_create_group(&serio->dev.kobj, &atkbd_attribute_group);
+
+ atkbd_enable(atkbd);
+
+@@ -1259,6 +1282,11 @@ static ssize_t atkbd_set_softraw(struct
+ return count;
+ }
+
++static ssize_t atkbd_show_err_count(struct atkbd *atkbd, char *buf)
++{
++ return sprintf(buf, "%lu\n", atkbd->err_count);
++}
++
+
+ static int __init atkbd_init(void)
+ {
+
Modified: dists/trunk/linux-2.6/debian/patches/series/4
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/4 (original)
+++ dists/trunk/linux-2.6/debian/patches/series/4 Sat Nov 4 14:50:17 2006
@@ -45,3 +45,4 @@
+ bugfix/sparc/t1k-cpu-lockup.patch
+ bugfix/2.6.18.2
+ bugfix/arm/iop3xx-mtd-map-fix.patch
++ features/input-atkb-supress-too-may-keys.patch
More information about the Kernel-svn-changes
mailing list