Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.16-rc5 125 lines 3.5 kB view raw
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 11enum snd_soc_card_subclass { 12 SND_SOC_CARD_CLASS_ROOT = 0, 13 SND_SOC_CARD_CLASS_RUNTIME = 1, 14}; 15 16static 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 21static 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 26static inline void snd_soc_card_mutex_unlock(struct snd_soc_card *card) 27{ 28 mutex_unlock(&card->mutex); 29} 30 31struct snd_kcontrol *snd_soc_card_get_kcontrol(struct snd_soc_card *soc_card, 32 const char *name); 33int snd_soc_card_jack_new(struct snd_soc_card *card, const char *id, int type, 34 struct snd_soc_jack *jack); 35int 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); 39 40int snd_soc_card_suspend_pre(struct snd_soc_card *card); 41int snd_soc_card_suspend_post(struct snd_soc_card *card); 42int snd_soc_card_resume_pre(struct snd_soc_card *card); 43int snd_soc_card_resume_post(struct snd_soc_card *card); 44 45int snd_soc_card_probe(struct snd_soc_card *card); 46int snd_soc_card_late_probe(struct snd_soc_card *card); 47void snd_soc_card_fixup_controls(struct snd_soc_card *card); 48int snd_soc_card_remove(struct snd_soc_card *card); 49 50int 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); 53int 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); 56 57int snd_soc_card_add_dai_link(struct snd_soc_card *card, 58 struct snd_soc_dai_link *dai_link); 59void snd_soc_card_remove_dai_link(struct snd_soc_card *card, 60 struct snd_soc_dai_link *dai_link); 61 62#ifdef CONFIG_PCI 63static inline void snd_soc_card_set_pci_ssid(struct snd_soc_card *card, 64 unsigned short vendor, 65 unsigned short device) 66{ 67 card->pci_subsystem_vendor = vendor; 68 card->pci_subsystem_device = device; 69 card->pci_subsystem_set = true; 70} 71 72static inline int snd_soc_card_get_pci_ssid(struct snd_soc_card *card, 73 unsigned short *vendor, 74 unsigned short *device) 75{ 76 if (!card->pci_subsystem_set) 77 return -ENOENT; 78 79 *vendor = card->pci_subsystem_vendor; 80 *device = card->pci_subsystem_device; 81 82 return 0; 83} 84#else /* !CONFIG_PCI */ 85static inline void snd_soc_card_set_pci_ssid(struct snd_soc_card *card, 86 unsigned short vendor, 87 unsigned short device) 88{ 89} 90 91static inline int snd_soc_card_get_pci_ssid(struct snd_soc_card *card, 92 unsigned short *vendor, 93 unsigned short *device) 94{ 95 return -ENOENT; 96} 97#endif /* CONFIG_PCI */ 98 99/* device driver data */ 100static inline void snd_soc_card_set_drvdata(struct snd_soc_card *card, 101 void *data) 102{ 103 card->drvdata = data; 104} 105 106static inline void *snd_soc_card_get_drvdata(struct snd_soc_card *card) 107{ 108 return card->drvdata; 109} 110 111static inline 112struct snd_soc_dai *snd_soc_card_get_codec_dai(struct snd_soc_card *card, 113 const char *dai_name) 114{ 115 struct snd_soc_pcm_runtime *rtd; 116 117 for_each_card_rtds(card, rtd) { 118 if (!strcmp(snd_soc_rtd_to_codec(rtd, 0)->name, dai_name)) 119 return snd_soc_rtd_to_codec(rtd, 0); 120 } 121 122 return NULL; 123} 124 125#endif /* __SOC_CARD_H */