linux/sound/soc/sdw_utils/soc_sdw_dmic.c
<<
>>
Prefs
   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.
   5
   6/*
   7 *  soc_sdw_dmic - Helpers to handle dmic from generic machine driver
   8 */
   9
  10#include <sound/soc.h>
  11#include <sound/soc-acpi.h>
  12#include <sound/soc-dapm.h>
  13#include <sound/soc_sdw_utils.h>
  14
  15static const struct snd_soc_dapm_widget dmic_widgets[] = {
  16        SND_SOC_DAPM_MIC("SoC DMIC", NULL),
  17};
  18
  19static const struct snd_soc_dapm_route dmic_map[] = {
  20        /* digital mics */
  21        {"DMic", NULL, "SoC DMIC"},
  22};
  23
  24int asoc_sdw_dmic_init(struct snd_soc_pcm_runtime *rtd)
  25{
  26        struct snd_soc_card *card = rtd->card;
  27        int ret;
  28
  29        ret = snd_soc_dapm_new_controls(&card->dapm, dmic_widgets,
  30                                        ARRAY_SIZE(dmic_widgets));
  31        if (ret) {
  32                dev_err(card->dev, "DMic widget addition failed: %d\n", ret);
  33                /* Don't need to add routes if widget addition failed */
  34                return ret;
  35        }
  36
  37        ret = snd_soc_dapm_add_routes(&card->dapm, dmic_map,
  38                                      ARRAY_SIZE(dmic_map));
  39
  40        if (ret)
  41                dev_err(card->dev, "DMic map addition failed: %d\n", ret);
  42
  43        return ret;
  44}
  45EXPORT_SYMBOL_NS(asoc_sdw_dmic_init, "SND_SOC_SDW_UTILS");
  46