Takashi Iwai wrote:> At Sun, 25 Nov 2012 23:01:27 +0100, > Clemens Ladisch wrote: >> >> Jonathan Nieder wrote: >>> Some USB MIDI keyboards fail to operate after a USB autosuspend. >> >> Make that *all* USB MIDI devices with input ports. >> >> This is not a bug in the device, but one of the many bugs introduced >> with the autosuspend code in <http://git.kernel.org/linus/88a8516a2128>. >> >> That patch does not handle input at all, i.e., when the driver wants to >> read from the device, it just doesn't take it out of suspend mode. >> >>> A workaround is to disable USB autosuspend for these devices by >>> putting AUTOSUSPEND_USBID_BLACKLIST="0763:2027" (resp. 0763:019b) in >>> /etc/laptop-mode/conf.d/usb-autosuspend.conf. In the spirit of commit >>> 166cb70e97bd ("usb: add USB_QUIRK_RESET_RESUME for M-Audio 88es"), >>> reset the device on resume so this workaround is not needed any more. >> >> It is not feasible to add the IDs of all USB MIDI devices. >> >> I'm working on a fix that adds proper power management for input ports, >> but this requires the driver to be reorganized a little ... > > Doesn't a simple patch like below work? > +static int substream_open(struct snd_rawmidi_substream *substream, int open) > { > + if (open && umidi->opened++ == 0) { > + err = usb_autopm_get_interface(umidi->iface); > > static int snd_usbmidi_input_open(struct snd_rawmidi_substream *substream) > { > + return substream_open(substream, 1); No, because the input URBs are submitted before the userspace device is opened. (And usb_autopm_get_interface() cannot be called from the USB probe callback.) Regards, Clemens -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html