HID: hid-mosart: support suspend/resume
The device has 2 modes. The first one is an emulation of a touchscreen by sending left and right button, and the second mode is the one used in dual-touch (sending trackingID, touch and else). In case of a suspend/resume, the device switch back to the first mode described above (with left and right buttons). This adds a hook in .reset_resume for the device to be switched to the correct mode (I just copied the code in mosart_probe). Signed-off-by: Benjamin Tissoires <benjamin.tissoires@enac.fr> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
Родитель
ad6d426702
Коммит
c25bcd3400
|
@ -234,6 +234,19 @@ static int mosart_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
|||
return ret;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static int mosart_reset_resume(struct hid_device *hdev)
|
||||
{
|
||||
struct hid_report_enum *re = hdev->report_enum
|
||||
+ HID_FEATURE_REPORT;
|
||||
struct hid_report *r = re->report_id_hash[7];
|
||||
|
||||
r->field[0]->value[0] = 0x02;
|
||||
usbhid_submit_report(hdev, r, USB_DIR_OUT);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void mosart_remove(struct hid_device *hdev)
|
||||
{
|
||||
hid_hw_stop(hdev);
|
||||
|
@ -262,6 +275,9 @@ static struct hid_driver mosart_driver = {
|
|||
.input_mapped = mosart_input_mapped,
|
||||
.usage_table = mosart_grabbed_usages,
|
||||
.event = mosart_event,
|
||||
#ifdef CONFIG_PM
|
||||
.reset_resume = mosart_reset_resume,
|
||||
#endif
|
||||
};
|
||||
|
||||
static int __init mosart_init(void)
|
||||
|
|
Загрузка…
Ссылка в новой задаче