62 lines
1.7 KiB
C
62 lines
1.7 KiB
C
/*
|
|
*
|
|
* $Id: s3c-keypad.h,v 1.5 2008/05/23 06:22:53 dark0351 Exp $
|
|
*/
|
|
|
|
#ifndef _S3C_KEYPAD_H_
|
|
#define _S3C_KEYPAD_H_
|
|
|
|
static void __iomem *key_base;
|
|
|
|
#if defined(CONFIG_CPU_S3C6400) || defined (CONFIG_CPU_S3C6410)
|
|
#define KEYPAD_COLUMNS 8
|
|
#define KEYPAD_ROWS 8
|
|
#define MAX_KEYPAD_NR 64 /* 8*8 */
|
|
#define MAX_KEYMASK_NR 32
|
|
|
|
int keypad_keycode[] = {
|
|
1, 2, KEY_1, KEY_Q, KEY_A, 6, 7, KEY_LEFT,
|
|
9, 10, KEY_2, KEY_W, KEY_S, KEY_Z, KEY_RIGHT, 16,
|
|
17, 18, KEY_3, KEY_E, KEY_D, KEY_X, 23, KEY_UP,
|
|
25, 26, KEY_4, KEY_R, KEY_F, KEY_C, 31, 32,
|
|
33, KEY_O, KEY_5, KEY_T, KEY_G, KEY_V, KEY_DOWN, KEY_BACKSPACE,
|
|
KEY_P, KEY_0, KEY_6, KEY_Y, KEY_H, KEY_SPACE, 47, 48,
|
|
KEY_M, KEY_L, KEY_7, KEY_U, KEY_J, KEY_N, 55, KEY_ENTER,
|
|
KEY_LEFTSHIFT, KEY_9, KEY_8, KEY_I, KEY_K, KEY_B, 63, KEY_COMMA
|
|
};
|
|
|
|
|
|
#define KEYPAD_DELAY (50)
|
|
#define KEYPAD_ROW_GPIOCON S3C_GPK1CON
|
|
#define KEYPAD_ROW_GPIOPUD S3C_GPKPU
|
|
#define KEYPAD_COL_GPIOCON S3C_GPL0CON
|
|
#define KEYPAD_COL_GPIOPUD S3C_GPLPU
|
|
|
|
#define KEYPAD_ROW_GPIO_SET \
|
|
((readl(KEYPAD_ROW_GPIOCON) & ~(0xfffffff)) | 0x33333333)
|
|
|
|
#define KEYPAD_COL_GPIO_SET \
|
|
((readl(KEYPAD_COL_GPIOCON) & ~(0xfffffff)) | 0x33333333)
|
|
|
|
#define KEYPAD_ROW_GPIOPUD_DIS (readl(KEYPAD_ROW_GPIOPUD) & ~(0xffff<<16))
|
|
#define KEYPAD_COL_GPIOPUD_DIS (readl(KEYPAD_COL_GPIOPUD) & ~0xffff)
|
|
|
|
#define KEYIFCOL_CLEAR (readl(key_base+S3C_KEYIFCOL) & ~0xffff)
|
|
#define KEYIFCON_CLEAR (readl(key_base+S3C_KEYIFCON) & ~0x1f)
|
|
#define KEYIFFC_DIV (readl(key_base+S3C_KEYIFFC) | 0x1)
|
|
|
|
#else
|
|
#error "Not supported S3C Configuration!!"
|
|
#endif
|
|
|
|
struct s3c_keypad {
|
|
struct input_dev *dev;
|
|
int nr_rows;
|
|
int no_cols;
|
|
int total_keys;
|
|
int keycodes[MAX_KEYPAD_NR];
|
|
};
|
|
|
|
|
|
#endif /* _S3C_KEYIF_H_ */
|