X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fbluetooth%2Fbcm203x.c;h=ee40201c7278ad94aadf43ac220c1cedfd67c49e;hb=04489eeb02a40bc15029886cef7285ada3ab0de6;hp=13ba729cdd57445821dbe4bb5bf92f1dd1d4ac07;hpb=73ca66b97b73257a7d832d502c36fc19fe847809;p=linux-2.6 diff --git a/drivers/bluetooth/bcm203x.c b/drivers/bluetooth/bcm203x.c index 13ba729cdd..ee40201c72 100644 --- a/drivers/bluetooth/bcm203x.c +++ b/drivers/bluetooth/bcm203x.c @@ -29,7 +29,6 @@ #include #include #include -#include #include #include @@ -43,9 +42,7 @@ #define BT_DBG(D...) #endif -#define VERSION "1.0" - -static int ignore = 0; +#define VERSION "1.2" static struct usb_device_id bcm203x_table[] = { /* Broadcom Blutonium (BCM2033) */ @@ -72,7 +69,7 @@ struct bcm203x_data { unsigned long state; - struct timer_list timer; + struct work_struct work; struct urb *urb; unsigned char *buffer; @@ -82,7 +79,7 @@ struct bcm203x_data { unsigned int fw_sent; }; -static void bcm203x_complete(struct urb *urb, struct pt_regs *regs) +static void bcm203x_complete(struct urb *urb) { struct bcm203x_data *data = urb->context; struct usb_device *udev = urb->dev; @@ -105,7 +102,7 @@ static void bcm203x_complete(struct urb *urb, struct pt_regs *regs) data->state = BCM203X_SELECT_MEMORY; - mod_timer(&data->timer, jiffies + (HZ / 10)); + schedule_work(&data->work); break; case BCM203X_SELECT_MEMORY: @@ -158,9 +155,10 @@ static void bcm203x_complete(struct urb *urb, struct pt_regs *regs) } } -static void bcm203x_timer(unsigned long user_data) +static void bcm203x_work(struct work_struct *work) { - struct bcm203x_data *data = (struct bcm203x_data *) user_data; + struct bcm203x_data *data = + container_of(work, struct bcm203x_data, work); if (usb_submit_urb(data->urb, GFP_ATOMIC) < 0) BT_ERR("Can't submit URB"); @@ -175,7 +173,7 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id BT_DBG("intf %p id %p", intf, id); - if (ignore || (intf->cur_altsetting->desc.bInterfaceNumber != 0)) + if (intf->cur_altsetting->desc.bInterfaceNumber != 0) return -ENODEV; data = kzalloc(sizeof(*data), GFP_KERNEL); @@ -247,13 +245,11 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id release_firmware(firmware); - init_timer(&data->timer); - data->timer.function = bcm203x_timer; - data->timer.data = (unsigned long) data; + INIT_WORK(&data->work, bcm203x_work); usb_set_intfdata(intf, data); - mod_timer(&data->timer, jiffies + HZ); + schedule_work(&data->work); return 0; } @@ -302,10 +298,9 @@ static void __exit bcm203x_exit(void) module_init(bcm203x_init); module_exit(bcm203x_exit); -module_param(ignore, bool, 0644); -MODULE_PARM_DESC(ignore, "Ignore devices from the matching table"); - MODULE_AUTHOR("Marcel Holtmann "); MODULE_DESCRIPTION("Broadcom Blutonium firmware driver ver " VERSION); MODULE_VERSION(VERSION); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE("BCM2033-MD.hex"); +MODULE_FIRMWARE("BCM2033-FW.bin");