Commit 04a07a34 authored by Andrew Davis's avatar Andrew Davis Committed by Jassi Brar

mailbox: omap: Reverse FIFO busy check logic

It is much more clear to check if the hardware FIFO is full and return
EBUSY if true. This allows us to also remove one level of indention
from the core of this function. It also makes the similarities between
omap_mbox_chan_send_noirq() and omap_mbox_chan_send() more obvious.
Signed-off-by: default avatarAndrew Davis <afd@ti.com>
Signed-off-by: default avatarJassi Brar <jassisinghbrar@gmail.com>
parent 5aa00b68
...@@ -375,34 +375,33 @@ static void omap_mbox_chan_shutdown(struct mbox_chan *chan) ...@@ -375,34 +375,33 @@ static void omap_mbox_chan_shutdown(struct mbox_chan *chan)
static int omap_mbox_chan_send_noirq(struct omap_mbox *mbox, u32 msg) static int omap_mbox_chan_send_noirq(struct omap_mbox *mbox, u32 msg)
{ {
int ret = -EBUSY; if (mbox_fifo_full(mbox))
return -EBUSY;
if (!mbox_fifo_full(mbox)) { omap_mbox_enable_irq(mbox, IRQ_RX);
omap_mbox_enable_irq(mbox, IRQ_RX); mbox_fifo_write(mbox, msg);
mbox_fifo_write(mbox, msg); omap_mbox_disable_irq(mbox, IRQ_RX);
ret = 0;
omap_mbox_disable_irq(mbox, IRQ_RX);
/* we must read and ack the interrupt directly from here */ /* we must read and ack the interrupt directly from here */
mbox_fifo_read(mbox); mbox_fifo_read(mbox);
ack_mbox_irq(mbox, IRQ_RX); ack_mbox_irq(mbox, IRQ_RX);
}
return ret; return 0;
} }
static int omap_mbox_chan_send(struct omap_mbox *mbox, u32 msg) static int omap_mbox_chan_send(struct omap_mbox *mbox, u32 msg)
{ {
int ret = -EBUSY; if (mbox_fifo_full(mbox)) {
/* always enable the interrupt */
if (!mbox_fifo_full(mbox)) { omap_mbox_enable_irq(mbox, IRQ_TX);
mbox_fifo_write(mbox, msg); return -EBUSY;
ret = 0;
} }
mbox_fifo_write(mbox, msg);
/* always enable the interrupt */ /* always enable the interrupt */
omap_mbox_enable_irq(mbox, IRQ_TX); omap_mbox_enable_irq(mbox, IRQ_TX);
return ret; return 0;
} }
static int omap_mbox_chan_send_data(struct mbox_chan *chan, void *data) static int omap_mbox_chan_send_data(struct mbox_chan *chan, void *data)
......
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