diff mbox

ASoC: Fix snd_soc_find_dai() matching component by name

Message ID 1414615591-22125-1-git-send-email-lars@metafoo.de (mailing list archive)
State Accepted
Commit 1ffae3612fe53dd18b92e696ab4f29df319a508d
Headers show

Commit Message

Lars-Peter Clausen Oct. 29, 2014, 8:46 p.m. UTC
Commit 14621c7e5e72 ("ASoC: Consolidate CPU and CODEC DAI lookup")
consolidated the lookup of CPU DAIs and CODEC DAIs into a single function.
When matching a component by name for CODEC DAIs the code previous to the
patch compared the name in the DAI link table with component->name. For CPU
DAIs the code compared to dev_name(component->dev). The newly introduced
function ended up using the later as well.

For most components dev_name(component->dev) and component->name are the
same. The main notable exception are I2C devices where the driver name and
the device name are concatenated to form the component name. By using
dev_name(component->dev) instead of component->name the patch broke the
matching of I2C CODECs by name.

This patch restores the original behavior by using component->name instead
of dev_name(component->dev). This will be safe even for CPU DAIs since for
CPU DAIs both are the same.

Fixes: 14621c7e5e72 ("ASoC: Consolidate CPU and CODEC DAI lookup")
Reported-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/soc-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Mark Brown Oct. 29, 2014, 8:51 p.m. UTC | #1
On Wed, Oct 29, 2014 at 09:46:30PM +0100, Lars-Peter Clausen wrote:
> Commit 14621c7e5e72 ("ASoC: Consolidate CPU and CODEC DAI lookup")
> consolidated the lookup of CPU DAIs and CODEC DAIs into a single function.
> When matching a component by name for CODEC DAIs the code previous to the
> patch compared the name in the DAI link table with component->name. For CPU
> DAIs the code compared to dev_name(component->dev). The newly introduced
> function ended up using the later as well.

Applied, thanks.
diff mbox

Patch

diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 62fbb63..b900f0d 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -884,7 +884,7 @@  static struct snd_soc_dai *snd_soc_find_dai(
 	list_for_each_entry(component, &component_list, list) {
 		if (dlc->of_node && component->dev->of_node != dlc->of_node)
 			continue;
-		if (dlc->name && strcmp(dev_name(component->dev), dlc->name))
+		if (dlc->name && strcmp(component->name, dlc->name))
 			continue;
 		list_for_each_entry(dai, &component->dai_list, list) {
 			if (dlc->dai_name && strcmp(dai->name, dlc->dai_name))