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); 34d41278eaSKuninori Morimoto int snd_soc_card_set_bias_level_post(struct snd_soc_card *card, 35d41278eaSKuninori Morimoto struct snd_soc_dapm_context *dapm, 36d41278eaSKuninori Morimoto enum snd_soc_bias_level level); 3739caefdaSKuninori Morimoto 38cbc7a6b5SKuninori Morimoto int snd_soc_card_add_dai_link(struct snd_soc_card *card, 39cbc7a6b5SKuninori Morimoto struct snd_soc_dai_link *dai_link); 40cbc7a6b5SKuninori Morimoto 4163efed58SKuninori Morimoto /* device driver data */ 4263efed58SKuninori Morimoto static inline void snd_soc_card_set_drvdata(struct snd_soc_card *card, 4363efed58SKuninori Morimoto void *data) 4463efed58SKuninori Morimoto { 4563efed58SKuninori Morimoto card->drvdata = data; 4663efed58SKuninori Morimoto } 4763efed58SKuninori Morimoto 4863efed58SKuninori Morimoto static inline void *snd_soc_card_get_drvdata(struct snd_soc_card *card) 4963efed58SKuninori Morimoto { 5063efed58SKuninori Morimoto return card->drvdata; 5163efed58SKuninori Morimoto } 5263efed58SKuninori Morimoto 5365a75718SKuninori Morimoto static inline 5465a75718SKuninori Morimoto struct snd_soc_dai *snd_soc_card_get_codec_dai(struct snd_soc_card *card, 5565a75718SKuninori Morimoto const char *dai_name) 5665a75718SKuninori Morimoto { 5765a75718SKuninori Morimoto struct snd_soc_pcm_runtime *rtd; 5865a75718SKuninori Morimoto 5965a75718SKuninori Morimoto for_each_card_rtds(card, rtd) { 6065a75718SKuninori Morimoto if (!strcmp(asoc_rtd_to_codec(rtd, 0)->name, dai_name)) 6165a75718SKuninori Morimoto return asoc_rtd_to_codec(rtd, 0); 6265a75718SKuninori Morimoto } 6365a75718SKuninori Morimoto 6465a75718SKuninori Morimoto return NULL; 6565a75718SKuninori Morimoto } 6665a75718SKuninori Morimoto 671793936bSKuninori Morimoto #endif /* __SOC_CARD_H */ 68