mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-02 08:34:20 +08:00
ASoC: audio-graph-card2.c: make Codec2Codec settings optional
Current audio-graph-card2 can use Codec2Codec, and having its original parameter (= rate) on DT is mandatory for now. But simple-card-utils.c has asoc_simple_init_for_codec2codec() to setup *default* Codec2Codec settings. This patch makes Audio Graph Card2 Codec2Codec rate settings optional. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/87fsjls95u.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
817a62108d
commit
c2ff7f15a4
@ -154,11 +154,12 @@
|
||||
|
||||
codec2codec {
|
||||
ports@0 {
|
||||
rate = <48000>;
|
||||
/* use default settings */
|
||||
c2c: port@0 { c2cf_ep: endpoint { remote-endpoint = <&codec6_ep>; }; };
|
||||
port@1 { c2cb_ep: endpoint { remote-endpoint = <&codec7_ep>; }; };
|
||||
};
|
||||
ports@1 {
|
||||
/* use original settings */
|
||||
rate = <48000>;
|
||||
c2c_m: port@0 { c2cmf_ep: endpoint { remote-endpoint = <&mc2c0_ep>; }; };
|
||||
port@1 { c2cmb_ep: endpoint { remote-endpoint = <&mc2c1_ep>; }; };
|
||||
|
@ -851,8 +851,6 @@ int audio_graph2_link_c2c(struct asoc_simple_priv *priv,
|
||||
struct link_info *li)
|
||||
{
|
||||
struct snd_soc_dai_link *dai_link = simple_priv_to_link(priv, li->link);
|
||||
struct simple_dai_props *dai_props = simple_priv_to_props(priv, li->link);
|
||||
struct snd_soc_pcm_stream *c2c_conf = dai_props->c2c_conf;
|
||||
struct device_node *port0, *port1, *ports;
|
||||
struct device_node *codec0_port, *codec1_port;
|
||||
struct device_node *ep0, *ep1;
|
||||
@ -880,21 +878,30 @@ int audio_graph2_link_c2c(struct asoc_simple_priv *priv,
|
||||
ports = of_get_parent(port0);
|
||||
port1 = of_get_next_child(ports, lnk);
|
||||
|
||||
/*
|
||||
* Card2 can use original Codec2Codec settings if DT has.
|
||||
* It will use default settings if no settings on DT.
|
||||
* see
|
||||
* asoc_simple_init_for_codec2codec()
|
||||
*
|
||||
* Add more settings here if needed
|
||||
*/
|
||||
of_property_read_u32(ports, "rate", &val);
|
||||
if (!val) {
|
||||
struct device *dev = simple_priv_to_dev(priv);
|
||||
if (val) {
|
||||
struct simple_dai_props *dai_props = simple_priv_to_props(priv, li->link);
|
||||
struct snd_soc_pcm_stream *c2c_conf = dai_props->c2c_conf;
|
||||
|
||||
dev_err(dev, "Codec2Codec needs rate settings\n");
|
||||
goto err1;
|
||||
c2c_conf->formats = SNDRV_PCM_FMTBIT_S32_LE; /* update ME */
|
||||
c2c_conf->rates = SNDRV_PCM_RATE_8000_384000;
|
||||
c2c_conf->rate_min =
|
||||
c2c_conf->rate_max = val;
|
||||
c2c_conf->channels_min =
|
||||
c2c_conf->channels_max = 2; /* update ME */
|
||||
|
||||
dai_link->params = c2c_conf;
|
||||
dai_link->num_params = 1;
|
||||
}
|
||||
|
||||
c2c_conf->formats = SNDRV_PCM_FMTBIT_S32_LE; /* update ME */
|
||||
c2c_conf->rate_min =
|
||||
c2c_conf->rate_max = val;
|
||||
c2c_conf->channels_min =
|
||||
c2c_conf->channels_max = 2; /* update ME */
|
||||
dai_link->params = c2c_conf;
|
||||
|
||||
ep0 = port_to_endpoint(port0);
|
||||
ep1 = port_to_endpoint(port1);
|
||||
|
||||
@ -923,7 +930,6 @@ err2:
|
||||
of_node_put(ep1);
|
||||
of_node_put(codec0_port);
|
||||
of_node_put(codec1_port);
|
||||
err1:
|
||||
of_node_put(ports);
|
||||
of_node_put(port0);
|
||||
of_node_put(port1);
|
||||
|
Loading…
Reference in New Issue
Block a user