linux/sound/soc/sunxi
Maxime Ripard 7df8f9a201
ASoC: sun4i-i2s: Don't use the oversample to calculate BCLK
The BCLK divider should be calculated using the parameters that actually
make the BCLK rate: the number of channels, the sampling rate and the
sample width.

We've been using the oversample_rate previously because in the former SoCs,
the BCLK's parent is MCLK, which in turn is being used to generate the
oversample rate, so we end up with something like this:

oversample = mclk_rate / sampling_rate
bclk_div = oversample / word_size / channels

So, bclk_div = mclk_rate / sampling_rate / word_size / channels.

And this is actually better, since the oversampling ratio only plays a role
because the MCLK is its parent, not because of what BCLK is supposed to be.

Furthermore, that assumption of MCLK being the parent has been broken on
newer SoCs, so let's use the proper formula, and have the parent rate as an
argument.

Fixes: 7d2993811a ("ASoC: sun4i-i2s: Add support for H3")
Fixes: 21faaea134 ("ASoC: sun4i-i2s: Add support for A83T")
Fixes: 66ecce3325 ("ASoC: sun4i-i2s: Add compatibility with A64 codec I2S")
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Link: https://lore.kernel.org/r/c3595e3a9788c2ef2dcc30aa3c8c4953bb5cc249.1566242458.git-series.maxime.ripard@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2019-08-20 18:23:42 +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: sunxi: sun4i-codec: use snd_soc_dai_link_component for aux_dev 2019-08-09 18:12:35 +01:00
sun4i-i2s.c ASoC: sun4i-i2s: Don't use the oversample to calculate BCLK 2019-08-20 18:23:42 +01:00
sun4i-spdif.c Linux 5.2-rc6 2019-06-26 12:39:34 +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: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:09:39 +01:00
sun50i-codec-analog.c ASoC: sunxi: sun50i-codec-analog: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:09:20 +01:00