Skip to content

Commit 8954dac

Browse files
jwrdegoedeBenjamin Tissoires
authored andcommitted
HID: logitech-hidpp: Move hidpp_overwrite_name() to before connect check
Move the hidpp_overwrite_name() call to before the connect check, this puts it at the same place in the probe() order as hidpp_serial_init() which seems more logical. This should not make a difference since this is in the non-unifying path and only unifying devices can be probed in non-connected state. This is a preparation patch for moving all connected state handling to hidpp_connect_event(). Doing this before the connect check requires dropping the protocol version check since protocol_major is not set yet now. Instead this relies on hidpp_root_get_feature(HIDPP_PAGE_GET_DEVICE_NAME_TYPE) failing on older devices, just like how hidpp_get_serial() relies on hidpp_root_get_feature(HIDPP_PAGE_DEVICE_INFORMATION) failing on older devices. So this again makes the code more consistent. Also stop printing an error on failure now, since with the proto version check gone failures are expected to happen on older devices. This series has been tested on the following devices: Logitech Bluetooth Laser Travel Mouse (bluetooth, HID++ 1.0) Logitech M720 Triathlon (bluetooth, HID++ 4.5) Logitech M720 Triathlon (unifying, HID++ 4.5) Logitech K400 Pro (unifying, HID++ 4.1) Logitech K270 (eQUAD nano Lite, HID++ 2.0) Logitech M185 (eQUAD nano Lite, HID++ 4.5) Logitech LX501 keyboard (27 Mhz, HID++ builtin scroll-wheel, HID++ 1.0) Logitech M-RAZ105 mouse (27 Mhz, HID++ extra mouse buttons, HID++ 1.0) And by bentiss: Logitech Touchpad T650 (unifying) Logitech Touchpad T651 (bluetooth) Logitech MX Master 3B (BLE) Logitech G403 (plain USB / Gaming receiver) Signed-off-by: Hans de Goede <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Benjamin Tissoires <[email protected]>
1 parent 219ccfb commit 8954dac

File tree

1 file changed

+8
-13
lines changed

1 file changed

+8
-13
lines changed

drivers/hid/hid-logitech-hidpp.c

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4135,19 +4135,12 @@ static void hidpp_overwrite_name(struct hid_device *hdev)
41354135
struct hidpp_device *hidpp = hid_get_drvdata(hdev);
41364136
char *name;
41374137

4138-
if (hidpp->protocol_major < 2)
4139-
return;
4140-
41414138
name = hidpp_get_device_name(hidpp);
4142-
4143-
if (!name) {
4144-
hid_err(hdev, "unable to retrieve the name of the device");
4145-
} else {
4139+
if (name) {
41464140
dbg_hid("HID++: Got name: %s\n", name);
41474141
snprintf(hdev->name, sizeof(hdev->name), "%s", name);
4142+
kfree(name);
41484143
}
4149-
4150-
kfree(name);
41514144
}
41524145

41534146
static int hidpp_input_open(struct input_dev *dev)
@@ -4483,8 +4476,12 @@ static int hidpp_probe(struct hid_device *hdev, const struct hid_device_id *id)
44834476

44844477
if (hidpp->quirks & HIDPP_QUIRK_UNIFYING)
44854478
hidpp_unifying_init(hidpp);
4486-
else if (hid_is_usb(hidpp->hid_dev))
4487-
hidpp_serial_init(hidpp);
4479+
else {
4480+
if (hid_is_usb(hidpp->hid_dev))
4481+
hidpp_serial_init(hidpp);
4482+
4483+
hidpp_overwrite_name(hdev);
4484+
}
44884485

44894486
connected = hidpp_root_get_protocol_version(hidpp) == 0;
44904487
atomic_set(&hidpp->connected, connected);
@@ -4494,8 +4491,6 @@ static int hidpp_probe(struct hid_device *hdev, const struct hid_device_id *id)
44944491
hid_err(hdev, "Device not connected");
44954492
goto hid_hw_init_fail;
44964493
}
4497-
4498-
hidpp_overwrite_name(hdev);
44994494
}
45004495

45014496
schedule_work(&hidpp->work);

0 commit comments

Comments
 (0)