ALSA: usb-audio: fix automatic Roland/Yamaha MIDI detection

Commit aafe77cc45 (ALSA: usb-audio: add support for many Roland/Yamaha
devices) had several logic errors that prevented create_auto_midi_quirk
from enumerating any MIDI ports.

Reported-by: Keith A. Milner <maillist@superlative.org>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Clemens Ladisch 2013-08-11 14:13:13 +02:00 committed by Takashi Iwai
parent 4c2aee0032
commit aa773bfe8f

View File

@ -319,19 +319,19 @@ static int create_auto_midi_quirk(struct snd_usb_audio *chip,
if (altsd->bNumEndpoints < 1) if (altsd->bNumEndpoints < 1)
return -ENODEV; return -ENODEV;
epd = get_endpoint(alts, 0); epd = get_endpoint(alts, 0);
if (!usb_endpoint_xfer_bulk(epd) || if (!usb_endpoint_xfer_bulk(epd) &&
!usb_endpoint_xfer_int(epd)) !usb_endpoint_xfer_int(epd))
return -ENODEV; return -ENODEV;
switch (USB_ID_VENDOR(chip->usb_id)) { switch (USB_ID_VENDOR(chip->usb_id)) {
case 0x0499: /* Yamaha */ case 0x0499: /* Yamaha */
err = create_yamaha_midi_quirk(chip, iface, driver, alts); err = create_yamaha_midi_quirk(chip, iface, driver, alts);
if (err < 0 && err != -ENODEV) if (err != -ENODEV)
return err; return err;
break; break;
case 0x0582: /* Roland */ case 0x0582: /* Roland */
err = create_roland_midi_quirk(chip, iface, driver, alts); err = create_roland_midi_quirk(chip, iface, driver, alts);
if (err < 0 && err != -ENODEV) if (err != -ENODEV)
return err; return err;
break; break;
} }