Greetings fellow ALSAers :)
Over the past month I have been working on a driver for the 8-channel TDM CS5368 audio codec. However I've run in to an interesting snag that seems to be an open problem. Let me explain.
The audio codec generally runs at 8 channels of 32-bit data, so: MCLK = BCLK = LRCK * 256
However it is possible to read 4 or 2 channels instead: MCLK = BCLK = LRCK * 128 MCLK = BCLK = LRCK * 64
This trade-off allows avoiding high frequency clocking at the expense of a reduced channel count.
From what I current see the way to indicate the multiplier here is using mclk-fs in the device tree, but this would mean effectively fixing the channel count in the device tree.
I have searched around found someone has suggested mapping mclk-fs to rates here: https://lore.kernel.org/all/CAEnQRZDpJu27_pB=-ZYQjsNPC8eA4-Ur-36niT2hCosMWtC...
This functionality is somewhat adjacent to it, but I was wondering if it would be better to somehow factor dai-tdm-slot-* in to mclk-fs calculation.
Perhaps mclk-fs could be divided by dai-tdm-slot-num then multiplied by slots?
Has anyone hit this problem before? How did you solve it?
John.