Pavel Machek wrote: > On Mon 2009-07-20 19:41:54, Eric Miao wrote: >> Signed-off-by: Eric Miao <eric.y.miao@xxxxxxxxx> > > Does this make some other driver obsolete? Should we disable the other > one or even remove it completely? > Yes, specifically the following two: drivers/input/keyboard/corgikbd.c drivers/input/keyboard/spitzkbd.c which I don't feel quite comfortable since they are referencing the PXA GPIO registers directly. However, marking obsolete might be more smooth for the moment. > > >> diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c >> index dda310f..e3156a0 100644 >> --- a/arch/arm/mach-pxa/spitz.c >> +++ b/arch/arm/mach-pxa/spitz.c >> @@ -24,6 +24,7 @@ >> #include <linux/spi/ads7846.h> >> #include <linux/spi/corgi_lcd.h> >> #include <linux/mtd/sharpsl.h> >> +#include <linux/input/matrix_keypad.h> >> >> #include <asm/setup.h> >> #include <asm/mach-types.h> >> @@ -111,6 +112,26 @@ static unsigned long spitz_pin_config[] __initdata = { >> GPIO105_GPIO, /* SPITZ_GPIO_CF_IRQ */ >> GPIO106_GPIO, /* SPITZ_GPIO_CF2_IRQ */ >> >> + /* GPIO matrix keypad */ >> + GPIO88_GPIO, /* column 0 */ >> + GPIO23_GPIO, /* column 1 */ >> + GPIO24_GPIO, /* column 2 */ >> + GPIO25_GPIO, /* column 3 */ >> + GPIO26_GPIO, /* column 4 */ >> + GPIO27_GPIO, /* column 5 */ >> + GPIO52_GPIO, /* column 6 */ >> + GPIO103_GPIO, /* column 7 */ >> + GPIO107_GPIO, /* column 8 */ >> + GPIO108_GPIO, /* column 9 */ >> + GPIO114_GPIO, /* column 10 */ >> + GPIO12_GPIO, /* row 0 */ >> + GPIO17_GPIO, /* row 1 */ >> + GPIO91_GPIO, /* row 2 */ >> + GPIO34_GPIO, /* row 3 */ >> + GPIO36_GPIO, /* row 4 */ >> + GPIO38_GPIO, /* row 5 */ >> + GPIO39_GPIO, /* row 6 */ >> + >> /* I2C */ >> GPIO117_I2C_SCL, >> GPIO118_I2C_SDA, >> @@ -242,9 +263,106 @@ EXPORT_SYMBOL(spitzscoop2_device); >> /* >> * Spitz Keyboard Device >> */ >> +#define SPITZ_KEY_CALENDAR KEY_F1 >> +#define SPITZ_KEY_ADDRESS KEY_F2 >> +#define SPITZ_KEY_FN KEY_F3 >> +#define SPITZ_KEY_CANCEL KEY_F4 >> +#define SPITZ_KEY_EXOK KEY_F5 >> +#define SPITZ_KEY_EXCANCEL KEY_F6 >> +#define SPITZ_KEY_EXJOGDOWN KEY_F7 >> +#define SPITZ_KEY_EXJOGUP KEY_F8 >> +#define SPITZ_KEY_JAP1 KEY_LEFTALT >> +#define SPITZ_KEY_JAP2 KEY_RIGHTCTRL >> +#define SPITZ_KEY_SYNC KEY_F9 >> +#define SPITZ_KEY_MAIL KEY_F10 >> +#define SPITZ_KEY_OK KEY_F11 >> +#define SPITZ_KEY_MENU KEY_F12 >> + >> +static const uint32_t spitzkbd_keymap[] = { >> + KEY(0, 0, KEY_LEFTCTRL), >> + KEY(0, 1, KEY_1), >> + KEY(0, 2, KEY_3), >> + KEY(0, 3, KEY_5), >> + KEY(0, 4, KEY_6), >> + KEY(0, 5, KEY_7), >> + KEY(0, 6, KEY_9), >> + KEY(0, 7, KEY_0), >> + KEY(0, 8, KEY_BACKSPACE), >> + KEY(0, 9, SPITZ_KEY_EXOK), /* EXOK */ >> + KEY(0, 10, SPITZ_KEY_EXCANCEL), /* EXCANCEL */ >> + KEY(1, 1, KEY_2), >> + KEY(1, 2, KEY_4), >> + KEY(1, 3, KEY_R), >> + KEY(1, 4, KEY_Y), >> + KEY(1, 5, KEY_8), >> + KEY(1, 6, KEY_I), >> + KEY(1, 7, KEY_O), >> + KEY(1, 8, KEY_P), >> + KEY(1, 9, SPITZ_KEY_EXJOGDOWN), /* EXJOGDOWN */ >> + KEY(1, 10, SPITZ_KEY_EXJOGUP), /* EXJOGUP */ >> + KEY(2, 0, KEY_TAB), >> + KEY(2, 1, KEY_Q), >> + KEY(2, 2, KEY_E), >> + KEY(2, 3, KEY_T), >> + KEY(2, 4, KEY_G), >> + KEY(2, 5, KEY_U), >> + KEY(2, 6, KEY_J), >> + KEY(2, 7, KEY_K), >> + KEY(3, 0, SPITZ_KEY_ADDRESS), /* ADDRESS */ >> + KEY(3, 1, KEY_W), >> + KEY(3, 2, KEY_S), >> + KEY(3, 3, KEY_F), >> + KEY(3, 4, KEY_V), >> + KEY(3, 5, KEY_H), >> + KEY(3, 6, KEY_M), >> + KEY(3, 7, KEY_L), >> + KEY(3, 9, KEY_RIGHTSHIFT), >> + KEY(4, 0, SPITZ_KEY_CALENDAR), /* CALENDAR */ >> + KEY(4, 1, KEY_A), >> + KEY(4, 2, KEY_D), >> + KEY(4, 3, KEY_C), >> + KEY(4, 4, KEY_B), >> + KEY(4, 5, KEY_N), >> + KEY(4, 6, KEY_DOT), >> + KEY(4, 8, KEY_ENTER), >> + KEY(4, 9, KEY_LEFTSHIFT), >> + KEY(5, 0, SPITZ_KEY_MAIL), /* MAIL */ >> + KEY(5, 1, KEY_Z), >> + KEY(5, 2, KEY_X), >> + KEY(5, 3, KEY_MINUS), >> + KEY(5, 4, KEY_SPACE), >> + KEY(5, 5, KEY_COMMA), >> + KEY(5, 7, KEY_UP), >> + KEY(5, 10, SPITZ_KEY_FN), /* FN */ >> + KEY(6, 0, KEY_SYSRQ), >> + KEY(6, 1, SPITZ_KEY_JAP1), /* JAP1 */ >> + KEY(6, 2, SPITZ_KEY_JAP2), /* JAP2 */ >> + KEY(6, 3, SPITZ_KEY_CANCEL), /* CANCEL */ >> + KEY(6, 4, SPITZ_KEY_OK), /* OK */ >> + KEY(6, 5, SPITZ_KEY_MENU), /* MENU */ >> + KEY(6, 6, KEY_LEFT), >> + KEY(6, 7, KEY_DOWN), >> + KEY(6, 8, KEY_RIGHT), >> +}; >> + >> +static struct matrix_keypad_platform_data spitzkbd_pdata = { >> + .keymap = spitzkbd_keymap, >> + .keymap_size = ARRAY_SIZE(spitzkbd_keymap), >> + .col_gpios = {88, 23, 24, 25, 26, 27, 52, 103, 107, 108, 114, -1}, >> + .row_gpios = {12, 17, 91, 34, 36, 38, 39, -1}, >> + .num_col_gpios = 11, >> + .num_row_gpios = 7, >> + .col_scan_delay_us = 10, >> + .debounce_ms = 10, >> + .wakeup = 1, >> +}; >> + >> static struct platform_device spitzkbd_device = { >> - .name = "spitz-keyboard", >> + .name = "matrix-keypad", >> .id = -1, >> + .dev = { >> + .platform_data = &spitzkbd_pdata, >> + }, >> }; >> >> > -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html