ASoC: da7219: Update TDM usage to be more flexible
authorAdam Thomson <Adam.Thomson.Opensource@diasemi.com>
Thu, 14 Feb 2019 10:13:30 +0000 (10:13 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 14 Feb 2019 14:49:59 +0000 (14:49 +0000)
commit541ccdc113f000d51858ee7e135889e4096a3316
treeca89e1e5da86831586d8dfe45bb13487764b0fc6
parent9fd729542cf4aff3c70b8e5be6f510e6722bc369
ASoC: da7219: Update TDM usage to be more flexible

The previous implementatation was restrictive with regards to
BCLK rates for slave mode where the driver would not allow rates
the codec couldn't provide itself as clock master. The codec
is able to automatically determine and handle whatever rate is
provided so this restriction isn't necessary for slave mode. The
code was also flawed with regards to setting of the frame offset
as using rx_mask to explicitly set the offset has the knock on
effect of impacting the min and max channels for the codec, in
soc_pcm_hw_params() through the call to
soc_pcm_codec_params_fixup().

With this update, the driver now only limits frame size if codec
is clock master, and dynamically determines the BCLK offset
relating to WCLK using the tx_mask for slot offset along with the
slot width provided.

Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/da7219.c