diff mbox

[10/39,v2] ASoC: simple-card-utils: add asoc_simple_card_parse_endpoint()

Message ID 871t4isj0b.wl%kuninori.morimoto.gx@renesas.com (mailing list archive)
State Changes Requested
Delegated to: Geert Uytterhoeven
Headers show

Commit Message

Kuninori Morimoto May 31, 2016, 9:03 a.m. UTC
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

simple-card needs to get its dai name and endpoint node.
This patch makes it simple style standard

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 include/sound/simple_card_utils.h     | 19 ++++++++++++++++++
 sound/soc/generic/simple-card-utils.c | 38 +++++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+)

Comments

Mark Brown June 29, 2016, 6:34 p.m. UTC | #1
On Tue, May 31, 2016 at 09:03:00AM +0000, Kuninori Morimoto wrote:
> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> 
> simple-card needs to get its dai name and endpoint node.
> This patch makes it simple style standard

I'm finding these descriptions very clear and hard to follow, and the
lack of any changes to the simple-card code is a bit unclear.  Can I
suggest that future versions of this should have patches that move code
out of simple-card to helper functions as a single patch rather than
adding the helper in one and (I presume) the use in another?

In this case I'm not entirely clear what an endpoint is.
diff mbox

Patch

diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h
index b8a8649..1a77d72 100644
--- a/include/sound/simple_card_utils.h
+++ b/include/sound/simple_card_utils.h
@@ -46,4 +46,23 @@  int asoc_simple_card_parse_clk(struct device_node *port_np,
 			       struct device_node *endpoint_np,
 			       struct asoc_simple_dai *simple_dai);
 
+#define asoc_simple_card_parse_cpu(port_np, dai_link,				\
+				   list_name, cells_name, is_single_link)	\
+	asoc_simple_card_parse_endpoint(port_np, &dai_link->cpu_of_node,	\
+		&dai_link->cpu_dai_name, list_name, cells_name, is_single_link)
+#define asoc_simple_card_parse_codec(port_np, dai_link,				\
+				     list_name, cells_name)			\
+	asoc_simple_card_parse_endpoint(port_np, &dai_link->codec_of_node,	\
+		&dai_link->codec_dai_name, list_name, cells_name, NULL)
+#define asoc_simple_card_parse_platform(port_np, dai_link,			\
+					list_name, cells_name)			\
+	asoc_simple_card_parse_endpoint(port_np, &dai_link->platform_of_node,	\
+		NULL, list_name, cells_name, NULL)
+int asoc_simple_card_parse_endpoint(struct device_node *port_np,
+				  struct device_node **endpoint_np,
+				  const char **dai_name,
+				  const char *list_name,
+				  const char *cells_name,
+				  int *is_single_links);
+
 #endif /* __SIMPLE_CARD_CORE_H */
diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c
index dbf4b00..a3d917d 100644
--- a/sound/soc/generic/simple-card-utils.c
+++ b/sound/soc/generic/simple-card-utils.c
@@ -172,3 +172,41 @@  int asoc_simple_card_parse_clk(struct device_node *port_np,
 	return 0;
 }
 EXPORT_SYMBOL_GPL(asoc_simple_card_parse_clk);
+
+int asoc_simple_card_parse_endpoint(struct device_node *port_np,
+				    struct device_node **endpoint_np,
+				    const char **dai_name,
+				    const char *list_name,
+				    const char *cells_name,
+				    int *is_single_link)
+{
+	struct of_phandle_args args;
+	int ret;
+
+	if (!port_np)
+		return 0;
+
+	/*
+	 * Get node via "sound-dai = <&phandle port>"
+	 * it will be used as xxx_of_node on soc_bind_dai_link()
+	 */
+	ret = of_parse_phandle_with_args(port_np,
+					 list_name, cells_name, 0, &args);
+	if (ret)
+		return ret;
+
+	/* Get dai->name */
+	if (dai_name) {
+		ret = snd_soc_of_get_dai_name(port_np, dai_name);
+		if (ret < 0)
+			return ret;
+	}
+
+	*endpoint_np = args.np;
+
+	if (is_single_link)
+		*is_single_link = !args.args_count;
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(asoc_simple_card_parse_endpoint);