Re: [alsa-devel] [PATCH 10/10] ASoC: Add codec component for AD242x nodes

From: Daniel Mack
Date: Wed Dec 18 2019 - 04:49:43 EST


Hi,

On 12/17/19 8:28 PM, Pierre-Louis Bossart wrote:
> On 12/9/19 12:35 PM, Daniel Mack wrote:

>> +ÂÂÂ if (!ad242x_node_is_master(priv->node) &&
>> +ÂÂÂÂÂÂ ((format & SND_SOC_DAIFMT_MASTER_MASK) !=
>> SND_SOC_DAIFMT_CBM_CFM)) {
>> +ÂÂÂÂÂÂÂ dev_err(component->dev, "slave node must be clock master\n");
>> +ÂÂÂÂÂÂÂ return -EINVAL;
>> +ÂÂÂ }
>
> It was my understanding that the master node provides the clock to the
> bus, so not sure how it could be a clock slave, and conversely how a
> slave node could provide a clock to the bus?

The slave nodes receive the A2B clock from the master node and then
produce digital audio output that is sent to other components such as
codecs. Hence, in ASoC terms, they are the clock master.

Likewise, as the master node is receiving its clock from other
components, it has to be a clock slave in the audio network.

Does that make sense?

>> +ÂÂÂ switch (params_format(params)) {
>> +ÂÂÂ case SNDRV_PCM_FORMAT_S16_LE:
>> +ÂÂÂÂÂÂÂ if (priv->node->tdm_slot_size != 16)
>> +ÂÂÂÂÂÂÂÂÂÂÂ return -EINVAL;
>> +ÂÂÂÂÂÂÂ break;
>> +ÂÂÂ case SNDRV_PCM_FORMAT_S32_LE:
>> +ÂÂÂÂÂÂÂ if (priv->node->tdm_slot_size != 32)
>> +ÂÂÂÂÂÂÂÂÂÂÂ return -EINVAL;
>> +ÂÂÂÂÂÂÂ break;
>> +ÂÂÂ default:
>> +ÂÂÂÂÂÂÂ return -EINVAL;
>> +ÂÂÂ }
>
> how does this work for PDM data?
>
> is the PDM data packed into a regular TDM slot?

Yes. But I admit this needs some more testing. We're still working on
the hardware that uses this. I'll revisit this.

And I'll also add a lot more comments all over the place, as also
requested by Lee.


Thanks,
Daniel