summaryrefslogtreecommitdiff
path: root/sound/soc/intel/boards/sof_sdw_dmic.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2020-03-27 17:28:36 +0000
committerMark Brown <broonie@kernel.org>2020-03-27 17:28:36 +0000
commit3d2cdb854659851d991f5b8e97e847e3fd240625 (patch)
tree378a11e32d92346cc15eb2ee675e8400877a551f /sound/soc/intel/boards/sof_sdw_dmic.c
parentacd4946f5bf031fa38e64bfe2467be94a1b8c25d (diff)
parent798313f29b6b510a7df386cf7e8e4636afe61e81 (diff)
Merge series "ASoC: Intel: add SoundWire machine driver" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
To handle multiple hardware combinations, this patchset suggests a single machine driver which will create and initialize dailinks dynamically. This allows us to support new configurations easily, as shown with the TigerLake rt5682 example. Each configuration updates the card component string, and UCM can test for the presence of components to configure them as needed. Since we use a single the machine driver name, all previous ACPI tables need to be updated. That should have no impact since the machine drivers listed at the time were not upstreamed and are no longer maintained. Naveen Manohar (2): ASoC: Intel: common: add match table for TGL RT5682 SoundWire driver ASoC: Intel: sof_sdw: Add Volteer support with RT5682 SNDW helper function Pierre-Louis Bossart (1): ASoC: Intel: boards: add sof_sdw machine driver Rander Wang (1): ASoC: Intel: soc-acpi: update topology and driver name for SoundWire platforms sound/soc/intel/boards/Kconfig | 24 + sound/soc/intel/boards/Makefile | 8 +- sound/soc/intel/boards/sof_sdw.c | 962 ++++++++++++++++++ sound/soc/intel/boards/sof_sdw_common.h | 114 +++ sound/soc/intel/boards/sof_sdw_dmic.c | 42 + sound/soc/intel/boards/sof_sdw_hdmi.c | 97 ++ sound/soc/intel/boards/sof_sdw_rt1308.c | 151 +++ sound/soc/intel/boards/sof_sdw_rt5682.c | 126 +++ sound/soc/intel/boards/sof_sdw_rt700.c | 125 +++ sound/soc/intel/boards/sof_sdw_rt711.c | 156 +++ sound/soc/intel/boards/sof_sdw_rt715.c | 42 + .../intel/common/soc-acpi-intel-cml-match.c | 24 +- .../intel/common/soc-acpi-intel-icl-match.c | 6 +- .../intel/common/soc-acpi-intel-tgl-match.c | 30 +- 14 files changed, 1896 insertions(+), 11 deletions(-) create mode 100644 sound/soc/intel/boards/sof_sdw.c create mode 100644 sound/soc/intel/boards/sof_sdw_common.h create mode 100644 sound/soc/intel/boards/sof_sdw_dmic.c create mode 100644 sound/soc/intel/boards/sof_sdw_hdmi.c create mode 100644 sound/soc/intel/boards/sof_sdw_rt1308.c create mode 100644 sound/soc/intel/boards/sof_sdw_rt5682.c create mode 100644 sound/soc/intel/boards/sof_sdw_rt700.c create mode 100644 sound/soc/intel/boards/sof_sdw_rt711.c create mode 100644 sound/soc/intel/boards/sof_sdw_rt715.c -- 2.20.1
Diffstat (limited to 'sound/soc/intel/boards/sof_sdw_dmic.c')
-rw-r--r--sound/soc/intel/boards/sof_sdw_dmic.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/sound/soc/intel/boards/sof_sdw_dmic.c b/sound/soc/intel/boards/sof_sdw_dmic.c
new file mode 100644
index 000000000000..e92176bf0ad4
--- /dev/null
+++ b/sound/soc/intel/boards/sof_sdw_dmic.c
@@ -0,0 +1,42 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (c) 2020 Intel Corporation
+
+/*
+ * sof_sdw_dmic - Helpers to handle dmic from generic machine driver
+ */
+
+#include <sound/soc.h>
+#include <sound/soc-acpi.h>
+#include "sof_sdw_common.h"
+
+static const struct snd_soc_dapm_widget dmic_widgets[] = {
+ SND_SOC_DAPM_MIC("SoC DMIC", NULL),
+};
+
+static const struct snd_soc_dapm_route dmic_map[] = {
+ /* digital mics */
+ {"DMic", NULL, "SoC DMIC"},
+};
+
+int sof_sdw_dmic_init(struct snd_soc_pcm_runtime *rtd)
+{
+ struct snd_soc_card *card = rtd->card;
+ int ret;
+
+ ret = snd_soc_dapm_new_controls(&card->dapm, dmic_widgets,
+ ARRAY_SIZE(dmic_widgets));
+ if (ret) {
+ dev_err(card->dev, "DMic widget addition failed: %d\n", ret);
+ /* Don't need to add routes if widget addition failed */
+ return ret;
+ }
+
+ ret = snd_soc_dapm_add_routes(&card->dapm, dmic_map,
+ ARRAY_SIZE(dmic_map));
+
+ if (ret)
+ dev_err(card->dev, "DMic map addition failed: %d\n", ret);
+
+ return ret;
+}
+