Commit | Line | Data |
---|---|---|
1793936b KM |
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 | ||
bf5bb8db | 11 | enum snd_soc_card_subclass { |
0f3b8184 | 12 | SND_SOC_CARD_CLASS_ROOT = 0, |
bf5bb8db KM |
13 | SND_SOC_CARD_CLASS_RUNTIME = 1, |
14 | }; | |
15 | ||
0f3b8184 KM |
16 | static inline void snd_soc_card_mutex_lock_root(struct snd_soc_card *card) |
17 | { | |
18 | mutex_lock_nested(&card->mutex, SND_SOC_CARD_CLASS_ROOT); | |
19 | } | |
20 | ||
21 | static inline void snd_soc_card_mutex_lock(struct snd_soc_card *card) | |
22 | { | |
23 | mutex_lock_nested(&card->mutex, SND_SOC_CARD_CLASS_RUNTIME); | |
24 | } | |
25 | ||
26 | static inline void snd_soc_card_mutex_unlock(struct snd_soc_card *card) | |
27 | { | |
28 | mutex_unlock(&card->mutex); | |
29 | } | |
30 | ||
209c6cdf KM |
31 | struct snd_kcontrol *snd_soc_card_get_kcontrol(struct snd_soc_card *soc_card, |
32 | const char *name); | |
3359e9b6 | 33 | int snd_soc_card_jack_new(struct snd_soc_card *card, const char *id, int type, |
19aed2d6 AO |
34 | struct snd_soc_jack *jack); |
35 | int snd_soc_card_jack_new_pins(struct snd_soc_card *card, const char *id, | |
36 | int type, struct snd_soc_jack *jack, | |
37 | struct snd_soc_jack_pin *pins, | |
38 | unsigned int num_pins); | |
209c6cdf | 39 | |
130dc08c | 40 | int snd_soc_card_suspend_pre(struct snd_soc_card *card); |
d17b60b2 | 41 | int snd_soc_card_suspend_post(struct snd_soc_card *card); |
934c752c | 42 | int snd_soc_card_resume_pre(struct snd_soc_card *card); |
739443d1 | 43 | int snd_soc_card_resume_post(struct snd_soc_card *card); |
130dc08c | 44 | |
73de4b02 | 45 | int snd_soc_card_probe(struct snd_soc_card *card); |
5c0eac03 | 46 | int snd_soc_card_late_probe(struct snd_soc_card *card); |
df4d27b1 | 47 | void snd_soc_card_fixup_controls(struct snd_soc_card *card); |
b0275d95 | 48 | int snd_soc_card_remove(struct snd_soc_card *card); |
73de4b02 | 49 | |
39caefda KM |
50 | int snd_soc_card_set_bias_level(struct snd_soc_card *card, |
51 | struct snd_soc_dapm_context *dapm, | |
52 | enum snd_soc_bias_level level); | |
d41278ea KM |
53 | int snd_soc_card_set_bias_level_post(struct snd_soc_card *card, |
54 | struct snd_soc_dapm_context *dapm, | |
55 | enum snd_soc_bias_level level); | |
39caefda | 56 | |
cbc7a6b5 KM |
57 | int snd_soc_card_add_dai_link(struct snd_soc_card *card, |
58 | struct snd_soc_dai_link *dai_link); | |
fcbbcc32 KM |
59 | void snd_soc_card_remove_dai_link(struct snd_soc_card *card, |
60 | struct snd_soc_dai_link *dai_link); | |
cbc7a6b5 | 61 | |
63efed58 KM |
62 | /* device driver data */ |
63 | static inline void snd_soc_card_set_drvdata(struct snd_soc_card *card, | |
64 | void *data) | |
65 | { | |
66 | card->drvdata = data; | |
67 | } | |
68 | ||
69 | static inline void *snd_soc_card_get_drvdata(struct snd_soc_card *card) | |
70 | { | |
71 | return card->drvdata; | |
72 | } | |
73 | ||
65a75718 KM |
74 | static inline |
75 | struct snd_soc_dai *snd_soc_card_get_codec_dai(struct snd_soc_card *card, | |
76 | const char *dai_name) | |
77 | { | |
78 | struct snd_soc_pcm_runtime *rtd; | |
79 | ||
80 | for_each_card_rtds(card, rtd) { | |
81 | if (!strcmp(asoc_rtd_to_codec(rtd, 0)->name, dai_name)) | |
82 | return asoc_rtd_to_codec(rtd, 0); | |
83 | } | |
84 | ||
85 | return NULL; | |
86 | } | |
87 | ||
1793936b | 88 | #endif /* __SOC_CARD_H */ |