return ret;
 }
 
-static void hidpp_overwrite_name(struct hid_device *hdev)
+/* Get name + serial for USB and Bluetooth HID++ devices */
+static void hidpp_non_unifying_init(struct hidpp_device *hidpp)
 {
-       struct hidpp_device *hidpp = hid_get_drvdata(hdev);
+       struct hid_device *hdev = hidpp->hid_dev;
        char *name;
 
+       /* Bluetooth devices already have their serialnr set */
+       if (hid_is_usb(hdev))
+               hidpp_serial_init(hidpp);
+
        name = hidpp_get_device_name(hidpp);
        if (name) {
                dbg_hid("HID++: Got name: %s\n", name);
        /* Allow incoming packets */
        hid_device_io_start(hdev);
 
+       /* Get name + serial, store in hdev->name + hdev->uniq */
        if (hidpp->quirks & HIDPP_QUIRK_UNIFYING)
                hidpp_unifying_init(hidpp);
-       else {
-               if (hid_is_usb(hidpp->hid_dev))
-                       hidpp_serial_init(hidpp);
-
-               hidpp_overwrite_name(hdev);
-       }
+       else
+               hidpp_non_unifying_init(hidpp);
 
        connected = hidpp_root_get_protocol_version(hidpp) == 0;
        atomic_set(&hidpp->connected, connected);