From: Vojtech Pavlik <vojtech@suse.cz>
To: Marko Macek <Marko.Macek@gmx.net>
Cc: Nish Aravamudan <nish.aravamudan@gmail.com>,
thoffman@arnor.net, vanackere@lif.univ-mrs.fr,
linux-kernel@vger.kernel.org
Subject: Re: USB input ati_remote autorepeat problem
Date: Sun, 2 Jul 2006 21:18:47 +0200 [thread overview]
Message-ID: <20060702191846.GA10354@suse.cz> (raw)
In-Reply-To: <44A81279.6040309@gmx.net>
On Sun, Jul 02, 2006 at 08:37:45PM +0200, Marko Macek wrote:
> Vojtech Pavlik wrote:
> >On Tue, Jun 27, 2006 at 02:46:39PM -0700, Nish Aravamudan wrote:
> >
> >>On 6/27/06, Marko Macek <Marko.Macek@gmx.net> wrote:
> >>
> >>>Hello!
> >>>
> >>>I have problems with autorepeat in ati_remote (drivers/usb/input) driver
> >>>in "recent" kernels: all keys start repeating immediately without some
> >>>delay.
> >>>
> >>>This makes some things, like changing the channel prev/next or toggling
> >>>fullscreen, etc... impossible/hard.
> >>>
> >>>The problem seems to be related to FILTER_TIME and HZ=250 (which I
> >>>forgot to change).
> >>>
> >>>FILTER_TIME is defined to HZ / 20, and since 250 is not divisible by 20,
> >>>the time will be too short to ignore enough events.
> >>>
> >>>Defining FILTER_TIME to HZ / 20 + 1 seems to fix things, but I'm not
> >>>sure if there are any bad side effects.
> >>>
> >>Can you try just defining it to msecs_to_jiffies(50)? That should
> >>handle the various HZ cases just fine.
> >>
> >
> >Indeed, that would be thr right solution. Even better would be to
> >
> > #define FILTER_TIME 50 /* 50 msec */
> >
> >and later use
> >
> > msecs_to_jiffies(FILTER_TIME)
> >
> >in the code.
> There is still a problem (reproducible in HZ=100, at least), because
> msec_to_jiffies
>
> #if HZ <= MSEC_PER_SEC && !(MSEC_PER_SEC % HZ)
> return (m + (MSEC_PER_SEC / HZ) - 1) / (MSEC_PER_SEC / HZ);
>
> Calculates 5 ticks for 50ms, which might seem to be correct, but it
> really isn't, since 5 ticks can happen in as little as 40 (+eps) ms.
>
> I wonder if this usage of msec_to_jiffies is correct (seems wrong to me).
>
> A working (but not clean) patch might look like this:
The patch looks OK to me. You could as well use 60 msec to be on the
safe side, and closer to the "/ 16" version.
> --- linux-2.6.17.orig/drivers/usb/input/ati_remote.c 2006-06-29
> 21:18:15.000000000 +0200
>
> +++ linux-2.6.17/drivers/usb/input/ati_remote.c 2006-07-02
> 20:10:17.000000000 +0200
>
> @@ -155,9 +155,8 @@
>
> * events. The hardware generates 5 events for the first keypress
>
> * and we have to take this into account for an accurate repeat
>
> * behaviour.
>
> - * (HZ / 20) == 50 ms and works well for me.
>
> */
>
> -#define FILTER_TIME (HZ / 20)
>
> +#define FILTER_TIME 51 /* msec */
>
>
>
> struct ati_remote {
>
> struct input_dev *idev;
>
> @@ -470,7 +469,7 @@
>
> /* 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 + FILTER_TIME)) {
>
> + time_before(jiffies, ati_remote->old_jiffies +
> msecs_to_jiffies(FILTER_TIME))) {
>
> ati_remote->repeat_count++;
>
> } else {
>
> ati_remote->repeat_count = 0;
>
>
> Some googling reveals that an old patch used HZ >> 4 (HZ / 16) instead
> of HZ / 20;
>
> Perhaps using msec_to_jiffies(50) + 1 would be the correct fix?
>
> Mark
>
>
>
--
Vojtech Pavlik
Director SuSE Labs
prev parent reply other threads:[~2006-07-02 19:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-27 19:51 USB input ati_remote autorepeat problem Marko Macek
2006-06-27 20:09 ` John Daiker
2006-06-27 21:46 ` Nish Aravamudan
2006-06-28 6:52 ` Vojtech Pavlik
2006-07-02 18:37 ` Marko Macek
2006-07-02 19:18 ` Vojtech Pavlik [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060702191846.GA10354@suse.cz \
--to=vojtech@suse.cz \
--cc=Marko.Macek@gmx.net \
--cc=linux-kernel@vger.kernel.org \
--cc=nish.aravamudan@gmail.com \
--cc=thoffman@arnor.net \
--cc=vanackere@lif.univ-mrs.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox