|
@@ -437,8 +437,13 @@ static int fsl_sai_dai_probe(struct snd_soc_dai *cpu_dai)
|
|
|
{
|
|
|
struct fsl_sai *sai = dev_get_drvdata(cpu_dai->dev);
|
|
|
|
|
|
- regmap_update_bits(sai->regmap, FSL_SAI_TCSR, 0xffffffff, 0x0);
|
|
|
- regmap_update_bits(sai->regmap, FSL_SAI_RCSR, 0xffffffff, 0x0);
|
|
|
+ /* Software Reset for both Tx and Rx */
|
|
|
+ regmap_write(sai->regmap, FSL_SAI_TCSR, FSL_SAI_CSR_SR);
|
|
|
+ regmap_write(sai->regmap, FSL_SAI_RCSR, FSL_SAI_CSR_SR);
|
|
|
+ /* Clear SR bit to finish the reset */
|
|
|
+ regmap_write(sai->regmap, FSL_SAI_TCSR, 0);
|
|
|
+ regmap_write(sai->regmap, FSL_SAI_RCSR, 0);
|
|
|
+
|
|
|
regmap_update_bits(sai->regmap, FSL_SAI_TCR1, FSL_SAI_CR1_RFW_MASK,
|
|
|
FSL_SAI_MAXBURST_TX * 2);
|
|
|
regmap_update_bits(sai->regmap, FSL_SAI_RCR1, FSL_SAI_CR1_RFW_MASK,
|