On 6/29/2020 6:26 AM, Kuninori Morimoto wrote:
External email: Use caution opening links or attachments
Hi Sameer
simple-audio-card,dai-link@xxx {
format = "i2s";
bitclock-master=<&cpu1>;
frame-master=<&cpu1>;
cpu1: cpu@0 {
...
};
codec@0 {
...
};
...
};
In above case CPU is expected to be configured as a master and Codec as
a slave device. But both CPU/Codec are being configured as slave devices.
This happens because asoc_simple_parse_daifmt() uses Codec reference and
sets up the 'dai_link->dai_fmt' accordingly while parsing both CPU and
Codec.
I'm sorry but I don't 100% understand about this case...
asoc_simple_parse_daifmt() should work in this case
The reason why it needs codec node is that
SND_SOC_DAIFMT_CBx_CFx are "Codec" base Master/Slave.
Currently soc-core has following code snippet,
/snd_soc_runtime_set_dai_fmt() {//
// ...//
//
// if (cpu_dai->component->driver->non_legacy_dai_naming)//
// fmt = inv_dai_fmt;//
//
// ...//
// }/
Above flips polarity for 'cpu_dai' if 'non_legacy_dai_naming' flag is set.
1. Hence example mentioned in the commit message does not work if my
'cpu_dai' driver does not have this flag set.
2. While it is true that we consider reference of 'Codec' mode for
simple CPU<->Codec DAI links, for DPCM this does not seem flexible. For
DPCM links CPU and Codec are not directly connected (CPU<->Dummy or
Dummy<->Codec). Please consider, for example, if the DAI link has
multiple CPU/Codecs. Which 'Codec' reference needs to be considered?
Isn't it better if we explicitly mention which DAI we want to operate as
'Master'?
Thank you for your help !!
Best regards
---
Kuninori Morimoto