[PATCH] rapidio: message interface updates
Updates the RIO messaging interface to pass a device instance into the event registeration and callbacks. Signed-off-by: Matt Porter <mporter@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
2b0c28d7f8
commit
6978bbc097
5 changed files with 41 additions and 26 deletions
|
@ -132,7 +132,7 @@ struct rio_dev {
|
|||
*/
|
||||
struct rio_msg {
|
||||
struct resource *res;
|
||||
void (*mcback) (struct rio_mport * mport, int mbox, int slot);
|
||||
void (*mcback) (struct rio_mport * mport, void *dev_id, int mbox, int slot);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -140,11 +140,13 @@ struct rio_msg {
|
|||
* @node: Node in list of doorbell events
|
||||
* @res: Doorbell resource
|
||||
* @dinb: Doorbell event callback
|
||||
* @dev_id: Device specific pointer to pass on event
|
||||
*/
|
||||
struct rio_dbell {
|
||||
struct list_head node;
|
||||
struct resource *res;
|
||||
void (*dinb) (struct rio_mport * mport, u16 src, u16 dst, u16 info);
|
||||
void (*dinb) (struct rio_mport *mport, void *dev_id, u16 src, u16 dst, u16 info);
|
||||
void *dev_id;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -314,9 +316,9 @@ extern int rio_hw_add_outb_message(struct rio_mport *, struct rio_dev *, int,
|
|||
void *, size_t);
|
||||
extern int rio_hw_add_inb_buffer(struct rio_mport *, int, void *);
|
||||
extern void *rio_hw_get_inb_message(struct rio_mport *, int);
|
||||
extern int rio_open_inb_mbox(struct rio_mport *, int, int);
|
||||
extern int rio_open_inb_mbox(struct rio_mport *, void *, int, int);
|
||||
extern void rio_close_inb_mbox(struct rio_mport *, int);
|
||||
extern int rio_open_outb_mbox(struct rio_mport *, int, int);
|
||||
extern int rio_open_outb_mbox(struct rio_mport *, void *, int, int);
|
||||
extern void rio_close_outb_mbox(struct rio_mport *, int);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
|
|
@ -348,8 +348,8 @@ static inline void rio_init_dbell_res(struct resource *res, u16 start, u16 end)
|
|||
.asm_did = RIO_ANY_ID, .asm_vid = RIO_ANY_ID
|
||||
|
||||
/* Mailbox management */
|
||||
extern int rio_request_outb_mbox(struct rio_mport *, int, int,
|
||||
void (*)(struct rio_mport *, int, int));
|
||||
extern int rio_request_outb_mbox(struct rio_mport *, void *, int, int,
|
||||
void (*)(struct rio_mport *, void *,int, int));
|
||||
extern int rio_release_outb_mbox(struct rio_mport *, int);
|
||||
|
||||
/**
|
||||
|
@ -370,8 +370,8 @@ static inline int rio_add_outb_message(struct rio_mport *mport,
|
|||
return rio_hw_add_outb_message(mport, rdev, mbox, buffer, len);
|
||||
}
|
||||
|
||||
extern int rio_request_inb_mbox(struct rio_mport *, int, int,
|
||||
void (*)(struct rio_mport *, int, int));
|
||||
extern int rio_request_inb_mbox(struct rio_mport *, void *, int, int,
|
||||
void (*)(struct rio_mport *, void *, int, int));
|
||||
extern int rio_release_inb_mbox(struct rio_mport *, int);
|
||||
|
||||
/**
|
||||
|
@ -403,8 +403,8 @@ static inline void *rio_get_inb_message(struct rio_mport *mport, int mbox)
|
|||
}
|
||||
|
||||
/* Doorbell management */
|
||||
extern int rio_request_inb_dbell(struct rio_mport *, u16, u16,
|
||||
void (*)(struct rio_mport *, u16, u16, u16));
|
||||
extern int rio_request_inb_dbell(struct rio_mport *, void *, u16, u16,
|
||||
void (*)(struct rio_mport *, void *, u16, u16, u16));
|
||||
extern int rio_release_inb_dbell(struct rio_mport *, u16, u16);
|
||||
extern struct resource *rio_request_outb_dbell(struct rio_dev *, u16, u16);
|
||||
extern int rio_release_outb_dbell(struct rio_dev *, struct resource *);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue