mirror of
https://github.com/torvalds/linux.git
synced 2024-12-14 07:02:23 +00:00
7df8f9a201
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: |
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
sun4i-codec.c | ||
sun4i-i2s.c | ||
sun4i-spdif.c | ||
sun8i-adda-pr-regmap.c | ||
sun8i-adda-pr-regmap.h | ||
sun8i-codec-analog.c | ||
sun8i-codec.c | ||
sun50i-codec-analog.c |