linux/include/sound/soc-card.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0
   2 *
   3 * soc-card.h
   4 *
   5 * Copyright (C) 2019 Renesas Electronics Corp.
   6 * Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
   7 */
   8#ifndef __SOC_CARD_H
   9#define __SOC_CARD_H
  10
  11enum snd_soc_card_subclass {
  12        SND_SOC_CARD_CLASS_INIT         = 0,
  13        SND_SOC_CARD_CLASS_RUNTIME      = 1,
  14};
  15
  16struct snd_kcontrol *snd_soc_card_get_kcontrol(struct snd_soc_card *soc_card,
  17                                               const char *name);
  18int snd_soc_card_jack_new(struct snd_soc_card *card, const char *id, int type,
  19                          struct snd_soc_jack *jack,
  20                          struct snd_soc_jack_pin *pins, unsigned int num_pins);
  21
  22int snd_soc_card_suspend_pre(struct snd_soc_card *card);
  23int snd_soc_card_suspend_post(struct snd_soc_card *card);
  24int snd_soc_card_resume_pre(struct snd_soc_card *card);
  25int snd_soc_card_resume_post(struct snd_soc_card *card);
  26
  27int snd_soc_card_probe(struct snd_soc_card *card);
  28int snd_soc_card_late_probe(struct snd_soc_card *card);
  29int snd_soc_card_remove(struct snd_soc_card *card);
  30
  31int snd_soc_card_set_bias_level(struct snd_soc_card *card,
  32                                struct snd_soc_dapm_context *dapm,
  33                                enum snd_soc_bias_level level);
  34int snd_soc_card_set_bias_level_post(struct snd_soc_card *card,
  35                                     struct snd_soc_dapm_context *dapm,
  36                                     enum snd_soc_bias_level level);
  37
  38int snd_soc_card_add_dai_link(struct snd_soc_card *card,
  39                              struct snd_soc_dai_link *dai_link);
  40void snd_soc_card_remove_dai_link(struct snd_soc_card *card,
  41                                  struct snd_soc_dai_link *dai_link);
  42
  43/* device driver data */
  44static inline void snd_soc_card_set_drvdata(struct snd_soc_card *card,
  45                                            void *data)
  46{
  47        card->drvdata = data;
  48}
  49
  50static inline void *snd_soc_card_get_drvdata(struct snd_soc_card *card)
  51{
  52        return card->drvdata;
  53}
  54
  55static inline
  56struct snd_soc_dai *snd_soc_card_get_codec_dai(struct snd_soc_card *card,
  57                                               const char *dai_name)
  58{
  59        struct snd_soc_pcm_runtime *rtd;
  60
  61        for_each_card_rtds(card, rtd) {
  62                if (!strcmp(asoc_rtd_to_codec(rtd, 0)->name, dai_name))
  63                        return asoc_rtd_to_codec(rtd, 0);
  64        }
  65
  66        return NULL;
  67}
  68
  69#endif /* __SOC_CARD_H */
  70