]> Pileus Git - ~andy/linux/blobdiff - drivers/bluetooth/btusb.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
[~andy/linux] / drivers / bluetooth / btusb.c
index 789c9b579aea5bac7e0b2abfe3d14b377917a9c4..e61a195969bf9f43c4b14d73a0151d8d85ee8942 100644 (file)
@@ -243,7 +243,7 @@ static int inc_tx(struct btusb_data *data)
 static void btusb_intr_complete(struct urb *urb)
 {
        struct hci_dev *hdev = urb->context;
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
        int err;
 
        BT_DBG("%s urb %p status %d count %d", hdev->name,
@@ -282,7 +282,7 @@ static void btusb_intr_complete(struct urb *urb)
 
 static int btusb_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags)
 {
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
        struct urb *urb;
        unsigned char *buf;
        unsigned int pipe;
@@ -331,7 +331,7 @@ static int btusb_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags)
 static void btusb_bulk_complete(struct urb *urb)
 {
        struct hci_dev *hdev = urb->context;
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
        int err;
 
        BT_DBG("%s urb %p status %d count %d", hdev->name,
@@ -370,7 +370,7 @@ static void btusb_bulk_complete(struct urb *urb)
 
 static int btusb_submit_bulk_urb(struct hci_dev *hdev, gfp_t mem_flags)
 {
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
        struct urb *urb;
        unsigned char *buf;
        unsigned int pipe;
@@ -417,7 +417,7 @@ static int btusb_submit_bulk_urb(struct hci_dev *hdev, gfp_t mem_flags)
 static void btusb_isoc_complete(struct urb *urb)
 {
        struct hci_dev *hdev = urb->context;
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
        int i, err;
 
        BT_DBG("%s urb %p status %d count %d", hdev->name,
@@ -484,7 +484,7 @@ static inline void __fill_isoc_descriptor(struct urb *urb, int len, int mtu)
 
 static int btusb_submit_isoc_urb(struct hci_dev *hdev, gfp_t mem_flags)
 {
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
        struct urb *urb;
        unsigned char *buf;
        unsigned int pipe;
@@ -537,7 +537,7 @@ static void btusb_tx_complete(struct urb *urb)
 {
        struct sk_buff *skb = urb->context;
        struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
 
        BT_DBG("%s urb %p status %d count %d", hdev->name,
                                        urb, urb->status, urb->actual_length);
@@ -584,7 +584,7 @@ done:
 
 static int btusb_open(struct hci_dev *hdev)
 {
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
        int err;
 
        BT_DBG("%s", hdev->name);
@@ -634,7 +634,7 @@ static void btusb_stop_traffic(struct btusb_data *data)
 
 static int btusb_close(struct hci_dev *hdev)
 {
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
        int err;
 
        BT_DBG("%s", hdev->name);
@@ -664,7 +664,7 @@ failed:
 
 static int btusb_flush(struct hci_dev *hdev)
 {
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
 
        BT_DBG("%s", hdev->name);
 
@@ -676,7 +676,7 @@ static int btusb_flush(struct hci_dev *hdev)
 static int btusb_send_frame(struct sk_buff *skb)
 {
        struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
        struct usb_ctrlrequest *dr;
        struct urb *urb;
        unsigned int pipe;
@@ -784,18 +784,9 @@ done:
        return err;
 }
 
-static void btusb_destruct(struct hci_dev *hdev)
-{
-       struct btusb_data *data = hdev->driver_data;
-
-       BT_DBG("%s", hdev->name);
-
-       kfree(data);
-}
-
 static void btusb_notify(struct hci_dev *hdev, unsigned int evt)
 {
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
 
        BT_DBG("%s evt %d", hdev->name, evt);
 
@@ -807,7 +798,7 @@ static void btusb_notify(struct hci_dev *hdev, unsigned int evt)
 
 static inline int __set_isoc_interface(struct hci_dev *hdev, int altsetting)
 {
-       struct btusb_data *data = hdev->driver_data;
+       struct btusb_data *data = hci_get_drvdata(hdev);
        struct usb_interface *intf = data->isoc;
        struct usb_endpoint_descriptor *ep_desc;
        int i, err;
@@ -995,7 +986,7 @@ static int btusb_probe(struct usb_interface *intf,
        }
 
        hdev->bus = HCI_USB;
-       hdev->driver_data = data;
+       hci_set_drvdata(hdev, data);
 
        data->hdev = hdev;
 
@@ -1005,11 +996,8 @@ static int btusb_probe(struct usb_interface *intf,
        hdev->close    = btusb_close;
        hdev->flush    = btusb_flush;
        hdev->send     = btusb_send_frame;
-       hdev->destruct = btusb_destruct;
        hdev->notify   = btusb_notify;
 
-       hdev->owner = THIS_MODULE;
-
        /* Interface numbers are hardcoded in the specification */
        data->isoc = usb_ifnum_to_if(data->udev, 1);
 
@@ -1091,9 +1079,6 @@ static void btusb_disconnect(struct usb_interface *intf)
                return;
 
        hdev = data->hdev;
-
-       __hci_dev_hold(hdev);
-
        usb_set_intfdata(data->intf, NULL);
 
        if (data->isoc)
@@ -1106,9 +1091,8 @@ static void btusb_disconnect(struct usb_interface *intf)
        else if (data->isoc)
                usb_driver_release_interface(&btusb_driver, data->isoc);
 
-       __hci_dev_put(hdev);
-
        hci_free_dev(hdev);
+       kfree(data);
 }
 
 #ifdef CONFIG_PM