diff options
author | millerliang <millerliang@google.com> | 2023-06-26 17:51:29 +0800 |
---|---|---|
committer | Miller Liang <millerliang@google.com> | 2023-09-13 02:55:49 +0000 |
commit | 897e404fa79ddeeb5a156f40d3bd689d33de5db7 (patch) | |
tree | d0909f1e423177bcf935ed650d6563d92b2db9b2 | |
parent | 88d2aee3ebaee9f71daa00165df87ab165630e9d (diff) | |
download | aoc-897e404fa79ddeeb5a156f40d3bd689d33de5db7.tar.gz |
alsa: support dynamic stream type for pcm playback
Set the stream type for pcm playback to mmaped
if runtime->access is SNDRV_PCM_ACCESS_MMAP_INTERLEAVED.
Bug: 283402753
Test: Playback and Record
Change-Id: Ib62931a42364089b44b32289b661a4798c0e23f4
Signed-off-by: millerliang <millerliang@google.com>
(cherry picked from commit d86f91a0e010d078d499184135fc460d3ecb30ab)
-rw-r--r-- | alsa/aoc_alsa_pcm.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/alsa/aoc_alsa_pcm.c b/alsa/aoc_alsa_pcm.c index 157d265..1654ca0 100644 --- a/alsa/aoc_alsa_pcm.c +++ b/alsa/aoc_alsa_pcm.c @@ -569,13 +569,15 @@ static int snd_aoc_pcm_prepare(struct snd_soc_component *component, pr_debug("buffer_size=%d, period_size=%d pos=%d frame_bits=%d\n", alsa_stream->buffer_size, alsa_stream->period_size, alsa_stream->pos, runtime->frame_bits); - /* Advance the write ptr in the DRAM ring buffer for mmap-based playback */ - if (alsa_stream->stream_type == MMAPED && - alsa_stream->substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { - avail = aoc_ring_bytes_available_to_write(dev->service, AOC_DOWN); - if (!aoc_service_advance_write_index(dev->service, AOC_DOWN, avail)) { - dev_err(&(dev->dev), "ERR: in advancing pcm playback writer ptr\n"); - } + if (alsa_stream->substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { + if (runtime->access == SNDRV_PCM_ACCESS_MMAP_INTERLEAVED) { + alsa_stream->stream_type = MMAPED; + /* Advance the write ptr in the DRAM ring buffer for mmap-based playback */ + avail = aoc_ring_bytes_available_to_write(dev->service, AOC_DOWN); + if (!aoc_service_advance_write_index(dev->service, AOC_DOWN, avail)) + dev_err(&(dev->dev), "ERR: in advancing pcm playback writer ptr\n"); + } else + alsa_stream->stream_type = NORMAL; } out: |