Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit da32d653 authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown
Browse files

ASoC: simple-scu-card: add dai-link support



simple-card is supporting dai-link support, but simple-scu-card
doesn't have it.
This patch support it. This is prepare for merging simple-card
and simple-scu-card.

Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent dbd08fe5
Loading
Loading
Loading
Loading
+28 −18
Original line number Diff line number Diff line
@@ -202,14 +202,15 @@ static int asoc_simple_card_parse_of(struct simple_card_data *priv)

{
	struct device *dev = simple_priv_to_dev(priv);
	struct device_node *node = dev->of_node;
	struct device_node *top = dev->of_node;
	struct device_node *node;
	struct device_node *np;
	struct device_node *codec;
	struct snd_soc_card *card = simple_priv_to_card(priv);
	bool is_fe;
	int ret, i;
	int ret, i, loop;

	if (!node)
	if (!top)
		return -EINVAL;

	ret = asoc_simple_card_of_parse_widgets(card, PREFIX);
@@ -220,24 +221,33 @@ static int asoc_simple_card_parse_of(struct simple_card_data *priv)
	if (ret < 0)
		return ret;

	asoc_simple_card_parse_convert(dev, node, PREFIX, &priv->adata);
	asoc_simple_card_parse_convert(dev, top, PREFIX, &priv->adata);

	loop = 1;
	i = 0;
	codec = of_get_child_by_name(node, PREFIX "codec");
	node = of_get_child_by_name(top, PREFIX "dai-link");
	if (!node) {
		node = dev->of_node;
		loop = 0;
	}

	do  {
		codec = of_get_child_by_name(node,
					     loop ? "codec" : PREFIX "codec");
		if (!codec)
			return -ENODEV;

		for_each_child_of_node(node, np) {
		is_fe = false;
		if (of_node_name_eq(np, PREFIX "cpu"))
			is_fe = true;
			is_fe = (np != codec);

			ret = asoc_simple_card_dai_link_of(node, np, codec, priv,
						   i, is_fe, true);
							   i, is_fe, !loop);
			if (ret < 0)
				return ret;
			i++;
		}
		node = of_get_next_child(top, node);
	} while (loop && node);

	ret = asoc_simple_card_parse_card_name(card, PREFIX);
	if (ret < 0)