Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.14 67 lines 1.9 kB view raw
1/* 2 * omap-mbox.h: OMAP mailbox internal definitions 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 as 6 * published by the Free Software Foundation. 7 */ 8 9#ifndef OMAP_MBOX_H 10#define OMAP_MBOX_H 11 12#include <linux/device.h> 13#include <linux/interrupt.h> 14#include <linux/kfifo.h> 15#include <linux/spinlock.h> 16#include <linux/workqueue.h> 17#include <linux/omap-mailbox.h> 18 19typedef int __bitwise omap_mbox_type_t; 20#define OMAP_MBOX_TYPE1 ((__force omap_mbox_type_t) 1) 21#define OMAP_MBOX_TYPE2 ((__force omap_mbox_type_t) 2) 22 23struct omap_mbox_ops { 24 omap_mbox_type_t type; 25 int (*startup)(struct omap_mbox *mbox); 26 void (*shutdown)(struct omap_mbox *mbox); 27 /* fifo */ 28 mbox_msg_t (*fifo_read)(struct omap_mbox *mbox); 29 void (*fifo_write)(struct omap_mbox *mbox, mbox_msg_t msg); 30 int (*fifo_empty)(struct omap_mbox *mbox); 31 int (*fifo_full)(struct omap_mbox *mbox); 32 /* irq */ 33 void (*enable_irq)(struct omap_mbox *mbox, 34 omap_mbox_irq_t irq); 35 void (*disable_irq)(struct omap_mbox *mbox, 36 omap_mbox_irq_t irq); 37 void (*ack_irq)(struct omap_mbox *mbox, omap_mbox_irq_t irq); 38 int (*is_irq)(struct omap_mbox *mbox, omap_mbox_irq_t irq); 39 /* ctx */ 40 void (*save_ctx)(struct omap_mbox *mbox); 41 void (*restore_ctx)(struct omap_mbox *mbox); 42}; 43 44struct omap_mbox_queue { 45 spinlock_t lock; 46 struct kfifo fifo; 47 struct work_struct work; 48 struct tasklet_struct tasklet; 49 struct omap_mbox *mbox; 50 bool full; 51}; 52 53struct omap_mbox { 54 const char *name; 55 int irq; 56 struct omap_mbox_queue *txq, *rxq; 57 struct omap_mbox_ops *ops; 58 struct device *dev; 59 void *priv; 60 int use_count; 61 struct blocking_notifier_head notifier; 62}; 63 64int omap_mbox_register(struct device *parent, struct omap_mbox **); 65int omap_mbox_unregister(void); 66 67#endif /* OMAP_MBOX_H */