xref: /openbmc/linux/include/sound/soc-card.h (revision 39caefda)
11793936bSKuninori Morimoto /* SPDX-License-Identifier: GPL-2.0
21793936bSKuninori Morimoto  *
31793936bSKuninori Morimoto  * soc-card.h
41793936bSKuninori Morimoto  *
51793936bSKuninori Morimoto  * Copyright (C) 2019 Renesas Electronics Corp.
61793936bSKuninori Morimoto  * Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
71793936bSKuninori Morimoto  */
81793936bSKuninori Morimoto #ifndef __SOC_CARD_H
91793936bSKuninori Morimoto #define __SOC_CARD_H
101793936bSKuninori Morimoto 
11bf5bb8dbSKuninori Morimoto enum snd_soc_card_subclass {
12bf5bb8dbSKuninori Morimoto 	SND_SOC_CARD_CLASS_INIT		= 0,
13bf5bb8dbSKuninori Morimoto 	SND_SOC_CARD_CLASS_RUNTIME	= 1,
14bf5bb8dbSKuninori Morimoto };
15bf5bb8dbSKuninori Morimoto 
16209c6cdfSKuninori Morimoto struct snd_kcontrol *snd_soc_card_get_kcontrol(struct snd_soc_card *soc_card,
17209c6cdfSKuninori Morimoto 					       const char *name);
183359e9b6SKuninori Morimoto int snd_soc_card_jack_new(struct snd_soc_card *card, const char *id, int type,
193359e9b6SKuninori Morimoto 			  struct snd_soc_jack *jack,
203359e9b6SKuninori Morimoto 			  struct snd_soc_jack_pin *pins, unsigned int num_pins);
21209c6cdfSKuninori Morimoto 
22130dc08cSKuninori Morimoto int snd_soc_card_suspend_pre(struct snd_soc_card *card);
23d17b60b2SKuninori Morimoto int snd_soc_card_suspend_post(struct snd_soc_card *card);
24934c752cSKuninori Morimoto int snd_soc_card_resume_pre(struct snd_soc_card *card);
25739443d1SKuninori Morimoto int snd_soc_card_resume_post(struct snd_soc_card *card);
26130dc08cSKuninori Morimoto 
2773de4b02SKuninori Morimoto int snd_soc_card_probe(struct snd_soc_card *card);
285c0eac03SKuninori Morimoto int snd_soc_card_late_probe(struct snd_soc_card *card);
29b0275d95SKuninori Morimoto int snd_soc_card_remove(struct snd_soc_card *card);
3073de4b02SKuninori Morimoto 
3139caefdaSKuninori Morimoto int snd_soc_card_set_bias_level(struct snd_soc_card *card,
3239caefdaSKuninori Morimoto 				struct snd_soc_dapm_context *dapm,
3339caefdaSKuninori Morimoto 				enum snd_soc_bias_level level);
3439caefdaSKuninori Morimoto 
3563efed58SKuninori Morimoto /* device driver data */
3663efed58SKuninori Morimoto static inline void snd_soc_card_set_drvdata(struct snd_soc_card *card,
3763efed58SKuninori Morimoto 					    void *data)
3863efed58SKuninori Morimoto {
3963efed58SKuninori Morimoto 	card->drvdata = data;
4063efed58SKuninori Morimoto }
4163efed58SKuninori Morimoto 
4263efed58SKuninori Morimoto static inline void *snd_soc_card_get_drvdata(struct snd_soc_card *card)
4363efed58SKuninori Morimoto {
4463efed58SKuninori Morimoto 	return card->drvdata;
4563efed58SKuninori Morimoto }
4663efed58SKuninori Morimoto 
4765a75718SKuninori Morimoto static inline
4865a75718SKuninori Morimoto struct snd_soc_dai *snd_soc_card_get_codec_dai(struct snd_soc_card *card,
4965a75718SKuninori Morimoto 					       const char *dai_name)
5065a75718SKuninori Morimoto {
5165a75718SKuninori Morimoto 	struct snd_soc_pcm_runtime *rtd;
5265a75718SKuninori Morimoto 
5365a75718SKuninori Morimoto 	for_each_card_rtds(card, rtd) {
5465a75718SKuninori Morimoto 		if (!strcmp(asoc_rtd_to_codec(rtd, 0)->name, dai_name))
5565a75718SKuninori Morimoto 			return asoc_rtd_to_codec(rtd, 0);
5665a75718SKuninori Morimoto 	}
5765a75718SKuninori Morimoto 
5865a75718SKuninori Morimoto 	return NULL;
5965a75718SKuninori Morimoto }
6065a75718SKuninori Morimoto 
611793936bSKuninori Morimoto #endif /* __SOC_CARD_H */
62