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