]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
HID: hid-belkin: clean up usage of 'driver_data'
authorPawel Zalewski (The Capable Hub) <pzalewski@thegoodpenguin.co.uk>
Mon, 18 May 2026 16:06:24 +0000 (17:06 +0100)
committerBenjamin Tissoires <bentiss@kernel.org>
Mon, 1 Jun 2026 16:28:41 +0000 (18:28 +0200)
The module is storing an integer inside the drvdata pointer, which is
confusing, lets fix this and set the whole of 'hid_device_id' struct
as the drvdata and then simply use its integer 'driver_data' field for
quirks, which shall make the code cleaner, type-safe, consistent and
more readable.

This makes the cast to (void *) during storage a bit safer (just to
suppress the const qualifier warning) and the cast to (unsigned long)
during retrieval is removed.

Signed-off-by: Pawel Zalewski (The Capable Hub) <pzalewski@thegoodpenguin.co.uk>
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
drivers/hid/hid-belkin.c

index 75aaed35ee9fb84abfe9982e76c88709f7be880b..84695115d37b8bd26f4222e1504c21581f2a6ec8 100644 (file)
@@ -27,7 +27,8 @@ static int belkin_input_mapping(struct hid_device *hdev, struct hid_input *hi,
                struct hid_field *field, struct hid_usage *usage,
                unsigned long **bit, int *max)
 {
-       unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
+       const struct hid_device_id *id = hid_get_drvdata(hdev);
+       unsigned long quirks = id->driver_data;
 
        if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER ||
                        !(quirks & BELKIN_WKBD))
@@ -48,7 +49,7 @@ static int belkin_probe(struct hid_device *hdev, const struct hid_device_id *id)
        unsigned long quirks = id->driver_data;
        int ret;
 
-       hid_set_drvdata(hdev, (void *)quirks);
+       hid_set_drvdata(hdev, (void *)id);
 
        ret = hid_parse(hdev);
        if (ret) {