[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>
diff --git a/drivers/rapidio/rio.c b/drivers/rapidio/rio.c
index adc299e..3ca1011 100644
--- a/drivers/rapidio/rio.c
+++ b/drivers/rapidio/rio.c
@@ -48,6 +48,7 @@
 /**
  * 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 @@
  * 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 @@
 		/* 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 @@
 /**
  * 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 @@
  * 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 @@
 		/* 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 @@
 /**
  * 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 @@
  * 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 @@
 
 	dbell->res = res;
 	dbell->dinb = dinb;
+	dbell->dev_id = dev_id;
 
 	list_add_tail(&dbell->node, &mport->dbells);
 
@@ -200,6 +205,7 @@
 /**
  * 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 @@
  * 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 @@
 		}
 
 		/* 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;