Lars-Peter Clausen wrote:
Try to add a small delay between the two commands. e.g. 'aplay -r 8000 ... & sleep 1; arecrod -r 16000 ...'. And of course the DAIs need to be configured to be asynchronous, otherwise you'll of course catch the error in the fsl_ssi driver.
Ok, I'm an idiot. I just noticed that I don't support different sample rates for playback and capture in my driver, because the CS4270 doesn't support it. The P1022DS uses the WM8776, which does support it, but I never updated the driver.
Another oddity is that I have this code:
/* Are the RX and the TX clocks locked? */ if (of_find_property(np, "fsl,ssi-asynchronous", NULL)) ssi_private->asynchronous = 1; else ssi_private->cpu_dai_drv.symmetric_rates = 1;
and later I do this:
if (!ssi_private->asynchronous) { snd_pcm_hw_constraint_minmax(substream->runtime, SNDRV_PCM_HW_PARAM_SAMPLE_BITS, first_runtime->sample_bits, first_runtime->sample_bits);
So it looks like I'm confusing sample rate locking with sample size locking. Ugh.
Anyway, I'm not in any position at the moment to verify this patch. I need to get my driver working with asynchronous sample rates first.