On Thu, 27 May 2021 14:32:53 +0200, Takashi Sakamoto wrote:
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:
Signed-off-by: Takashi Sakamoto o-takashi@sakamocchi.jp
Thanks, applied.
Takashi