18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci// Copyright (c) 2020 Intel Corporation
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci/*
58c2ecf20Sopenharmony_ci *  sof_sdw_dmic - Helpers to handle dmic from generic machine driver
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#include <sound/soc.h>
98c2ecf20Sopenharmony_ci#include <sound/soc-acpi.h>
108c2ecf20Sopenharmony_ci#include <sound/soc-dapm.h>
118c2ecf20Sopenharmony_ci#include "sof_sdw_common.h"
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cistatic const struct snd_soc_dapm_widget dmic_widgets[] = {
148c2ecf20Sopenharmony_ci	SND_SOC_DAPM_MIC("SoC DMIC", NULL),
158c2ecf20Sopenharmony_ci};
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_cistatic const struct snd_soc_dapm_route dmic_map[] = {
188c2ecf20Sopenharmony_ci	/* digital mics */
198c2ecf20Sopenharmony_ci	{"DMic", NULL, "SoC DMIC"},
208c2ecf20Sopenharmony_ci};
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ciint sof_sdw_dmic_init(struct snd_soc_pcm_runtime *rtd)
238c2ecf20Sopenharmony_ci{
248c2ecf20Sopenharmony_ci	struct snd_soc_card *card = rtd->card;
258c2ecf20Sopenharmony_ci	int ret;
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci	ret = snd_soc_dapm_new_controls(&card->dapm, dmic_widgets,
288c2ecf20Sopenharmony_ci					ARRAY_SIZE(dmic_widgets));
298c2ecf20Sopenharmony_ci	if (ret) {
308c2ecf20Sopenharmony_ci		dev_err(card->dev, "DMic widget addition failed: %d\n", ret);
318c2ecf20Sopenharmony_ci		/* Don't need to add routes if widget addition failed */
328c2ecf20Sopenharmony_ci		return ret;
338c2ecf20Sopenharmony_ci	}
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci	ret = snd_soc_dapm_add_routes(&card->dapm, dmic_map,
368c2ecf20Sopenharmony_ci				      ARRAY_SIZE(dmic_map));
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci	if (ret)
398c2ecf20Sopenharmony_ci		dev_err(card->dev, "DMic map addition failed: %d\n", ret);
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci	return ret;
428c2ecf20Sopenharmony_ci}
438c2ecf20Sopenharmony_ci
44