[PATCH v1 00/12] input: keypad-matrix: doc update, hw separation, polling, binary columns
Gerhard Sittig
gsi at denx.de
Fri Jun 21 14:09:46 EDT 2013
this series addresses one style nit in the matrix-keymap helper (bool vs
error code for function calls), and brings the following changes to the
matrix-keypad driver
- documentation update (device tree bindings), comments update (driver's
program flow as well as data structures), diagnostics rephrased
- more finegrained hardware control (individual polarity for row and for
column pins, push-pull operation of column pins)
- clean separation of the physical hardware attachment and the logical
keyboard handling (tell GPIO pins and matrix lines apart)
- introduce support for polling vs interrupt driven change detection
(more reliable detection of multi key press events)
- optionally reduce timer management overhead by using a range instead
of a fixed value for a microseconds delay
- introduce support for keyboard layouts where fewer column gpio pins
control more matrix column lines (binary column address encoding)
- adapt a board's device tree to the new features
for unadjusted code and configuration the behaviour remains fully
backwards compatible, using any of the new features is completely
optional
I'm aware of my introducing many new options, and not removing any of
the flexibility to reduce complexity -- but I feel that there's nothing
that can get removed without breaking compatibility, while all of the
new options and features are desirable or just essential for the end
result of binary encoded columns with push/pull requirements for the
pins including reliable detection of multi key press events
even if it were not for the binary column addressing, most of the
changes are desirable and removing the binary encoding doesn't
significantly cut on the complexity
I'd happily trim flexibility and reduce complexity if it turns out that
the former support which I did not want to break isn't required any
longer (the open collector emulation might be one such candidate)
the series was build tested on PowerPC (mpc512x generic plus
matrix-keypad), ARM (omap2plus plus matrix-keypad) and MIPS (bcm47xx
plus matrix-keypad) and was run tested on PowerPC (mpc512x generic on an
ifm AC14xx board)
test feedback from ARM users (palm tungsten, spitz, corgi with platform
data, any recent ARM with matrix-keypad and device tree) is very welcome
and greatly appreciated
the series is checkpatch clean in regular mode, and spots one condition
in strict mode which I consider acceptable since memset() would be too
much for two u32 values and individual assignments appear clumsy to me
in this very case
CHECK: multiple assignments should be avoided
#114: FILE: drivers/input/keyboard/matrix_keypad.c:671:
+ us[0] = us[1] = 0;
total: 0 errors, 0 warnings, 1 checks, 95 lines checked
Gerhard Sittig (12):
input: matrix-keypad: update devicetree binding doc
input: matrix-keymap: func call coding style nit
input: matrix-keypad: rename variables and funcs
input: matrix-keypad: push/pull, separate polarity
input: matrix-keypad: update comments, diagnostics
input: keypad-matrix: refactor matrix scan logic
input: keypad-matrix: introduce polling support
input: keypad-matrix: tell GPIO pins from matrix lines
input: matrix-keypad: add binary column encoding
input: keypad_matrix: use usleep_range() for scan delay
input: keypad-matrix: AC14xx device tree update
input: matrix-keypad: add diagnostics in probe()
.../bindings/input/gpio-matrix-keypad.txt | 138 ++++++-
arch/arm/mach-davinci/board-tnetv107x-evm.c | 3 +-
arch/arm/mach-omap2/board-h4.c | 3 +-
arch/arm/mach-pxa/palmtc.c | 3 +-
arch/mips/jz4740/board-qi_lb60.c | 3 +-
arch/powerpc/boot/dts/ac14xx.dts | 13 +-
drivers/input/keyboard/matrix_keypad.c | 399 +++++++++++++++++---
drivers/input/matrix-keymap.c | 23 +-
include/linux/input/matrix_keypad.h | 44 ++-
9 files changed, 538 insertions(+), 91 deletions(-)
--
1.7.10.4
More information about the linux-arm-kernel
mailing list