Lines Matching defs:hdev

53 struct hid_report *picolcd_report(int id, struct hid_device *hdev, int dir)
55 struct list_head *feature_report_list = &hdev->report_enum[dir].report_list;
62 hid_warn(hdev, "No report with id 0x%x found\n", id);
68 struct picolcd_pending *picolcd_send_and_wait(struct hid_device *hdev,
71 struct picolcd_data *data = hid_get_drvdata(hdev);
73 struct hid_report *report = picolcd_out_report(report_id, hdev);
102 hid_hw_request(data->hdev, report, HID_REQ_SET_REPORT);
180 static int picolcd_check_version(struct hid_device *hdev)
182 struct picolcd_data *data = hid_get_drvdata(hdev);
189 verinfo = picolcd_send_and_wait(hdev, REPORT_VERSION, NULL, 0);
191 hid_err(hdev, "no version response from PicoLCD\n");
199 hid_info(hdev, "PicoLCD, bootloader version %d.%d\n",
202 hid_info(hdev, "PicoLCD, firmware version %d.%d\n",
206 hid_err(hdev, "confused, got unexpected version response from PicoLCD\n");
216 int picolcd_reset(struct hid_device *hdev)
218 struct picolcd_data *data = hid_get_drvdata(hdev);
219 struct hid_report *report = picolcd_out_report(REPORT_RESET, hdev);
227 if (hdev->product == USB_DEVICE_ID_PICOLCD_BOOTLOADER)
236 hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
239 error = picolcd_check_version(hdev);
274 report = picolcd_out_report(REPORT_EXIT_FLASHER, data->hdev);
277 report = picolcd_out_report(REPORT_EXIT_KEYBOARD, data->hdev);
288 hid_hw_request(data->hdev, report, HID_REQ_SET_REPORT);
327 static int picolcd_raw_event(struct hid_device *hdev,
330 struct picolcd_data *data = hid_get_drvdata(hdev);
337 hid_warn(hdev, "invalid size value (%d) for picolcd raw event (%d)\n",
362 picolcd_debug_raw_event(data, hdev, report, raw_data, size);
367 static int picolcd_suspend(struct hid_device *hdev, pm_message_t message)
372 picolcd_suspend_backlight(hid_get_drvdata(hdev));
377 static int picolcd_resume(struct hid_device *hdev)
380 ret = picolcd_resume_backlight(hid_get_drvdata(hdev));
386 static int picolcd_reset_resume(struct hid_device *hdev)
389 ret = picolcd_reset(hdev);
392 ret = picolcd_fb_reset(hid_get_drvdata(hdev), 0);
395 ret = picolcd_resume_lcd(hid_get_drvdata(hdev));
398 ret = picolcd_resume_backlight(hid_get_drvdata(hdev));
401 picolcd_leds_set(hid_get_drvdata(hdev));
410 struct hid_device *hdev = data->hdev;
418 hid_err(hdev, "unsupported KEY_STATE report\n");
424 hid_err(hdev, "failed to allocate input device\n");
427 input_set_drvdata(idev, hdev);
429 idev->name = hdev->name;
430 idev->phys = hdev->phys;
431 idev->uniq = hdev->uniq;
432 idev->id.bustype = hdev->bus;
433 idev->id.vendor = hdev->vendor;
434 idev->id.product = hdev->product;
435 idev->id.version = hdev->version;
436 idev->dev.parent = &hdev->dev;
446 hid_err(hdev, "error registering the input device\n");
463 static int picolcd_probe_lcd(struct hid_device *hdev, struct picolcd_data *data)
468 error = picolcd_init_keys(data, picolcd_in_report(REPORT_KEY_STATE, hdev));
473 error = picolcd_init_cir(data, picolcd_in_report(REPORT_IR_DATA, hdev));
478 error = picolcd_init_lcd(data, picolcd_out_report(REPORT_CONTRAST, hdev));
483 error = picolcd_init_backlight(data, picolcd_out_report(REPORT_BRIGHTNESS, hdev));
493 error = picolcd_init_leds(data, picolcd_out_report(REPORT_LED_STATE, hdev));
497 picolcd_init_devfs(data, picolcd_out_report(REPORT_EE_READ, hdev),
498 picolcd_out_report(REPORT_EE_WRITE, hdev),
499 picolcd_out_report(REPORT_READ_MEMORY, hdev),
500 picolcd_out_report(REPORT_WRITE_MEMORY, hdev),
501 picolcd_out_report(REPORT_RESET, hdev));
513 static int picolcd_probe_bootloader(struct hid_device *hdev, struct picolcd_data *data)
516 picolcd_out_report(REPORT_BL_READ_MEMORY, hdev),
517 picolcd_out_report(REPORT_BL_WRITE_MEMORY, hdev), NULL);
521 static int picolcd_probe(struct hid_device *hdev,
535 hid_err(hdev, "can't allocate space for Minibox PicoLCD device data\n");
541 data->hdev = hdev;
543 if (hdev->product == USB_DEVICE_ID_PICOLCD_BOOTLOADER)
545 hid_set_drvdata(hdev, data);
548 error = hid_parse(hdev);
550 hid_err(hdev, "device report parse failed\n");
554 error = hid_hw_start(hdev, 0);
556 hid_err(hdev, "hardware start failed\n");
560 error = hid_hw_open(hdev);
562 hid_err(hdev, "failed to open input interrupt pipe for key and IR events\n");
566 error = device_create_file(&hdev->dev, &dev_attr_operation_mode_delay);
568 hid_err(hdev, "failed to create sysfs attributes\n");
572 error = device_create_file(&hdev->dev, &dev_attr_operation_mode);
574 hid_err(hdev, "failed to create sysfs attributes\n");
579 error = picolcd_probe_bootloader(hdev, data);
581 error = picolcd_probe_lcd(hdev, data);
589 device_remove_file(&hdev->dev, &dev_attr_operation_mode);
591 device_remove_file(&hdev->dev, &dev_attr_operation_mode_delay);
593 hid_hw_close(hdev);
595 hid_hw_stop(hdev);
601 static void picolcd_remove(struct hid_device *hdev)
603 struct picolcd_data *data = hid_get_drvdata(hdev);
612 device_remove_file(&hdev->dev, &dev_attr_operation_mode);
613 device_remove_file(&hdev->dev, &dev_attr_operation_mode_delay);
614 hid_hw_close(hdev);
615 hid_hw_stop(hdev);