|
@@ -900,14 +900,16 @@ static int _fsl_ssi_set_dai_fmt(struct device *dev,
|
|
|
scr &= ~CCSR_SSI_SCR_SYS_CLK_EN;
|
|
|
break;
|
|
|
default:
|
|
|
- return -EINVAL;
|
|
|
+ if (!fsl_ssi_is_ac97(ssi_private))
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
|
|
|
stcr |= strcr;
|
|
|
srcr |= strcr;
|
|
|
|
|
|
- if (ssi_private->cpu_dai_drv.symmetric_rates) {
|
|
|
- /* Need to clear RXDIR when using SYNC mode */
|
|
|
+ if (ssi_private->cpu_dai_drv.symmetric_rates
|
|
|
+ || fsl_ssi_is_ac97(ssi_private)) {
|
|
|
+ /* Need to clear RXDIR when using SYNC or AC97 mode */
|
|
|
srcr &= ~CCSR_SSI_SRCR_RXDIR;
|
|
|
scr |= CCSR_SSI_SCR_SYN;
|
|
|
}
|