Skip to content

Commit 144d6df

Browse files
morimotobroonie
authored andcommitted
ASoC: soc-core: merge snd_soc_unregister_component() and snd_soc_unregister_component_by_driver()
We have below 2 functions, but these are very similar (A) snd_soc_unregister_component_by_driver() (B) snd_soc_unregister_component() (A) void snd_soc_unregister_component_by_driver(...) { ... (a) mutex_lock(&client_mutex); ^ (X) component = snd_soc_lookup_component_nolocked(dev, component_driver->name); | if (!component) ^^^^^^^^^^^^^^^^^^^^^^ | goto out; (b) | snd_soc_del_component_unlocked(component); v out: (c) mutex_unlock(&client_mutex); } (B) void snd_soc_unregister_component_by_driver(...) { (a) mutex_lock(&client_mutex); ^ while (1) { | (X) struct snd_soc_component *component = snd_soc_lookup_component_nolocked(dev, NULL); | ^^^^ (b) if (!component) | break; | | snd_soc_del_component_unlocked(component); v } (c) mutex_unlock(&client_mutex); } Both are calling lock (a), find component and remove it (b), and unlock (c). The big diff is whether use driver name for lookup() or not (X). Merge these into snd_soc_unregister_component_by_driver() (B), and snd_soc_unregister_component_by_driver() (A) can be macro. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/87h61qy2vn.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 321f9db commit 144d6df

File tree

2 files changed

+6
-26
lines changed

2 files changed

+6
-26
lines changed

include/sound/soc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ int snd_soc_register_component(struct device *dev,
444444
int devm_snd_soc_register_component(struct device *dev,
445445
const struct snd_soc_component_driver *component_driver,
446446
struct snd_soc_dai_driver *dai_drv, int num_dai);
447-
void snd_soc_unregister_component(struct device *dev);
447+
#define snd_soc_unregister_component(dev) snd_soc_unregister_component_by_driver(dev, NULL)
448448
void snd_soc_unregister_component_by_driver(struct device *dev,
449449
const struct snd_soc_component_driver *component_driver);
450450
struct snd_soc_component *snd_soc_lookup_component_nolocked(struct device *dev,

sound/soc/soc-core.c

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,34 +2927,14 @@ EXPORT_SYMBOL_GPL(snd_soc_register_component);
29272927
void snd_soc_unregister_component_by_driver(struct device *dev,
29282928
const struct snd_soc_component_driver *component_driver)
29292929
{
2930-
struct snd_soc_component *component;
2930+
const char *driver_name = NULL;
29312931

2932-
if (!component_driver)
2933-
return;
2932+
if (component_driver)
2933+
driver_name = component_driver->name;
29342934

2935-
mutex_lock(&client_mutex);
2936-
component = snd_soc_lookup_component_nolocked(dev, component_driver->name);
2937-
if (!component)
2938-
goto out;
2939-
2940-
snd_soc_del_component_unlocked(component);
2941-
2942-
out:
2943-
mutex_unlock(&client_mutex);
2944-
}
2945-
EXPORT_SYMBOL_GPL(snd_soc_unregister_component_by_driver);
2946-
2947-
/**
2948-
* snd_soc_unregister_component - Unregister all related component
2949-
* from the ASoC core
2950-
*
2951-
* @dev: The device to unregister
2952-
*/
2953-
void snd_soc_unregister_component(struct device *dev)
2954-
{
29552935
mutex_lock(&client_mutex);
29562936
while (1) {
2957-
struct snd_soc_component *component = snd_soc_lookup_component_nolocked(dev, NULL);
2937+
struct snd_soc_component *component = snd_soc_lookup_component_nolocked(dev, driver_name);
29582938

29592939
if (!component)
29602940
break;
@@ -2963,7 +2943,7 @@ void snd_soc_unregister_component(struct device *dev)
29632943
}
29642944
mutex_unlock(&client_mutex);
29652945
}
2966-
EXPORT_SYMBOL_GPL(snd_soc_unregister_component);
2946+
EXPORT_SYMBOL_GPL(snd_soc_unregister_component_by_driver);
29672947

29682948
/* Retrieve a card's name from device tree */
29692949
int snd_soc_of_parse_card_name(struct snd_soc_card *card,

0 commit comments

Comments
 (0)