Message ID | 20221018230409.610538-1-aidanmacdonald.0x0@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v1] ASoC: simple-card: Fix up checks for HW param fixups | expand |
Hi Aidan > The "convert-xxx" properties only have an effect for DPCM DAI links. > A DAI link is only created as DPCM if the device tree requires it; > part of this involves checking for the use of "convert-xxx" properties. > > When the convert-sample-format property was added, the checks got out > of sync. A DAI link that specified only convert-sample-format but did > not pass any of the other DPCM checks would not go into DPCM mode and > the convert-sample-format property would be silently ignored. > > Fix this by adding a function to do the "convert-xxx" property checks, > instead of open-coding it in simple-card and audio-graph-card. And add > "convert-sample-format" to the check function so that DAI links using > it will be initialized correctly. > > Fixes: 047a05366f4b ("ASoC: simple-card-utils: Fixup DAI sample format") > Signed-off-by: Aidan MacDonald <aidanmacdonald.0x0@gmail.com> > --- (snip) > +bool asoc_simple_convert_is_required(const struct asoc_simple_data *data); This is not a big deal, but "is_conert_required" is better for me :) Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Thank you for your help !! Best regards --- Kuninori Morimoto
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> writes: > Hi Aidan > >> The "convert-xxx" properties only have an effect for DPCM DAI links. >> A DAI link is only created as DPCM if the device tree requires it; >> part of this involves checking for the use of "convert-xxx" properties. >> >> When the convert-sample-format property was added, the checks got out >> of sync. A DAI link that specified only convert-sample-format but did >> not pass any of the other DPCM checks would not go into DPCM mode and >> the convert-sample-format property would be silently ignored. >> >> Fix this by adding a function to do the "convert-xxx" property checks, >> instead of open-coding it in simple-card and audio-graph-card. And add >> "convert-sample-format" to the check function so that DAI links using >> it will be initialized correctly. >> >> Fixes: 047a05366f4b ("ASoC: simple-card-utils: Fixup DAI sample format") >> Signed-off-by: Aidan MacDonald <aidanmacdonald.0x0@gmail.com> >> --- > (snip) >> +bool asoc_simple_convert_is_required(const struct asoc_simple_data *data); > > This is not a big deal, but "is_conert_required" is better for me :) > > Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > Thank you for your help !! > > Best regards > --- > Kuninori Morimoto That sounds better, thanks. I'm sending patch v2 now. - Aidan
diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h index a0b827f0c2f6..cfed741e0181 100644 --- a/include/sound/simple_card_utils.h +++ b/include/sound/simple_card_utils.h @@ -177,6 +177,7 @@ 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, struct asoc_simple_data *data); +bool asoc_simple_convert_is_required(const struct asoc_simple_data *data); int asoc_simple_parse_routing(struct snd_soc_card *card, char *prefix); diff --git a/sound/soc/generic/audio-graph-card.c b/sound/soc/generic/audio-graph-card.c index b327372f2e4a..7804625b131e 100644 --- a/sound/soc/generic/audio-graph-card.c +++ b/sound/soc/generic/audio-graph-card.c @@ -417,7 +417,7 @@ static inline bool parse_as_dpcm_link(struct asoc_simple_priv *priv, * or has convert-xxx property */ if ((of_get_child_count(codec_port) > 1) || - (adata->convert_rate || adata->convert_channels)) + asoc_simple_convert_is_required(adata)) return true; return false; diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c index bef16833c487..7a708be24656 100644 --- a/sound/soc/generic/simple-card-utils.c +++ b/sound/soc/generic/simple-card-utils.c @@ -85,6 +85,21 @@ void asoc_simple_parse_convert(struct device_node *np, } EXPORT_SYMBOL_GPL(asoc_simple_parse_convert); +/** + * asoc_simple_convert_is_required() - Query if HW param conversion was requested + * @data: Link data. + * + * Returns true if any HW param conversion was requested for this DAI link with + * any "convert-xxx" properties. + */ +bool asoc_simple_convert_is_required(const struct asoc_simple_data *data) +{ + return data->convert_rate || + data->convert_channels || + data->convert_sample_format; +} +EXPORT_SYMBOL_GPL(asoc_simple_convert_is_required); + int asoc_simple_parse_daifmt(struct device *dev, struct device_node *node, struct device_node *codec, diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c index 78419e18717d..675991cdee87 100644 --- a/sound/soc/generic/simple-card.c +++ b/sound/soc/generic/simple-card.c @@ -393,8 +393,7 @@ static int __simple_for_each_link(struct asoc_simple_priv *priv, * or has convert-xxx property */ if (dpcm_selectable && - (num > 2 || - adata.convert_rate || adata.convert_channels)) { + (num > 2 || asoc_simple_convert_is_required(&adata))) { /* * np * |1(CPU)|0(Codec) li->cpu
The "convert-xxx" properties only have an effect for DPCM DAI links. A DAI link is only created as DPCM if the device tree requires it; part of this involves checking for the use of "convert-xxx" properties. When the convert-sample-format property was added, the checks got out of sync. A DAI link that specified only convert-sample-format but did not pass any of the other DPCM checks would not go into DPCM mode and the convert-sample-format property would be silently ignored. Fix this by adding a function to do the "convert-xxx" property checks, instead of open-coding it in simple-card and audio-graph-card. And add "convert-sample-format" to the check function so that DAI links using it will be initialized correctly. Fixes: 047a05366f4b ("ASoC: simple-card-utils: Fixup DAI sample format") Signed-off-by: Aidan MacDonald <aidanmacdonald.0x0@gmail.com> --- include/sound/simple_card_utils.h | 1 + sound/soc/generic/audio-graph-card.c | 2 +- sound/soc/generic/simple-card-utils.c | 15 +++++++++++++++ sound/soc/generic/simple-card.c | 3 +-- 4 files changed, 18 insertions(+), 3 deletions(-)