|
@@ -125,14 +125,6 @@ static int __asoc_simple_card_dai_init(struct snd_soc_dai *dai,
|
|
|
{
|
|
|
int ret;
|
|
|
|
|
|
- if (set->fmt) {
|
|
|
- ret = snd_soc_dai_set_fmt(dai, set->fmt);
|
|
|
- if (ret && ret != -ENOTSUPP) {
|
|
|
- dev_err(dai->dev, "simple-card: set_fmt error\n");
|
|
|
- goto err;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
if (set->sysclk) {
|
|
|
ret = snd_soc_dai_set_sysclk(dai, 0, set->sysclk, 0);
|
|
|
if (ret && ret != -ENOTSUPP) {
|
|
@@ -269,12 +261,10 @@ static int asoc_simple_card_parse_daifmt(struct device_node *node,
|
|
|
struct device_node *codec,
|
|
|
char *prefix, int idx)
|
|
|
{
|
|
|
+ struct snd_soc_dai_link *dai_link = simple_priv_to_link(priv, idx);
|
|
|
struct device *dev = simple_priv_to_dev(priv);
|
|
|
struct device_node *bitclkmaster = NULL;
|
|
|
struct device_node *framemaster = NULL;
|
|
|
- struct simple_dai_props *dai_props = simple_priv_to_props(priv, idx);
|
|
|
- struct asoc_simple_dai *cpu_dai = &dai_props->cpu_dai;
|
|
|
- struct asoc_simple_dai *codec_dai = &dai_props->codec_dai;
|
|
|
unsigned int daifmt;
|
|
|
|
|
|
daifmt = snd_soc_of_parse_daifmt(node, prefix,
|
|
@@ -289,8 +279,7 @@ static int asoc_simple_card_parse_daifmt(struct device_node *node,
|
|
|
*/
|
|
|
dev_dbg(dev, "Revert to legacy daifmt parsing\n");
|
|
|
|
|
|
- cpu_dai->fmt = codec_dai->fmt =
|
|
|
- snd_soc_of_parse_daifmt(codec, NULL, NULL, NULL) |
|
|
|
+ daifmt = snd_soc_of_parse_daifmt(codec, NULL, NULL, NULL) |
|
|
|
(daifmt & ~SND_SOC_DAIFMT_CLOCK_MASK);
|
|
|
} else {
|
|
|
if (codec == bitclkmaster)
|
|
@@ -299,11 +288,10 @@ static int asoc_simple_card_parse_daifmt(struct device_node *node,
|
|
|
else
|
|
|
daifmt |= (codec == framemaster) ?
|
|
|
SND_SOC_DAIFMT_CBS_CFM : SND_SOC_DAIFMT_CBS_CFS;
|
|
|
-
|
|
|
- cpu_dai->fmt = daifmt;
|
|
|
- codec_dai->fmt = daifmt;
|
|
|
}
|
|
|
|
|
|
+ dai_link->dai_fmt = daifmt;
|
|
|
+
|
|
|
of_node_put(bitclkmaster);
|
|
|
of_node_put(framemaster);
|
|
|
|
|
@@ -379,13 +367,12 @@ static int asoc_simple_card_dai_link_of(struct device_node *node,
|
|
|
dai_link->init = asoc_simple_card_dai_init;
|
|
|
|
|
|
dev_dbg(dev, "\tname : %s\n", dai_link->stream_name);
|
|
|
- dev_dbg(dev, "\tcpu : %s / %04x / %d\n",
|
|
|
+ dev_dbg(dev, "\tformat : %04x\n", dai_link->dai_fmt);
|
|
|
+ dev_dbg(dev, "\tcpu : %s / %d\n",
|
|
|
dai_link->cpu_dai_name,
|
|
|
- dai_props->cpu_dai.fmt,
|
|
|
dai_props->cpu_dai.sysclk);
|
|
|
- dev_dbg(dev, "\tcodec : %s / %04x / %d\n",
|
|
|
+ dev_dbg(dev, "\tcodec : %s / %d\n",
|
|
|
dai_link->codec_dai_name,
|
|
|
- dai_props->codec_dai.fmt,
|
|
|
dai_props->codec_dai.sysclk);
|
|
|
|
|
|
/*
|
|
@@ -572,14 +559,13 @@ static int asoc_simple_card_probe(struct platform_device *pdev)
|
|
|
dai_link->codec_name = cinfo->codec;
|
|
|
dai_link->cpu_dai_name = cinfo->cpu_dai.name;
|
|
|
dai_link->codec_dai_name = cinfo->codec_dai.name;
|
|
|
+ dai_link->dai_fmt = cinfo->daifmt;
|
|
|
dai_link->init = asoc_simple_card_dai_init;
|
|
|
memcpy(&priv->dai_props->cpu_dai, &cinfo->cpu_dai,
|
|
|
sizeof(priv->dai_props->cpu_dai));
|
|
|
memcpy(&priv->dai_props->codec_dai, &cinfo->codec_dai,
|
|
|
sizeof(priv->dai_props->codec_dai));
|
|
|
|
|
|
- priv->dai_props->cpu_dai.fmt |= cinfo->daifmt;
|
|
|
- priv->dai_props->codec_dai.fmt |= cinfo->daifmt;
|
|
|
}
|
|
|
|
|
|
snd_soc_card_set_drvdata(&priv->snd_card, priv);
|