Lines Matching refs:dev

33 		dev_printk(KERN_DEBUG, &ir->dev->intf->dev,		\
50 struct em28xx *dev; member
197 struct em28xx *dev = ir->dev; in default_polling_getkey() local
205 rc = dev->em28xx_read_reg_req_len(dev, 0, EM28XX_R45_IR, in default_polling_getkey()
240 struct em28xx *dev = ir->dev; in em2874_polling_getkey() local
248 rc = dev->em28xx_read_reg_req_len(dev, 0, EM2874_R51_IR, in em2874_polling_getkey()
340 if (ir->dev->chip_id == CHIP_ID_EM2874 || in em28xx_ir_handle_key()
341 ir->dev->chip_id == CHIP_ID_EM2884) in em28xx_ir_handle_key()
387 struct em28xx *dev = ir->dev; in em2860_ir_change_protocol() local
391 dev->board.xclk |= EM28XX_XCLK_IR_RC5_MODE; in em2860_ir_change_protocol()
395 dev->board.xclk &= ~EM28XX_XCLK_IR_RC5_MODE; in em2860_ir_change_protocol()
404 em28xx_write_reg_bits(dev, EM28XX_R0F_XCLK, dev->board.xclk, in em2860_ir_change_protocol()
415 struct em28xx *dev = ir->dev; in em2874_ir_change_protocol() local
420 dev->board.xclk |= EM28XX_XCLK_IR_RC5_MODE; in em2874_ir_change_protocol()
424 dev->board.xclk &= ~EM28XX_XCLK_IR_RC5_MODE; in em2874_ir_change_protocol()
429 dev->board.xclk |= EM28XX_XCLK_IR_RC5_MODE; in em2874_ir_change_protocol()
439 em28xx_write_regs(dev, EM2874_R50_IR_CONFIG, &ir_config, 1); in em2874_ir_change_protocol()
440 em28xx_write_reg_bits(dev, EM28XX_R0F_XCLK, dev->board.xclk, in em2874_ir_change_protocol()
451 struct em28xx *dev = ir->dev; in em28xx_ir_change_protocol() local
454 switch (dev->chip_id) { in em28xx_ir_change_protocol()
464 dev_err(&ir->dev->intf->dev, in em28xx_ir_change_protocol()
466 dev->chip_id); in em28xx_ir_change_protocol()
471 static int em28xx_probe_i2c_ir(struct em28xx *dev) in em28xx_probe_i2c_ir() argument
484 if (i2c_probe_func_quick_read(&dev->i2c_adap[dev->def_i2c_bus], in em28xx_probe_i2c_ir()
499 struct em28xx *dev = in em28xx_query_buttons() local
507 for (i = 0; i < dev->num_button_polling_addresses; i++) { in em28xx_query_buttons()
509 regval = em28xx_read_reg(dev, dev->button_polling_addresses[i]); in em28xx_query_buttons()
514 while (dev->board.buttons[j].role >= 0 && in em28xx_query_buttons()
515 dev->board.buttons[j].role < EM28XX_NUM_BUTTON_ROLES) { in em28xx_query_buttons()
518 button = &dev->board.buttons[j]; in em28xx_query_buttons()
521 if (button->reg_r != dev->button_polling_addresses[i]) { in em28xx_query_buttons()
527 was_pressed = dev->button_polling_last_values[i] in em28xx_query_buttons()
535 em28xx_write_reg(dev, button->reg_clearing, in em28xx_query_buttons()
546 input_report_key(dev->sbutton_input_dev, in em28xx_query_buttons()
549 input_report_key(dev->sbutton_input_dev, in em28xx_query_buttons()
553 led = em28xx_find_led(dev, in em28xx_query_buttons()
557 em28xx_toggle_reg_bits(dev, in em28xx_query_buttons()
568 dev->button_polling_last_values[i] = regval; in em28xx_query_buttons()
571 schedule_delayed_work(&dev->buttons_query_work, in em28xx_query_buttons()
572 msecs_to_jiffies(dev->button_polling_interval)); in em28xx_query_buttons()
575 static int em28xx_register_snapshot_button(struct em28xx *dev) in em28xx_register_snapshot_button() argument
577 struct usb_device *udev = interface_to_usbdev(dev->intf); in em28xx_register_snapshot_button()
581 dev_info(&dev->intf->dev, "Registering snapshot button...\n"); in em28xx_register_snapshot_button()
586 usb_make_path(udev, dev->snapshot_button_path, in em28xx_register_snapshot_button()
587 sizeof(dev->snapshot_button_path)); in em28xx_register_snapshot_button()
588 strlcat(dev->snapshot_button_path, "/sbutton", in em28xx_register_snapshot_button()
589 sizeof(dev->snapshot_button_path)); in em28xx_register_snapshot_button()
592 input_dev->phys = dev->snapshot_button_path; in em28xx_register_snapshot_button()
598 input_dev->dev.parent = &dev->intf->dev; in em28xx_register_snapshot_button()
602 dev_err(&dev->intf->dev, "input_register_device failed\n"); in em28xx_register_snapshot_button()
607 dev->sbutton_input_dev = input_dev; in em28xx_register_snapshot_button()
611 static void em28xx_init_buttons(struct em28xx *dev) in em28xx_init_buttons() argument
616 dev->button_polling_interval = EM28XX_BUTTONS_DEBOUNCED_QUERY_INTERVAL; in em28xx_init_buttons()
617 while (dev->board.buttons[i].role >= 0 && in em28xx_init_buttons()
618 dev->board.buttons[i].role < EM28XX_NUM_BUTTON_ROLES) { in em28xx_init_buttons()
619 const struct em28xx_button *button = &dev->board.buttons[i]; in em28xx_init_buttons()
623 for (j = 0; j < dev->num_button_polling_addresses; j++) { in em28xx_init_buttons()
624 if (button->reg_r == dev->button_polling_addresses[j]) { in em28xx_init_buttons()
630 if (addr_new && dev->num_button_polling_addresses in em28xx_init_buttons()
638 if (em28xx_register_snapshot_button(dev) < 0) in em28xx_init_buttons()
642 if (!em28xx_find_led(dev, EM28XX_LED_ILLUMINATION)) { in em28xx_init_buttons()
643 dev_err(&dev->intf->dev, in em28xx_init_buttons()
650 unsigned int index = dev->num_button_polling_addresses; in em28xx_init_buttons()
652 dev->button_polling_addresses[index] = button->reg_r; in em28xx_init_buttons()
653 dev->num_button_polling_addresses++; in em28xx_init_buttons()
657 dev->button_polling_interval = in em28xx_init_buttons()
665 if (dev->num_button_polling_addresses) { in em28xx_init_buttons()
666 memset(dev->button_polling_last_values, 0, in em28xx_init_buttons()
668 schedule_delayed_work(&dev->buttons_query_work, in em28xx_init_buttons()
669 msecs_to_jiffies(dev->button_polling_interval)); in em28xx_init_buttons()
673 static void em28xx_shutdown_buttons(struct em28xx *dev) in em28xx_shutdown_buttons() argument
676 cancel_delayed_work_sync(&dev->buttons_query_work); in em28xx_shutdown_buttons()
678 dev->num_button_polling_addresses = 0; in em28xx_shutdown_buttons()
680 if (dev->sbutton_input_dev) { in em28xx_shutdown_buttons()
681 dev_info(&dev->intf->dev, "Deregistering snapshot button\n"); in em28xx_shutdown_buttons()
682 input_unregister_device(dev->sbutton_input_dev); in em28xx_shutdown_buttons()
683 dev->sbutton_input_dev = NULL; in em28xx_shutdown_buttons()
687 static int em28xx_ir_init(struct em28xx *dev) in em28xx_ir_init() argument
689 struct usb_device *udev = interface_to_usbdev(dev->intf); in em28xx_ir_init()
696 if (dev->is_audio_only) { in em28xx_ir_init()
701 kref_get(&dev->ref); in em28xx_ir_init()
702 INIT_DELAYED_WORK(&dev->buttons_query_work, em28xx_query_buttons); in em28xx_ir_init()
704 if (dev->board.buttons) in em28xx_ir_init()
705 em28xx_init_buttons(dev); in em28xx_ir_init()
707 if (dev->board.has_ir_i2c) { in em28xx_ir_init()
708 i2c_rc_dev_addr = em28xx_probe_i2c_ir(dev); in em28xx_ir_init()
710 dev->board.has_ir_i2c = 0; in em28xx_ir_init()
711 dev_warn(&dev->intf->dev, in em28xx_ir_init()
718 if (!dev->board.ir_codes && !dev->board.has_ir_i2c) { in em28xx_ir_init()
720 dev_warn(&dev->intf->dev, in em28xx_ir_init()
725 dev_info(&dev->intf->dev, "Registering input extension\n"); in em28xx_ir_init()
735 ir->dev = dev; in em28xx_ir_init()
736 dev->ir = ir; in em28xx_ir_init()
743 if (dev->board.has_ir_i2c) { /* external i2c device */ in em28xx_ir_init()
744 switch (dev->model) { in em28xx_ir_init()
771 ir->i2c_client->adapter = &ir->dev->i2c_adap[dev->def_i2c_bus]; in em28xx_ir_init()
776 switch (dev->chip_id) { in em28xx_ir_init()
798 rc->map_name = dev->board.ir_codes; in em28xx_ir_init()
813 rc->device_name = em28xx_boards[dev->model].name; in em28xx_ir_init()
816 rc->dev.parent = &dev->intf->dev; in em28xx_ir_init()
824 dev_info(&dev->intf->dev, "Input extension successfully initialized\n"); in em28xx_ir_init()
830 dev->ir = NULL; in em28xx_ir_init()
834 em28xx_shutdown_buttons(dev); in em28xx_ir_init()
838 static int em28xx_ir_fini(struct em28xx *dev) in em28xx_ir_fini() argument
840 struct em28xx_IR *ir = dev->ir; in em28xx_ir_fini()
842 if (dev->is_audio_only) { in em28xx_ir_fini()
847 dev_info(&dev->intf->dev, "Closing input extension\n"); in em28xx_ir_fini()
849 em28xx_shutdown_buttons(dev); in em28xx_ir_fini()
861 dev->ir = NULL; in em28xx_ir_fini()
864 kref_put(&dev->ref, em28xx_free_device); in em28xx_ir_fini()
869 static int em28xx_ir_suspend(struct em28xx *dev) in em28xx_ir_suspend() argument
871 struct em28xx_IR *ir = dev->ir; in em28xx_ir_suspend()
873 if (dev->is_audio_only) in em28xx_ir_suspend()
876 dev_info(&dev->intf->dev, "Suspending input extension\n"); in em28xx_ir_suspend()
879 cancel_delayed_work_sync(&dev->buttons_query_work); in em28xx_ir_suspend()
888 static int em28xx_ir_resume(struct em28xx *dev) in em28xx_ir_resume() argument
890 struct em28xx_IR *ir = dev->ir; in em28xx_ir_resume()
892 if (dev->is_audio_only) in em28xx_ir_resume()
895 dev_info(&dev->intf->dev, "Resuming input extension\n"); in em28xx_ir_resume()
902 if (dev->num_button_polling_addresses) in em28xx_ir_resume()
903 schedule_delayed_work(&dev->buttons_query_work, in em28xx_ir_resume()
904 msecs_to_jiffies(dev->button_polling_interval)); in em28xx_ir_resume()