static void report_key(struct gpio_kp *kp, int key_index, int out, int in) { struct gpio_event_matrix_info *mi = kp->keypad_info; int pressed = test_bit(key_index, kp->keys_pressed); unsigned short keyentry = mi->keymap[key_index]; unsigned short keycode = keyentry & MATRIX_KEY_MASK; unsigned short dev = keyentry >> MATRIX_CODE_BITS; if (pressed != test_bit(keycode, kp->input_devs->dev[dev]->key)) { if (keycode == KEY_RESERVED) { #if defined(CONFIG_MACH_EUROPA) if ((mi->flags & GPIOKPF_PRINT_UNMAPPED_KEYS) && (board_hw_revision < 4)) #elif defined(CONFIG_MACH_CALLISTO) if ((mi->flags & GPIOKPF_PRINT_UNMAPPED_KEYS) && (board_hw_revision < 3)) #else if (mi->flags & GPIOKPF_PRINT_UNMAPPED_KEYS) #endif pr_info("gpiomatrix: unmapped key, %d-%d " "(%d-%d) changed to %d\n", out, in, mi->output_gpios[out], mi->input_gpios[in], pressed); } else { if (mi->flags & GPIOKPF_PRINT_MAPPED_KEYS) pr_info("gpiomatrix: key %x, %d-%d (%d-%d) " "changed to %d\n", keycode, out, in, mi->output_gpios[out], mi->input_gpios[in], pressed); #if defined(CONFIG_MACH_EUROPA) || defined(CONFIG_MACH_CALLISTO) || defined(CONFIG_MACH_COOPER) || defined(CONFIG_MACH_BENI) || defined(CONFIG_MACH_TASS) || defined(CONFIG_MACH_LUCAS) if(!power_off_done) { #if defined(CONFIG_MACH_CALLISTO) if ((keycode == KEY_LEFTALT) && pressed) alt_key_pressed = 1; if ((keycode == KEY_LEFTALT) && !pressed) alt_key_pressed = 0; if ((alt_key_pressed) && (keycode == KEY_LEFT)) printk("key (Alt + Down) pressed\n"); else if ((alt_key_pressed) && (keycode == KEY_RIGHT)) printk("key (Alt + Up) pressed\n"); else { #endif input_report_key(kp->input_devs->dev[dev], keycode, pressed); #if !defined(CONFIG_MACH_JUNO_SKT) && !defined(CONFIG_MACH_JUNO_KT) #if defined(CONFIG_MACH_COOPER) || defined(CONFIG_MACH_BENI) || defined(CONFIG_MACH_TASS) if(keycode == KEY_HOME && pressed == 1) TSP_forced_release_forkey(); #endif #endif #if defined(CONFIG_MACH_CALLISTO) || defined(CONFIG_MACH_COOPER) || defined(CONFIG_MACH_BENI) || defined(CONFIG_MACH_TASS) || defined(CONFIG_MACH_LUCAS) #ifdef CONFIG_KERNEL_DEBUG_SEC printk("key event (keycode:%d, pressed:%d), w=%d\n", keycode, pressed, lcd_on_state_for_debug); // sec: sm.kim #endif #if defined(CONFIG_MACH_COOPER_BASE_KOR) if(pressed ==1 && (keycode == KEY_VOLUMEUP || keycode == KEY_VOLUMEDOWN)) { key_press_count = 0; long_key_state = LONG_KEY_CHECK_ACTIVE; } else { key_press_count = 0; long_key_state = LONG_KEY_CHECK_INACTIVE; } #endif #ifdef ATH_CLAIM_RELEASE_WAR if(!lcd_on_state_for_debug) ath_debug_sdio_claimer(); #endif #else #ifdef CONFIG_KERNEL_DEBUG_SEC printk("key event (keycode:%d, pressed:%d), wlan_debug_step=%d\n", keycode, pressed, wlan_debug_step); // sec: sm.kim #endif #endif #if defined(CONFIG_MACH_CALLISTO) } #endif key_pressed = pressed; } else { printk("power_off_done : %d\n", power_off_done); } #else input_report_key(kp->input_devs->dev[dev], keycode, pressed); // printk("key event (keycode:%d, pressed:%d), wlan_debug_step=%d\n", // keycode, pressed, wlan_debug_step); // sec: sm.kim #ifdef CONFIG_KERNEL_DEBUG_SEC printk("key event (keycode:%d, pressed:%d)\n", keycode, pressed); //sec: sm.kim #endif #endif } } }
static void report_key(struct gpio_kp *kp, int key_index, int out, int in) { struct gpio_event_matrix_info *mi = kp->keypad_info; int pressed = test_bit(key_index, kp->keys_pressed); unsigned short keyentry = KEY_HW_REV(key_index); //mi->keymap[key_index]; unsigned short keycode = keyentry & MATRIX_KEY_MASK; unsigned short dev = keyentry >> MATRIX_CODE_BITS; if (pressed != test_bit(keycode, kp->input_devs->dev[dev]->key)) { if (keycode == KEY_RESERVED) { #if defined(CONFIG_MACH_EUROPA) if ((mi->flags & GPIOKPF_PRINT_UNMAPPED_KEYS) && (board_hw_revision < 4)) #elif defined(CONFIG_MACH_CALLISTO) if ((mi->flags & GPIOKPF_PRINT_UNMAPPED_KEYS) && (board_hw_revision < 3)) #else if (mi->flags & GPIOKPF_PRINT_UNMAPPED_KEYS) #endif pr_info("gpiomatrix: unmapped key, %d-%d " "(%d-%d) changed to %d\n", out, in, mi->output_gpios[out], mi->input_gpios[in], pressed); } else { if(lcd_wake_flag==0) { if(keycode==KEY_MENU || keycode==KEY_BACK) { printk("lcd is off, so do not send menu or back key\n"); return ; } } if (mi->flags & GPIOKPF_PRINT_MAPPED_KEYS) pr_info("gpiomatrix: key %x, %d-%d (%d-%d) " "changed to %d\n", keycode, out, in, mi->output_gpios[out], mi->input_gpios[in], pressed); #if defined(CONFIG_MACH_EUROPA) || defined(CONFIG_MACH_CALLISTO) || defined(CONFIG_MACH_COOPER) || defined(CONFIG_MACH_BENI) || defined(CONFIG_MACH_TASS) || defined(CONFIG_MACH_LUCAS) if(!power_off_done) { #if defined(CONFIG_MACH_LUCAS) if ((keycode == KEY_LEFTALT) && pressed) alt_key_pressed = 1; if ((keycode == KEY_LEFTALT) && !pressed) alt_key_pressed = 0; if ((alt_key_pressed) && (keycode == KEY_LEFT)) printk("key (Alt + LEFT) pressed\n"); else if ((alt_key_pressed) && (keycode == KEY_RIGHT)) printk("key (Alt + RIGHT) pressed\n"); else if ((alt_key_pressed) && (keycode == KEY_DOWN)) printk("key (Alt + DOWN) pressed\n"); else { #elif defined(CONFIG_MACH_CALLISTO) if ((keycode == KEY_LEFTALT) && pressed) alt_key_pressed = 1; if ((keycode == KEY_LEFTALT) && !pressed) alt_key_pressed = 0; if ((alt_key_pressed) && (keycode == KEY_LEFT)) printk("key (Alt + Down) pressed\n"); else if ((alt_key_pressed) && (keycode == KEY_RIGHT)) printk("key (Alt + Up) pressed\n"); else { #endif input_report_key(kp->input_devs->dev[dev], keycode, pressed); #ifdef SLEEP_STATE_SKIP_LONGKEY if((pressed == 1) && (keycode == KEY_END || keycode == KEY_VOLUMEUP || keycode == KEY_VOLUMEDOWN/* || keycode == KEY_HOME*/)) { key_press_count = 0; current_pressed_key = keycode; long_key_state = LONG_KEY_CHECK_ACTIVE; } else { key_press_count = 0; long_key_state = LONG_KEY_CHECK_INACTIVE; } #endif #if defined(CONFIG_MACH_COOPER) || defined(CONFIG_MACH_BENI) || defined(CONFIG_MACH_TASS) #if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4) || defined(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) if(keycode == KEY_HOME && pressed == 1) TSP_forced_release_forkey(); #endif #endif #if defined(CONFIG_MACH_CALLISTO) || defined(CONFIG_MACH_COOPER) || defined(CONFIG_MACH_BENI) || defined(CONFIG_MACH_TASS) || defined(CONFIG_MACH_LUCAS) #if !defined(CONFIG_MACH_TOTORO_CTC) // for google security auth printk("key event (keycode:%d, pressed:%d), w=%d\n", keycode, pressed, lcd_on_state_for_debug); // sec: sm.kim #endif // hsil // if (keycode == 115) // { // volup_cnt++; // if (volup_cnt > 20) // enter_suspend = 1; // } // if (keycode == 114) // { // volup_cnt = 0; // enter_suspend = 0; // } #ifdef ATH_CLAIM_RELEASE_WAR if(!lcd_on_state_for_debug) ath_debug_sdio_claimer(); #endif #else printk("key event (keycode:%d, pressed:%d), wlan_debug_step=%d\n", keycode, pressed, wlan_debug_step); // sec: sm.kim #endif #if defined(CONFIG_MACH_LUCAS) || defined(CONFIG_MACH_CALLISTO) } #endif key_pressed = pressed; } else { printk("power_off_done : %d\n", power_off_done); } #else input_report_key(kp->input_devs->dev[dev], keycode, pressed); // printk("key event (keycode:%d, pressed:%d), wlan_debug_step=%d\n", // keycode, pressed, wlan_debug_step); // sec: sm.kim printk("key event (keycode:%d, pressed:%d)\n", keycode, pressed); //sec: sm.kim #endif } } }