]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
ASoC: fsl-asoc-card: exclude S20_3LE format for WM8960/WM8962 + SAI
authorShengjiu Wang <shengjiu.wang@nxp.com>
Wed, 29 Apr 2026 10:00:26 +0000 (18:00 +0800)
committerMark Brown <broonie@kernel.org>
Thu, 30 Apr 2026 12:07:58 +0000 (21:07 +0900)
commitfa7d8ea56c58f1de3f0db7f53d9aae27a9c64a60
tree7a9406766c118477e5154b128a472f1b5cf5622d
parente78abe395d30e8be8effc538e6983e27aa289602
ASoC: fsl-asoc-card: exclude S20_3LE format for WM8960/WM8962 + SAI

S20_3LE format cannot be used with WM8960/WM8962 codecs when paired
with SAI, due to two distinct BCLK generation limitations:

1. Codec Master Mode:
   When WM8960/WM8962 generates BCLK, it cannot produce the exact
   1.92 MHz required for S20_3LE at 48kHz stereo (48000 × 2 × 20).
   The codec uses fixed dividers from SYSCLK (12.288 MHz), and the
   required divider (6.4) is not available. The closest divider is 6,
   producing 2.048 MHz, which causes right channel corruption.

2. SAI Master Mode:
   SAI derive BCLK from MCLK using integer dividers only. S20_3LE
   requires non-integer divider ratios with standard MCLK frequencies.
   For example, 48kHz stereo needs 1.920 MHz BCLK, which requires a
   divider of 6.4 from 12.288 MHz MCLK (not an integer).

Exclude S20_3LE format for WM8960/WM8962 when used with SAI to prevent
these issues. Users should use S16_LE, S24_LE, or S32_LE instead.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260429100028.2739711-5-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/fsl/fsl-asoc-card.c