ALSA: line6: Pass driver name to line6_probe()
[linux-2.6-block.git] / sound / usb / line6 / driver.c
index c696f9773cbbefdfa37c35c4ad3446a13c905da3..626b0c3244cf2f1fb54eac7f5ad1c5069f3b017b 100644 (file)
@@ -22,8 +22,6 @@
 #include "driver.h"
 #include "midi.h"
 #include "playback.h"
-#include "revision.h"
-#include "usbdefs.h"
 
 #define DRIVER_AUTHOR  "Markus Grabner <grabner@icg.tugraz.at>"
 #define DRIVER_DESC    "Line 6 USB Driver"
@@ -44,7 +42,7 @@ static const char line6_request_version[] = {
        0xf0, 0x7e, 0x7f, 0x06, 0x01, 0xf7
 };
 
-/**
+/*
         Class for asynchronous messages.
 */
 struct message {
@@ -164,11 +162,11 @@ static int line6_send_raw_message_async_part(struct message *msg,
 /*
        Setup and start timer.
 */
-void line6_start_timer(struct timer_list *timer, unsigned int msecs,
+void line6_start_timer(struct timer_list *timer, unsigned long msecs,
                       void (*function)(unsigned long), unsigned long data)
 {
        setup_timer(timer, function, data);
-       mod_timer(timer, jiffies + msecs * HZ / 1000);
+       mod_timer(timer, jiffies + msecs_to_jiffies(msecs));
 }
 EXPORT_SYMBOL_GPL(line6_start_timer);
 
@@ -482,6 +480,7 @@ static int line6_init_cap_control(struct usb_line6 *line6)
 */
 int line6_probe(struct usb_interface *interface,
                const struct usb_device_id *id,
+               const char *driver_name,
                const struct line6_properties *properties,
                int (*private_init)(struct usb_line6 *, const struct usb_device_id *id),
                size_t data_size)
@@ -495,6 +494,10 @@ int line6_probe(struct usb_interface *interface,
        if (WARN_ON(data_size < sizeof(*line6)))
                return -EINVAL;
 
+       /* we don't handle multiple configurations */
+       if (usbdev->descriptor.bNumConfigurations != 1)
+               return -ENODEV;
+
        ret = snd_card_new(&interface->dev,
                           SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
                           THIS_MODULE, data_size, &card);
@@ -508,10 +511,10 @@ int line6_probe(struct usb_interface *interface,
        line6->usbdev = usbdev;
        line6->ifcdev = &interface->dev;
 
-       strcpy(card->id, line6->properties->id);
-       strcpy(card->driver, DRIVER_NAME);
-       strcpy(card->shortname, line6->properties->name);
-       sprintf(card->longname, "Line 6 %s at USB %s", line6->properties->name,
+       strcpy(card->id, properties->id);
+       strcpy(card->driver, driver_name);
+       strcpy(card->shortname, properties->name);
+       sprintf(card->longname, "Line 6 %s at USB %s", properties->name,
                dev_name(line6->ifcdev));
        card->private_free = line6_destruct;
 
@@ -520,12 +523,6 @@ int line6_probe(struct usb_interface *interface,
        /* increment reference counters: */
        usb_get_dev(usbdev);
 
-       /* we don't handle multiple configurations */
-       if (usbdev->descriptor.bNumConfigurations != 1) {
-               ret = -ENODEV;
-               goto error;
-       }
-
        /* initialize device info: */
        dev_info(&interface->dev, "Line 6 %s found\n", properties->name);
 
@@ -533,7 +530,7 @@ int line6_probe(struct usb_interface *interface,
        interface_number = interface->cur_altsetting->desc.bInterfaceNumber;
 
        ret = usb_set_interface(usbdev, interface_number,
-                       properties->altsetting);
+                               properties->altsetting);
        if (ret < 0) {
                dev_err(&interface->dev, "set_interface failed\n");
                goto error;
@@ -555,7 +552,7 @@ int line6_probe(struct usb_interface *interface,
        /* creation of additional special files should go here */
 
        dev_info(&interface->dev, "Line 6 %s now attached\n",
-                line6->properties->name);
+                properties->name);
 
        return 0;