On 24/05/2023 15:45, Trevor Wu (吳文良) wrote:
On Wed, 2023-05-24 at 15:28 +0200, Alexandre Mergnat wrote:
External email : Please do not click links or open attachments until you have verified the sender or the content.
On 24/05/2023 04:25, Trevor Wu (吳文良) wrote:
On Tue, 2023-05-23 at 18:26 +0200, Alexandre Mergnat wrote:
On 23/05/2023 04:19, Trevor Wu wrote:
ADDA_BE is used to connect to mt6359. For machine mt8188- mt6359, codec for ADDA_BE must be mt6359 which are configured on the machine driver. Besides, ADDA_BE is divided into two dais, UL_SRC_BE and DL_SRC_BE. As a result, remove ADDA_BE from items of link-name.
Signed-off-by: Trevor Wutrevor.wu@mediatek.com
I don't understand how "DL_SRC_BE" and "UL_SRC_BE" links are done. Why these dais don't replace "ADDA_BE" in this binding ?
Regards, Alexandre
Hi Alexandre,
Because the sound card is mt8188-mt6359, the codec for these two links must be mt6359. Thus, I specifiy the codec in machine driver directly. If the codec is changed, there will be a new sound card and binding file. In conclusion, the codec won't be updated via dts, and that's why I don't just replace ADDA_BE in this binding.
Do you suggest me add some information in the commit message?
No it's fine, I'm just trying to understand.
When you say "I specifiy the codec in machine driver directly", you are talking about this change ?
} else if (strcmp(dai_link->name, "DL_SRC_BE") == 0
||
strcmp(dai_link->name, "UL_SRC_BE") == 0)
{
if (!init_mt6359) {
dai_link->init = mt8188_mt6359_init;
I'm asking because the equivalent was done here:
[DAI_LINK_ADDA_BE] = {
.name = "ADDA_BE",
[DAI_LINK_DL_SRC_BE] = {
.name = "DL_SRC_BE", .no_pcm = 1, .dpcm_playback = 1,
.dpcm_capture = 1,
.init = mt8188_mt6359_init,
SND_SOC_DAILINK_REG(adda),
SND_SOC_DAILINK_REG(dl_src),
So I'm wondering why "ADDA_BE" & "DPTX_BE" & "ETDM3_OUT_BE" are in the enum list of the binding since the codec is already specified in machine driver too. I probably miss something but I don't know what.
The following code snippet is cut from [PATCH v2 1/7].
/* BE */ -SND_SOC_DAILINK_DEFS(adda,
DAILINK_COMP_ARRAY(COMP_CPU("ADDA")),
+SND_SOC_DAILINK_DEFS(dl_src,
DAILINK_COMP_ARRAY(COMP_CPU("DL_SRC")), DAILINK_COMP_ARRAY(COMP_CODEC("mt6359-sound", "mt6359-snd-codec-
aif1")), DAILINK_COMP_ARRAY(COMP_EMPTY())); @@ -140,6 +140,12 @@ SND_SOC_DAILINK_DEFS(pcm1, DAILINK_COMP_ARRAY(COMP_DUMMY()), DAILINK_COMP_ARRAY(COMP_EMPTY()));
+SND_SOC_DAILINK_DEFS(ul_src,
DAILINK_COMP_ARRAY(COMP_CPU("UL_SRC")),
DAILINK_COMP_ARRAY(COMP_CODEC("mt6359-sound",
"mt6359-snd-codec-
aif1")),
DAILINK_COMP_ARRAY(COMP_EMPTY()));
This is why I talk about specifying the codec it connects in the machine driver. If you check other dai-links, you would see COMP_DUMMY() in the COMP_CODEC() field.
Ok thanks for the explanation. If I understand well, ADDA_BE could have been removed from the enum list before your serie because the codec was already specified for ADDA_BE.
Reviewed-by: Alexandre Mergnat amergnat@baylibre.com