On Fri, 2017-11-17 at 08:35 -0600, Pierre-Louis Bossart wrote:
On 11/16/17 4:01 PM, Liam Girdwood wrote:
WiP: The DAI should not be stopped and the restarted on XRUNs
Are you sure about this one? if you have an xrun leading to a channel swap, that's not something you could ever recover from?
This was why it was WiP :)
I'm planning a patch for the SSP part later, but in general the DAI component would pass the XRUN onto the SSP driver and await a return on how to handle it. e.g. SSP driver error status could indicate whether we need to restart SSP (due to BCE or underrun or overruns).
Flow would go something like :-
1) SSP IRQ fires and status indicates xrun/BCE. SSP IRQ handler notifies pipeline of XRUN.
2) Pipeline XRUN handler runs through all components, DAI component takes XRUN and check action with SSP driver. SSP indicates whether restart is needed.
3) DAI layer takes any XRUN actions.
4) Playback continues.
Liam