diff options
Diffstat (limited to 'sound/soc/generic/simple-card-utils.c')
| -rw-r--r-- | sound/soc/generic/simple-card-utils.c | 23 | 
1 files changed, 19 insertions, 4 deletions
diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c index 3019626b0592..5b18a4af022f 100644 --- a/sound/soc/generic/simple-card-utils.c +++ b/sound/soc/generic/simple-card-utils.c @@ -649,7 +649,7 @@ void asoc_simple_canonicalize_platform(struct snd_soc_dai_link_component *platfo  	 *	simple-card.c :: simple_count_noml()  	 */  	if (!platforms->of_node) -		platforms->of_node = cpus->of_node; +		snd_soc_dlc_use_cpu_as_platform(platforms, cpus);  }  EXPORT_SYMBOL_GPL(asoc_simple_canonicalize_platform); @@ -1066,12 +1066,12 @@ static int graph_get_dai_id(struct device_node *ep)  	return id;  } -int asoc_graph_parse_dai(struct device_node *ep, -			 struct snd_soc_dai_link_component *dlc, -			 int *is_single_link) +int asoc_graph_parse_dai(struct device *dev, struct device_node *ep, +			 struct snd_soc_dai_link_component *dlc, int *is_single_link)  {  	struct device_node *node;  	struct of_phandle_args args = {}; +	struct snd_soc_dai *dai;  	int ret;  	if (!ep) @@ -1079,6 +1079,20 @@ int asoc_graph_parse_dai(struct device_node *ep,  	node = of_graph_get_port_parent(ep); +	/* +	 * Try to find from DAI node +	 */ +	args.np = ep; +	dai = snd_soc_get_dai_via_args(&args); +	if (dai) { +		dlc->dai_name = snd_soc_dai_name_get(dai); +		dlc->dai_args = snd_soc_copy_dai_args(dev, &args); +		if (!dlc->dai_args) +			return -ENOMEM; + +		goto parse_dai_end; +	} +  	/* Get dai->name */  	args.np		= node;  	args.args[0]	= graph_get_dai_id(ep); @@ -1109,6 +1123,7 @@ int asoc_graph_parse_dai(struct device_node *ep,  		return ret;  	} +parse_dai_end:  	if (is_single_link)  		*is_single_link = of_graph_get_endpoint_count(node) == 1;  |