• Takashi Iwai's avatar
    ALSA: usb-audio: Split endpoint setups for hw_params and prepare (take#2) · 2be79d58
    Takashi Iwai authored
    This is a second attempt to fix the bug appearing on Android with the
    recent kernel; the first try was ff878b40 and reverted at commit
    79764ec7.
    
    The details taken from the v1 patch:
    
    One of the former changes for the endpoint management was the more
    consistent setup of endpoints at hw_params.
    snd_usb_endpoint_configure() is a single function that does the full
    setup, and it's called from both PCM hw_params and prepare callbacks.
    Although the EP setup at the prepare phase is usually skipped (by
    checking need_setup flag), it may be still effective in some cases
    like suspend/resume that requires the interface setup again.
    
    As it's a full and single setup, the invocation of
    snd_usb_endpoint_configure() includes not only the USB interface setup
    but also the buffer release and allocation.  OTOH, doing the buffer
    release and re-allocation at PCM prepare phase is rather superfluous,
    and better to be done only in the hw_params phase...
    2be79d58
pcm.c 46.3 KB