On Sun, Apr 1, 2012 at 10:08 AM, Chao Xie <chao.xie@xxxxxxxxxxx> wrote: > KPDK_DK only indicates the pin level of direct key. > So it is related to board, and low level may be active which > indicates that a key is pressed. > > Signed-off-by: Chao Xie <chao.xie@xxxxxxxxxxx> > --- > arch/arm/plat-pxa/include/plat/pxa27x_keypad.h | 2 ++ > drivers/input/keyboard/pxa27x_keypad.c | 10 +++++++++- > 2 files changed, 11 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/plat-pxa/include/plat/pxa27x_keypad.h b/arch/arm/plat-pxa/include/plat/pxa27x_keypad.h > index abcc36e..7ffb16b 100644 > --- a/arch/arm/plat-pxa/include/plat/pxa27x_keypad.h > +++ b/arch/arm/plat-pxa/include/plat/pxa27x_keypad.h > @@ -44,6 +44,8 @@ struct pxa27x_keypad_platform_data { > /* direct keys */ > int direct_key_num; > unsigned int direct_key_map[MAX_DIRECT_KEY_NUM]; > + /* the key output may be low active */ > + int direct_key_low_active; > > /* rotary encoders 0 */ > int enable_rotary0; > diff --git a/drivers/input/keyboard/pxa27x_keypad.c b/drivers/input/keyboard/pxa27x_keypad.c > index 5d71720..a60f14e 100644 > --- a/drivers/input/keyboard/pxa27x_keypad.c > +++ b/drivers/input/keyboard/pxa27x_keypad.c > @@ -311,7 +311,15 @@ static void pxa27x_keypad_scan_direct(struct pxa27x_keypad *keypad) > if (pdata->enable_rotary0 || pdata->enable_rotary1) > pxa27x_keypad_scan_rotary(keypad); > > - new_state = KPDK_DK(kpdk) & keypad->direct_key_mask; > + /* > + * The KPDR_DK only output the key pin level, so it relates to board, > + * and low level may be active. > + */ > + if (pdata->direct_key_low_active) > + new_state = ~KPDK_DK(kpdk) & keypad->direct_key_mask; > + else > + new_state = KPDK_DK(kpdk) & keypad->direct_key_mask; > + > bits_changed = keypad->direct_key_state ^ new_state; > > if (bits_changed == 0) > -- > 1.7.0.4 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel Loop Dmitry -- 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