mirror of https://gitee.com/openkylin/linux.git
omap: McBSP: Do not use extensive spin locks for dma_op_mode
The use of the spin lock, which supposed to protect the the dma_op_mode causing "INFO: inconsistent lock state" on playback start. Remove the spin locks around the dma_op_mode, when it's purpuse is to protect the dma_op_mode. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com> Acked-by: Jarkko Nikula <jhnikula@gmail.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
a76e9a90e8
commit
eebfa9f239
|
@ -298,9 +298,7 @@ int omap_mcbsp_get_dma_op_mode(unsigned int id)
|
||||||
}
|
}
|
||||||
mcbsp = id_to_mcbsp_ptr(id);
|
mcbsp = id_to_mcbsp_ptr(id);
|
||||||
|
|
||||||
spin_lock_irq(&mcbsp->lock);
|
|
||||||
dma_op_mode = mcbsp->dma_op_mode;
|
dma_op_mode = mcbsp->dma_op_mode;
|
||||||
spin_unlock_irq(&mcbsp->lock);
|
|
||||||
|
|
||||||
return dma_op_mode;
|
return dma_op_mode;
|
||||||
}
|
}
|
||||||
|
@ -318,7 +316,6 @@ static inline void omap34xx_mcbsp_request(struct omap_mcbsp *mcbsp)
|
||||||
syscon = OMAP_MCBSP_READ(mcbsp->io_base, SYSCON);
|
syscon = OMAP_MCBSP_READ(mcbsp->io_base, SYSCON);
|
||||||
syscon &= ~(ENAWAKEUP | SIDLEMODE(0x03) | CLOCKACTIVITY(0x03));
|
syscon &= ~(ENAWAKEUP | SIDLEMODE(0x03) | CLOCKACTIVITY(0x03));
|
||||||
|
|
||||||
spin_lock_irq(&mcbsp->lock);
|
|
||||||
if (mcbsp->dma_op_mode == MCBSP_DMA_MODE_THRESHOLD) {
|
if (mcbsp->dma_op_mode == MCBSP_DMA_MODE_THRESHOLD) {
|
||||||
syscon |= (ENAWAKEUP | SIDLEMODE(0x02) |
|
syscon |= (ENAWAKEUP | SIDLEMODE(0x02) |
|
||||||
CLOCKACTIVITY(0x02));
|
CLOCKACTIVITY(0x02));
|
||||||
|
@ -327,7 +324,6 @@ static inline void omap34xx_mcbsp_request(struct omap_mcbsp *mcbsp)
|
||||||
} else {
|
} else {
|
||||||
syscon |= SIDLEMODE(0x01);
|
syscon |= SIDLEMODE(0x01);
|
||||||
}
|
}
|
||||||
spin_unlock_irq(&mcbsp->lock);
|
|
||||||
|
|
||||||
OMAP_MCBSP_WRITE(mcbsp->io_base, SYSCON, syscon);
|
OMAP_MCBSP_WRITE(mcbsp->io_base, SYSCON, syscon);
|
||||||
}
|
}
|
||||||
|
@ -1145,9 +1141,7 @@ static ssize_t dma_op_mode_show(struct device *dev,
|
||||||
ssize_t len = 0;
|
ssize_t len = 0;
|
||||||
const char * const *s;
|
const char * const *s;
|
||||||
|
|
||||||
spin_lock_irq(&mcbsp->lock);
|
|
||||||
dma_op_mode = mcbsp->dma_op_mode;
|
dma_op_mode = mcbsp->dma_op_mode;
|
||||||
spin_unlock_irq(&mcbsp->lock);
|
|
||||||
|
|
||||||
for (s = &dma_op_modes[i]; i < ARRAY_SIZE(dma_op_modes); s++, i++) {
|
for (s = &dma_op_modes[i]; i < ARRAY_SIZE(dma_op_modes); s++, i++) {
|
||||||
if (dma_op_mode == i)
|
if (dma_op_mode == i)
|
||||||
|
|
Loading…
Reference in New Issue