ASoC: Intel: avs: Unhardcode HDAudio BE DAI drivers description

To not expose more than in fact is supported by the codec, update CPU
DAI initialization procedure to rely on codec capabilities instead of
hardcoding them. This includes subformat which is currently ignored.

As capabilities for HDMI streams are initialized on PCM open, leave it
as is for now.

Acked-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Acked-by: Jaroslav Kysela <perex@perex.cz>
Link: https://lore.kernel.org/r/20231117120610.1755254-17-cezary.rojewski@intel.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Cezary Rojewski 2023-11-17 13:06:10 +01:00 committed by Takashi Iwai
parent c93c604e93
commit f8ccb133c9

View File

@ -17,6 +17,7 @@
#include "avs.h"
#include "path.h"
#include "topology.h"
#include "../../codecs/hda.h"
struct avs_dma_data {
struct avs_tplg_path_template *template;
@ -1406,6 +1407,15 @@ static int avs_component_hda_probe(struct snd_soc_component *component)
ret = -ENOMEM;
goto exit;
}
if (!hda_codec_is_display(codec)) {
dais[i].playback.formats = pcm->stream[0].formats;
dais[i].playback.subformats = pcm->stream[0].subformats;
dais[i].playback.rates = pcm->stream[0].rates;
dais[i].playback.channels_min = pcm->stream[0].channels_min;
dais[i].playback.channels_max = pcm->stream[0].channels_max;
dais[i].playback.sig_bits = pcm->stream[0].maxbps;
}
}
if (pcm->stream[1].substreams) {
@ -1416,6 +1426,15 @@ static int avs_component_hda_probe(struct snd_soc_component *component)
ret = -ENOMEM;
goto exit;
}
if (!hda_codec_is_display(codec)) {
dais[i].capture.formats = pcm->stream[1].formats;
dais[i].capture.subformats = pcm->stream[1].subformats;
dais[i].capture.rates = pcm->stream[1].rates;
dais[i].capture.channels_min = pcm->stream[1].channels_min;
dais[i].capture.channels_max = pcm->stream[1].channels_max;
dais[i].capture.sig_bits = pcm->stream[1].maxbps;
}
}
dai = snd_soc_register_dai(component, &dais[i], false);