aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/intel/boards/skl_hda_dsp_generic.c
diff options
context:
space:
mode:
authorRander Wang <rander.wang@linux.intel.com>2019-04-30 17:37:42 -0500
committerMark Brown <broonie@kernel.org>2019-05-03 15:03:30 +0900
commit2b131b5a25f5917028714fd708a3ca3916683e48 (patch)
treebe9eac6d3034cb116d04222556e72ad2646c23b6 /sound/soc/intel/boards/skl_hda_dsp_generic.c
parentASoC: SOF: Intel: CNL: add ipc dump function (diff)
downloadlinux-dev-2b131b5a25f5917028714fd708a3ca3916683e48.tar.xz
linux-dev-2b131b5a25f5917028714fd708a3ca3916683e48.zip
ASoC: Intel: skl_hda_dsp_generic: add DMIC support
Add dmic dai links using naming conventions used in previous machine drivers. Tested on whiskylake & icelake with SOF driver. Due to a missing topology file, the DMIC functionality could not be tested with the Skylake driver but was tested for non-regressions on a GeminiLake platform without DMICs. Signed-off-by: Rander Wang <rander.wang@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/intel/boards/skl_hda_dsp_generic.c')
-rw-r--r--sound/soc/intel/boards/skl_hda_dsp_generic.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/sound/soc/intel/boards/skl_hda_dsp_generic.c b/sound/soc/intel/boards/skl_hda_dsp_generic.c
index b9a21e64ead2..e69dc36b6600 100644
--- a/sound/soc/intel/boards/skl_hda_dsp_generic.c
+++ b/sound/soc/intel/boards/skl_hda_dsp_generic.c
@@ -97,6 +97,9 @@ static struct snd_soc_card hda_soc_card = {
};
#define IDISP_DAI_COUNT 3
+#define HDAC_DAI_COUNT 2
+#define DMIC_DAI_COUNT 2
+
/* there are two routes per iDisp output */
#define IDISP_ROUTE_COUNT (IDISP_DAI_COUNT * 2)
#define IDISP_CODEC_MASK 0x4
@@ -112,8 +115,20 @@ static int skl_hda_fill_card_info(struct snd_soc_acpi_mach_params *mach_params)
codec_count = hweight_long(codec_mask);
if (codec_count == 1 && codec_mask & IDISP_CODEC_MASK) {
- num_links = IDISP_DAI_COUNT;
+ num_links = IDISP_DAI_COUNT + DMIC_DAI_COUNT;
num_route = IDISP_ROUTE_COUNT;
+
+ /*
+ * rearrange the dai link array and make the
+ * dmic dai links follow idsp dai links for only
+ * num_links of dai links need to be registered
+ * to ASoC.
+ */
+ for (i = 0; i < DMIC_DAI_COUNT; i++) {
+ skl_hda_be_dai_links[IDISP_DAI_COUNT + i] =
+ skl_hda_be_dai_links[IDISP_DAI_COUNT +
+ HDAC_DAI_COUNT + i];
+ }
} else if (codec_count == 2 && codec_mask & IDISP_CODEC_MASK) {
num_links = ARRAY_SIZE(skl_hda_be_dai_links);
num_route = ARRAY_SIZE(skl_hda_map),