📄 mailbox.h
字号:
/* * Mailbox internal functions * * Copyright (C) 2006 Nokia Corporation * Written by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com> * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. */#ifndef __ARCH_ARM_PLAT_MAILBOX_H#define __ARCH_ARM_PLAT_MAILBOX_H/* * Mailbox sequence bit API */#if defined(CONFIG_ARCH_OMAP1)# define MBOX_USE_SEQ_BIT#elif defined(CONFIG_ARCH_OMAP2)# define MBOX_USE_SEQ_BIT#endif#ifdef MBOX_USE_SEQ_BIT/* seq_rcv should be initialized with any value other than * 0 and 1 << 31, to allow either value for the first * message. */static inline void mbox_seq_init(struct omap_mbox *mbox){ /* any value other than 0 and 1 << 31 */ mbox->seq_rcv = 0xffffffff;}static inline void mbox_seq_toggle(struct omap_mbox *mbox, mbox_msg_t * msg){ /* add seq_snd to msg */ *msg = (*msg & 0x7fffffff) | mbox->seq_snd; /* flip seq_snd */ mbox->seq_snd ^= 1 << 31;}static inline int mbox_seq_test(struct omap_mbox *mbox, mbox_msg_t msg){ mbox_msg_t seq = msg & (1 << 31); if (seq == mbox->seq_rcv) return -1; mbox->seq_rcv = seq; return 0;}#elsestatic inline void mbox_seq_init(struct omap_mbox *mbox){}static inline void mbox_seq_toggle(struct omap_mbox *mbox, mbox_msg_t * msg){}static inline int mbox_seq_test(struct omap_mbox *mbox, mbox_msg_t msg){ return 0;}#endif/* Mailbox FIFO handle functions */static inline mbox_msg_t mbox_fifo_read(struct omap_mbox *mbox){ return mbox->ops->fifo_read(mbox);}static inline void mbox_fifo_write(struct omap_mbox *mbox, mbox_msg_t msg){ mbox->ops->fifo_write(mbox, msg);}static inline int mbox_fifo_empty(struct omap_mbox *mbox){ return mbox->ops->fifo_empty(mbox);}static inline int mbox_fifo_full(struct omap_mbox *mbox){ return mbox->ops->fifo_full(mbox);}/* 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){ if (mbox->ops->ack_irq) mbox->ops->ack_irq(mbox, irq);}static inline int is_mbox_irq(struct omap_mbox *mbox, omap_mbox_irq_t irq){ return mbox->ops->is_irq(mbox, irq);}#endif /* __ARCH_ARM_PLAT_MAILBOX_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -