From b3f1c1d8990a28243c10074739e793d4ef5ef493 Mon Sep 17 00:00:00 2001 From: Meng Wang Date: Wed, 20 Nov 2019 18:56:29 +0800 Subject: [PATCH] SoC: soc-core: export function to find components Drivers may need to use the ASoC core function to find out whether a particular component is already registered with ALSA core or not. Export the function so that drivers can use it outside of the file. Change-Id: I13e4a053de085974b0b53c392a9453e46f1aa66d Signed-off-by: Banajit Goswami Signed-off-by: Meng Wang --- include/sound/soc.h | 5 +++++ sound/soc/soc-core.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/include/sound/soc.h b/include/sound/soc.h index f2daadd33661..3193af12dc5f 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -1336,6 +1336,11 @@ int snd_soc_register_dai(struct snd_soc_component *component, struct snd_soc_dai *snd_soc_find_dai( const struct snd_soc_dai_link_component *dlc); +#ifdef CONFIG_AUDIO_QGKI +struct snd_soc_component *soc_find_component( + const struct snd_soc_dai_link_component *dlc); +#endif + #include static inline diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index f478855cfa2d..ecb85b0b8c63 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -763,6 +763,39 @@ static int snd_soc_is_matching_component( return 1; } +#ifdef CONFIG_AUDIO_QGKI +/** + * soc_find_component: find a component from component_list in ASoC core + * + * @dlc: dlc of the component to query. + * + * function to find out if a component is already registered with ASoC core. + * + * Returns component handle for success, else NULL error. + */ +struct snd_soc_component *soc_find_component( + const struct snd_soc_dai_link_component *dlc) +{ + struct snd_soc_component *component; + + lockdep_assert_held(&client_mutex); + + /* + * NOTE + * + * It returns *1st* found component, but some driver + * has few components by same of_node/name + * ex) + * CPU component and generic DMAEngine component + */ + for_each_component(component) + if (snd_soc_is_matching_component(dlc, component)) + return component; + + return NULL; +} +EXPORT_SYMBOL(soc_find_component); +#else static struct snd_soc_component *soc_find_component( const struct snd_soc_dai_link_component *dlc) { @@ -784,6 +817,7 @@ static struct snd_soc_component *soc_find_component( return NULL; } +#endif /** * snd_soc_find_dai - Find a registered DAI