From: Felipe Balbi <balbi@ti.com> To: Illia Smyrnov <illia.smyrnov@ti.com> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>, <linux-input@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linux-omap@vger.kernel.org>, Felipe Balbi <balbi@ti.com> Subject: Re: [PATCH v3 2/3] Input: omap-keypad: errata i689: Correct debounce time Date: Mon, 29 Jul 2013 21:08:12 +0300 [thread overview] Message-ID: <20130729180812.GG4964@radagast> (raw) In-Reply-To: <1375116311-13999-3-git-send-email-illia.smyrnov@ti.com> [-- Attachment #1: Type: text/plain, Size: 2776 bytes --] Hi, On Mon, Jul 29, 2013 at 07:45:10PM +0300, Illia Smyrnov wrote: > From: Axel Haslam <axelhaslam@ti.com> > > Set debounce time value to 12ms to workaround the errata. > > ERRATA DESCRIPTION: > When a key is released for a time shorter than the debounce time, > in-between 2 key press (KP1 and KP2), the keyboard state machine will go to > idle mode and will never detect the key release (after KP1,and also after KP2), > and thus will never generate a new IRQ indicating the key release. > From the operating system standpoint, only a key press as been detected, > and the key will keep on being printed on the screen until another or > the same key is pressed again.When the failing state has been reached, > the KBD_STATEMACHINE register will show "idle state" and the KBD_FULLCODE > register won't be empty, this is the signature of the bug.There is no impact > on the power consumption of the system as the state machine goes to IDLE state. > > WORKAROUND: > First thing is to program the debounce time correctly: > If X (us) is the maximum time of bounces when a key is pressed or released, > and Y (us) is the minimum time of a key release that is expected to be detected, > then the debounce time should be set to a value inbetween X and Y. > > In case it is still possible to get shorter than debounce time key-release > events, then the only solution is to implement a software workaround: > > Before printing a second character on the screen, the software must check if > the keyboard has hit the failing condition (cf signature of the bug above) > or if the key is still really pressed and then take the appropriate actions. > > Silicon revisions impacted: OMAP4430 ES 1.0,2.0,2.1,2.2,2.3 > OMAP4460 ES 1.0,1.1 > OMAP5430 ES 1.0 if only these are affected, should you have revision check ? Also we don't support OMAP5430 ES 1.0. I say this because, IMO, debouncing time is likely to be board-specific and/or application-specific. > diff --git a/drivers/input/keyboard/omap4-keypad.c b/drivers/input/keyboard/omap4-keypad.c > index feab00f..e8bdc76 100644 > --- a/drivers/input/keyboard/omap4-keypad.c > +++ b/drivers/input/keyboard/omap4-keypad.c > @@ -62,8 +62,10 @@ > > /* OMAP4 values */ > #define OMAP4_VAL_IRQDISABLE 0x0 > -#define OMAP4_VAL_DEBOUNCINGTIME 0x7 > -#define OMAP4_VAL_PVT 0x7 > + > +/* Errata i689: set debounce time value to 12ms */ > +#define OMAP4_VAL_DEBOUNCINGTIME 0x2 > +#define OMAP4_VAL_PVT 0x6 to make this easier to understand, you might want to convert this into a better macro that takes an argument in microseconds and you calculate the debouncing time which should be written to HW. -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Felipe Balbi <balbi@ti.com> To: Illia Smyrnov <illia.smyrnov@ti.com> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>, linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Felipe Balbi <balbi@ti.com> Subject: Re: [PATCH v3 2/3] Input: omap-keypad: errata i689: Correct debounce time Date: Mon, 29 Jul 2013 21:08:12 +0300 [thread overview] Message-ID: <20130729180812.GG4964@radagast> (raw) In-Reply-To: <1375116311-13999-3-git-send-email-illia.smyrnov@ti.com> [-- Attachment #1: Type: text/plain, Size: 2776 bytes --] Hi, On Mon, Jul 29, 2013 at 07:45:10PM +0300, Illia Smyrnov wrote: > From: Axel Haslam <axelhaslam@ti.com> > > Set debounce time value to 12ms to workaround the errata. > > ERRATA DESCRIPTION: > When a key is released for a time shorter than the debounce time, > in-between 2 key press (KP1 and KP2), the keyboard state machine will go to > idle mode and will never detect the key release (after KP1,and also after KP2), > and thus will never generate a new IRQ indicating the key release. > From the operating system standpoint, only a key press as been detected, > and the key will keep on being printed on the screen until another or > the same key is pressed again.When the failing state has been reached, > the KBD_STATEMACHINE register will show "idle state" and the KBD_FULLCODE > register won't be empty, this is the signature of the bug.There is no impact > on the power consumption of the system as the state machine goes to IDLE state. > > WORKAROUND: > First thing is to program the debounce time correctly: > If X (us) is the maximum time of bounces when a key is pressed or released, > and Y (us) is the minimum time of a key release that is expected to be detected, > then the debounce time should be set to a value inbetween X and Y. > > In case it is still possible to get shorter than debounce time key-release > events, then the only solution is to implement a software workaround: > > Before printing a second character on the screen, the software must check if > the keyboard has hit the failing condition (cf signature of the bug above) > or if the key is still really pressed and then take the appropriate actions. > > Silicon revisions impacted: OMAP4430 ES 1.0,2.0,2.1,2.2,2.3 > OMAP4460 ES 1.0,1.1 > OMAP5430 ES 1.0 if only these are affected, should you have revision check ? Also we don't support OMAP5430 ES 1.0. I say this because, IMO, debouncing time is likely to be board-specific and/or application-specific. > diff --git a/drivers/input/keyboard/omap4-keypad.c b/drivers/input/keyboard/omap4-keypad.c > index feab00f..e8bdc76 100644 > --- a/drivers/input/keyboard/omap4-keypad.c > +++ b/drivers/input/keyboard/omap4-keypad.c > @@ -62,8 +62,10 @@ > > /* OMAP4 values */ > #define OMAP4_VAL_IRQDISABLE 0x0 > -#define OMAP4_VAL_DEBOUNCINGTIME 0x7 > -#define OMAP4_VAL_PVT 0x7 > + > +/* Errata i689: set debounce time value to 12ms */ > +#define OMAP4_VAL_DEBOUNCINGTIME 0x2 > +#define OMAP4_VAL_PVT 0x6 to make this easier to understand, you might want to convert this into a better macro that takes an argument in microseconds and you calculate the debouncing time which should be written to HW. -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --]
next prev parent reply other threads:[~2013-07-29 18:08 UTC|newest] Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-07-29 16:45 [PATCH v3 0/3] Input: omap-keypad: Wakeup capability and w/a for i689 errata Illia Smyrnov 2013-07-29 16:45 ` Illia Smyrnov 2013-07-29 16:45 ` [PATCH v3 1/3] Input: omap-keypad: Enable wakeup capability for keypad Illia Smyrnov 2013-07-29 16:45 ` Illia Smyrnov 2013-07-29 18:04 ` Felipe Balbi 2013-07-29 18:04 ` Felipe Balbi 2013-07-29 18:59 ` Dmitry Torokhov 2013-07-29 19:13 ` Felipe Balbi 2013-07-29 19:13 ` Felipe Balbi 2013-07-29 19:59 ` Dmitry Torokhov 2013-07-29 20:36 ` Felipe Balbi 2013-07-29 20:36 ` Felipe Balbi 2013-07-29 20:40 ` Dmitry Torokhov 2013-07-31 9:49 ` Felipe Balbi 2013-07-31 9:49 ` Felipe Balbi 2013-07-29 16:45 ` [PATCH v3 2/3] Input: omap-keypad: errata i689: Correct debounce time Illia Smyrnov 2013-07-29 16:45 ` Illia Smyrnov 2013-07-29 18:08 ` Felipe Balbi [this message] 2013-07-29 18:08 ` Felipe Balbi 2013-07-29 16:45 ` [PATCH v3 3/3] Input: omap-keypad: Setup irq type from DT Illia Smyrnov 2013-07-29 16:45 ` Illia Smyrnov 2013-07-29 18:09 ` Felipe Balbi 2013-07-29 18:09 ` Felipe Balbi 2013-08-27 10:08 ` [PATCH v3 0/3] Input: omap-keypad: Wakeup capability and w/a for i689 errata Illia Smyrnov 2013-08-29 16:34 ` Dmitry Torokhov
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=20130729180812.GG4964@radagast \ --to=balbi@ti.com \ --cc=dmitry.torokhov@gmail.com \ --cc=illia.smyrnov@ti.com \ --cc=linux-input@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-omap@vger.kernel.org \ /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: linkBe 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.