[Sound-open-firmware] [PATCH 3/5] byt-ssp: fixes for DSP modes
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Mon Jun 18 21:27:32 CEST 2018
For some reason SSCR3 fixes prevent DSP_A and DSP_B from working:
DMAs don't start and an IPC error is eventually thrown.
Fall back to reset value (recommended in data sheet), this fix
lets DMA go on in DSP_a and DSP_B modes.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
---
src/drivers/byt-ssp.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/drivers/byt-ssp.c b/src/drivers/byt-ssp.c
index 0119f8d..caaf161 100644
--- a/src/drivers/byt-ssp.c
+++ b/src/drivers/byt-ssp.c
@@ -150,9 +150,16 @@ static inline int ssp_set_config(struct dai *dai,
* sscr3 dynamic settings are FRM_MS_EN, I2S_MODE_EN, I2S_FRM_POL,
* I2S_TX_EN, I2S_RX_EN, I2S_CLK_MST
*/
- sscr3 = SSCR3_I2S_TX_SS_FIX_EN | SSCR3_I2S_RX_SS_FIX_EN |
- SSCR3_STRETCH_TX | SSCR3_STRETCH_RX |
- SSCR3_SYN_FIX_EN;
+ sscr3 = SSCR3_SYN_FIX_EN;
+#ifdef ENABLE_SSRC3_FIXES
+ /*
+ * this seems to prevent DSP modes from working but is harmless for
+ * I2S and LEFT_J. Keep with ifdef in case it's ever needed.
+ */
+ sscr3 |= SSCR3_I2S_TX_SS_FIX_EN | SSCR3_I2S_RX_SS_FIX_EN |
+ SSCR3_STRETCH_TX | SSCR3_STRETCH_RX;
+#endif
+
#ifdef ENABLE_CLK_EDGE_SEL /* FIXME: is this needed ? */
sscr3 |= SSCR3_CLK_EDGE_SEL;
#endif
--
2.14.1
More information about the Sound-open-firmware
mailing list