2006-04-02 17:46:27 +01:00
/*
2008-08-05 16:14:15 +01:00
* arch / arm / plat - omap / include / mach / keypad . h
2006-04-02 17:46:27 +01:00
*
* Copyright ( C ) 2006 Komal Shah < komal_shah802003 @ yahoo . com >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# ifndef ASMARM_ARCH_KEYPAD_H
# define ASMARM_ARCH_KEYPAD_H
2010-12-20 21:09:22 +00:00
# ifndef CONFIG_ARCH_OMAP1
# warning Please update the board to use matrix-keypad driver
# endif
# include <linux/input/matrix_keypad.h>
2009-09-24 16:23:16 -07:00
2006-04-02 17:46:27 +01:00
struct omap_kp_platform_data {
int rows ;
int cols ;
2010-12-20 21:09:22 +00:00
const struct matrix_keymap_data * keymap_data ;
bool rep ;
2006-09-29 01:59:19 -07:00
unsigned long delay ;
2010-12-20 21:09:22 +00:00
bool dbounce ;
2006-04-02 17:46:27 +01:00
/* specific to OMAP242x*/
unsigned int * row_gpios ;
unsigned int * col_gpios ;
} ;
/* Group (0..3) -- when multiple keys are pressed, only the
* keys pressed in the same group are considered as pressed . This is
* in order to workaround certain crappy HW designs that produce ghost
2010-12-20 21:09:22 +00:00
* keypresses . Two free bits , not used by neither row / col nor keynum ,
* must be available for use as group bits . The below GROUP_SHIFT
* macro definition is based on some prior knowledge of the
* matrix_keypad defined KEY ( ) macro internals .
*/
# define GROUP_SHIFT 14
# define GROUP_0 (0 << GROUP_SHIFT)
# define GROUP_1 (1 << GROUP_SHIFT)
# define GROUP_2 (2 << GROUP_SHIFT)
# define GROUP_3 (3 << GROUP_SHIFT)
2006-04-02 17:46:27 +01:00
# define GROUP_MASK GROUP_3
2010-12-20 21:09:22 +00:00
# if KEY_MAX & GROUP_MASK
# error Group bits in conflict with keynum bits
# endif
2006-04-02 17:46:27 +01:00
# endif