[alsa-devel] [PATCH 2/2] ASoC: fsl_ssi: Fix number of words per frame for I2S-slave mode

Alexander Shiyan shc_work at mail.ru
Wed Jun 29 09:52:01 CEST 2016


>Среда, 29 июня 2016, 1:06 +03:00 от Nicolin Chen <nicoleotsuka at gmail.com>:
>
>On Tue, Jun 28, 2016 at 10:59:32PM +0300, Alexander Shiyan wrote:
>> >Вторник, 28 июня 2016, 21:20 +03:00 от Nicolin Chen < nicoleotsuka at gmail.com >:
>> >
>> >On Sat, Jun 25, 2016 at 07:59:22AM +0300, Alexander Shiyan wrote:
>> >> The i.MX51 datasheet says:
>> >> Chapter 56.1.2.4 I2S Mode
>> >> ...
>> >> When I2S modes are entered (I2S master (01) or I2S slave (10)),
>> >> the following settings are recommended:
>> >> ...
>> >> - TX Frame Rate should be 2 i.e. (STCCR[12:8] = 1)
>> >> - RX Frame Rate should be 2 i.e. (SRCCR[12:8] = 1)
>> >> 
>> >> Chapter 56.3.3.12 SSI Transmit and Receive Clock Control Registers (STCCR & SRCCR)
>> >> ...
>> >> Bits 12-8 DC4-DC0
>> >> Frame Rate Divider Control. These bits are used to control the divide ratio
>> >> for the programmable frame rate dividers. The divide ratio works on the word
>> >> clock. In Normal mode, this ratio determines the word transfer rate.
>> >> In Network mode, this ratio sets the number of words per frame. The divide
>> >> ratio ranges from 1 to 32 in Normal mode and from 2 to 32 in Network mode.
>> >> In Normal mode, a divide ratio of 1 (DC=00000) provides continuous periodic
>> >> data word transfer. A bit-length frame sync must be used in this case.
>> >> 
>> >> Function fsl_ssi_hw_params() setup Normal mode for MONO output,
>> >> so with DC=0, SSI enters to continuous periodic data word transfer.
>> >> To fix this, setup DC for any I2S mode.
>> >
>> >The change looks fine and didn't show any problem when I tested it.
>> >But I am wondering what's the failed user case here so we need this
>> >patch to fix? (The mono playback works without this patch as well.)
>> 
>> Probably this works fine without patch if FSclk == BITclk * size.
>
>I acked this patch since it's more likely a correct configuration
>according to the reference manual while still want to know what's
>your failed case. Could you please tell me what were the FSclk,
>BITclk and size of your case?

Hello.

Here is my oscillograms with/without patch:
Bclk=12 MHz, sound is just a "cat /dev/urandom > /dev/dsp", i.e. FS=8 KHz, MONO.
Upper (yellow) line is TXDATA, Lower (blue) is FS.

Measurement without patch: https://cloud.mail.ru/public/Rcsv/xr88V5Sa1
Measurement with patch: https://cloud.mail.ru/public/NCwn/DQnzioQEL

Thanks.
---



More information about the Alsa-devel mailing list