Hi Sakamoto-san, Mark
Thank you for your feedback
Ctrl-Z case
- aplay xxx.wav
=> - hw_param
- SNDRV_PCM_TRIGGER_START
- Ctrl-Z
- SNDRV_PCM_TRIGGER_STOP
- fg
=> - ## no hw_param here
- SNDRV_PCM_TRIGGER_START
- Ctrl-C (stop)
- SNDRV_PCM_TRIGGER_STOP
No issues.
I think it better to implement what you want in any .prepare callbacks, instead of the .be_hw_params_fixup callback, because in this case, PCM substream lapses into XRUN state in call graph from your hw IRQ handler. Typical applications recover from this state by calling ioctl(PREPARE), without any call of ioctl(HW_PARAMS).
Actually, you can see applications call ioctl(PREPARE), before you see call of 'struct snd_pcm_ops.trigger(START)'.
Hmm... Above .be_hw_params_fixup is used to convert sampling rate or channel number or some other related things between SoC / Codec as DPCM feature. Thus, I can't switch to .be_hw_params_fixup to .prepare I guess. But Mark, am I misunderstanding ?
Best regards --- Kuninori Morimoto