aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/i2c
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-08-25 22:24:14 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2009-08-28 01:06:15 -0400
commit9d8340687c524ce61e3c9c76758c4c81303acfc0 (patch)
tree7dc56e76ca748e00f76fc635d2799323b16dfeff /include/linux/i2c
parent77a53fd21870c726b670c0d8179294ac1ea33468 (diff)
Input: add twl4030_keypad driver
Add a driver for the keypad controller on TWL4030 family chips. These support up to an 8x8 key matrix. The TWL4030 multifunction chips are mostly used on OMAP3 (or OMAP 2430) based boards. [dtor@mail.ru: switch to matrix-keypad framework, fix changing keymap from userspace] Reviewed-by: Trilok Soni <soni.trilok@gmail.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'include/linux/i2c')
-rw-r--r--include/linux/i2c/twl4030.h19
1 files changed, 13 insertions, 6 deletions
diff --git a/include/linux/i2c/twl4030.h b/include/linux/i2c/twl4030.h
index 0dc80ef24975..3fd21d7cb6bf 100644
--- a/include/linux/i2c/twl4030.h
+++ b/include/linux/i2c/twl4030.h
@@ -25,6 +25,9 @@
25#ifndef __TWL4030_H_ 25#ifndef __TWL4030_H_
26#define __TWL4030_H_ 26#define __TWL4030_H_
27 27
28#include <linux/types.h>
29#include <linux/input/matrix_keypad.h>
30
28/* 31/*
29 * Using the twl4030 core we address registers using a pair 32 * Using the twl4030 core we address registers using a pair
30 * { module id, relative register offset } 33 * { module id, relative register offset }
@@ -302,13 +305,17 @@ struct twl4030_madc_platform_data {
302 int irq_line; 305 int irq_line;
303}; 306};
304 307
308/* Boards have uniqe mappings of {col, row} --> keycode.
309 * Column and row are 4 bits, but range only from 0..7.
310 * a PERSISTENT_KEY is "always on" and never reported.
311 */
312#define PERSISTENT_KEY(c, r) KEY((c), (r), KEY_RESERVED)
313
305struct twl4030_keypad_data { 314struct twl4030_keypad_data {
306 int rows; 315 const struct matrix_keymap_data *keymap_data;
307 int cols; 316 unsigned rows;
308 int *keymap; 317 unsigned cols;
309 int irq; 318 bool rep;
310 unsigned int keymapsize;
311 unsigned int rep:1;
312}; 319};
313 320
314enum twl4030_usb_mode { 321enum twl4030_usb_mode {