Commit c2c60eaf authored by Mark Brown's avatar Mark Brown

ASoC: simpe-card/audio-graph fixups

Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:

These are simpe-card/audio-graph fixup patches.
parents 8a7ae8c5 8f597983
...@@ -173,8 +173,6 @@ void asoc_simple_canonicalize_cpu(struct snd_soc_dai_link_component *cpus, ...@@ -173,8 +173,6 @@ void asoc_simple_canonicalize_cpu(struct snd_soc_dai_link_component *cpus,
void asoc_simple_clean_reference(struct snd_soc_card *card); void asoc_simple_clean_reference(struct snd_soc_card *card);
void asoc_simple_convert_fixup(struct asoc_simple_data *data,
struct snd_pcm_hw_params *params);
void asoc_simple_parse_convert(struct device_node *np, char *prefix, void asoc_simple_parse_convert(struct device_node *np, char *prefix,
struct asoc_simple_data *data); struct asoc_simple_data *data);
bool asoc_simple_is_convert_required(const struct asoc_simple_data *data); bool asoc_simple_is_convert_required(const struct asoc_simple_data *data);
......
...@@ -49,10 +49,13 @@ / { ...@@ -49,10 +49,13 @@ / {
* +-+ +-+ * +-+ +-+
* *
* [DPCM] * [DPCM]
*
* CPU3/CPU4 are converting rate to 44100
*
* FE BE * FE BE
* **** * ****
* cpu3 <-@--* *--@-> codec3 * cpu3 <-@--* *--@-> codec3
* cpu4 <-@--* * * cpu4 <-@--* * (44.1kHz)
* **** * ****
* *
* [DPCM-Multi] * [DPCM-Multi]
...@@ -286,7 +289,10 @@ ports { ...@@ -286,7 +289,10 @@ ports {
port@2 { codec2_ep: endpoint { remote-endpoint = <&mcodec2_ep>; }; }; port@2 { codec2_ep: endpoint { remote-endpoint = <&mcodec2_ep>; }; };
/* [DPCM]::BE */ /* [DPCM]::BE */
port@3 { codec3_ep: endpoint { remote-endpoint = <&be00_ep>; }; }; port@3 {
convert-rate = <44100>;
codec3_ep: endpoint { remote-endpoint = <&be00_ep>; };
};
/* [DPCM-Multi]::BE */ /* [DPCM-Multi]::BE */
port@4 { codec4_ep: endpoint { remote-endpoint = <&mbe1_ep>; }; }; port@4 { codec4_ep: endpoint { remote-endpoint = <&mbe1_ep>; }; };
......
...@@ -849,7 +849,8 @@ int audio_graph2_link_dpcm(struct asoc_simple_priv *priv, ...@@ -849,7 +849,8 @@ int audio_graph2_link_dpcm(struct asoc_simple_priv *priv,
goto err; goto err;
} }
graph_parse_convert(rep, dai_props); graph_parse_convert(ep, dai_props); /* at node of <dpcm> */
graph_parse_convert(rep, dai_props); /* at node of <CPU/Codec> */
snd_soc_dai_link_set_capabilities(dai_link); snd_soc_dai_link_set_capabilities(dai_link);
......
...@@ -41,27 +41,6 @@ static void asoc_simple_fixup_sample_fmt(struct asoc_simple_data *data, ...@@ -41,27 +41,6 @@ static void asoc_simple_fixup_sample_fmt(struct asoc_simple_data *data,
} }
} }
void asoc_simple_convert_fixup(struct asoc_simple_data *data,
struct snd_pcm_hw_params *params)
{
struct snd_interval *rate = hw_param_interval(params,
SNDRV_PCM_HW_PARAM_RATE);
struct snd_interval *channels = hw_param_interval(params,
SNDRV_PCM_HW_PARAM_CHANNELS);
if (data->convert_rate)
rate->min =
rate->max = data->convert_rate;
if (data->convert_channels)
channels->min =
channels->max = data->convert_channels;
if (data->convert_sample_format)
asoc_simple_fixup_sample_fmt(data, params);
}
EXPORT_SYMBOL_GPL(asoc_simple_convert_fixup);
void asoc_simple_parse_convert(struct device_node *np, void asoc_simple_parse_convert(struct device_node *np,
char *prefix, char *prefix,
struct asoc_simple_data *data) struct asoc_simple_data *data)
...@@ -522,8 +501,20 @@ int asoc_simple_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, ...@@ -522,8 +501,20 @@ int asoc_simple_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
{ {
struct asoc_simple_priv *priv = snd_soc_card_get_drvdata(rtd->card); struct asoc_simple_priv *priv = snd_soc_card_get_drvdata(rtd->card);
struct simple_dai_props *dai_props = simple_priv_to_props(priv, rtd->num); struct simple_dai_props *dai_props = simple_priv_to_props(priv, rtd->num);
struct asoc_simple_data *data = &dai_props->adata;
struct snd_interval *rate = hw_param_interval(params, SNDRV_PCM_HW_PARAM_RATE);
struct snd_interval *channels = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS);
if (data->convert_rate)
rate->min =
rate->max = data->convert_rate;
asoc_simple_convert_fixup(&dai_props->adata, params); if (data->convert_channels)
channels->min =
channels->max = data->convert_channels;
if (data->convert_sample_format)
asoc_simple_fixup_sample_fmt(data, params);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment