1 // SPDX-License-Identifier: GPL-2.0-only
2 // This file incorporates work covered by the following copyright notice:
3 // Copyright (c) 2020 Intel Corporation
4 // Copyright (c) 2024 Advanced Micro Devices, Inc.
7 * soc_sdw_dmic - Helpers to handle dmic from generic machine driver
10 #include <sound/soc.h>
11 #include <sound/soc-acpi.h>
12 #include <sound/soc-dapm.h>
13 #include <sound/soc_sdw_utils.h>
15 static const struct snd_soc_dapm_widget dmic_widgets
[] = {
16 SND_SOC_DAPM_MIC("SoC DMIC", NULL
),
19 static const struct snd_soc_dapm_route dmic_map
[] = {
21 {"DMic", NULL
, "SoC DMIC"},
24 int asoc_sdw_dmic_init(struct snd_soc_pcm_runtime
*rtd
)
26 struct snd_soc_card
*card
= rtd
->card
;
29 ret
= snd_soc_dapm_new_controls(&card
->dapm
, dmic_widgets
,
30 ARRAY_SIZE(dmic_widgets
));
32 dev_err(card
->dev
, "DMic widget addition failed: %d\n", ret
);
33 /* Don't need to add routes if widget addition failed */
37 ret
= snd_soc_dapm_add_routes(&card
->dapm
, dmic_map
,
38 ARRAY_SIZE(dmic_map
));
41 dev_err(card
->dev
, "DMic map addition failed: %d\n", ret
);
45 EXPORT_SYMBOL_NS(asoc_sdw_dmic_init
, "SND_SOC_SDW_UTILS");