On Mon, 18 Oct 2021 17:05:13 +0200, Pierre-Louis Bossart wrote:
From: Ranjani Sridharan ranjani.sridharan@linux.intel.com
When we disable rewinds, then the .ack can be used to program SPIB with the application pointer, which allows the HDaudio DMA to save power by opportunistically bursting data transfers when the path to memory is enabled (and conversely to shut it down when there are no transfer requests).
The SPIB register can only be programmed with incremental values with wrap-around after the DMA RUN bits are set. For simplicity, we set the INFO_NO_REWINDS flag in the .open callback when we already need to program the SNDRV_PCM_INFO_EXPLICIT_SYNC flag.
Using this flag itself isn't wrong, but if we need to check only appl_ptr updates, a more appropriate flag is SNDRV_PCM_INFO_SYNC_APPLPTR. This will still allow the mmap of status (i.e. hwptr update) while the mmap of control is disabled for appl_ptr. SNDRV_PCM_INFO_EXPLICIT_SYNC flag disables both, instead.
I don't mind, but now we're officially out of INFO flags :-)
NO_REWINDS took the last available bit...
I mean only about the use EXPLICIT_SYNC flag. There has been already an info flag SYNC_APPLPTR, and this should suffice for your purpose. In a nutshell:
EXPLICIT_SYNC = disable both control and status mmaps SYNC_APPLPTR = disable only control mmap
Takashi