static irqreturn_t pwrkey_release_irq(int irq, void *_pwrkey) { struct pmic8xxx_pwrkey *pwrkey = _pwrkey; input_report_key(pwrkey->pwr, KEY_POWER, 0); input_sync(pwrkey->pwr); #ifdef CONFIG_PANTECH_ERR_CRASH_LOGGING pantech_force_dump_key(KEY_POWER, 0); #endif return IRQ_HANDLED; }
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) input_event(input, type, button->code, button->value); } else { input_event(input, type, button->code, !!state); #ifdef CONFIG_PANTECH_ERR_CRASH_LOGGING pantech_force_dump_key(button->code,state); #endif } input_sync(input); }
static irqreturn_t pwrkey_press_irq(int irq, void *_pwrkey) { struct pmic8xxx_pwrkey *pwrkey = _pwrkey; if (pwrkey->press == true) { pwrkey->press = false; return IRQ_HANDLED; } else { pwrkey->press = true; } input_report_key(pwrkey->pwr, KEY_POWER, 1); input_sync(pwrkey->pwr); #ifdef CONFIG_PANTECH_ERR_CRASH_LOGGING pantech_force_dump_key(KEY_POWER, 1); #endif return IRQ_HANDLED; }