aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/hid.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 261c713d4842..7071eb3d36c7 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -663,6 +663,7 @@ struct hid_driver {
663 * @parse: this method is called only once to parse the device data, 663 * @parse: this method is called only once to parse the device data,
664 * shouldn't allocate anything to not leak memory 664 * shouldn't allocate anything to not leak memory
665 * @request: send report request to device (e.g. feature report) 665 * @request: send report request to device (e.g. feature report)
666 * @wait: wait for buffered io to complete (send/recv reports)
666 */ 667 */
667struct hid_ll_driver { 668struct hid_ll_driver {
668 int (*start)(struct hid_device *hdev); 669 int (*start)(struct hid_device *hdev);
@@ -681,6 +682,8 @@ struct hid_ll_driver {
681 void (*request)(struct hid_device *hdev, 682 void (*request)(struct hid_device *hdev,
682 struct hid_report *report, int reqtype); 683 struct hid_report *report, int reqtype);
683 684
685 int (*wait)(struct hid_device *hdev);
686
684}; 687};
685 688
686#define PM_HINT_FULLON 1<<5 689#define PM_HINT_FULLON 1<<5
@@ -903,6 +906,17 @@ static inline void hid_hw_request(struct hid_device *hdev,
903 hdev->ll_driver->request(hdev, report, reqtype); 906 hdev->ll_driver->request(hdev, report, reqtype);
904} 907}
905 908
909/**
910 * hid_hw_wait - wait for buffered io to complete
911 *
912 * @hdev: hid device
913 */
914static inline void hid_hw_wait(struct hid_device *hdev)
915{
916 if (hdev->ll_driver->wait)
917 hdev->ll_driver->wait(hdev);
918}
919
906int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size, 920int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size,
907 int interrupt); 921 int interrupt);
908 922