mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-17 05:45:20 +00:00
ASoC: simple-card-utils: add codec2codec support
codec2codec needs snd_soc_pcm_stream settings. This patch adds it. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/874k9mn8qy.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
9293925245
commit
52a18c2914
@ -42,6 +42,7 @@ struct prop_nums {
|
||||
int cpus;
|
||||
int codecs;
|
||||
int platforms;
|
||||
int c2c;
|
||||
};
|
||||
|
||||
struct asoc_simple_priv {
|
||||
@ -54,6 +55,7 @@ struct asoc_simple_priv {
|
||||
struct snd_soc_dai_link_component *platforms;
|
||||
struct asoc_simple_data adata;
|
||||
struct snd_soc_codec_conf *codec_conf;
|
||||
struct snd_soc_pcm_stream *c2c_conf;
|
||||
struct prop_nums num;
|
||||
unsigned int mclk_fs;
|
||||
} *dai_props;
|
||||
@ -64,6 +66,7 @@ struct asoc_simple_priv {
|
||||
struct snd_soc_dai_link_component *dlcs;
|
||||
struct snd_soc_dai_link_component dummy;
|
||||
struct snd_soc_codec_conf *codec_conf;
|
||||
struct snd_soc_pcm_stream *c2c_conf;
|
||||
struct gpio_desc *pa_gpio;
|
||||
const struct snd_soc_ops *ops;
|
||||
unsigned int dpcm_selectable:1;
|
||||
|
@ -619,7 +619,8 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
|
||||
struct asoc_simple_dai *dais;
|
||||
struct snd_soc_dai_link_component *dlcs;
|
||||
struct snd_soc_codec_conf *cconf = NULL;
|
||||
int i, dai_num = 0, dlc_num = 0, cnf_num = 0;
|
||||
struct snd_soc_pcm_stream *c2c_conf = NULL;
|
||||
int i, dai_num = 0, dlc_num = 0, cnf_num = 0, c2c_num = 0;
|
||||
|
||||
dai_props = devm_kcalloc(dev, li->link, sizeof(*dai_props), GFP_KERNEL);
|
||||
dai_link = devm_kcalloc(dev, li->link, sizeof(*dai_link), GFP_KERNEL);
|
||||
@ -638,6 +639,8 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
|
||||
|
||||
if (!li->num[i].cpus)
|
||||
cnf_num += li->num[i].codecs;
|
||||
|
||||
c2c_num += li->num[i].c2c;
|
||||
}
|
||||
|
||||
dais = devm_kcalloc(dev, dai_num, sizeof(*dais), GFP_KERNEL);
|
||||
@ -651,6 +654,12 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (c2c_num) {
|
||||
c2c_conf = devm_kcalloc(dev, c2c_num, sizeof(*c2c_conf), GFP_KERNEL);
|
||||
if (!c2c_conf)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
dev_dbg(dev, "link %d, dais %d, ccnf %d\n",
|
||||
li->link, dai_num, cnf_num);
|
||||
|
||||
@ -664,6 +673,7 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
|
||||
priv->dais = dais;
|
||||
priv->dlcs = dlcs;
|
||||
priv->codec_conf = cconf;
|
||||
priv->c2c_conf = c2c_conf;
|
||||
|
||||
card->dai_link = priv->dai_link;
|
||||
card->num_links = li->link;
|
||||
@ -681,6 +691,12 @@ int asoc_simple_init_priv(struct asoc_simple_priv *priv,
|
||||
|
||||
dlcs += li->num[i].cpus;
|
||||
dais += li->num[i].cpus;
|
||||
|
||||
if (li->num[i].c2c) {
|
||||
/* Codec2Codec */
|
||||
dai_props[i].c2c_conf = c2c_conf;
|
||||
c2c_conf += li->num[i].c2c;
|
||||
}
|
||||
} else {
|
||||
/* DPCM Be's CPU = dummy */
|
||||
dai_props[i].cpus =
|
||||
|
Loading…
x
Reference in New Issue
Block a user