Input: matrix-keymap - uninline and prepare for device tree support
Change matrix-keymap helper to be out-of-line, like sparse keymap, allow the helper perform basic keymap validation and return errors, and prepare for device tree support. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
@@ -49,7 +49,9 @@
|
||||
#define KEY_VALUE 0x00FFFFFF
|
||||
#define ROW_MASK 0xF0
|
||||
#define COLUMN_MASK 0x0F
|
||||
#define ROW_SHIFT 4
|
||||
#define NUM_ROWS 16
|
||||
#define NUM_COLS 16
|
||||
|
||||
#define KEY_MATRIX_SHIFT 6
|
||||
|
||||
struct spear_kbd {
|
||||
@@ -60,7 +62,7 @@ struct spear_kbd {
|
||||
unsigned int irq;
|
||||
unsigned int mode;
|
||||
unsigned short last_key;
|
||||
unsigned short keycodes[256];
|
||||
unsigned short keycodes[NUM_ROWS * NUM_COLS];
|
||||
};
|
||||
|
||||
static irqreturn_t spear_kbd_interrupt(int irq, void *dev_id)
|
||||
@@ -212,18 +214,17 @@ static int __devinit spear_kbd_probe(struct platform_device *pdev)
|
||||
input_dev->open = spear_kbd_open;
|
||||
input_dev->close = spear_kbd_close;
|
||||
|
||||
__set_bit(EV_KEY, input_dev->evbit);
|
||||
error = matrix_keypad_build_keymap(keymap, NULL, NUM_ROWS, NUM_COLS,
|
||||
kbd->keycodes, input_dev);
|
||||
if (error) {
|
||||
dev_err(&pdev->dev, "Failed to build keymap\n");
|
||||
goto err_put_clk;
|
||||
}
|
||||
|
||||
if (pdata->rep)
|
||||
__set_bit(EV_REP, input_dev->evbit);
|
||||
input_set_capability(input_dev, EV_MSC, MSC_SCAN);
|
||||
|
||||
input_dev->keycode = kbd->keycodes;
|
||||
input_dev->keycodesize = sizeof(kbd->keycodes[0]);
|
||||
input_dev->keycodemax = ARRAY_SIZE(kbd->keycodes);
|
||||
|
||||
matrix_keypad_build_keymap(keymap, ROW_SHIFT,
|
||||
input_dev->keycode, input_dev->keybit);
|
||||
|
||||
input_set_drvdata(input_dev, kbd);
|
||||
|
||||
error = request_irq(irq, spear_kbd_interrupt, 0, "keyboard", kbd);
|
||||
|
Reference in New Issue
Block a user