ASoC: rsnd: add support graph base DT phase 1
To enable OF-graph base DT on rsnd driver, and to keep compatible previous normal sound card style, it need to support both "rcar_sound,dai" and "ports" (or "port") on DT. This patch modify rsnd_dai_of_node() to parse "rcar_sound,dai" and "ports" (or "port") as phase 1. It can detect graph base style, but do nothing at this point. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
c73df77d72
Коммит
11d0f8ed6d
|
@ -774,6 +774,42 @@ void rsnd_parse_connect_common(struct rsnd_dai *rdai,
|
|||
of_node_put(node);
|
||||
}
|
||||
|
||||
static struct device_node *rsnd_dai_of_node(struct rsnd_priv *priv,
|
||||
int *is_graph)
|
||||
{
|
||||
struct device *dev = rsnd_priv_to_dev(priv);
|
||||
struct device_node *np = dev->of_node;
|
||||
struct device_node *dai_node;
|
||||
struct device_node *ret;
|
||||
|
||||
*is_graph = 0;
|
||||
|
||||
/*
|
||||
* parse both previous dai (= rcar_sound,dai), and
|
||||
* graph dai (= ports/port)
|
||||
*/
|
||||
dai_node = of_get_child_by_name(np, RSND_NODE_DAI);
|
||||
if (dai_node) {
|
||||
ret = dai_node;
|
||||
goto of_node_compatible;
|
||||
}
|
||||
|
||||
ret = np;
|
||||
|
||||
dai_node = of_graph_get_next_endpoint(np, NULL);
|
||||
if (dai_node)
|
||||
goto of_node_graph;
|
||||
|
||||
return NULL;
|
||||
|
||||
of_node_graph:
|
||||
*is_graph = 1;
|
||||
of_node_compatible:
|
||||
of_node_put(dai_node);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rsnd_dai_probe(struct rsnd_priv *priv)
|
||||
{
|
||||
struct device_node *dai_node;
|
||||
|
@ -785,9 +821,10 @@ static int rsnd_dai_probe(struct rsnd_priv *priv)
|
|||
struct rsnd_dai *rdai;
|
||||
struct device *dev = rsnd_priv_to_dev(priv);
|
||||
int nr, dai_i, io_i;
|
||||
int is_graph;
|
||||
int ret;
|
||||
|
||||
dai_node = rsnd_dai_of_node(priv);
|
||||
dai_node = rsnd_dai_of_node(priv, &is_graph);
|
||||
nr = of_get_child_count(dai_node);
|
||||
if (!nr) {
|
||||
ret = -EINVAL;
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include <linux/list.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_graph.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/sh_dma.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
@ -475,7 +476,6 @@ int rsnd_dai_pointer_offset(struct rsnd_dai_stream *io, int additional);
|
|||
int rsnd_dai_connect(struct rsnd_mod *mod,
|
||||
struct rsnd_dai_stream *io,
|
||||
enum rsnd_mod_type type);
|
||||
#define rsnd_dai_of_node(priv) rsnd_parse_of_node(priv, RSND_NODE_DAI)
|
||||
|
||||
/*
|
||||
* R-Car Gen1/Gen2
|
||||
|
|
Загрузка…
Ссылка в новой задаче