omap1_mbox_fifo_write(struct omap_mbox *mbox, mbox_msg_t msg)
{
struct omap_mbox1_fifo *fifo =
- &((struct omap_mbox1_priv *)mbox->priv)->rx_fifo;
+ &((struct omap_mbox1_priv *)mbox->priv)->tx_fifo;
mbox_write_reg(msg & 0xffff, fifo->data);
mbox_write_reg(msg >> 16, fifo->cmd);
}
struct omap_mbox_ops omap1_mbox_ops = {
+ .type = OMAP_MBOX_TYPE1,
.fifo_read = omap1_mbox_fifo_read,
.fifo_write = omap1_mbox_fifo_write,
.fifo_empty = omap1_mbox_fifo_empty,
struct omap_mbox *mbox = (struct omap_mbox *)p;
struct omap_mbq *mbq = mbox->mbq;
mbox_msg_t msg;
+ int was_full;
while (!mbq_empty(mbq)) {
+ was_full = mbq_full(mbq);
msg = mbq_get(mbq);
- enable_mbox_irq(mbox, IRQ_RX);
+ if (was_full) /* now we have a room in the mbq. */
+ enable_mbox_irq(mbox, IRQ_RX);
if (unlikely(mbox_seq_test(mbox, msg))) {
printk(KERN_ERR