Skip to content
Permalink
Browse files
hoge
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
  • Loading branch information
morimoto committed Jan 14, 2021
1 parent 7211153 commit f4a51f1bc100f5010571f4473625f5f506940ba9
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 14 deletions.
@@ -175,15 +175,19 @@
mix {
compatible = "audio-graph-card2-dsp";
ports@0 {
format = "dsp_a";
mix_fe0: port@0 { mix_fe0_ep: endpoint { remote-endpoint = <&cpu2_ep>; }; };
mix_fe1: port@1 { mix_fe1_ep: endpoint { remote-endpoint = <&cpu3_ep>; }; };
};
ports@1 {
format = "dsp_a";
bitclock-master;
frame-master;
mix_be0: port { mix_be0_ep: endpoint { remote-endpoint = <&codec2_ep>; }; };
};
};

test_cpu1 {
test_cpu {
compatible = "test-cpu";
ports {
cpu0: port@0 { cpu0_ep: endpoint { remote-endpoint = <&codec0_ep>; }; };
@@ -193,7 +197,7 @@
};
};

test_codec1 {
test_codec {
compatible = "test-codec";
ports {
port@0 { codec0_ep: endpoint { remote-endpoint = <&cpu0_ep>; }; };
@@ -297,10 +297,10 @@ static void graph_parse_mclk_fs(struct device_node *ep,
of_node_put(port);
of_node_put(ports);
}
static void __graph_parse_daifmt(struct device_node *np,
struct snd_soc_dai_link *dai_link)

static void graph_daifmt_update(struct snd_soc_dai_link *dai_link,
unsigned int fmt)
{
unsigned int fmt = snd_soc_of_parse_daifmt(np, NULL, NULL, NULL);
unsigned int mask = 0;

if (fmt & SND_SOC_DAIFMT_FORMAT_MASK)
@@ -319,10 +319,19 @@ static void __graph_parse_daifmt(struct device_node *np,
static void graph_parse_daifmt(struct device_node *ep,
struct snd_soc_dai_link *dai_link)
{
unsigned int fmt;
struct device_node *port = of_get_parent(ep);
struct device_node *ports = of_get_parent(port);

* bitclock-master はあるけど、 bitclock-slave 等がないので、
* 無設定だと CBP_CFP になってしまう
* overwrite する仕様だとすると
* bitclock-master を ports に書いていても、endpoint のデフォルトで
* 上書きされてしまう

if (of_node_name_eq(ports, "ports"))
fmt = snd_soc_of_parse_daifmt(ports, NULL, NULL, NULL);

__graph_parse_daifmt(ports, dai_link);

__graph_parse_daifmt(port, dai_link);
@@ -404,7 +413,9 @@ static int graph_link_init(struct asoc_simple_priv *priv,

if (link_ep)
graph_parse_daifmt(link_ep, dai_link);
printk("1----%lx\n", dai_link->dai_fmt);
graph_parse_daifmt(target_ep, dai_link);
printk("2----%lx\n", dai_link->dai_fmt);

dai_link->init = graph_dai_init;
if (priv->ops)
@@ -428,8 +439,6 @@ int asoc_graph2_link_normal(struct asoc_simple_priv *priv,
char dai_name[64];
int ret;

graph_parse_daifmt(cpu_ep, dai_link);

ret = graph_parse_node(priv, cpu_ep, li, 0, 1);
if (ret < 0)
goto err;
@@ -504,6 +513,10 @@ int asoc_graph2_link_dpcm(struct asoc_simple_priv *priv,
sprintf(dai_name, "fe.%pOFP.%s",
cpus->of_node,
cpus->dai_name);
printk("------fe\n");
ret = graph_link_init(priv, ep, rep, li, dai_name);
if (ret < 0)
goto err;
} else {
struct device_node *rport = of_get_parent(rep);
struct device_node *rports = of_get_parent(rport);
@@ -541,10 +554,6 @@ int asoc_graph2_link_dpcm(struct asoc_simple_priv *priv,
dai_link->no_pcm = 1;
dai_link->be_hw_params_fixup = asoc_simple_be_hw_params_fixup;

sprintf(dai_name, "be.%pOFP.%s",
codecs->of_node,
codecs->dai_name);

/* check "prefix" from top node */
snd_soc_of_parse_node_prefix(rports, cconf, codecs->of_node, "prefix");
snd_soc_of_parse_node_prefix(rport, cconf, codecs->of_node, "prefix");
@@ -555,15 +564,24 @@ int asoc_graph2_link_dpcm(struct asoc_simple_priv *priv,
ret = graph_parse_node(priv, rep, li, 0, 0);
if (ret < 0)
goto err;

sprintf(dai_name, "be.%pOFP.%s",
codecs->of_node,
codecs->dai_name);
printk("------be\n");
ret = graph_link_init(priv, ep, rep, li, dai_name);
if (ret < 0)
goto err;

/* We need to flip master, since It is CPU base dai_fmt */
dai_link->dai_fmt = snd_soc_dai_fmt_master_fliped(dai_link->dai_fmt);
printk("3----%lx\n", dai_link->dai_fmt);
}

graph_parse_convert(dev, rep, &dai_props->adata);

snd_soc_dai_link_set_capabilities(dai_link);

ret = graph_link_init(priv, ep, rep, li, dai_name);
if (ret < 0)
goto err;
err:
of_node_put(ep);
of_node_put(rep);
@@ -88,6 +88,8 @@ static int test_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
unsigned int master = fmt & SND_SOC_DAIFMT_MASTER_MASK;
char *str;

dev_info(dai->dev, "name : %s", dai->name);

str = "unknown";
switch (format) {
case SND_SOC_DAIFMT_I2S:

0 comments on commit f4a51f1

Please sign in to comment.