aboutsummaryrefslogtreecommitdiff
path: root/sound/soc/fsl
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2021-06-21 19:16:53 +0100
committerMark Brown <broonie@kernel.org>2021-06-21 19:16:53 +0100
commitd7085db6e19237cc4987d5eda95e35b44175a108 (patch)
treeb425cd8812bbe77aae7ea9773b359e795fe63b3e /sound/soc/fsl
parentef7eb57d21e88ecb2a4e2c6f2c4118245e2efb21 (diff)
parent8439c5861cf0c88037f6e9cdd3ba5f1c472f847a (diff)
Merge series "ASoC: tidyup snd_soc_of_parse_daifmt()" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
Hi Mark These are v3 of parsing for daifmt. 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. To handle it more flexibile, this patch-set adds new functions which separates snd_soc_of_parse_daifmt() helper function. snd_soc_daifmt_parse_format() : format part snd_soc_daifmt_parse_clock_provider_as_flag() : clock part for style A) snd_soc_daifmt_parse_clock_provider_as_phandl() : clock part for style B) snd_soc_daifmt_parse_clock_provider_as_bitmap() : clock part use with _from_bitmap v1 -> v2 - tidyup parse_clock_provider functions to _as_flag/phandle/bitmap() - don't exchange code style on each drivers. v2 -> v3 - use daifmt as much as possible (don't use daiclk) on each driver. Link: https://lore.kernel.org/r/875yypdxlm.wl-kuninori.morimoto.gx@renesas.com Link: https://lore.kernel.org/r/87czsvdc4o.wl-kuninori.morimoto.gx@renesas.com Kuninori Morimoto (8): ASoC: soc-core: add snd_soc_daifmt_clock_provider_from_bitmap() 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 | 21 ++++- sound/soc/atmel/mikroe-proto.c | 9 ++- sound/soc/fsl/fsl-asoc-card.c | 7 +- sound/soc/generic/simple-card-utils.c | 16 ++-- sound/soc/meson/meson-card-utils.c | 6 +- sound/soc/soc-core.c | 109 +++++++++++++++++--------- 6 files changed, 106 insertions(+), 62 deletions(-) -- 2.25.1
Diffstat (limited to 'sound/soc/fsl')
-rw-r--r--sound/soc/fsl/fsl-asoc-card.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sound/soc/fsl/fsl-asoc-card.c b/sound/soc/fsl/fsl-asoc-card.c
index c62bfd1c3ac7..14d2956d0da3 100644
--- a/sound/soc/fsl/fsl-asoc-card.c
+++ b/sound/soc/fsl/fsl-asoc-card.c
@@ -540,7 +540,6 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
struct device *codec_dev = NULL;
const char *codec_dai_name;
const char *codec_dev_name;
- unsigned int daifmt;
u32 width;
int ret;
@@ -684,10 +683,10 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
}
/* Format info from DT is optional. */
- daifmt = snd_soc_of_parse_daifmt(np, NULL,
- &bitclkmaster, &framemaster);
- daifmt &= ~SND_SOC_DAIFMT_MASTER_MASK;
+ snd_soc_daifmt_parse_clock_provider_as_phandle(np, NULL, &bitclkmaster, &framemaster);
if (bitclkmaster || framemaster) {
+ unsigned int daifmt = snd_soc_daifmt_parse_format(np, NULL);
+
if (codec_np == bitclkmaster)
daifmt |= (codec_np == framemaster) ?
SND_SOC_DAIFMT_CBM_CFM : SND_SOC_DAIFMT_CBM_CFS;