Skip to content

Commit

Permalink
Merge branch 'usb-midi-fix-3.7' of git://git.alsa-project.org/alsa-kp…
Browse files Browse the repository at this point in the history
…rivate into for-linus

Merge a regression fix for USB MIDI on non-standard usb-audio drivers
by Clemens.
  • Loading branch information
Takashi Iwai committed Nov 19, 2012
2 parents 10e4423 + e99ddfd commit 0ced14f
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions sound/usb/midi.c
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ struct snd_usb_midi_out_endpoint {
struct snd_usb_midi_out_endpoint* ep;
struct snd_rawmidi_substream *substream;
int active;
bool autopm_reference;
uint8_t cable; /* cable number << 4 */
uint8_t state;
#define STATE_UNKNOWN 0
Expand Down Expand Up @@ -1076,7 +1077,8 @@ static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream)
return -ENXIO;
}
err = usb_autopm_get_interface(umidi->iface);
if (err < 0)
port->autopm_reference = err >= 0;
if (err < 0 && err != -EACCES)
return -EIO;
substream->runtime->private_data = port;
port->state = STATE_UNKNOWN;
Expand All @@ -1087,9 +1089,11 @@ static int snd_usbmidi_output_open(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 usbmidi_out_port *port = substream->runtime->private_data;

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

Expand Down

0 comments on commit 0ced14f

Please sign in to comment.