diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index e55170ce6d3e1a1b9183fc08200773be87d429b2..e83edbe270419feacf567785e9a50f5f92aaceda 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -3751,7 +3751,7 @@ EXPORT_SYMBOL_GPL(snd_soc_of_parse_daifmt); int snd_soc_get_dai_id(struct device_node *ep) { - struct snd_soc_component *pos; + struct snd_soc_component *component; struct device_node *node; int ret; @@ -3765,17 +3765,10 @@ int snd_soc_get_dai_id(struct device_node *ep) */ ret = -ENOTSUPP; mutex_lock(&client_mutex); - for_each_component(pos) { - struct device_node *component_of_node = soc_component_to_node(pos); - - if (component_of_node != node) - continue; - - if (pos->driver->of_xlate_dai_id) - ret = pos->driver->of_xlate_dai_id(pos, ep); - - break; - } + component = soc_find_component(node, NULL); + if (component && + component->driver->of_xlate_dai_id) + ret = component->driver->of_xlate_dai_id(component, ep); mutex_unlock(&client_mutex); of_node_put(node);