ALSA: line6: Drop interface argument from private_init and disconnect callbacks
authorTakashi Iwai <tiwai@suse.de>
Sun, 25 Jan 2015 17:22:58 +0000 (18:22 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 28 Jan 2015 06:21:59 +0000 (07:21 +0100)
The interface argument is used just for retrieving the assigned
device, which can be already found in line6->ifcdev.  Drop them from
the callbacks.  Also, pass the usb id to private_init so that the
driver can deal with it there.  This is a preliminary work for the
further cleanup to move the whole allocation into driver.c.

Tested-by: Chris Rorvick <chris@rorvick.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/line6/driver.c
sound/usb/line6/driver.h
sound/usb/line6/pod.c
sound/usb/line6/podhd.c
sound/usb/line6/toneport.c
sound/usb/line6/variax.c

index 4d2d233d0505355a5bc514ba91290ac9a1ec48af..e2fbff05c1b1392f9d3bfcfe8caade6525eceb3b 100644 (file)
@@ -488,9 +488,10 @@ static int line6_init_cap_control(struct usb_line6 *line6)
        Probe USB device.
 */
 int line6_probe(struct usb_interface *interface,
+               const struct usb_device_id *id,
                struct usb_line6 *line6,
                const struct line6_properties *properties,
-               int (*private_init)(struct usb_interface *, struct usb_line6 *))
+               int (*private_init)(struct usb_line6 *, const struct usb_device_id *id))
 {
        struct usb_device *usbdev = interface_to_usbdev(interface);
        struct snd_card *card;
@@ -552,7 +553,7 @@ int line6_probe(struct usb_interface *interface,
        }
 
        /* initialize device data based on device: */
-       ret = private_init(interface, line6);
+       ret = private_init(line6, id);
        if (ret < 0)
                goto error;
 
@@ -565,7 +566,7 @@ int line6_probe(struct usb_interface *interface,
 
  error:
        if (line6->disconnect)
-               line6->disconnect(interface);
+               line6->disconnect(line6);
        snd_card_free(card);
        return ret;
 }
@@ -592,7 +593,7 @@ void line6_disconnect(struct usb_interface *interface)
        if (line6->line6pcm)
                line6_pcm_disconnect(line6->line6pcm);
        if (line6->disconnect)
-               line6->disconnect(interface);
+               line6->disconnect(line6);
 
        dev_info(&interface->dev, "Line 6 %s now disconnected\n",
                 line6->properties->name);
index a6c0b2f08ba8523184486f77e2b151a0eff69112..4dc6c28e82247dd70d88057733926f7aee269457 100644 (file)
@@ -157,7 +157,7 @@ struct usb_line6 {
        int message_length;
 
        void (*process_message)(struct usb_line6 *);
-       void (*disconnect)(struct usb_interface *);
+       void (*disconnect)(struct usb_line6 *line6);
 };
 
 extern char *line6_alloc_sysex_buffer(struct usb_line6 *line6, int code1,
@@ -180,9 +180,11 @@ extern int line6_write_data(struct usb_line6 *line6, int address, void *data,
                            size_t datalen);
 
 int line6_probe(struct usb_interface *interface,
+               const struct usb_device_id *id,
                struct usb_line6 *line6,
                const struct line6_properties *properties,
-               int (*private_init)(struct usb_interface *, struct usb_line6 *));
+               int (*private_init)(struct usb_line6 *, const struct usb_device_id *id));
+
 void line6_disconnect(struct usb_interface *interface);
 
 #ifdef CONFIG_PM
index 26ecf26a33ec64d90a3293b6358d5e0de07cbd37..d1e952fbcae761f60cb9a7b214b0d636732564f7 100644 (file)
@@ -399,10 +399,10 @@ static struct snd_kcontrol_new pod_control_monitor = {
 /*
        POD device disconnected.
 */
-static void line6_pod_disconnect(struct usb_interface *interface)
+static void line6_pod_disconnect(struct usb_line6 *line6)
 {
-       struct usb_line6_pod *pod = usb_get_intfdata(interface);
-       struct device *dev = &interface->dev;
+       struct usb_line6_pod *pod = (struct usb_line6_pod *)line6;
+       struct device *dev = line6->ifcdev;
 
        /* remove sysfs entries: */
        device_remove_file(dev, &dev_attr_device_id);
@@ -435,8 +435,8 @@ static int pod_create_files2(struct device *dev)
 /*
         Try to init POD device.
 */
-static int pod_init(struct usb_interface *interface,
-                   struct usb_line6 *line6)
+static int pod_init(struct usb_line6 *line6,
+                   const struct usb_device_id *id)
 {
        int err;
        struct usb_line6_pod *pod = (struct usb_line6_pod *) line6;
@@ -448,7 +448,7 @@ static int pod_init(struct usb_interface *interface,
        INIT_WORK(&pod->startup_work, pod_startup4);
 
        /* create sysfs entries: */
-       err = pod_create_files2(&interface->dev);
+       err = pod_create_files2(line6->ifcdev);
        if (err < 0)
                return err;
 
@@ -596,7 +596,7 @@ static int pod_probe(struct usb_interface *interface,
        pod = kzalloc(sizeof(*pod), GFP_KERNEL);
        if (!pod)
                return -ENODEV;
-       return line6_probe(interface, &pod->line6,
+       return line6_probe(interface, id, &pod->line6,
                           &pod_properties_table[id->driver_info],
                           pod_init);
 }
index 59abbd92624ea49ce7cfd1289f7a5fe2e7b6f540..21d7edcfa272c269640bc7ade37768dc99bf9c8f 100644 (file)
@@ -87,8 +87,8 @@ static struct line6_pcm_properties podhd_pcm_properties = {
 /*
        Try to init POD HD device.
 */
-static int podhd_init(struct usb_interface *interface,
-                     struct usb_line6 *line6)
+static int podhd_init(struct usb_line6 *line6,
+                     const struct usb_device_id *id)
 {
        int err;
 
@@ -182,7 +182,7 @@ static int podhd_probe(struct usb_interface *interface,
        podhd = kzalloc(sizeof(*podhd), GFP_KERNEL);
        if (!podhd)
                return -ENODEV;
-       return line6_probe(interface, &podhd->line6,
+       return line6_probe(interface, id, &podhd->line6,
                           &podhd_properties_table[id->driver_info],
                           podhd_init);
 }
index 9a769463f7bf89fa2baaa958e262a0abac29e3f9..8e7020df0d109ac68cee1a66b1f51e03ae83548f 100644 (file)
@@ -387,11 +387,11 @@ static void toneport_setup(struct usb_line6_toneport *toneport)
 /*
        Toneport device disconnected.
 */
-static void line6_toneport_disconnect(struct usb_interface *interface)
+static void line6_toneport_disconnect(struct usb_line6 *line6)
 {
-       struct usb_line6_toneport *toneport;
+       struct usb_line6_toneport *toneport =
+               (struct usb_line6_toneport *)line6;
 
-       toneport = usb_get_intfdata(interface);
        del_timer_sync(&toneport->timer);
 
        if (toneport_has_led(toneport->type))
@@ -402,12 +402,13 @@ static void line6_toneport_disconnect(struct usb_interface *interface)
 /*
         Try to init Toneport device.
 */
-static int toneport_init(struct usb_interface *interface,
-                        struct usb_line6 *line6)
+static int toneport_init(struct usb_line6 *line6,
+                        const struct usb_device_id *id)
 {
        int err;
        struct usb_line6_toneport *toneport =  (struct usb_line6_toneport *) line6;
 
+       toneport->type = id->driver_info;
        setup_timer(&toneport->timer, toneport_start_pcm,
                    (unsigned long)toneport);
 
@@ -562,8 +563,7 @@ static int toneport_probe(struct usb_interface *interface,
        toneport = kzalloc(sizeof(*toneport), GFP_KERNEL);
        if (!toneport)
                return -ENODEV;
-       toneport->type = id->driver_info;
-       return line6_probe(interface, &toneport->line6,
+       return line6_probe(interface, id, &toneport->line6,
                           &toneport_properties_table[id->driver_info],
                           toneport_init);
 }
index cd3adeffde029fa00960884fddd61a5547694560..ba6e85eed2ba87a0d8f0b02d0822ccc51c61be3c 100644 (file)
@@ -210,11 +210,9 @@ static void line6_variax_process_message(struct usb_line6 *line6)
 /*
        Variax destructor.
 */
-static void line6_variax_disconnect(struct usb_interface *interface)
+static void line6_variax_disconnect(struct usb_line6 *line6)
 {
-       struct usb_line6_variax *variax;
-
-       variax = usb_get_intfdata(interface);
+       struct usb_line6_variax *variax = (struct usb_line6_variax *)line6;
 
        del_timer(&variax->startup_timer1);
        del_timer(&variax->startup_timer2);
@@ -226,8 +224,8 @@ static void line6_variax_disconnect(struct usb_interface *interface)
 /*
         Try to init workbench device.
 */
-static int variax_init(struct usb_interface *interface,
-                      struct usb_line6 *line6)
+static int variax_init(struct usb_line6 *line6,
+                      const struct usb_device_id *id)
 {
        struct usb_line6_variax *variax = (struct usb_line6_variax *) line6;
        int err;
@@ -303,7 +301,7 @@ static int variax_probe(struct usb_interface *interface,
        variax = kzalloc(sizeof(*variax), GFP_KERNEL);
        if (!variax)
                return -ENODEV;
-       return line6_probe(interface, &variax->line6,
+       return line6_probe(interface, id, &variax->line6,
                           &variax_properties_table[id->driver_info],
                           variax_init);
 }