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