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*/
}
Beispiel #3
0
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);
		}
	}
}