• Clemens Ladisch's avatar
    ALSA: pcm: support for period wakeup disabling · ab69a490
    Clemens Ladisch authored
    This patch allows to disable period interrupts which are
    not needed when the application relies on a system timer
    to wake-up and refill the ring buffer. The behavior of
    the driver is left unchanged, and interrupts are only
    disabled if the application requests this configuration.
    The behavior in case of underruns is slightly different,
    instead of being detected during the period interrupts the
    underruns are detected when the application calls
    snd_pcm_update_avail, which in turns forces a refresh of the
    hw pointer and shows the buffer is empty.
    
    More specifically this patch makes a lot of sense when
    PulseAudio relies on timer-based scheduling to access audio
    devices such as HDAudio or Intel SST. Disabling interrupts
    removes two unwanted wake-ups due to period elapsed events
    in low-power playback modes. It also simplifies PulseAudio
    voice modules used for speech calls.
    
    To quote Lennart "This patch looks very interesting and
    desirable. This is something have long been waiting for."
    
    Support for this in hardware drivers is optional.
    Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@intel.com>
    Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    ab69a490
pcm_lib.c 59 KB