ASoC: soc-utils: Add helper to calculate BCLK from TDM info
authorRichard Fitzgerald <rf@opensource.cirrus.com>
Tue, 5 Apr 2022 13:54:16 +0000 (14:54 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 5 Apr 2022 17:27:55 +0000 (18:27 +0100)
commit1ef34dd2b90d78a9830398441801658ef86eee9d
treed327accd528797d0f770ebc3924ec978182334ad
parentbc8cb02976cd602b8d7631a6f4a54a9cf305d38c
ASoC: soc-utils: Add helper to calculate BCLK from TDM info

Add a helper function snd_soc_tdm_params_to_bclk() to calculate
the bclk from params info and the tdm sots configuration.

When using a TDM frame of N slots of width W bits:

   bclk = sample_rate * N * W

As a convenience to simplify calling code, if the slot count or
slot width are 0 a value will be obtained from the params. This
allows calling code to use this one function to handle cases of
TDM where only one parameter is fixed, or I2S where the slot width
is fixed (for example to set a 32-bit slot for 24-bit samples).

Also as a convenience the slot count can optionally be rounded up
to a multiple. This is mainly useful for I2S systems, since I2S has
two phases of LRCLK the number of slots is always a multiple of 2.

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20220405135419.1230088-3-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc.h
sound/soc/soc-utils.c