Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aa773bfe authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Takashi Iwai
Browse files

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



Commit aafe77cc (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: default avatarKeith A. Milner <maillist@superlative.org>
Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 4c2aee00
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -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;
	}
	}