Commit 9d834068 authored by David Brownell's avatar David Brownell Committed by Dmitry Torokhov

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: default avatarTrilok Soni <soni.trilok@gmail.com>
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 77a53fd2
...@@ -330,6 +330,17 @@ config KEYBOARD_OMAP ...@@ -330,6 +330,17 @@ config KEYBOARD_OMAP
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called omap-keypad. module will be called omap-keypad.
config KEYBOARD_TWL4030
tristate "TI TWL4030/TWL5030/TPS659x0 keypad support"
depends on TWL4030_CORE
help
Say Y here if your board use the keypad controller on
TWL4030 family chips. It's safe to say enable this
even on boards that don't use the keypad controller.
To compile this driver as a module, choose M here: the
module will be called twl4030_keypad.
config KEYBOARD_TOSA config KEYBOARD_TOSA
tristate "Tosa keyboard" tristate "Tosa keyboard"
depends on MACH_TOSA depends on MACH_TOSA
......
...@@ -30,5 +30,6 @@ obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o ...@@ -30,5 +30,6 @@ obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o
obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o
obj-$(CONFIG_KEYBOARD_SUNKBD) += sunkbd.o obj-$(CONFIG_KEYBOARD_SUNKBD) += sunkbd.o
obj-$(CONFIG_KEYBOARD_TOSA) += tosakbd.o obj-$(CONFIG_KEYBOARD_TOSA) += tosakbd.o
obj-$(CONFIG_KEYBOARD_TWL4030) += twl4030_keypad.o
obj-$(CONFIG_KEYBOARD_XTKBD) += xtkbd.o obj-$(CONFIG_KEYBOARD_XTKBD) += xtkbd.o
obj-$(CONFIG_KEYBOARD_W90P910) += w90p910_keypad.o obj-$(CONFIG_KEYBOARD_W90P910) += w90p910_keypad.o
This diff is collapsed.
...@@ -25,6 +25,9 @@ ...@@ -25,6 +25,9 @@
#ifndef __TWL4030_H_ #ifndef __TWL4030_H_
#define __TWL4030_H_ #define __TWL4030_H_
#include <linux/types.h>
#include <linux/input/matrix_keypad.h>
/* /*
* Using the twl4030 core we address registers using a pair * Using the twl4030 core we address registers using a pair
* { module id, relative register offset } * { module id, relative register offset }
...@@ -302,13 +305,17 @@ struct twl4030_madc_platform_data { ...@@ -302,13 +305,17 @@ struct twl4030_madc_platform_data {
int irq_line; int irq_line;
}; };
/* Boards have uniqe mappings of {col, row} --> keycode.
* Column and row are 4 bits, but range only from 0..7.
* a PERSISTENT_KEY is "always on" and never reported.
*/
#define PERSISTENT_KEY(c, r) KEY((c), (r), KEY_RESERVED)
struct twl4030_keypad_data { struct twl4030_keypad_data {
int rows; const struct matrix_keymap_data *keymap_data;
int cols; unsigned rows;
int *keymap; unsigned cols;
int irq; bool rep;
unsigned int keymapsize;
unsigned int rep:1;
}; };
enum twl4030_usb_mode { enum twl4030_usb_mode {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment