+struct snd_soc_component *snd_soc_lookup_component(struct device *dev,
const char *driver_name)
+{
- struct snd_soc_component *component;
- struct snd_soc_component *ret;
- ret = NULL;
- mutex_lock(&client_mutex);
- for_each_component(component) {
if (dev != component->dev)
continue;
if (driver_name &&
(driver_name != component->driver->name) &&
(strcmp(component->driver->name, driver_name) != 0))
continue;
ret = component;
break;
The mix of continue and break in the same loop is odd.
can this be done with break only, e.g. (check the logic)
for_each_component(component) { if (dev == component->dev && (!driver_name || (driver_name == component->driver->name) || (strcmp(component->driver->name, driver_name) == 0)) ret = component; break; }
- mutex_unlock(&client_mutex);
- return ret;
usually 'return ret' is for an error code. It's odd to use it for a pointer.
+} +EXPORT_SYMBOL_GPL(snd_soc_lookup_component);
- struct snd_pcm_substream *snd_soc_get_dai_substream(struct snd_soc_card *card, const char *dai_link, int stream) {
@@ -2889,32 +2915,6 @@ void snd_soc_unregister_component(struct device *dev) } EXPORT_SYMBOL_GPL(snd_soc_unregister_component);
-struct snd_soc_component *snd_soc_lookup_component(struct device *dev,
const char *driver_name)
-{
- struct snd_soc_component *component;
- struct snd_soc_component *ret;
- ret = NULL;
- mutex_lock(&client_mutex);
- for_each_component(component) {
if (dev != component->dev)
continue;
if (driver_name &&
(driver_name != component->driver->name) &&
(strcmp(component->driver->name, driver_name) != 0))
continue;
ret = component;
break;
- }
- mutex_unlock(&client_mutex);
- return ret;
-} -EXPORT_SYMBOL_GPL(snd_soc_lookup_component);
- /* Retrieve a card's name from device tree */ int snd_soc_of_parse_card_name(struct snd_soc_card *card, const char *propname)