]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/bluetooth/bpa10x.c
MSI: Give archs the option to allocate all MSI/Xs at once.
[linux-2.6-omap-h63xx.git] / drivers / bluetooth / bpa10x.c
index a1bf8f066c888c227e546d982ae63a0978ef8e7f..e8ebd5d3de864e4402a31dce96ec5ff7c17ffacd 100644 (file)
@@ -21,7 +21,6 @@
  *
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 
 #include <linux/kernel.h>
@@ -84,8 +83,8 @@ struct bpa10x_data {
 
 struct hci_vendor_hdr {
        __u8    type;
-       __u16   snum;
-       __u16   dlen;
+       __le16  snum;
+       __le16  dlen;
 } __attribute__ ((packed));
 
 static void bpa10x_recv_bulk(struct bpa10x_data *data, unsigned char *buf, int count)
@@ -232,7 +231,7 @@ static void bpa10x_wakeup(struct bpa10x_data *data)
                cr = (struct usb_ctrlrequest *) urb->setup_packet;
                cr->wLength = __cpu_to_le16(skb->len);
 
-               memcpy(urb->transfer_buffer, skb->data, skb->len);
+               skb_copy_from_linear_data(skb, urb->transfer_buffer, skb->len);
                urb->transfer_buffer_length = skb->len;
 
                err = usb_submit_urb(urb, GFP_ATOMIC);
@@ -251,7 +250,7 @@ static void bpa10x_wakeup(struct bpa10x_data *data)
                skb = skb_dequeue(&data->tx_queue);
 
        if (skb) {
-               memcpy(urb->transfer_buffer, skb->data, skb->len);
+               skb_copy_from_linear_data(skb, urb->transfer_buffer, skb->len);
                urb->transfer_buffer_length = skb->len;
 
                err = usb_submit_urb(urb, GFP_ATOMIC);
@@ -264,7 +263,7 @@ static void bpa10x_wakeup(struct bpa10x_data *data)
        }
 }
 
-static void bpa10x_complete(struct urb *urb, struct pt_regs *regs)
+static void bpa10x_complete(struct urb *urb)
 {
        struct bpa10x_data *data = urb->context;
        unsigned char *buf = urb->transfer_buffer;
@@ -308,7 +307,7 @@ unlock:
 }
 
 static inline struct urb *bpa10x_alloc_urb(struct usb_device *udev, unsigned int pipe,
-                                       size_t size, unsigned int __nocast flags, void *data)
+                                       size_t size, gfp_t flags, void *data)
 {
        struct urb *urb;
        struct usb_ctrlrequest *cr;
@@ -550,14 +549,15 @@ static int bpa10x_probe(struct usb_interface *intf, const struct usb_device_id *
        if (ignore)
                return -ENODEV;
 
-       data = kmalloc(sizeof(*data), GFP_KERNEL);
+       if (intf->cur_altsetting->desc.bInterfaceNumber > 0)
+               return -ENODEV;
+
+       data = kzalloc(sizeof(*data), GFP_KERNEL);
        if (!data) {
                BT_ERR("Can't allocate data structure");
                return -ENOMEM;
        }
 
-       memset(data, 0, sizeof(*data));
-
        data->udev = udev;
 
        rwlock_init(&data->lock);
@@ -618,7 +618,6 @@ static void bpa10x_disconnect(struct usb_interface *intf)
 }
 
 static struct usb_driver bpa10x_driver = {
-       .owner          = THIS_MODULE,
        .name           = "bpa10x",
        .probe          = bpa10x_probe,
        .disconnect     = bpa10x_disconnect,