Loading sound/soc/amd/acp-pcm-dma.c +14 −8 Original line number Diff line number Diff line Loading @@ -1040,16 +1040,22 @@ static snd_pcm_uframes_t acp_dma_pointer(struct snd_pcm_substream *substream) if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) { period_bytes = frames_to_bytes(runtime, runtime->period_size); bytescount = acp_get_byte_count(rtd); if (bytescount >= rtd->bytescount) bytescount -= rtd->bytescount; if (bytescount < period_bytes) { pos = 0; } else { dscr = acp_reg_read(rtd->acp_mmio, rtd->dma_curr_dscr); if (dscr == rtd->dma_dscr_idx_1) pos = period_bytes; else pos = 0; bytescount = acp_get_byte_count(rtd); if (bytescount > rtd->bytescount) bytescount -= rtd->bytescount; } if (bytescount > 0) { delay = do_div(bytescount, period_bytes); runtime->delay = bytes_to_frames(runtime, delay); } } else { buffersize = frames_to_bytes(runtime, runtime->buffer_size); bytescount = acp_get_byte_count(rtd); Loading Loading
sound/soc/amd/acp-pcm-dma.c +14 −8 Original line number Diff line number Diff line Loading @@ -1040,16 +1040,22 @@ static snd_pcm_uframes_t acp_dma_pointer(struct snd_pcm_substream *substream) if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) { period_bytes = frames_to_bytes(runtime, runtime->period_size); bytescount = acp_get_byte_count(rtd); if (bytescount >= rtd->bytescount) bytescount -= rtd->bytescount; if (bytescount < period_bytes) { pos = 0; } else { dscr = acp_reg_read(rtd->acp_mmio, rtd->dma_curr_dscr); if (dscr == rtd->dma_dscr_idx_1) pos = period_bytes; else pos = 0; bytescount = acp_get_byte_count(rtd); if (bytescount > rtd->bytescount) bytescount -= rtd->bytescount; } if (bytescount > 0) { delay = do_div(bytescount, period_bytes); runtime->delay = bytes_to_frames(runtime, delay); } } else { buffersize = frames_to_bytes(runtime, runtime->buffer_size); bytescount = acp_get_byte_count(rtd); Loading