Commit f9d06c24 authored by Jarkko Nikula's avatar Jarkko Nikula Committed by Tony Lindgren

ARM: OMAP: Fixes to omap_mcbsp_request function

Bootloader may let McBSP logic running so make sure that block is idle
before requesting IRQs. Also make sure that TX and RX waitqueues are
initialized before request_irq.
Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@nokia.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 6496804d
...@@ -234,8 +234,16 @@ int omap_mcbsp_request(unsigned int id) ...@@ -234,8 +234,16 @@ int omap_mcbsp_request(unsigned int id)
mcbsp->free = 0; mcbsp->free = 0;
spin_unlock(&mcbsp->lock); spin_unlock(&mcbsp->lock);
/*
* Make sure that transmitter, receiver and sample-rate generator are
* not running before activating IRQs.
*/
OMAP_MCBSP_WRITE(mcbsp->io_base, SPCR1, 0);
OMAP_MCBSP_WRITE(mcbsp->io_base, SPCR2, 0);
if (mcbsp->io_type == OMAP_MCBSP_IRQ_IO) { if (mcbsp->io_type == OMAP_MCBSP_IRQ_IO) {
/* We need to get IRQs here */ /* We need to get IRQs here */
init_completion(&mcbsp->tx_irq_completion);
err = request_irq(mcbsp->tx_irq, omap_mcbsp_tx_irq_handler, err = request_irq(mcbsp->tx_irq, omap_mcbsp_tx_irq_handler,
0, "McBSP", (void *)mcbsp); 0, "McBSP", (void *)mcbsp);
if (err != 0) { if (err != 0) {
...@@ -245,8 +253,7 @@ int omap_mcbsp_request(unsigned int id) ...@@ -245,8 +253,7 @@ int omap_mcbsp_request(unsigned int id)
return err; return err;
} }
init_completion(&mcbsp->tx_irq_completion); init_completion(&mcbsp->rx_irq_completion);
err = request_irq(mcbsp->rx_irq, omap_mcbsp_rx_irq_handler, err = request_irq(mcbsp->rx_irq, omap_mcbsp_rx_irq_handler,
0, "McBSP", (void *)mcbsp); 0, "McBSP", (void *)mcbsp);
if (err != 0) { if (err != 0) {
...@@ -256,8 +263,6 @@ int omap_mcbsp_request(unsigned int id) ...@@ -256,8 +263,6 @@ int omap_mcbsp_request(unsigned int id)
free_irq(mcbsp->tx_irq, (void *)mcbsp); free_irq(mcbsp->tx_irq, (void *)mcbsp);
return err; return err;
} }
init_completion(&mcbsp->rx_irq_completion);
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment