All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <ext-jani.1.nikula@nokia.com>
To: ext Alek Du <alek.du@intel.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Trilok Soni <soni.trilok@gmail.com>,
	"linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	"ben-linux@fluff.org" <ben-linux@fluff.org>
Subject: Re: [PATCH]input: Change timer function to workqueue for gpio_keys driver
Date: Thu, 25 Jun 2009 16:31:33 +0300	[thread overview]
Message-ID: <1245936693.20530.107.camel@jani-desktop> (raw)
In-Reply-To: <20090625210642.432e08a5@dxy.sh.intel.com>

On Thu, 2009-06-25 at 15:06 +0200, ext Alek Du wrote:
> On Thu, 25 Jun 2009 18:29:25 +0800
> Jani Nikula <ext-jani.1.nikula@nokia.com> wrote:
> 
> > On Fri, Jun 12, 2009 at 8:40 PM, Trilok Soni<soni.trilok@gmail.com> wrote:
> > >>  static irqreturn_t gpio_keys_isr(int irq, void *dev_id)
> > >>  {
> > >>        struct gpio_button_data *bdata = dev_id;
> > >> @@ -62,10 +61,10 @@ static irqreturn_t gpio_keys_isr(int irq, void *dev_id)
> > >>        BUG_ON(irq != gpio_to_irq(button->gpio));
> > >>
> > >>        if (button->debounce_interval)
> > >> -               mod_timer(&bdata->timer,
> > >> -                       jiffies + msecs_to_jiffies(button->debounce_interval));
> > >> +               schedule_delayed_work(&bdata->work,
> > >> +                       msecs_to_jiffies(button->debounce_interval));
> > >>        else
> > >> -               gpio_keys_report_event(bdata);
> > >> +               schedule_work(&bdata->work.work);
> > >>
> > >>        return IRQ_HANDLED;
> > >>  }
> > 
> > Correct me if I'm wrong, but as far as I can tell,
> > schedule_delayed_work doesn't modify the timer if the work was already
> > pending. The result is not the same as with the timer. This breaks the
> > debouncing.
> 
> No. The workqueue is per button, if the work is already pending, then last
> key press is not handled yet. That keeps the debouncing. Why you want the second
> key press to break the first one? The second key press should be ignored, that's
> the meaning of debouncing right?

No, debouncing is supposed to let the gpio line stabilize to either
state before doing *anything*. You only want to schedule the work (and
send the input event) once the line has been in the same state for
debounce_interval ms. This is what the original code did, by kicking the
timer further at each state change.

> > It looks like a slightly modified version of this patch has already
> > been committed [1], but it has the same problem.
> > 
> > [1] 0b346838c5862bfe911432956a106d602535d030 Input: gpio-keys - change
> > timer to workqueue
> 
> Yes, the patch is already in Linus tree.

IMHO it should be either fixed or reverted.


BR,
Jani.



  reply	other threads:[~2009-06-25 13:32 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-08  7:24 [PATCH]input: Change timer function to workqueue for gpio_keys driver Alek Du
2009-06-12 17:40 ` Trilok Soni
2009-06-12 17:40   ` Trilok Soni
2009-06-25 10:29   ` Jani Nikula
2009-06-25 10:29     ` Jani Nikula
2009-06-25 13:06     ` Alek Du
2009-06-25 13:06       ` Alek Du
2009-06-25 13:31       ` Jani Nikula [this message]
2009-06-25 14:08         ` Alek Du
2009-06-25 14:52           ` Jani Nikula
2009-06-25 15:05             ` Jani Nikula
2009-06-25 15:09               ` Alek Du
2009-06-25 15:42                 ` Jani Nikula
2009-06-25 15:48                   ` Alek Du
2009-06-25 16:09                     ` Phil Carmody
2009-06-25 16:23                       ` Alek Du
2009-06-25 16:42                         ` Dmitry Torokhov
2009-06-25 16:42                           ` Dmitry Torokhov
2009-06-26 12:15                         ` [PATCH 0/2] fix gpio-keys debouncing and timer sleep issues Jani Nikula
2009-06-26 12:15                           ` [PATCH 1/2] Revert "Input: gpio-keys - change timer to workqueue" Jani Nikula
2009-06-26 12:15                           ` [PATCH 2/2] input: gpio-keys: avoid possibility of sleeping in timer function Jani Nikula
2009-06-29 10:30                             ` Alek Du
2009-06-29 10:30                               ` Alek Du
2009-06-26 12:50                           ` [PATCH 0/2] fix gpio-keys debouncing and timer sleep issues Du, Alek
2009-06-26 12:50                             ` Du, Alek
2009-06-29  5:59                           ` Dmitry Torokhov
2009-06-29 10:32                             ` Jani Nikula
  -- strict thread matches above, loose matches on Subject: below --
2009-06-08  5:54 [PATCH] input: Change timer function to workqueue for gpio_keys driver Alek Du
2009-06-08  6:04 ` Trilok Soni
2009-06-08  6:04   ` Trilok Soni

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=1245936693.20530.107.camel@jani-desktop \
    --to=ext-jani.1.nikula@nokia.com \
    --cc=alek.du@intel.com \
    --cc=ben-linux@fluff.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=soni.trilok@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.