[PATCH V3 3/4] Input: pxa27x_keypad direct key may be low active
Haojian Zhuang
haojian.zhuang at gmail.com
Mon Apr 2 05:38:01 EDT 2012
On Sun, Apr 1, 2012 at 10:08 AM, Chao Xie <chao.xie at marvell.com> 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 at marvell.com>
> ---
> 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 at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Loop Dmitry
More information about the linux-arm-kernel
mailing list