ALSA: line6: remove unnecessary initialization to PODHD500X
authorHans P. Möller Ebner <hmoller@uc.cl>
Fri, 16 Jun 2017 18:14:17 +0000 (14:14 -0400)
committerTakashi Iwai <tiwai@suse.de>
Tue, 20 Jun 2017 05:51:22 +0000 (07:51 +0200)
Remove Initialization from POD HD500X because it's not needed.
Every time the device is connected dmesg gives the following output:
"receive length failed (error -11)".
To solve this problem, another flags is introduced
(LINE6_CAP_CONTROL_INFO) and it is only used for PODX3 in: sysfs
entries, call podhd_startup_finalize(pod) and disconnection.
With this patch the error disappear.

Signed-off-by: Hans P. Moller <hmoller@uc.cl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/line6/driver.h
sound/usb/line6/podhd.c

index a5c2e9ae5f172732240db27b0140e71385d00a5e..dc97895547be44dfa594da831e9733283afb47d5 100644 (file)
@@ -117,6 +117,8 @@ enum {
        LINE6_CAP_IN_NEEDS_OUT = 1 << 3,
        /* device uses raw MIDI via USB (data endpoints) */
        LINE6_CAP_CONTROL_MIDI = 1 << 4,
+       /* device provides low-level information */
+       LINE6_CAP_CONTROL_INFO = 1 << 5,
 };
 
 /*
index e9b8122c4fe5617de07fe4788cb5cec682685a7c..956f847a96e45fdfbd171d81c525fd869acad1f8 100644 (file)
@@ -293,7 +293,7 @@ static void podhd_disconnect(struct usb_line6 *line6)
 {
        struct usb_line6_podhd *pod = (struct usb_line6_podhd *)line6;
 
-       if (pod->line6.properties->capabilities & LINE6_CAP_CONTROL) {
+       if (pod->line6.properties->capabilities & LINE6_CAP_CONTROL_INFO) {
                struct usb_interface *intf;
 
                del_timer_sync(&pod->startup_timer);
@@ -333,7 +333,9 @@ static int podhd_init(struct usb_line6 *line6,
                                pod->line6.properties->ctrl_if, err);
                        return err;
                }
+       }
 
+       if (pod->line6.properties->capabilities & LINE6_CAP_CONTROL_INFO) {
                /* create sysfs entries: */
                err = snd_card_add_dev_attr(line6->card, &podhd_dev_attr_group);
                if (err < 0)
@@ -350,7 +352,7 @@ static int podhd_init(struct usb_line6 *line6,
                        return err;
        }
 
-       if (!(pod->line6.properties->capabilities & LINE6_CAP_CONTROL)) {
+       if (!(pod->line6.properties->capabilities & LINE6_CAP_CONTROL_INFO)) {
                /* register USB audio system directly */
                return podhd_startup_finalize(pod);
        }
@@ -428,7 +430,7 @@ static const struct line6_properties podhd_properties_table[] = {
        [LINE6_PODX3] = {
                .id = "PODX3",
                .name = "POD X3",
-               .capabilities   = LINE6_CAP_CONTROL
+               .capabilities   = LINE6_CAP_CONTROL | LINE6_CAP_CONTROL_INFO
                                | LINE6_CAP_PCM | LINE6_CAP_HWMON | LINE6_CAP_IN_NEEDS_OUT,
                .altsetting = 1,
                .ep_ctrl_r = 0x81,
@@ -440,7 +442,7 @@ static const struct line6_properties podhd_properties_table[] = {
        [LINE6_PODX3LIVE] = {
                .id = "PODX3LIVE",
                .name = "POD X3 LIVE",
-               .capabilities   = LINE6_CAP_CONTROL
+               .capabilities   = LINE6_CAP_CONTROL | LINE6_CAP_CONTROL_INFO
                                | LINE6_CAP_PCM | LINE6_CAP_HWMON | LINE6_CAP_IN_NEEDS_OUT,
                .altsetting = 1,
                .ep_ctrl_r = 0x81,