[PATCH 0/9] ASoC: tidyup snd_soc_of_parse_daifmt()
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Tue Jun 8 02:11:17 CEST 2021
Hi Mark
I want to add new audio-graph-card2 sound card driver,
and this is last part of necessary soc-core cleanup for it.
Current some drivers are using DT, and Then,
snd_soc_of_parse_daifmt() parses daifmt, but bitclock/frame provider
parsing part is one of headache, because we are assuming below both cases.
A) node {
bitclock-master;
frame-master;
...
};
B) link {
bitclock-master = <&xxx>;
frame-master = <&xxx>;
...
};
The original was style A), and style B) was added later.
snd_soc_of_parse_daifmt() parses A) style as original style,
and user need to update to B) style for clock_provider part if needed.
In such case, user need to re-parse it, like below.
daifmt = snd_soc_of_parse_daifmt(..., &bitclkmaster, &framemaster);
daifmt &= ~SND_SOC_DAIFMT_MASTER_MASK;
if (codec == bitclkmaster)
daifmt |= (codec == framemaster) ?
SND_SOC_DAIFMT_CBM_CFM : SND_SOC_DAIFMT_CBM_CFS;
else
daifmt |= (codec == framemaster) ?
SND_SOC_DAIFMT_CBS_CFM : SND_SOC_DAIFMT_CBS_CFS;
This patch-set adds new functions, and handle these more simply.
Unfortunately, there are too many use-case, do it by 1 function was implessible.
style A)
bit_frame = snd_soc_daifmt_parse_clock_provider();
daifmt = snd_soc_daifmt_parse_format(...) | /* format part */
snd_soc_daifmt_clock_provider_pickup(bit_frame); /* clock part */
style B)
snd_soc_daifmt_parse_clock_provider(..., &bit, &frame);
daifmt = snd_soc_daifmt_parse_format(...) | /* format part */
snd_soc_daifmt_clock_provider_pickup( /* clock part */
((codec == bit) << 4) + (codec == frame));
Kuninori Morimoto (9):
ASoC: soc-core: don't use discriminatory terms on snd_soc_runtime_get_dai_fmt()
ASoC: soc-core: add snd_soc_daifmt_clock_provider_pickup()
ASoC: soc-core: add snd_soc_daifmt_clock_provider_fliped()
ASoC: soc-core: add snd_soc_daifmt_parse_format/clock_provider()
ASoC: atmel: switch to use snd_soc_daifmt_parse_format/clock_provider()
ASoC: fsl: switch to use snd_soc_daifmt_parse_format/clock_provider()
ASoC: meson: switch to use snd_soc_daifmt_parse_format/clock_provider()
ASoC: simple-card-utils: switch to use snd_soc_daifmt_parse_format/clock_provider()
ASoC: soc-core: remove snd_soc_of_parse_daifmt()
include/sound/soc.h | 13 +++-
sound/soc/atmel/mikroe-proto.c | 18 ++---
sound/soc/fsl/fsl-asoc-card.c | 16 +---
sound/soc/generic/simple-card-utils.c | 19 ++---
sound/soc/meson/meson-card-utils.c | 15 ++--
sound/soc/soc-core.c | 103 ++++++++++++++++----------
6 files changed, 99 insertions(+), 85 deletions(-)
--
2.25.1
More information about the Alsa-devel
mailing list