Lines Matching refs:bdata

119 static void gpio_keys_disable_button(struct gpio_button_data *bdata)  in gpio_keys_disable_button()  argument
121 if (!bdata->disabled) { in gpio_keys_disable_button()
125 disable_irq(bdata->irq); in gpio_keys_disable_button()
127 if (gpio_is_valid(bdata->button->gpio)) in gpio_keys_disable_button()
128 cancel_delayed_work_sync(&bdata->work); in gpio_keys_disable_button()
130 del_timer_sync(&bdata->release_timer); in gpio_keys_disable_button()
132 bdata->disabled = true; in gpio_keys_disable_button()
146 static void gpio_keys_enable_button(struct gpio_button_data *bdata) in gpio_keys_enable_button() argument
148 if (bdata->disabled) { in gpio_keys_enable_button()
149 enable_irq(bdata->irq); in gpio_keys_enable_button()
150 bdata->disabled = false; in gpio_keys_enable_button()
182 struct gpio_button_data *bdata = &ddata->data[i]; in gpio_keys_attr_show_helper() local
184 if (bdata->button->type != type) in gpio_keys_attr_show_helper()
187 if (only_disabled && !bdata->disabled) in gpio_keys_attr_show_helper()
190 __set_bit(bdata->button->code, bits); in gpio_keys_attr_show_helper()
230 struct gpio_button_data *bdata = &ddata->data[i]; in gpio_keys_attr_store_helper() local
232 if (bdata->button->type != type) in gpio_keys_attr_store_helper()
235 if (test_bit(bdata->button->code, bits) && in gpio_keys_attr_store_helper()
236 !bdata->button->can_disable) { in gpio_keys_attr_store_helper()
245 struct gpio_button_data *bdata = &ddata->data[i]; in gpio_keys_attr_store_helper() local
247 if (bdata->button->type != type) in gpio_keys_attr_store_helper()
250 if (test_bit(bdata->button->code, bits)) in gpio_keys_attr_store_helper()
251 gpio_keys_disable_button(bdata); in gpio_keys_attr_store_helper()
253 gpio_keys_enable_button(bdata); in gpio_keys_attr_store_helper()
334 static void gpio_keys_gpio_report_event(struct gpio_button_data *bdata) in gpio_keys_gpio_report_event() argument
336 const struct gpio_keys_button *button = bdata->button; in gpio_keys_gpio_report_event()
337 struct input_dev *input = bdata->input; in gpio_keys_gpio_report_event()
352 struct gpio_button_data *bdata = in gpio_keys_gpio_work_func() local
355 gpio_keys_gpio_report_event(bdata); in gpio_keys_gpio_work_func()
357 if (bdata->button->wakeup) in gpio_keys_gpio_work_func()
358 pm_relax(bdata->input->dev.parent); in gpio_keys_gpio_work_func()
363 struct gpio_button_data *bdata = dev_id; in gpio_keys_gpio_isr() local
365 BUG_ON(irq != bdata->irq); in gpio_keys_gpio_isr()
367 if (bdata->button->wakeup) in gpio_keys_gpio_isr()
368 pm_stay_awake(bdata->input->dev.parent); in gpio_keys_gpio_isr()
371 &bdata->work, in gpio_keys_gpio_isr()
372 msecs_to_jiffies(bdata->software_debounce)); in gpio_keys_gpio_isr()
379 struct gpio_button_data *bdata = (struct gpio_button_data *)_data; in gpio_keys_irq_timer() local
380 struct input_dev *input = bdata->input; in gpio_keys_irq_timer()
383 spin_lock_irqsave(&bdata->lock, flags); in gpio_keys_irq_timer()
384 if (bdata->key_pressed) { in gpio_keys_irq_timer()
385 input_event(input, EV_KEY, bdata->button->code, 0); in gpio_keys_irq_timer()
387 bdata->key_pressed = false; in gpio_keys_irq_timer()
389 spin_unlock_irqrestore(&bdata->lock, flags); in gpio_keys_irq_timer()
394 struct gpio_button_data *bdata = dev_id; in gpio_keys_irq_isr() local
395 const struct gpio_keys_button *button = bdata->button; in gpio_keys_irq_isr()
396 struct input_dev *input = bdata->input; in gpio_keys_irq_isr()
399 BUG_ON(irq != bdata->irq); in gpio_keys_irq_isr()
401 spin_lock_irqsave(&bdata->lock, flags); in gpio_keys_irq_isr()
403 if (!bdata->key_pressed) { in gpio_keys_irq_isr()
404 if (bdata->button->wakeup) in gpio_keys_irq_isr()
405 pm_wakeup_event(bdata->input->dev.parent, 0); in gpio_keys_irq_isr()
410 if (!bdata->release_delay) { in gpio_keys_irq_isr()
416 bdata->key_pressed = true; in gpio_keys_irq_isr()
419 if (bdata->release_delay) in gpio_keys_irq_isr()
420 mod_timer(&bdata->release_timer, in gpio_keys_irq_isr()
421 jiffies + msecs_to_jiffies(bdata->release_delay)); in gpio_keys_irq_isr()
423 spin_unlock_irqrestore(&bdata->lock, flags); in gpio_keys_irq_isr()
429 struct gpio_button_data *bdata = data; in gpio_keys_quiesce_key() local
431 if (gpio_is_valid(bdata->button->gpio)) in gpio_keys_quiesce_key()
432 cancel_delayed_work_sync(&bdata->work); in gpio_keys_quiesce_key()
434 del_timer_sync(&bdata->release_timer); in gpio_keys_quiesce_key()
439 struct gpio_button_data *bdata, in gpio_keys_setup_key() argument
449 bdata->input = input; in gpio_keys_setup_key()
450 bdata->button = button; in gpio_keys_setup_key()
451 spin_lock_init(&bdata->lock); in gpio_keys_setup_key()
468 bdata->software_debounce = in gpio_keys_setup_key()
473 bdata->irq = button->irq; in gpio_keys_setup_key()
483 bdata->irq = irq; in gpio_keys_setup_key()
486 INIT_DELAYED_WORK(&bdata->work, gpio_keys_gpio_work_func); in gpio_keys_setup_key()
496 bdata->irq = button->irq; in gpio_keys_setup_key()
503 bdata->release_delay = button->debounce_interval; in gpio_keys_setup_key()
504 setup_timer(&bdata->release_timer, in gpio_keys_setup_key()
505 gpio_keys_irq_timer, (unsigned long)bdata); in gpio_keys_setup_key()
517 error = devm_add_action(&pdev->dev, gpio_keys_quiesce_key, bdata); in gpio_keys_setup_key()
532 error = devm_request_any_context_irq(&pdev->dev, bdata->irq, in gpio_keys_setup_key()
533 isr, irqflags, desc, bdata); in gpio_keys_setup_key()
536 bdata->irq, error); in gpio_keys_setup_key()
549 struct gpio_button_data *bdata = &ddata->data[i]; in gpio_keys_report_state() local
550 if (gpio_is_valid(bdata->button->gpio)) in gpio_keys_report_state()
551 gpio_keys_gpio_report_event(bdata); in gpio_keys_report_state()
743 struct gpio_button_data *bdata = &ddata->data[i]; in gpio_keys_probe() local
745 error = gpio_keys_setup_key(pdev, input, bdata, button); in gpio_keys_probe()
794 struct gpio_button_data *bdata = &ddata->data[i]; in gpio_keys_suspend() local
795 if (bdata->button->wakeup) in gpio_keys_suspend()
796 enable_irq_wake(bdata->irq); in gpio_keys_suspend()
817 struct gpio_button_data *bdata = &ddata->data[i]; in gpio_keys_resume() local
818 if (bdata->button->wakeup) in gpio_keys_resume()
819 disable_irq_wake(bdata->irq); in gpio_keys_resume()