diff options
| author | Marek Szyprowski <m.szyprowski@samsung.com> | 2026-10-21 12:17:43 +0200 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-10-21 16:25:52 +0100 |
| commit | 693574504051a19383640cfb99524a6b69e4624f (patch) | |
| tree | 928131d85e8767d640760075627873f1777f142e /scripts/Makefile.thinlto | |
| parent | 872215109fc880de7a03fa30437346f9212649e8 (diff) | |
| download | linux-693574504051a19383640cfb99524a6b69e4624f.tar.gz linux-693574504051a19383640cfb99524a6b69e4624f.zip | |
ASoC: wm8994: don't lose the AIF clock ratio when staying at 32kHz SYSCLK
When SYSCLK drops below 50kHz, the AIFnCLK rate ratio is saved and
temporarily lowered to 128fs for accessory detection, then restored
once SYSCLK gets fast enough again. The ratio is however saved again
on each clock reconfiguration done while SYSCLK is still slow, which
overwrites the original ratio with the 128fs one.
This happens on the Exynos4412 Trats2 board, which set MCLK2 as SYSCLK
twice during the card probe and then configure FLL1 while still running
from MCLK2. Once SYSCLK is switched to FLL1, the 128fs ratio is
"restored", so AIF1 is left configured for 48kHz at 128fs while being
clocked at 256fs. If any digital path is powered up before a stream
reconfigures the AIF, the codec raises FIFO error interrupts every
10ms, flooding the kernel log:
wm8994-codec wm8994-codec: FIFO error
Save the original ratio only when entering the low SYSCLK mode. While
at it, move the code duplicated in _wm8994_set_fll() and
wm8994_set_dai_sysclk() to a common helper.
Fixes: 6730049a4763 ("ASoC: wm8994: Lower AIFnCLK divisor when dropping to 32kHz")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Link: https://patch.msgid.link/20261021101750.3297770-3-m.szyprowski@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
