--- Begin Message ---
- To: "shengjiu.wang@xxxxxxxxx" <shengjiu.wang@xxxxxxxxx>
- Subject: Re: [PATCH] ASoC: fsl_sai: Use physical format width
- From: Emil Abildgaard Svendsen <EMAS@xxxxxxxxxxxxxxx>
- Date: Fri, 31 Mar 2023 14:26:33 +0000
- Cc: Emil Abildgaard Svendsen <EMAS@xxxxxxxxxxxxxxx>, "Xiubo.Lee@xxxxxxxxx" <Xiubo.Lee@xxxxxxxxx>, "alsa-devel@xxxxxxxxxxxxxxxx" <alsa-devel@xxxxxxxxxxxxxxxx>, "broonie@xxxxxxxxxx" <broonie@xxxxxxxxxx>, "festevam@xxxxxxxxx" <festevam@xxxxxxxxx>, "lgirdwood@xxxxxxxxx" <lgirdwood@xxxxxxxxx>, "linuxppc-dev@xxxxxxxxxxxxxxxx" <linuxppc-dev@xxxxxxxxxxxxxxxx>, "nicoleotsuka@xxxxxxxxx" <nicoleotsuka@xxxxxxxxx>, "tiwai@xxxxxxxx" <tiwai@xxxxxxxx>
- In-reply-to: <CAA+D8AOMTQ00Ah21w54DVXin3KcYkVxaGVd64Z_pSzv+Ooj9vw@mail.gmail.com>
- References: <CAA+D8AOMTQ00Ah21w54DVXin3KcYkVxaGVd64Z_pSzv+Ooj9vw@mail.gmail.com>
On 3/31/23 04:55, Shengjiu Wang wrote:
> On Thu, Mar 30, 2023 at 4:30 PM Emil Abildgaard Svendsen <
> EMAS@xxxxxxxxxxxxxxx> wrote:
>
>> Slot width should follow the physical width of the format instead of the
>> data width.
>>
>> This is needed for formats like SNDRV_PCM_FMTBIT_S24_LE where physical
>> width is 32 and data width is 24. By using the physical width, data
>> won't get misaligned.
>
>
> There are different requirements for this slot width. Some need physical
> width,
> Some need format width. We need to be careful about change here.
I might be wrong but shouldn't physical width always correspond to what
can be physically measured. If you need the slot width, the same as
format width you use a format with matching widths like
SNDRV_PCM_FORMAT_S24_3LE?
>
> Actually there is .set_tdm_slot API for slot specific setting, please use
> this API.
But if you're using the generic sound cards. You need to add it to the
DTS. Thus, if you want a static TDM slot width, all is fine. But if you
want to change slot width runtime then it isn't enough.
Unless I missed something.
Kind regards,
Emil Svendsen
>
> best regards
> wang shengjiu
>
>>
>> Signed-off-by: Emil Svendsen <emas@xxxxxxxxxxxxxxx>
>> ---
>> sound/soc/fsl/fsl_sai.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c
>> index 939c6bdd22c4..213e2d462076 100644
>> --- a/sound/soc/fsl/fsl_sai.c
>> +++ b/sound/soc/fsl/fsl_sai.c
>> @@ -519,13 +519,13 @@ static int fsl_sai_hw_params(struct
>> snd_pcm_substream *substream,
>> unsigned int channels = params_channels(params);
>> struct snd_dmaengine_dai_dma_data *dma_params;
>> struct fsl_sai_dl_cfg *dl_cfg = sai->dl_cfg;
>> + u32 slot_width = params_physical_width(params);
>> u32 word_width = params_width(params);
>> int trce_mask = 0, dl_cfg_idx = 0;
>> int dl_cfg_cnt = sai->dl_cfg_cnt;
>> u32 dl_type = FSL_SAI_DL_I2S;
>> u32 val_cr4 = 0, val_cr5 = 0;
>> u32 slots = (channels == 1) ? 2 : channels;
>> - u32 slot_width = word_width;
>> int adir = tx ? RX : TX;
>> u32 pins, bclk;
>> u32 watermark;
>> --
>> 2.34.1
>>
>
--- End Message ---