HID: logitech-dj: Implement may_wakeup ll-driver callback
authorHans de Goede <hdegoede@redhat.com>
Sat, 29 May 2021 15:14:23 +0000 (17:14 +0200)
committerJiri Kosina <jkosina@suse.cz>
Fri, 25 Jun 2021 12:02:58 +0000 (14:02 +0200)
Without a ll-driver callback hid_hw_may_wakeup() will return:
device_may_wakeup(hdev->dev.parent), but for the hid devices
instantiated by logitech-dj for devices behind the receiver the
logitech-dj hid(pp)-device is the parent.

Add a logi_dj_ll_may_wakeup() callback which calls hid_hw_may_wakeup()
on the logitech-dj hid(pp) parent-hid-device.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-logitech-dj.c

index fa835d5..f96349f 100644 (file)
@@ -1489,6 +1489,13 @@ static void logi_dj_ll_stop(struct hid_device *hid)
        dbg_hid("%s\n", __func__);
 }
 
+static bool logi_dj_ll_may_wakeup(struct hid_device *hid)
+{
+       struct dj_device *djdev = hid->driver_data;
+       struct dj_receiver_dev *djrcv_dev = djdev->dj_receiver_dev;
+
+       return hid_hw_may_wakeup(djrcv_dev->hidpp);
+}
 
 static struct hid_ll_driver logi_dj_ll_driver = {
        .parse = logi_dj_ll_parse,
@@ -1497,6 +1504,7 @@ static struct hid_ll_driver logi_dj_ll_driver = {
        .open = logi_dj_ll_open,
        .close = logi_dj_ll_close,
        .raw_request = logi_dj_ll_raw_request,
+       .may_wakeup = logi_dj_ll_may_wakeup,
 };
 
 static int logi_dj_dj_event(struct hid_device *hdev,