On Fri, Nov 07, 2008 at 09:41:27PM +0800, Stanley.Miao wrote:
> Support twl4030 keypad and gpio keys on ZOOM SDK.
Again, split defconfig changes out of this patch.
> +static struct twl4030_keypad_data ldp_kp_twl4030_data = {
> + .rows = 6,
> + .cols = 6,
> + .keymap = ldp_twl4030_keymap,
> + .keymapsize = ARRAY_SIZE(ldp_twl4030_keymap),
> + .rep = 1,
> + .irq = TWL4030_MODIRQ_KEYPAD,
> +};
> +
> +
one blank line is enough.
> +static struct gpio_keys_button ldp_gpio_keys_buttons[] = {
> + [0] = {
> + .code = KEY_ENTER,
> + .gpio = 101,
> + .desc = "enter sw",
> + .active_low = 1,
> + .debounce_interval = 30,
tabify here
> + },
> + [1] = {
> + .code = KEY_F1,
> + .gpio = 102,
> + .desc = "func 1",
> + .active_low = 1,
> + .debounce_interval = 30,
tabify here
> + },
> + [2] = {
> + .code = KEY_F2,
> + .gpio = 103,
> + .desc = "func 2",
> + .active_low = 1,
> + .debounce_interval = 30,
tabify here
> + },
> + [3] = {
> + .code = KEY_F3,
> + .gpio = 104,
> + .desc = "func 3",
> + .active_low = 1,
> + .debounce_interval = 30,
tabify here
> + },
> + [4] = {
> + .code = KEY_F4,
> + .gpio = 105,
> + .desc = "func 4",
> + .active_low = 1,
> + .debounce_interval = 30,
tabify here
> + },
> + [5] = {
> + .code = KEY_LEFT,
> + .gpio = 106,
> + .desc = "left sw",
> + .active_low = 1,
> + .debounce_interval = 30,
tabify here
> + },
> + [6] = {
> + .code = KEY_RIGHT,
> + .gpio = 107,
> + .desc = "right sw",
> + .active_low = 1,
> + .debounce_interval = 30,
tabify here
> + },
> + [7] = {
> + .code = KEY_UP,
> + .gpio = 108,
> + .desc = "up sw",
> + .active_low = 1,
> + .debounce_interval = 30,
tabify here
> + },
> + [8] = {
> + .code = KEY_DOWN,
> + .gpio = 109,
> + .desc = "down sw",
> + .active_low = 1,
> + .debounce_interval = 30,
tabify here
> diff --git a/drivers/input/keyboard/omap-twl4030keypad.c
> b/drivers/input/keyboard/omap-twl4030keypad.c
> index d3e1d20..f0a0ea9 100644
> --- a/drivers/input/keyboard/omap-twl4030keypad.c
> +++ b/drivers/input/keyboard/omap-twl4030keypad.c
> @@ -174,7 +174,7 @@ static void twl4030_kp_scan(struct omap_keypad *kp, int
> release_all)
> if (!changed)
> continue;
>
> - for (col = 0; col < kp->n_cols + 1; col++) {
> + for (col = 0; col < kp->n_cols; col++) {
this is a bug fix, should be in a separated patch.
> @@ -185,11 +185,20 @@ static void twl4030_kp_scan(struct omap_keypad *kp, int
> release_all)
> "press" : "release");
>
> key = omap_kp_find_key(kp, col, row);
> - if (key < 0)
> + if (key < 0) {
> +#ifdef CONFIG_MACH_OMAP_LDP
> + /* OMAP LDP has a TWL4030 GPIO
> + * (KBR5/KBC4) that is set to a persistent
> + * state and should be ignored.
> + */
> + if (row == 5 && col == 4)
> + continue;
> +#endif
this should be avoided in the driver as much as possible. You should
probably add a persistent flag to the keymap data and match that flag here.
Something like, "if (key[i].persistent) continue;"
> +
> dev_warn(kp->dbg_dev,
> "Spurious key event %d-%d\n",
> col, row);
> - else
> + } else
if one arm has {}, put on both
--
balbi
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html