[alsa-devel] [PATCH v2] ASoC: fsl_ssi: Fix channel swap on playback start

Caleb Crome caleb at crome.org
Tue Apr 4 01:22:48 CEST 2017


On Mon, Apr 3, 2017 at 2:53 PM, Fabio Estevam <festevam at gmail.com> wrote:
> Hi Caleb,
>
> On Mon, Apr 3, 2017 at 5:32 PM, Caleb Crome <caleb at crome.org> wrote:
>
>> This patch definitely breaks the i.mx6 channel alignment.  In fact it
>> breaks it so that the channels are never aligned properly.
>>
>> My test setup is as follows:
>> * Get vanilla kernel, tag v4.11-rc5
>
> Thanks for testing.
>
> Just tested 4.11-rc5. It needs this additional patch:
> https://patchwork.ozlabs.org/patch/745349/
>
> otherwise pinctrl hog is broken and then sgtl5000 does not probe due
> to the lack of MCLK.
>
> I am using the original imx6dl-wandboard.dtb on my tests with no
> hardware changes.
>
> The test I am running is simple: just run the following script on the wandboard:
>
> #!/bin/bash
>
> while true
> do
> aplay swap_test.wav& sleep 1; killall aplay
> done

With a vanilla kernel, it works perfectly with the pinctrl patch.
In this case, I ran a cable from the wandboard over to my computer and
recorded with audacity, using your wile true script above.
Here you can see that with 4.11-rc5 plus the pinctrl patch, there is
no channel swapping:

http://imgur.com/od0LoJP

With this fsl_ssi patch, it also doesn't fail.


However, the playback only test is fine insofar as it goes, but it
doesn't cover many important test cases:
* multi-channel operation
* Playback only
* Record only
* Playback running, then record starts
* record running, then playback starts
* playback & record running, record stops
* playback & record running, playback stops
* repeats of some of these (ie.. sometimes fifos don't get cleared)

These were all meticulously tested before, and it's rock solid now for
me on the MX6 with the 4.11-rc5.

I can say for 100% sure, this patch breaks multi-channel operation on i.MX6.


>
> You can get swap_test.wav file that consists of silence in the left
> channel and none silence in the right channel from here:
> https://www.dropbox.com/s/4zt0jvmtx34ic9x/swap_test.wav?dl=0

Ah, swap_test is at 44.1kHz.  I get
Playing WAVE 'swap_test.wav' : Signed 16 bit Little Endian, Rate 44100
Hz, Stereo
./asdf: line 5: kill: pts/0: arguments must be process or job IDs
aplay: main:722: audio open error: Device or resource busy
./asdf: line 5: kill: pts/0: arguments must be process or job IDs
aplay: main:722: audio open error: Device or resource busy

It works at 48kHz.

>
> Then keep listening the left channel. In about one out of ten times
> you will get non-silence there, indicating a swap.

I never saw this in either case with stereo only, 48kHz. .

-Caleb


More information about the Alsa-devel mailing list