HID: input: optionally use device id in battery name
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 1 Aug 2017 22:38:02 +0000 (15:38 -0700)
committerJiri Kosina <jkosina@suse.cz>
Wed, 2 Aug 2017 08:51:46 +0000 (10:51 +0200)
Manufacturers do not always populate serial number in their devices, so
let's fall back to device ID when forming the battery device name. As a
result, batteries in devices without serial number will be named like
this:

hid-0018:2D1F:510E.0001-battery

(as opposed to hid--battery for the first one, and failing to create
batteries for the subsequent ones).

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-input.c

index 2158ec766dd59b84db0d7122335097eedacb7d6e..27d8442b017dc0ada05355d5cd577948732be053 100644 (file)
@@ -456,7 +456,9 @@ static int hidinput_setup_battery(struct hid_device *dev, unsigned report_type,
        if (!psy_desc)
                return -ENOMEM;
 
-       psy_desc->name = kasprintf(GFP_KERNEL, "hid-%s-battery", dev->uniq);
+       psy_desc->name = kasprintf(GFP_KERNEL, "hid-%s-battery",
+                                  strlen(dev->uniq) ?
+                                       dev->uniq : dev_name(&dev->dev));
        if (!psy_desc->name) {
                error = -ENOMEM;
                goto err_free_mem;