[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:
Matt Porter 2005-11-07 01:00:20 -08:00 committed by Linus Torvalds
parent 2b0c28d7f8
commit 6978bbc097
5 changed files with 41 additions and 26 deletions

View file

@ -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__ */

View file

@ -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 *);