Files
OpenCellular/chip
Vincent Palatin 160b343e7c stm32: fix race condition enabling keyboard interrupt
Previously, if a key was pressed after the last polling but
the interrupts were fully enabled, we were missing the edge.
So dropping the key press event and seeing only the key release.

Now we check if keys are down before waiting for the next interrupt,
if any, we re-start polling immediatly.

The row state reading code is unchanged, just moved to a function
in order to re-use it.

Signed-off-by: Vincent Palatin <vpalatin@chromium.org>

(Note: This patch was originally submitted in the firmware-snow-2695.B
branch, but needed some re-factoring to merge cleanly into ToT)

BRANCH=snow
BUG=chrome-os-partner:7484 chrome-os-partner:12179
TEST=type on the keyboard and do not see any missing key presses.
On instrumented board, record the the matrix scans with a logic analyzer
and stare at the waveforms.

Change-Id: I98dc4c3af9611a276b960887384a6304b91d8b30
Reviewed-on: https://gerrit.chromium.org/gerrit/35168
Commit-Ready: David Hendricks <dhendrix@chromium.org>
Reviewed-by: David Hendricks <dhendrix@chromium.org>
Tested-by: David Hendricks <dhendrix@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2012-10-10 14:53:16 -07:00
..