[alsa-devel] [PATCH 2/2] ALSA: usb-audio: Fix missing autopm for MIDI input
Clemens Ladisch
clemens at ladisch.de
Mon Dec 3 21:47:48 CET 2012
Takashi Iwai wrote:
> The commit [88a8516a: ALSA: usbaudio: implement USB autosuspend] added
> the support of autopm for USB MIDI output, but it didn't take the MIDI
> input into account.
>
> This patch adds the following for fixing the autopm:
> - Manage the URB start at the first MIDI input stream open, instead of
> the time of instance creation
> - Move autopm code to the common substream_open()
> - Make snd_usbmidi_input_start/_stop() more robust and add the running
> state check
>
> Cc: <stable at vger.kernel.org>
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
> ...
> +static int substream_open(struct snd_rawmidi_substream *substream, int dir,
> + int open)
> {
> struct snd_usb_midi* umidi = substream->rmidi->private_data;
> struct snd_kcontrol *ctl;
> + int err;
>
> down_read(&umidi->disc_rwsem);
> if (umidi->disconnected) {
> up_read(&umidi->disc_rwsem);
> + return open ? -ENODEV : 0;
> }
>
> mutex_lock(&umidi->mutex);
> if (open) {
> + if (!umidi->opened[0] && !umidi->opened[1]) {
> + err = usb_autopm_get_interface(umidi->iface);
> + umidi->autopm_reference = err >= 0;
> + if (err < 0 && err != -EACCES) {
> + up_read(&umidi->disc_rwsem);
> + return -EIO;
umidi->mutex is still held here.
Otherwise, for both patches:
Reviewd-by: Clemens Ladisch <clemens at ladisch.de>
Tested-by: Clemens Ladisch <clemens at ladisch.de>
Regards,
Clemens
More information about the Alsa-devel
mailing list