mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
ASoC: dpcm: Add API for DAI link substream and runtime lookup
Some component drivers will need to be able to look up their DAI link substream and RTD data. Provide a mechanism for this. Signed-off-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
618dae11f8
commit
47c88ffff7
@ -362,6 +362,11 @@ int snd_soc_platform_write(struct snd_soc_platform *platform,
|
||||
unsigned int reg, unsigned int val);
|
||||
int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num);
|
||||
|
||||
struct snd_pcm_substream *snd_soc_get_dai_substream(struct snd_soc_card *card,
|
||||
const char *dai_link, int stream);
|
||||
struct snd_soc_pcm_runtime *snd_soc_get_pcm_runtime(struct snd_soc_card *card,
|
||||
const char *dai_link);
|
||||
|
||||
/* Utility functions to get clock rates from various things */
|
||||
int snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots);
|
||||
int snd_soc_params_to_frame_size(struct snd_pcm_hw_params *params);
|
||||
|
@ -465,6 +465,35 @@ static inline void soc_cleanup_card_debugfs(struct snd_soc_card *card)
|
||||
}
|
||||
#endif
|
||||
|
||||
struct snd_pcm_substream *snd_soc_get_dai_substream(struct snd_soc_card *card,
|
||||
const char *dai_link, int stream)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < card->num_links; i++) {
|
||||
if (card->rtd[i].dai_link->no_pcm &&
|
||||
!strcmp(card->rtd[i].dai_link->name, dai_link))
|
||||
return card->rtd[i].pcm->streams[stream].substream;
|
||||
}
|
||||
dev_dbg(card->dev, "failed to find dai link %s\n", dai_link);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_get_dai_substream);
|
||||
|
||||
struct snd_soc_pcm_runtime *snd_soc_get_pcm_runtime(struct snd_soc_card *card,
|
||||
const char *dai_link)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < card->num_links; i++) {
|
||||
if (!strcmp(card->rtd[i].dai_link->name, dai_link))
|
||||
return &card->rtd[i];
|
||||
}
|
||||
dev_dbg(card->dev, "failed to find rtd %s\n", dai_link);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_get_pcm_runtime);
|
||||
|
||||
#ifdef CONFIG_SND_SOC_AC97_BUS
|
||||
/* unregister ac97 codec */
|
||||
static int soc_ac97_dev_unregister(struct snd_soc_codec *codec)
|
||||
|
Loading…
Reference in New Issue
Block a user