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

Commit 0ced14fb authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge branch 'usb-midi-fix-3.7' of git://git.alsa-project.org/alsa-kprivate into for-linus

Merge a regression fix for USB MIDI on non-standard usb-audio drivers
by Clemens.
parents 10e44239 e99ddfde
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -148,6 +148,7 @@ struct snd_usb_midi_out_endpoint {
		struct snd_usb_midi_out_endpoint* ep;
		struct snd_usb_midi_out_endpoint* ep;
		struct snd_rawmidi_substream *substream;
		struct snd_rawmidi_substream *substream;
		int active;
		int active;
		bool autopm_reference;
		uint8_t cable;		/* cable number << 4 */
		uint8_t cable;		/* cable number << 4 */
		uint8_t state;
		uint8_t state;
#define STATE_UNKNOWN	0
#define STATE_UNKNOWN	0
@@ -1076,7 +1077,8 @@ static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream)
		return -ENXIO;
		return -ENXIO;
	}
	}
	err = usb_autopm_get_interface(umidi->iface);
	err = usb_autopm_get_interface(umidi->iface);
	if (err < 0)
	port->autopm_reference = err >= 0;
	if (err < 0 && err != -EACCES)
		return -EIO;
		return -EIO;
	substream->runtime->private_data = port;
	substream->runtime->private_data = port;
	port->state = STATE_UNKNOWN;
	port->state = STATE_UNKNOWN;
@@ -1087,8 +1089,10 @@ static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream)
static int snd_usbmidi_output_close(struct snd_rawmidi_substream *substream)
static int snd_usbmidi_output_close(struct snd_rawmidi_substream *substream)
{
{
	struct snd_usb_midi* umidi = substream->rmidi->private_data;
	struct snd_usb_midi* umidi = substream->rmidi->private_data;
	struct usbmidi_out_port *port = substream->runtime->private_data;


	substream_open(substream, 0);
	substream_open(substream, 0);
	if (port->autopm_reference)
		usb_autopm_put_interface(umidi->iface);
		usb_autopm_put_interface(umidi->iface);
	return 0;
	return 0;
}
}