2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2025-01-22 12:33:59 +08:00
linux-next/sound/soc/sunxi
Samuel Holland d8f006825a
ASoC: sun8i-codec: Set up clock tree at probe time
The sun8i codec is effectively an on-die variant of the X-Powers AC100
codec. The AC100 can derive its clocks from either of two I2S master
clocks or an internal PLL. For the on-die variant, Allwinner replaced
the codec's own PLL with a connection to SoC's existing PLL_AUDIO, and
they connected both I2S MCLK inputs to the same source -- which happens
to be an integer divider from the same PLL_AUDIO.

So there's actually no clocking flexibility. To run SYSCLK at the
required rate, it must be run straight from the PLL. The only choice is
whether it goes through AIF1CLK or AIF2CLK. Since both run at the same
rate, the only effect of that choice is which field in SYS_SR_CTRL
(AIF1_FS or AIF2_FS) controls the system sample rate.

Since AIFnCLK is required to bring up the corresponding DAI, and AIF1
(connected to the CPU) is used most often, let's use AIF1CLK as the
SYSCLK parent. That means we no longer need to set AIF2_FS.

Since this clock tree never changes, we can program it from the
component probe function, instead of using DAPM widgets. The DAPM
widgets unnecessarily change clock parents when the codec goes in/out
of idle and the supply widgets are powered up/down.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Acked-by: Maxime Ripard <mripard@kernel.org>
Link: https://lore.kernel.org/r/20201001021148.15852-2-samuel@sholland.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2020-10-05 14:16:14 +01:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile ASoC: sunxi: Add new driver for Allwinner A64 codec's analog path controls 2018-10-17 11:11:01 +01:00
sun4i-codec.c ASoC: various vendors: delete repeated words in comments 2020-08-18 14:52:32 +01:00
sun4i-i2s.c ASoC: sunxi: sun4i-i2s: add missing clock and format arguments in kernel-doc 2020-07-10 15:13:46 +01:00
sun4i-spdif.c ASoC: sunxi: use asoc_substream_to_rtd() 2020-07-23 19:07:23 +01:00
sun8i-adda-pr-regmap.c ASoC: sun8i-codec-analog: split regmap code into separate driver 2018-10-17 11:10:59 +01:00
sun8i-adda-pr-regmap.h ASoC: sun8i-codec-analog: split regmap code into separate driver 2018-10-17 11:10:59 +01:00
sun8i-codec-analog.c ASoC: sun8i-codec-analog: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:09:02 +01:00
sun8i-codec.c ASoC: sun8i-codec: Set up clock tree at probe time 2020-10-05 14:16:14 +01:00
sun50i-codec-analog.c ASoC: sun50i-codec-analog: Enable DAPM for earpiece switch 2020-08-17 16:19:17 +01:00