On 15.01.2018 05:21, Nicolin Chen wrote:
The _fsl_ssi_set_dai_fmt() is a helper function being called from fsl_ssi_set_dai_fmt() as an ASoC operation and fsl_ssi_hw_init() mainly for AC97 format initialization.
This patch cleans the _fsl_ssi_set_dai_fmt() in following ways:
- Removing *dev pointer in the parameters as it's included in the *ssi pointer of struct fsl_ssi.
- Using regmap_update_bits() instead of regmap_read() with masking the value manually.
- Removing TXBIT0 configurations since this bit is set to 1 as its reset value and there is no use case so far to unset it. And it is safe to remove since regmap_update_bits() won't touch it.
I didn't get any response to a comment I've written about the point above during the previous patch iteration:> The old code set this bit in any mode other than AC'97 (where the
hardware always treats this bit as set regardless of the actual value). I would play safe here and not rely on this bit being set by a SSI reset on all SSI models.
Maciej
- Moving baudclk check to the switch-case routine to skip the I2S master check. And moving SxCCR.DC settings after baudclk check.
- Adding format settings for SND_SOC_DAIFMT_AC97 like others.
Signed-off-by: Nicolin Chen nicoleotsuka@gmail.com Tested-by: Caleb Crome caleb@crome.org
Changelog v3
- Put CBM_CFS behind the baudclk check to keep the same program flow as before
sound/soc/fsl/fsl_ssi.c | 73 ++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 40 deletions(-)