linux/sound/soc
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
..
adi treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 177 2019-05-30 11:29:19 -07:00
amd Linux 5.2-rc6 2019-06-26 12:39:34 +01:00
atmel ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
au1x ASoC: au1x: psc-i2s: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:12:25 +01:00
bcm ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
cirrus ASoC: ep93xx-i2s: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:04:11 +01:00
codecs ASoC: 88pm860x: remove unused variables 'pcm_switch_controls' and 'aif1_mux' 2019-08-15 15:07:25 +01:00
dwc treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
fsl ASoC: fsl_esai: Add compatible string for imx6ull 2019-08-12 14:01:10 +01:00
generic ASoC: simple-card: use snd_soc_dai_link_component for aux_dev 2019-08-09 18:12:28 +01:00
hisilicon treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 340 2019-06-05 17:37:07 +02:00
img treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
intel ASoC: Intel: common: add ACPI matching tables for EHL 2019-08-15 18:13:21 +01:00
jz4740 Linux 5.2-rc6 2019-06-26 12:39:34 +01:00
kirkwood ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
mediatek ASoC: mediatek: mt8183-mt6358-ts3a227-max98357: remove unused variables 2019-08-15 15:03:55 +01:00
meson ASoC: soc-core: add for_each_xxx macro for aux_dev 2019-08-09 18:13:58 +01:00
mxs ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
pxa ASoC: mmp-sspa: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:10:54 +01:00
qcom ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
rockchip ASoC: rockchip: rockchip_max98090: use snd_soc_dai_link_component for aux_dev 2019-08-09 18:12:32 +01:00
samsung ASoC: samsung: tm2_wm5110: use snd_soc_dai_link_component for aux_dev 2019-08-09 18:12:35 +01:00
sh ASoC: rsnd: Support hw_free() callback at DAI level 2019-07-23 18:14:13 +01:00
sirf ASoC: sirf: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:05:39 +01:00
sof ASoC: SOF: pcm: add ALH support 2019-08-16 13:13:59 +01:00
spear ASoC: spear: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:06:18 +01:00
sprd ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
sti ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
stm ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
sunxi ASoC: sun4i-i2s: Don't use the oversample to calculate BCLK 2019-08-20 18:23:42 +01:00
tegra ASoC: tegra: use devm_platform_ioremap_resource() to simplify code 2019-07-31 12:03:41 +01:00
ti ASoC: ti: Fix typos in ti/Kconfig 2019-08-13 12:40:33 +01:00
txx9 Linux 5.2-rc6 2019-06-26 12:39:34 +01:00
uniphier ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
ux500 ASoC: ux500: mop500: consider CPU-Platform possibility 2019-06-28 15:19:55 +01:00
xilinx ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
xtensa ASoC: Remove dev_err() usage after platform_get_irq() 2019-08-02 12:12:31 +01:00
zte ASoC: zx-tdm: remove redundant assignment to ts_width on error return path 2019-08-01 13:56:26 +01:00
Kconfig ASoC: remove w90x900/nuc900 platform drivers 2019-08-12 14:00:29 +01:00
Makefile ASoC: remove w90x900/nuc900 platform drivers 2019-08-12 14:00:29 +01:00
soc-ac97.c
soc-acpi.c ASoC: soc-acpi: fix implicit header use of module.h/export.h 2019-05-08 18:06:28 +09:00
soc-component.c ASoC: soc-component: add snd_soc_pcm_component_pcm_free() 2019-08-05 16:27:16 +01:00
soc-compress.c ASoC: core: Move pcm_mutex up to card level from snd_soc_pcm_runtime 2019-08-15 15:07:43 +01:00
soc-core.c ASoC: core: Move pcm_mutex up to card level from snd_soc_pcm_runtime 2019-08-15 15:07:43 +01:00
soc-dai.c ASoC: soc-dai: move snd_soc_dai_stream_valid() to soc-dai.c 2019-07-23 18:14:26 +01:00
soc-dapm.c ASoC: dapm: Invalidate only paths reachable for a given stream 2019-08-12 14:01:59 +01:00
soc-devres.c
soc-generic-dmaengine-pcm.c ASoC: More changes for v5.1 2019-02-28 13:30:55 +01:00
soc-io.c
soc-jack.c ASoC: add soc-component.c 2019-08-05 16:16:19 +01:00
soc-ops.c
soc-pcm.c ASoC: core: Move pcm_mutex up to card level from snd_soc_pcm_runtime 2019-08-15 15:07:43 +01:00
soc-topology.c ASoC: topology: fix memory leaks on sm, se and sbe 2019-06-28 15:08:49 +01:00
soc-utils.c ASoC: add soc-component.c 2019-08-05 16:16:19 +01:00