RE: [PATCH v4 1/2] ASoC: codecs: add support for ES8389

- ret = device_property_read_u8(codec->dev, "everest,adc-slot", &es8389->adc_slot);
- if (ret != 0) {
dev_dbg(codec->dev, "adc-slot return %d", ret);
es8389->adc_slot = 0x00;
- }
- ret = device_property_read_u8(codec->dev, "everest,dac-slot", &es8389->dac_slot);
- if (ret != 0) {
dev_dbg(codec->dev, "dac-slot return %d", ret);
es8389->dac_slot = 0x00;
- }
set_tdm_slot()
Please don't ignore review comments, people are generally making them for a reason and are likely to have the same concerns if issues remain unaddressed. Having to repeat the same comments can get repetitive and make people question the value of time spent reviewing. If you disagree with the review comments that's fine but you need to reply and discuss your concerns so that the reviewer can understand your decisions.
We will register multiple codecs inside a single dai_link and differentiate these codecs by of_node. And the adc_slot and the dac_slot may be different, they can be decided by the user.If we use set_tdm_slot,the adc_slot and the dac_slot will be same.
- if (!es8389->adc_slot) {
es8389->mclk = devm_clk_get(codec->dev, "mclk");
if (IS_ERR(es8389->mclk))
return dev_err_probe(codec->dev, PTR_ERR(es8389->mclk),
"ES8389 is unable to get mclk\n");
if (!es8389->mclk)
dev_err(codec->dev, "%s, assuming static mclk\n", __func__);
ret = clk_prepare_enable(es8389->mclk);
if (ret) {
dev_err(codec->dev, "%s, unable to enable mclk\n", __func__);
return ret;
}
- }
Making the use of a MCLK depend on the configuration of a TDM slot for the ADC seems *very* unusual, what's going on there?
Because we are associating multiple codecs under a single dai_link, we will be executing probe and init many times during initialization.But MCLK only needs to be used once.So we decided making the use of a MCLK depend on the configuration of a TDM slot for the ADC

On Wed, Mar 05, 2025 at 10:56:10AM +0800, Zhang Yi wrote:
set_tdm_slot()
We will register multiple codecs inside a single dai_link and differentiate these codecs by of_node. And the adc_slot and the dac_slot may be different, they can be decided by the user.If we use set_tdm_slot,the adc_slot and the dac_slot will be same.
No, the machine driver should be configuring different TDM slots for each device - that's the whole point of the API.
ret = clk_prepare_enable(es8389->mclk);
if (ret) {
dev_err(codec->dev, "%s, unable to enable mclk\n", __func__);
return ret;
}
- }
Making the use of a MCLK depend on the configuration of a TDM slot for the ADC seems *very* unusual, what's going on there?
Because we are associating multiple codecs under a single dai_link, we will be executing probe and init many times during initialization.But MCLK only needs to be used once.So we decided making the use of a MCLK depend on the configuration of a TDM slot for the ADC
No, each device should just get and enable the MCLK itself - the clock API does reference counting so there's no problem with this, it's normal for a clok to have multiple consumers.
participants (2)
-
Mark Brown
-
Zhang Yi