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