|
@@ -317,7 +317,15 @@ static inline void omap34xx_mcbsp_request(struct omap_mcbsp *mcbsp)
|
|
|
|
|
|
syscon = OMAP_MCBSP_READ(mcbsp->io_base, SYSCON);
|
|
|
syscon &= ~(ENAWAKEUP | SIDLEMODE(0x03) | CLOCKACTIVITY(0x03));
|
|
|
- syscon |= (ENAWAKEUP | SIDLEMODE(0x02) | CLOCKACTIVITY(0x02));
|
|
|
+
|
|
|
+ spin_lock_irq(&mcbsp->lock);
|
|
|
+ if (mcbsp->dma_op_mode == MCBSP_DMA_MODE_THRESHOLD)
|
|
|
+ syscon |= SIDLEMODE(0x02);
|
|
|
+ else
|
|
|
+ syscon |= SIDLEMODE(0x01);
|
|
|
+ spin_unlock_irq(&mcbsp->lock);
|
|
|
+
|
|
|
+ syscon |= (ENAWAKEUP | CLOCKACTIVITY(0x02));
|
|
|
OMAP_MCBSP_WRITE(mcbsp->io_base, SYSCON, syscon);
|
|
|
|
|
|
OMAP_MCBSP_WRITE(mcbsp->io_base, WAKEUPEN, XRDYEN | RRDYEN);
|