]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
[Bluetooth] Attach host adapters to the Bluetooth bus
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 4 May 2007 22:36:03 +0000 (00:36 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 4 May 2007 22:36:03 +0000 (00:36 +0200)
The Bluetooth host adapters are attached to the Bluetooth class and the
low-level connections are children of these class devices. Having class
devices as parent of bus devices breaks a lot of reasonable assumptions
about sysfs. The host adapters should be attached to the Bluetooth bus
to simplify the dependency resolving. For compatibility an additional
symlink from the Bluetooth class will be used.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/hci_sysfs.c

index 801d687ea4efbdf84d7b6982a5dda5607c2d9644..359e3440cf292fff35b0a37938f19a1479a39ff6 100644 (file)
@@ -305,7 +305,7 @@ int hci_register_sysfs(struct hci_dev *hdev)
 
        BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
 
-       dev->class = bt_class;
+       dev->bus = &bt_bus;
        dev->parent = hdev->parent;
 
        strlcpy(dev->bus_id, hdev->name, BUS_ID_SIZE);
@@ -322,6 +322,10 @@ int hci_register_sysfs(struct hci_dev *hdev)
                if (device_create_file(dev, bt_attrs[i]) < 0)
                        BT_ERR("Failed to create device attribute");
 
+       if (sysfs_create_link(&bt_class->subsys.kset.kobj,
+                               &dev->kobj, kobject_name(&dev->kobj)) < 0)
+               BT_ERR("Failed to create class symlink");
+
        return 0;
 }
 
@@ -329,6 +333,9 @@ void hci_unregister_sysfs(struct hci_dev *hdev)
 {
        BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
 
+       sysfs_remove_link(&bt_class->subsys.kset.kobj,
+                                       kobject_name(&hdev->dev.kobj));
+
        device_del(&hdev->dev);
 }