lkml.org 
[lkml]   [2007]   [Apr]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] Make ati_remote button repeat sensitivity soft-configurable
Would this be more acceptable?  I haven't compiled or tested yet..but
you can see what I'm trying to do.. make the delay time based instead
of implementation/count based...

Signed-off-by: Karl Pickett <karl.pickett@gmail.com>

--- ./ati_remote.c.kjp 2007-04-04 10:56:20.000000000 -0400
+++ ./ati_remote.c 2007-04-04 11:13:02.000000000 -0400
@@ -120,6 +120,7 @@
* behaviour.
*/
#define FILTER_TIME 60 /* msec */
+#define REPEAT_DELAY 500 /* msec */

static unsigned long channel_mask;
module_param(channel_mask, ulong, 0644);
@@ -133,6 +134,11 @@
module_param(repeat_filter, int, 0644);
MODULE_PARM_DESC(repeat_filter, "Repeat filter time, default = 60 msec");

+static int repeat_delay = REPEAT_DELAY;
+module_param(repeat_delay, int, 0644);
+MODULE_PARM_DESC(repeat_delay, "Delay before sending repeats, "
+ "default = " #REPEAT_DELAY " msec");
+
#define dbginfo(dev, format, arg...) do { if (debug) dev_info(dev ,
format , ## arg); } while (0)
#undef err
#define err(format, arg...) printk(KERN_ERR format , ## arg)
@@ -175,6 +181,7 @@
unsigned long old_jiffies;
unsigned long acc_jiffies; /* handle acceleration */
unsigned int repeat_count;
+ unsigned long first_jiffies;

char name[NAME_BUFSIZE];
char phys[NAME_BUFSIZE];
@@ -501,21 +508,26 @@
}

if (ati_remote_tbl[index].kind == KIND_FILTERED) {
+ unsigned long now = jiffies;
+
/* Filter duplicate events which happen "too close"
together. */
if (ati_remote->old_data[0] == data[1] &&
ati_remote->old_data[1] == data[2] &&
- time_before(jiffies, ati_remote->old_jiffies +
msecs_to_jiffies(repeat_filter))) {
+ time_before(now, ati_remote->old_jiffies +
+ msecs_to_jiffies(repeat_filter))) {
ati_remote->repeat_count++;
} else {
ati_remote->repeat_count = 0;
+ ati_remote->first_jiffies = now;
}

ati_remote->old_data[0] = data[1];
ati_remote->old_data[1] = data[2];
- ati_remote->old_jiffies = jiffies;
+ ati_remote->old_jiffies = now;

if (ati_remote->repeat_count > 0 &&
- ati_remote->repeat_count < 5)
+ time_before(now, ati_remote->first_jiffies +
+ msecs_to_jiffies(repeat_delay)))
return;


--
Karl Pickett
The most wasted of all days is one without laughter.—E.E. Cummings
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2007-04-04 17:23    [from the cache]
©2003-2011 Jasper Spaans