On 9/8/21 8:39 AM, Chiang, Mac wrote:
Fixed Bard's address.
Quik summary: there are multiple issues below with rather unclear handling of two separate configurations.
There are 3 hw boards support, I summarize as below:
- SSP2 connects 98390, with 2 speakers.
- SSP1 connects 98390, with 2 speakers or 4 speakers.
Thanks Piere. Please review my comments if I misunderstand.
Please clearly identify these configurations in the next revision, thanks!
+int max_98390_spk_codec_init(struct snd_soc_pcm_runtime *rtd) {
- struct snd_soc_card *card = rtd->card;
- int ret;
- ret = snd_soc_dapm_new_controls(&card->dapm,
max_98390_tt_dapm_widgets,
ARRAY_SIZE(max_98390_tt_dapm_widgets));
- if (ret) {
dev_err(rtd->dev, "unable to add dapm controls, ret %d\n",
ret);
/* Don't need to add routes if widget addition failed */
return ret;
- }
- ret = snd_soc_add_card_controls(card, max_98390_tt_kcontrols,
ARRAY_SIZE(max_98390_tt_kcontrols));
- if (ret) {
dev_err(rtd->dev, "unable to add card controls, ret %d\n",
ret);
return ret;
- }
- ret = snd_soc_dapm_add_routes(&card->dapm,
max_98373_dapm_routes,
ARRAY_SIZE(max_98373_dapm_routes));
- if (ret) {
dev_err(rtd->dev, "Speaker Left, Right map addition failed:
%d\n", ret);
return ret;
- }
- ret = snd_soc_dapm_add_routes(&card->dapm,
max_98390_tt_dapm_routes,
ARRAY_SIZE(max_98390_tt_dapm_routes));
- if (ret)
dev_err(rtd->dev, "Tweeter Speaker Left, Right map addition
failed:
+%d\n", ret);
- return ret;
+} +EXPORT_SYMBOL_NS(max_98390_spk_codec_init, +SND_SOC_INTEL_SOF_MAXIM_COMMON);
again what happens if you don't have tweeters in the configuration? Why would you add DAPM routes to a non-existent codec?
Without tweeter quirk, it goes to apply max_98390_codec_conf from max_98390_set_codec_conf() With tweeter quirk, it goes to apply max_98390_4spk_codec_conf from max_98390_set_codec_conf()
what I meant here is that you will add the max_98390_tt_dapm_routes even in the two speaker case. That doesn't seem right?