Loading arch/arm/plat-omap/include/plat/mailbox.h +12 −0 Original line number Original line Diff line number Diff line Loading @@ -92,4 +92,16 @@ static inline void omap_mbox_restore_ctx(struct omap_mbox *mbox) mbox->ops->restore_ctx(mbox); mbox->ops->restore_ctx(mbox); } } static inline void omap_mbox_enable_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) { mbox->ops->enable_irq(mbox, irq); } static inline void omap_mbox_disable_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) { mbox->ops->disable_irq(mbox, irq); } #endif /* MAILBOX_H */ #endif /* MAILBOX_H */ arch/arm/plat-omap/mailbox.c +2 −10 Original line number Original line Diff line number Diff line Loading @@ -50,14 +50,6 @@ static inline int mbox_fifo_full(struct omap_mbox *mbox) } } /* Mailbox IRQ handle functions */ /* Mailbox IRQ handle functions */ static inline void enable_mbox_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) { mbox->ops->enable_irq(mbox, irq); } static inline void disable_mbox_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) { mbox->ops->disable_irq(mbox, irq); } static inline void ack_mbox_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) static inline void ack_mbox_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) { { if (mbox->ops->ack_irq) if (mbox->ops->ack_irq) Loading Loading @@ -144,7 +136,7 @@ static void mbox_tx_work(struct work_struct *work) ret = __mbox_msg_send(mbox, tx_data->msg); ret = __mbox_msg_send(mbox, tx_data->msg); if (ret) { if (ret) { enable_mbox_irq(mbox, IRQ_TX); omap_mbox_enable_irq(mbox, IRQ_TX); spin_lock(q->queue_lock); spin_lock(q->queue_lock); blk_requeue_request(q, rq); blk_requeue_request(q, rq); spin_unlock(q->queue_lock); spin_unlock(q->queue_lock); Loading Loading @@ -196,7 +188,7 @@ static void mbox_rxq_fn(struct request_queue *q) static void __mbox_tx_interrupt(struct omap_mbox *mbox) static void __mbox_tx_interrupt(struct omap_mbox *mbox) { { disable_mbox_irq(mbox, IRQ_TX); omap_mbox_disable_irq(mbox, IRQ_TX); ack_mbox_irq(mbox, IRQ_TX); ack_mbox_irq(mbox, IRQ_TX); schedule_work(&mbox->txq->work); schedule_work(&mbox->txq->work); } } Loading Loading
arch/arm/plat-omap/include/plat/mailbox.h +12 −0 Original line number Original line Diff line number Diff line Loading @@ -92,4 +92,16 @@ static inline void omap_mbox_restore_ctx(struct omap_mbox *mbox) mbox->ops->restore_ctx(mbox); mbox->ops->restore_ctx(mbox); } } static inline void omap_mbox_enable_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) { mbox->ops->enable_irq(mbox, irq); } static inline void omap_mbox_disable_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) { mbox->ops->disable_irq(mbox, irq); } #endif /* MAILBOX_H */ #endif /* MAILBOX_H */
arch/arm/plat-omap/mailbox.c +2 −10 Original line number Original line Diff line number Diff line Loading @@ -50,14 +50,6 @@ static inline int mbox_fifo_full(struct omap_mbox *mbox) } } /* Mailbox IRQ handle functions */ /* Mailbox IRQ handle functions */ static inline void enable_mbox_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) { mbox->ops->enable_irq(mbox, irq); } static inline void disable_mbox_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) { mbox->ops->disable_irq(mbox, irq); } static inline void ack_mbox_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) static inline void ack_mbox_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq) { { if (mbox->ops->ack_irq) if (mbox->ops->ack_irq) Loading Loading @@ -144,7 +136,7 @@ static void mbox_tx_work(struct work_struct *work) ret = __mbox_msg_send(mbox, tx_data->msg); ret = __mbox_msg_send(mbox, tx_data->msg); if (ret) { if (ret) { enable_mbox_irq(mbox, IRQ_TX); omap_mbox_enable_irq(mbox, IRQ_TX); spin_lock(q->queue_lock); spin_lock(q->queue_lock); blk_requeue_request(q, rq); blk_requeue_request(q, rq); spin_unlock(q->queue_lock); spin_unlock(q->queue_lock); Loading Loading @@ -196,7 +188,7 @@ static void mbox_rxq_fn(struct request_queue *q) static void __mbox_tx_interrupt(struct omap_mbox *mbox) static void __mbox_tx_interrupt(struct omap_mbox *mbox) { { disable_mbox_irq(mbox, IRQ_TX); omap_mbox_disable_irq(mbox, IRQ_TX); ack_mbox_irq(mbox, IRQ_TX); ack_mbox_irq(mbox, IRQ_TX); schedule_work(&mbox->txq->work); schedule_work(&mbox->txq->work); } } Loading