• Takashi Sakamoto's avatar
    ALSA: firewire-lib: support NO_PERIOD_WAKEUP in ALSA PCM runtime · d360870a
    Takashi Sakamoto authored
    Drivers of ALSA firewire stack can process packets for IT/IR context in
    process context when the process operates ALSA PCM character device by
    calling ioctl(2) with some requests. The ioctl requests are:
    
     * SNDRV_PCM_IOCTL_HWSYNC
     * SNDRV_PCM_IOCTL_SYNC_PTR
     * SNDRV_PCM_IOCTL_REWIND
     * SNDRV_PCM_IOCTL_FORWARD
     * SNDRV_PCM_IOCTL_WRITEI_FRAMES
     * SNDRV_PCM_IOCTL_READI_FRAMES
     * SNDRV_PCM_IOCTL_WRITEN_FRAMES
     * SNDRV_PCM_IOCTL_READN_FRAMES
    
    This means that general application can process PCM frames apart from
    hardware IRQ invocation, even if they are programmed by either IRQ-based
    scheduling model or Timer-based scheduling model.
    
    This commit add support for Timer-based scheduling model by allowing
    PCM runtime to suppress both process wakeup per period and scheduling
    hardware IRQ.
    
    SNDRV_PCM_INFO_BATCH is obsoleted since ALSA IEC 61883-1/6 packet streaming
    engine can report the number of transferred PCM frames within PCM period
    boundary. The granularity equals to SYT_INTERVAL in blocking transmission.
    In non-blocking transmission, it doesn't equal to SYT_INTERVAL but doesn't
    exceed.
    
    This patch is tested with PulseAudio, and --sched-model option of axfer
    with fix against the issue reported at:
    
     * https://lore.kernel.org/alsa-devel/687f9871-7484-1370-04d1-9c968e86f72b@linux.intel.com/#rSigned-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Link: https://lore.kernel.org/r/20210527123253.174315-1-o-takashi@sakamocchi.jpSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    d360870a
amdtp-stream.c 57.2 KB