Lines Matching refs:hdev
62 struct hid_report *picolcd_report(int id, struct hid_device *hdev, int dir) in picolcd_report() argument
64 struct list_head *feature_report_list = &hdev->report_enum[dir].report_list; in picolcd_report()
71 hid_warn(hdev, "No report with id 0x%x found\n", id); in picolcd_report()
77 struct picolcd_pending *picolcd_send_and_wait(struct hid_device *hdev, in picolcd_send_and_wait() argument
80 struct picolcd_data *data = hid_get_drvdata(hdev); in picolcd_send_and_wait()
82 struct hid_report *report = picolcd_out_report(report_id, hdev); in picolcd_send_and_wait()
111 hid_hw_request(data->hdev, report, HID_REQ_SET_REPORT); in picolcd_send_and_wait()
189 static int picolcd_check_version(struct hid_device *hdev) in picolcd_check_version() argument
191 struct picolcd_data *data = hid_get_drvdata(hdev); in picolcd_check_version()
198 verinfo = picolcd_send_and_wait(hdev, REPORT_VERSION, NULL, 0); in picolcd_check_version()
200 hid_err(hdev, "no version response from PicoLCD\n"); in picolcd_check_version()
208 hid_info(hdev, "PicoLCD, bootloader version %d.%d\n", in picolcd_check_version()
211 hid_info(hdev, "PicoLCD, firmware version %d.%d\n", in picolcd_check_version()
215 hid_err(hdev, "confused, got unexpected version response from PicoLCD\n"); in picolcd_check_version()
225 int picolcd_reset(struct hid_device *hdev) in picolcd_reset() argument
227 struct picolcd_data *data = hid_get_drvdata(hdev); in picolcd_reset()
228 struct hid_report *report = picolcd_out_report(REPORT_RESET, hdev); in picolcd_reset()
236 if (hdev->product == USB_DEVICE_ID_PICOLCD_BOOTLOADER) in picolcd_reset()
245 hid_hw_request(hdev, report, HID_REQ_SET_REPORT); in picolcd_reset()
248 error = picolcd_check_version(hdev); in picolcd_reset()
284 report = picolcd_out_report(REPORT_EXIT_FLASHER, data->hdev); in picolcd_operation_mode_store()
289 report = picolcd_out_report(REPORT_EXIT_KEYBOARD, data->hdev); in picolcd_operation_mode_store()
304 hid_hw_request(data->hdev, report, HID_REQ_SET_REPORT); in picolcd_operation_mode_store()
343 static int picolcd_raw_event(struct hid_device *hdev, in picolcd_raw_event() argument
346 struct picolcd_data *data = hid_get_drvdata(hdev); in picolcd_raw_event()
354 hid_warn(hdev, "invalid size value (%d) for picolcd raw event (%d)\n", in picolcd_raw_event()
379 picolcd_debug_raw_event(data, hdev, report, raw_data, size); in picolcd_raw_event()
384 static int picolcd_suspend(struct hid_device *hdev, pm_message_t message) in picolcd_suspend() argument
389 picolcd_suspend_backlight(hid_get_drvdata(hdev)); in picolcd_suspend()
394 static int picolcd_resume(struct hid_device *hdev) in picolcd_resume() argument
397 ret = picolcd_resume_backlight(hid_get_drvdata(hdev)); in picolcd_resume()
403 static int picolcd_reset_resume(struct hid_device *hdev) in picolcd_reset_resume() argument
406 ret = picolcd_reset(hdev); in picolcd_reset_resume()
409 ret = picolcd_fb_reset(hid_get_drvdata(hdev), 0); in picolcd_reset_resume()
412 ret = picolcd_resume_lcd(hid_get_drvdata(hdev)); in picolcd_reset_resume()
415 ret = picolcd_resume_backlight(hid_get_drvdata(hdev)); in picolcd_reset_resume()
418 picolcd_leds_set(hid_get_drvdata(hdev)); in picolcd_reset_resume()
427 struct hid_device *hdev = data->hdev; in picolcd_init_keys() local
435 hid_err(hdev, "unsupported KEY_STATE report\n"); in picolcd_init_keys()
441 hid_err(hdev, "failed to allocate input device\n"); in picolcd_init_keys()
444 input_set_drvdata(idev, hdev); in picolcd_init_keys()
446 idev->name = hdev->name; in picolcd_init_keys()
447 idev->phys = hdev->phys; in picolcd_init_keys()
448 idev->uniq = hdev->uniq; in picolcd_init_keys()
449 idev->id.bustype = hdev->bus; in picolcd_init_keys()
450 idev->id.vendor = hdev->vendor; in picolcd_init_keys()
451 idev->id.product = hdev->product; in picolcd_init_keys()
452 idev->id.version = hdev->version; in picolcd_init_keys()
453 idev->dev.parent = &hdev->dev; in picolcd_init_keys()
463 hid_err(hdev, "error registering the input device\n"); in picolcd_init_keys()
480 static int picolcd_probe_lcd(struct hid_device *hdev, struct picolcd_data *data) in picolcd_probe_lcd() argument
485 error = picolcd_init_keys(data, picolcd_in_report(REPORT_KEY_STATE, hdev)); in picolcd_probe_lcd()
490 error = picolcd_init_cir(data, picolcd_in_report(REPORT_IR_DATA, hdev)); in picolcd_probe_lcd()
500 error = picolcd_init_lcd(data, picolcd_out_report(REPORT_CONTRAST, hdev)); in picolcd_probe_lcd()
505 error = picolcd_init_backlight(data, picolcd_out_report(REPORT_BRIGHTNESS, hdev)); in picolcd_probe_lcd()
510 error = picolcd_init_leds(data, picolcd_out_report(REPORT_LED_STATE, hdev)); in picolcd_probe_lcd()
514 picolcd_init_devfs(data, picolcd_out_report(REPORT_EE_READ, hdev), in picolcd_probe_lcd()
515 picolcd_out_report(REPORT_EE_WRITE, hdev), in picolcd_probe_lcd()
516 picolcd_out_report(REPORT_READ_MEMORY, hdev), in picolcd_probe_lcd()
517 picolcd_out_report(REPORT_WRITE_MEMORY, hdev), in picolcd_probe_lcd()
518 picolcd_out_report(REPORT_RESET, hdev)); in picolcd_probe_lcd()
530 static int picolcd_probe_bootloader(struct hid_device *hdev, struct picolcd_data *data) in picolcd_probe_bootloader() argument
533 picolcd_out_report(REPORT_BL_READ_MEMORY, hdev), in picolcd_probe_bootloader()
534 picolcd_out_report(REPORT_BL_WRITE_MEMORY, hdev), NULL); in picolcd_probe_bootloader()
538 static int picolcd_probe(struct hid_device *hdev, in picolcd_probe() argument
552 hid_err(hdev, "can't allocate space for Minibox PicoLCD device data\n"); in picolcd_probe()
559 data->hdev = hdev; in picolcd_probe()
561 if (hdev->product == USB_DEVICE_ID_PICOLCD_BOOTLOADER) in picolcd_probe()
563 hid_set_drvdata(hdev, data); in picolcd_probe()
566 error = hid_parse(hdev); in picolcd_probe()
568 hid_err(hdev, "device report parse failed\n"); in picolcd_probe()
572 error = hid_hw_start(hdev, 0); in picolcd_probe()
574 hid_err(hdev, "hardware start failed\n"); in picolcd_probe()
578 error = hid_hw_open(hdev); in picolcd_probe()
580 hid_err(hdev, "failed to open input interrupt pipe for key and IR events\n"); in picolcd_probe()
584 error = device_create_file(&hdev->dev, &dev_attr_operation_mode_delay); in picolcd_probe()
586 hid_err(hdev, "failed to create sysfs attributes\n"); in picolcd_probe()
590 error = device_create_file(&hdev->dev, &dev_attr_operation_mode); in picolcd_probe()
592 hid_err(hdev, "failed to create sysfs attributes\n"); in picolcd_probe()
597 error = picolcd_probe_bootloader(hdev, data); in picolcd_probe()
599 error = picolcd_probe_lcd(hdev, data); in picolcd_probe()
607 device_remove_file(&hdev->dev, &dev_attr_operation_mode); in picolcd_probe()
609 device_remove_file(&hdev->dev, &dev_attr_operation_mode_delay); in picolcd_probe()
611 hid_hw_close(hdev); in picolcd_probe()
613 hid_hw_stop(hdev); in picolcd_probe()
617 hid_set_drvdata(hdev, NULL); in picolcd_probe()
622 static void picolcd_remove(struct hid_device *hdev) in picolcd_remove() argument
624 struct picolcd_data *data = hid_get_drvdata(hdev); in picolcd_remove()
633 device_remove_file(&hdev->dev, &dev_attr_operation_mode); in picolcd_remove()
634 device_remove_file(&hdev->dev, &dev_attr_operation_mode_delay); in picolcd_remove()
635 hid_hw_close(hdev); in picolcd_remove()
636 hid_hw_stop(hdev); in picolcd_remove()
654 hid_set_drvdata(hdev, NULL); in picolcd_remove()