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

Daniel Mack daniel at zonque.org
Fri Dec 20 09:24:10 CET 2019


Hi Pierre,

[reducing the recipient list ALSA people]

On 12/18/19 4:32 PM, Pierre-Louis Bossart wrote:
> On 12/18/19 3:49 AM, Daniel Mack wrote:
>> 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?
> 
> Your slave node acts as a bridge then, but it seems you don't model the
> bus-facing interface, which has to follow the master clock. Or do you?

Yes, the driver currently only models the SOC-facing side, and that
follows the 'reverse' clocking scheme:

* The master node always receives the clock on the SOC-facing side, and
produces the clock on the bus-facing side.
* The slave node always receives the clock on the bus-facing side, and
produces the clock on the SOC-facing side.

I currently don't see a reason for modelling the bus-facing side in the
ASoC topology at all, but of course that could be added.

But for the SOC-facing side on *slave* nodes, the currently implemented
logic should be correct, no? Do you think it makes sense to add the
bus-side as well?

> Likewise the master has an 'SOC-facing' interface and a bus-facing
> interface. it *could* be master on both if ASRC was supported. The point
> is that the bus-facing interface is not clock slave.

That's right, I need to look into the modes for the master node again.
Maybe the check needs to be relaxed on that end.


Thanks,
Daniel



More information about the Alsa-devel mailing list