[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:
committed by
Linus Torvalds
parent
2b0c28d7f8
commit
6978bbc097
@@ -21,7 +21,7 @@
|
||||
/* Sysfs support */
|
||||
#define rio_config_attr(field, format_string) \
|
||||
static ssize_t \
|
||||
field##_show(struct device *dev, char *buf) \
|
||||
field##_show(struct device *dev, struct device_attribute *attr, char *buf) \
|
||||
{ \
|
||||
struct rio_dev *rdev = to_rio_dev(dev); \
|
||||
\
|
||||
@@ -35,7 +35,7 @@ rio_config_attr(asm_did, "0x%04x\n");
|
||||
rio_config_attr(asm_vid, "0x%04x\n");
|
||||
rio_config_attr(asm_rev, "0x%04x\n");
|
||||
|
||||
static ssize_t routes_show(struct device *dev, char *buf)
|
||||
static ssize_t routes_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct rio_dev *rdev = to_rio_dev(dev);
|
||||
char *str = buf;
|
||||
|
@@ -48,6 +48,7 @@ u16 rio_local_get_device_id(struct rio_mport *port)
|
||||
/**
|
||||
* rio_request_inb_mbox - request inbound mailbox service
|
||||
* @mport: RIO master port from which to allocate the mailbox resource
|
||||
* @dev_id: Device specific pointer to pass on event
|
||||
* @mbox: Mailbox number to claim
|
||||
* @entries: Number of entries in inbound mailbox queue
|
||||
* @minb: Callback to execute when inbound message is received
|
||||
@@ -56,9 +57,10 @@ u16 rio_local_get_device_id(struct rio_mport *port)
|
||||
* a callback function to the resource. Returns %0 on success.
|
||||
*/
|
||||
int rio_request_inb_mbox(struct rio_mport *mport,
|
||||
void *dev_id,
|
||||
int mbox,
|
||||
int entries,
|
||||
void (*minb) (struct rio_mport * mport, int mbox,
|
||||
void (*minb) (struct rio_mport * mport, void *dev_id, int mbox,
|
||||
int slot))
|
||||
{
|
||||
int rc = 0;
|
||||
@@ -81,7 +83,7 @@ int rio_request_inb_mbox(struct rio_mport *mport,
|
||||
/* Hook the inbound message callback */
|
||||
mport->inb_msg[mbox].mcback = minb;
|
||||
|
||||
rc = rio_open_inb_mbox(mport, mbox, entries);
|
||||
rc = rio_open_inb_mbox(mport, dev_id, mbox, entries);
|
||||
} else
|
||||
rc = -ENOMEM;
|
||||
|
||||
@@ -108,6 +110,7 @@ int rio_release_inb_mbox(struct rio_mport *mport, int mbox)
|
||||
/**
|
||||
* rio_request_outb_mbox - request outbound mailbox service
|
||||
* @mport: RIO master port from which to allocate the mailbox resource
|
||||
* @dev_id: Device specific pointer to pass on event
|
||||
* @mbox: Mailbox number to claim
|
||||
* @entries: Number of entries in outbound mailbox queue
|
||||
* @moutb: Callback to execute when outbound message is sent
|
||||
@@ -116,10 +119,10 @@ int rio_release_inb_mbox(struct rio_mport *mport, int mbox)
|
||||
* a callback function to the resource. Returns 0 on success.
|
||||
*/
|
||||
int rio_request_outb_mbox(struct rio_mport *mport,
|
||||
void *dev_id,
|
||||
int mbox,
|
||||
int entries,
|
||||
void (*moutb) (struct rio_mport * mport, int mbox,
|
||||
int slot))
|
||||
void (*moutb) (struct rio_mport * mport, void *dev_id, int mbox, int slot))
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
@@ -141,7 +144,7 @@ int rio_request_outb_mbox(struct rio_mport *mport,
|
||||
/* Hook the inbound message callback */
|
||||
mport->outb_msg[mbox].mcback = moutb;
|
||||
|
||||
rc = rio_open_outb_mbox(mport, mbox, entries);
|
||||
rc = rio_open_outb_mbox(mport, dev_id, mbox, entries);
|
||||
} else
|
||||
rc = -ENOMEM;
|
||||
|
||||
@@ -168,6 +171,7 @@ int rio_release_outb_mbox(struct rio_mport *mport, int mbox)
|
||||
/**
|
||||
* rio_setup_inb_dbell - bind inbound doorbell callback
|
||||
* @mport: RIO master port to bind the doorbell callback
|
||||
* @dev_id: Device specific pointer to pass on event
|
||||
* @res: Doorbell message resource
|
||||
* @dinb: Callback to execute when doorbell is received
|
||||
*
|
||||
@@ -176,8 +180,8 @@ int rio_release_outb_mbox(struct rio_mport *mport, int mbox)
|
||||
* satisfied.
|
||||
*/
|
||||
static int
|
||||
rio_setup_inb_dbell(struct rio_mport *mport, struct resource *res,
|
||||
void (*dinb) (struct rio_mport * mport, u16 src, u16 dst,
|
||||
rio_setup_inb_dbell(struct rio_mport *mport, void *dev_id, struct resource *res,
|
||||
void (*dinb) (struct rio_mport * mport, void *dev_id, u16 src, u16 dst,
|
||||
u16 info))
|
||||
{
|
||||
int rc = 0;
|
||||
@@ -190,6 +194,7 @@ rio_setup_inb_dbell(struct rio_mport *mport, struct resource *res,
|
||||
|
||||
dbell->res = res;
|
||||
dbell->dinb = dinb;
|
||||
dbell->dev_id = dev_id;
|
||||
|
||||
list_add_tail(&dbell->node, &mport->dbells);
|
||||
|
||||
@@ -200,6 +205,7 @@ rio_setup_inb_dbell(struct rio_mport *mport, struct resource *res,
|
||||
/**
|
||||
* rio_request_inb_dbell - request inbound doorbell message service
|
||||
* @mport: RIO master port from which to allocate the doorbell resource
|
||||
* @dev_id: Device specific pointer to pass on event
|
||||
* @start: Doorbell info range start
|
||||
* @end: Doorbell info range end
|
||||
* @dinb: Callback to execute when doorbell is received
|
||||
@@ -209,9 +215,10 @@ rio_setup_inb_dbell(struct rio_mport *mport, struct resource *res,
|
||||
* has been satisfied.
|
||||
*/
|
||||
int rio_request_inb_dbell(struct rio_mport *mport,
|
||||
void *dev_id,
|
||||
u16 start,
|
||||
u16 end,
|
||||
void (*dinb) (struct rio_mport * mport, u16 src,
|
||||
void (*dinb) (struct rio_mport * mport, void *dev_id, u16 src,
|
||||
u16 dst, u16 info))
|
||||
{
|
||||
int rc = 0;
|
||||
@@ -230,7 +237,7 @@ int rio_request_inb_dbell(struct rio_mport *mport,
|
||||
}
|
||||
|
||||
/* Hook the doorbell callback */
|
||||
rc = rio_setup_inb_dbell(mport, res, dinb);
|
||||
rc = rio_setup_inb_dbell(mport, dev_id, res, dinb);
|
||||
} else
|
||||
rc = -ENOMEM;
|
||||
|
||||
|
Reference in New Issue
Block a user