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_keys_getval(button->gpio) ? 1 : 0) ^ button->active_low;

	if (type == EV_ABS) {
		if (state)
			input_event(input, type, button->code, button->value);
	} else {
		input_event(input, type, button->code, !!state);
	}
	input_sync(input);
}
Exemple #2
0
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_keys_getval(button->gpio) ? 1 : 0) ^ button->active_low;

	printk(KERN_INFO "Keycode:%d, state:%d, type:%d\n", button->code, state, type);

	if (type == EV_ABS) {
		if (state)
			input_event(input, type, button->code, button->value);
	} else {
		pr_info("%s:%d. type = %d, keycode = %d.\n", __FUNCTION__, __LINE__, type, button->code);
		input_event(input, type, button->code, !!state);
	}
	input_sync(input);
}
static irqreturn_t gpio_keys_gpio_isr(int irq, void *dev_id)
{
	struct gpio_button_data *bdata = dev_id;
	const struct gpio_keys_button *button;
	struct input_dev *input;
	unsigned int type;
	int state;

	BUG_ON(!bdata);
	BUG_ON(!bdata->button);
	BUG_ON(irq != bdata->irq);

	button = bdata->button;
	input = bdata->input;
	state = (gpio_keys_getval(button->gpio) ? 1 : 0) ^ button->active_low;

	if (bdata->ddata->force_trigger && !state) {
		type = button->type ?: EV_KEY;
		input_event(input, type, button->code, !state);
		bdata->ddata->force_trigger = 0;
	}
Exemple #4
0
static irqreturn_t gpio_keys_gpio_isr(int irq, void *dev_id)
{
	struct gpio_button_data *bdata = dev_id;
	struct gpio_keys_button *button;
	struct input_dev *input;
	unsigned int type;
	int state;

	BUG_ON(!bdata);
	pr_info("%s:%d. irq = %d, key_pressed = %d, gpio = %d.\n", __FUNCTION__, __LINE__, bdata->irq, bdata->key_pressed, bdata->button->gpio);

	BUG_ON(!bdata->button);
	BUG_ON(irq != bdata->irq);

	button = bdata->button;
	input = bdata->input;
	state = (gpio_keys_getval(button->gpio) ? 1 : 0) ^ button->active_low;

	if (bdata->ddata->force_trigger && !state) {
		type = button->type ?: EV_KEY;
		input_event(input, type, button->code, !state);
		bdata->ddata->force_trigger = 0;
	}