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 (mi->flags & GPIOKPF_PRINT_UNMAPPED_KEYS){ 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); } input_report_key(kp->input_devs->dev[dev], keycode, pressed); #if defined(CONFIG_MACH_TREBON) || defined(CONFIG_MACH_GEIM) \ || defined(CONFIG_MACH_JENA) if (dump_enable_flag != 0) sec_check_crash_key(keycode, pressed); #endif } } }
static void gpio_keys_gpio_report_event(struct gpio_button_data *bdata) { const struct gpio_keys_button *button = bdata->button; struct input_dev *input = bdata->input; unsigned int type = button->type ?: EV_KEY; int state = (gpio_get_value_cansleep(button->gpio) ? 1 : 0) ^ button->active_low; if (type == EV_ABS) { if (state){ pr_info("[KEY] keycode : %d, %s, line %d\n", button->code, button->value ? "pressed" : "released", __LINE__); input_event(input, type, button->code, button->value); sec_key_pressed = (button->value); } } else { pr_info("[KEY] keycode : %d, %d, line %d\n", button->code, !!state , __LINE__); input_event(input, type, button->code, !!state); sec_key_pressed = (!!state); } input_sync(input); #if defined(CONFIG_SEC_DEBUG) && defined(CONFIG_SEC_DUMP) if (dump_enable_flag != 0) sec_check_crash_key(button->code, !!state); #endif /*CONFIG_SEC_DUMP*/ }
static void gpio_keys_report_event(struct gpio_button_data *bdata) { struct gpio_keys_button *button = bdata->button; struct input_dev *input = bdata->input; unsigned int type = button->type ?: EV_KEY; int state = (gpio_get_value_cansleep(button->gpio) ? 1 : 0) ^ button->active_low; printk(KERN_INFO"[KEY] key: %s gpio_keys_report_event state = %d\n", button->desc, state); bdata->key_state = !!state; input_event(input, type, button->code, !!state); input_sync(input); #if defined(CONFIG_MACH_TREBON) || defined(CONFIG_MACH_GEIM) \ || defined(CONFIG_MACH_JENA) if (dump_enable_flag != 0) sec_check_crash_key(button->code, state); #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 = mi->keymap[key_index]; unsigned short keycode = keyentry & MATRIX_KEY_MASK; unsigned short dev = keyentry >> MATRIX_CODE_BITS; // pr_info("[KEY TEST] %s, %d, key :%d, %d\n", __func__, __LINE__, keycode, pressed); if (pressed != test_bit(keycode, kp->input_devs->dev[dev]->key)) { if (keycode == KEY_RESERVED) { if (mi->flags & GPIOKPF_PRINT_UNMAPPED_KEYS){ 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 (dump_enable_flag != 0) ///pr_info("[KEY] keycode: %d, %s\n", keycode, pressed ? "pressed" : "released"); printk("[KEY] keycode: %d, %s\n", keycode, pressed ? "pressed" : "released"); input_report_key(kp->input_devs->dev[dev], keycode, pressed); sec_key_pressed = pressed; if (dump_enable_flag != 0) sec_check_crash_key(keycode, pressed); } } }