If wtp_connect() fails, that means most of the time that the device has
been disconnected. Subsequent attempts to contact the device will fail
too, so it's simpler to bail out earlier.

Signed-off-by: Benjamin Tissoires <[email protected]>
---
 drivers/hid/hid-logitech-hidpp.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
index d008d71..c0fb5fe 100644
--- a/drivers/hid/hid-logitech-hidpp.c
+++ b/drivers/hid/hid-logitech-hidpp.c
@@ -914,24 +914,24 @@ static int wtp_allocate(struct hid_device *hdev, const 
struct hid_device_id *id)
        return 0;
 };
 
-static void wtp_connect(struct hid_device *hdev, bool connected)
+static int wtp_connect(struct hid_device *hdev, bool connected)
 {
        struct hidpp_device *hidpp = hid_get_drvdata(hdev);
        struct wtp_data *wd = hidpp->private_data;
        int ret;
 
        if (!connected)
-               return;
+               return 0;
 
        if (!wd->x_size) {
                ret = wtp_get_config(hidpp);
                if (ret) {
                        hid_err(hdev, "Can not get wtp config: %d\n", ret);
-                       return;
+                       return ret;
                }
        }
 
-       hidpp_touchpad_set_raw_report_state(hidpp, wd->mt_feature_index,
+       return hidpp_touchpad_set_raw_report_state(hidpp, wd->mt_feature_index,
                        true, true);
 }
 
@@ -1115,8 +1115,11 @@ static void hidpp_connect_event(struct hidpp_device 
*hidpp)
        struct input_dev *input;
        char *name, *devm_name;
 
-       if (hidpp->quirks & HIDPP_QUIRK_CLASS_WTP)
-               wtp_connect(hdev, connected);
+       if (hidpp->quirks & HIDPP_QUIRK_CLASS_WTP) {
+               ret = wtp_connect(hdev, connected);
+               if (ret)
+                       return;
+       }
 
        if (!connected || hidpp->delayed_input)
                return;
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to