diff options
-rw-r--r-- | drivers/input/u5500_keypad.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/input/u5500_keypad.c b/drivers/input/u5500_keypad.c index 12375a215..4983105c7 100644 --- a/drivers/input/u5500_keypad.c +++ b/drivers/input/u5500_keypad.c @@ -66,7 +66,7 @@ static u16 key_code[KEYPAD_MAX_ROWS * KEYPAD_MAX_COLS] = { /*C*/ 0, 0, 0, 0, KEY_CAMERA, 0 , 0, 0, KEY_END, /*O*/ 0, 0, 0, 0, KEY_CAMERA_FOCUS, 0 , 0, 0, KEY_VOLUMEUP, /*L*/ 0, 0, 0, 0, KEY_MENU, KEY_SEND, 0, 0, KEY_VOLUMEDOWN, -/*L*/ 0, 0, 0, KEY_BACK, KEY_HOME, 0, 0, 0, +/*L*/ 0, 0, 0, 0, KEY_BACK, KEY_HOME, 0, 0, 0, /*U*/ 0, 0, 0, 0, 0, 0, 0, 0, 0, /*M*/ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -84,7 +84,7 @@ static void keypad_report(int row, u8 curr, u8 previous) u8 col = generic_ffs(changed) - 1; u8 press = curr & BIT_MASK(col); printf("ROW X COL = %d X %d pressed = %d - key_code= %d\n", - row, col, press, GET_INDEX_ROW_COL(row, col)); + row, col, press, key_code[GET_INDEX_ROW_COL(row, col)]); if (press) pressed_key |= key_code[GET_INDEX_ROW_COL(row, col)]; else @@ -170,6 +170,7 @@ void init_keypad(void) int fun_handler_cam2_back(void) { + printf("Soft reset !!!!! \n"); set_to_peripheral_boot_mode(); do_reset(NULL, 0, 0, NULL); return 1; @@ -224,6 +225,8 @@ int wait_for_keypress(ulong msec) pressed_key = 0;/* Reset KEY press */ ulong usec = msec * 1000;/* milli sec to micro sec */ + /* scan for key at one first */ + keypad_scan(); /* set bit 1 in KEYPAD_IRQ_EN register to enable IRQ */ writel(0x01, KEYPAD_IRQ_EN); /* For delays mor than 10 sec we need loop for every chunks of 10 sec */ |