Skip to content

ASoC: SOF: reset DMA state in prepare - #1049

Merged
ranj063 merged 3 commits into
thesofproject:topic/sof-devfrom
kv2019i:topic/pcm-startstop-flood
Jul 5, 2019
Merged

ranj063 merged 3 commits into
thesofproject:topic/sof-devfrom
kv2019i:topic/pcm-startstop-flood

Conversation

@kv2019i

@kv2019i kv2019i commented Jun 19, 2019 •

Copy link
Copy Markdown
Collaborator

The PCM status for hw_ptr and appl_ptr is reset at prepare
by ALSA core (see snd_pcm_do_prepare()).

When application goes through SUSPEND/STOP->PREPARE->START
cycle, we should always reprogram the SOF device DMA to start
zero offset. Otherwise first call to pcm pointer() will
return an invalid hw_ptr and application may immediately
observe XRUN status, unless "start_threshold" SW parameter
is set to maximum value by the application.

In current SOF, prepare() implementation in SOF core only
reprograms the HW in case system is resuming from S3. So
we are clearly not following ALSA semantics here.

In this RFC patch, enforce correct DMA programming by
freeing the HW params at each stop. This does more than
is needed, but ensures aligned start after prepare() is called.

Fixes #1062 #1057

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

start/stop floods with applications using start threshold, e.g. with aplay+S3

7 participants