[Sound-open-firmware] [PATCH v2 2/3] dai: set dai dma burst_elems according to slot number

Jie, Yang yang.jie at intel.com
Tue Dec 19 15:11:41 CET 2017


>-----Original Message-----
>From: sound-open-firmware-bounces at alsa-project.org [mailto:sound-open-
>firmware-bounces at alsa-project.org] On Behalf Of Pierre-Louis Bossart
>Sent: Tuesday, December 19, 2017 9:37 PM
>To: Keyon Jie <yang.jie at linux.intel.com>; sound-open-firmware at alsa-
>project.org
>Cc: Jie, Yang <yang.jie at intel.com>
>Subject: Re: [Sound-open-firmware] [PATCH v2 2/3] dai: set dai dma burst_elems
>according to slot number
>
>
>
>On 12/18/2017 11:06 PM, Keyon Jie wrote:
>> We should set burst_elems for dma peripheral dev copy, for dai/ssp, it
>> should be set to valid slot number, otherwise, the dma may copy in
>> wrong burst size and data will run with wrong speed.
>I don't think the commit message reflects the code, it's really the total number of
>active slots and not the slot number(s) that we care about, right?

This is a good topic. At the moment, we are using topology file to configure dai,
e.g. DAI_TDM(2, 20, 3, 3), which set num_slots(corresponding to 'slot number(s)'
you mentioned?) to 2 and tx slot mask to 0x3(slot0and slot1 enabled, corresponding
to 'the total number' in your context?), so they are same for us actually at this case.

But imagine that if we set tx slot mask to, e.g. 0x1, should we set burst_elems to
1 or 2? I tend to set 1 at this case, but not 100% sure about it yet, Maybe we need
experiment and fix bugs if exist.

So back to your question, I think the answer is yes, using active slots number may
be more accurate, though we need experiment on that later.

Thanks,
~Keyon

>>
>> Signed-off-by: Keyon Jie <yang.jie at linux.intel.com>
>> ---
>>   src/audio/dai.c | 5 +++++
>>   1 file changed, 5 insertions(+)
>>
>> diff --git a/src/audio/dai.c b/src/audio/dai.c index c50a274..9058f5c
>> 100644
>> --- a/src/audio/dai.c
>> +++ b/src/audio/dai.c
>> @@ -601,6 +601,11 @@ static int dai_position(struct comp_dev *dev,
>> struct sof_ipc_stream_posn *posn)
>>
>>   static int dai_config(struct comp_dev *dev, struct sof_ipc_dai_config *config)
>>   {
>> +	struct dai_data *dd = comp_get_drvdata(dev);
>> +
>> +	/* set dma burst elems to slot number */
>> +	dd->config.burst_elems = config->num_slots;
>> +
>>   	/* calc frame bytes */
>>   	switch (config->sample_valid_bits) {
>>   	case 16:
>
>_______________________________________________
>Sound-open-firmware mailing list
>Sound-open-firmware at alsa-project.org
>http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware


More information about the Sound-open-firmware mailing list