public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH][MM] rapidio: message interface updates
@ 2005-09-07 15:13 Matt Porter
  2005-09-15 15:05 ` Kumar Gala
  0 siblings, 1 reply; 5+ messages in thread
From: Matt Porter @ 2005-09-07 15:13 UTC (permalink / raw)
  To: akpm; +Cc: linux-kernel

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>

diff --git a/arch/ppc/syslib/ppc85xx_rio.c b/arch/ppc/syslib/ppc85xx_rio.c
--- a/arch/ppc/syslib/ppc85xx_rio.c
+++ b/arch/ppc/syslib/ppc85xx_rio.c
@@ -135,6 +135,7 @@ static struct rio_msg_tx_ring {
 	dma_addr_t phys_buffer[RIO_MAX_TX_RING_SIZE];
 	int tx_slot;
 	int size;
+	void *dev_id;
 } msg_tx_ring;
 
 static struct rio_msg_rx_ring {
@@ -143,6 +144,7 @@ static struct rio_msg_rx_ring {
 	void *virt_buffer[RIO_MAX_RX_RING_SIZE];
 	int rx_slot;
 	int size;
+	void *dev_id;
 } msg_rx_ring;
 
 /**
@@ -376,7 +378,7 @@ mpc85xx_rio_tx_handler(int irq, void *de
 	if (osr & RIO_MSG_OSR_EOMI) {
 		u32 dqp = in_be32((void *)&msg_regs->odqdpar);
 		int slot = (dqp - msg_tx_ring.phys) >> 5;
-		port->outb_msg[0].mcback(port, -1, slot);
+		port->outb_msg[0].mcback(port, msg_tx_ring.dev_id, -1, slot);
 
 		/* Ack the end-of-message interrupt */
 		out_be32((void *)&msg_regs->osr, RIO_MSG_OSR_EOMI);
@@ -389,6 +391,7 @@ mpc85xx_rio_tx_handler(int irq, void *de
 /**
  * rio_open_outb_mbox - Initialize MPC85xx outbound mailbox
  * @mport: Master port implementing the outbound message unit
+ * @dev_id: Device specific pointer to pass on event
  * @mbox: Mailbox to open
  * @entries: Number of entries in the outbound mailbox ring
  *
@@ -396,7 +399,7 @@ mpc85xx_rio_tx_handler(int irq, void *de
  * and enables the outbound message unit. Returns %0 on success and
  * %-EINVAL or %-ENOMEM on failure.
  */
-int rio_open_outb_mbox(struct rio_mport *mport, int mbox, int entries)
+int rio_open_outb_mbox(struct rio_mport *mport, void *dev_id, int mbox, int entries)
 {
 	int i, j, rc = 0;
 
@@ -407,6 +410,7 @@ int rio_open_outb_mbox(struct rio_mport 
 	}
 
 	/* Initialize shadow copy ring */
+	msg_tx_ring.dev_id = dev_id;
 	msg_tx_ring.size = entries;
 
 	for (i = 0; i < msg_tx_ring.size; i++) {
@@ -541,7 +545,7 @@ mpc85xx_rio_rx_handler(int irq, void *de
 		 * make the callback with an unknown/invalid mailbox number
 		 * argument.
 		 */
-		port->inb_msg[0].mcback(port, -1, -1);
+		port->inb_msg[0].mcback(port, msg_rx_ring.dev_id, -1, -1);
 
 		/* Ack the queueing interrupt */
 		out_be32((void *)&msg_regs->isr, RIO_MSG_ISR_DIQI);
@@ -554,6 +558,7 @@ mpc85xx_rio_rx_handler(int irq, void *de
 /**
  * rio_open_inb_mbox - Initialize MPC85xx inbound mailbox
  * @mport: Master port implementing the inbound message unit
+ * @dev_id: Device specific pointer to pass on event
  * @mbox: Mailbox to open
  * @entries: Number of entries in the inbound mailbox ring
  *
@@ -561,7 +566,7 @@ mpc85xx_rio_rx_handler(int irq, void *de
  * and enables the inbound message unit. Returns %0 on success
  * and %-EINVAL or %-ENOMEM on failure.
  */
-int rio_open_inb_mbox(struct rio_mport *mport, int mbox, int entries)
+int rio_open_inb_mbox(struct rio_mport *mport, void *dev_id, int mbox, int entries)
 {
 	int i, rc = 0;
 
@@ -572,6 +577,7 @@ int rio_open_inb_mbox(struct rio_mport *
 	}
 
 	/* Initialize client buffer ring */
+	msg_rx_ring.dev_id = dev_id;
 	msg_rx_ring.size = entries;
 	msg_rx_ring.rx_slot = 0;
 	for (i = 0; i < msg_rx_ring.size; i++)
@@ -777,7 +783,7 @@ mpc85xx_rio_dbell_handler(int irq, void 
 			}
 		}
 		if (found) {
-			dbell->dinb(port, DBELL_SID(dmsg), DBELL_TID(dmsg),
+			dbell->dinb(port, dbell->dev_id, DBELL_SID(dmsg), DBELL_TID(dmsg),
 				    DBELL_INF(dmsg));
 		} else {
 			pr_debug
diff --git a/drivers/rapidio/rio-sysfs.c b/drivers/rapidio/rio-sysfs.c
--- a/drivers/rapidio/rio-sysfs.c
+++ b/drivers/rapidio/rio-sysfs.c
@@ -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;
diff --git a/drivers/rapidio/rio.c b/drivers/rapidio/rio.c
--- a/drivers/rapidio/rio.c
+++ b/drivers/rapidio/rio.c
@@ -48,6 +48,7 @@ u16 rio_local_get_device_id(struct rio_m
 /**
  * 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_m
  * 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_mpor
 		/* 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_mpor
 /**
  * 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_mpor
  * 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_mpo
 		/* 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_mpo
 /**
  * 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_mpo
  * 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 *mp
 
 	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 *mp
 /**
  * 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 *mp
  * 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_mpo
 		}
 
 		/* 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;
 
diff --git a/include/linux/rio.h b/include/linux/rio.h
--- a/include/linux/rio.h
+++ b/include/linux/rio.h
@@ -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(struc
 				   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__ */
diff --git a/include/linux/rio_drv.h b/include/linux/rio_drv.h
--- a/include/linux/rio_drv.h
+++ b/include/linux/rio_drv.h
@@ -348,8 +348,8 @@ static inline void rio_init_dbell_res(st
 	.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(s
 	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(
 }
 
 /* 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 *);

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH][MM] rapidio: message interface updates
  2005-09-07 15:13 [PATCH][MM] rapidio: message interface updates Matt Porter
@ 2005-09-15 15:05 ` Kumar Gala
  2005-09-15 15:24   ` Matt Porter
  0 siblings, 1 reply; 5+ messages in thread
From: Kumar Gala @ 2005-09-15 15:05 UTC (permalink / raw)
  To: Matt Porter; +Cc: akpm, linux-kernel

Matt,

I'm guessing we are looking at a 2.6.15 timeframe now for getting the  
RapidIO subsystem in?  Are there any other changes beyond what is  
setting in -mm that need to be done?

- kumar

On Sep 7, 2005, at 10:13 AM, Matt Porter wrote:

> 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>
>
> diff --git a/arch/ppc/syslib/ppc85xx_rio.c
> b/arch/ppc/syslib/ppc85xx_rio.c
> --- a/arch/ppc/syslib/ppc85xx_rio.c
> +++ b/arch/ppc/syslib/ppc85xx_rio.c
> @@ -135,6 +135,7 @@ static struct rio_msg_tx_ring {
>      dma_addr_t phys_buffer[RIO_MAX_TX_RING_SIZE];
>      int tx_slot;
>      int size;
> +    void *dev_id;
>  } msg_tx_ring;
>
>  static struct rio_msg_rx_ring {
> @@ -143,6 +144,7 @@ static struct rio_msg_rx_ring {
>      void *virt_buffer[RIO_MAX_RX_RING_SIZE];
>      int rx_slot;
>      int size;
> +    void *dev_id;
>  } msg_rx_ring;
>
>  /**
> @@ -376,7 +378,7 @@ mpc85xx_rio_tx_handler(int irq, void *de
>      if (osr & RIO_MSG_OSR_EOMI) {
>          u32 dqp = in_be32((void *)&msg_regs->odqdpar);
>          int slot = (dqp - msg_tx_ring.phys) >> 5;
> -        port->outb_msg[0].mcback(port, -1, slot);
> +        port->outb_msg[0].mcback(port, msg_tx_ring.dev_id, -1,
> slot);
>
>          /* Ack the end-of-message interrupt */
>          out_be32((void *)&msg_regs->osr, RIO_MSG_OSR_EOMI);
> @@ -389,6 +391,7 @@ mpc85xx_rio_tx_handler(int irq, void *de
>  /**
>   * rio_open_outb_mbox - Initialize MPC85xx outbound mailbox
>   * @mport: Master port implementing the outbound message unit
> + * @dev_id: Device specific pointer to pass on event
>   * @mbox: Mailbox to open
>   * @entries: Number of entries in the outbound mailbox ring
>   *
> @@ -396,7 +399,7 @@ mpc85xx_rio_tx_handler(int irq, void *de
>   * and enables the outbound message unit. Returns %0 on success and
>   * %-EINVAL or %-ENOMEM on failure.
>   */
> -int rio_open_outb_mbox(struct rio_mport *mport, int mbox, int  
> entries)
> +int rio_open_outb_mbox(struct rio_mport *mport, void *dev_id, int  
> mbox,
> int entries)
>  {
>      int i, j, rc = 0;
>
> @@ -407,6 +410,7 @@ int rio_open_outb_mbox(struct rio_mport
>      }
>
>      /* Initialize shadow copy ring */
> +    msg_tx_ring.dev_id = dev_id;
>      msg_tx_ring.size = entries;
>
>      for (i = 0; i < msg_tx_ring.size; i++) {
> @@ -541,7 +545,7 @@ mpc85xx_rio_rx_handler(int irq, void *de
>           * make the callback with an unknown/invalid mailbox
> number
>           * argument.
>           */
> -        port->inb_msg[0].mcback(port, -1, -1);
> +        port->inb_msg[0].mcback(port, msg_rx_ring.dev_id, -1,
> -1);
>
>          /* Ack the queueing interrupt */
>          out_be32((void *)&msg_regs->isr, RIO_MSG_ISR_DIQI);
> @@ -554,6 +558,7 @@ mpc85xx_rio_rx_handler(int irq, void *de
>  /**
>   * rio_open_inb_mbox - Initialize MPC85xx inbound mailbox
>   * @mport: Master port implementing the inbound message unit
> + * @dev_id: Device specific pointer to pass on event
>   * @mbox: Mailbox to open
>   * @entries: Number of entries in the inbound mailbox ring
>   *
> @@ -561,7 +566,7 @@ mpc85xx_rio_rx_handler(int irq, void *de
>   * and enables the inbound message unit. Returns %0 on success
>   * and %-EINVAL or %-ENOMEM on failure.
>   */
> -int rio_open_inb_mbox(struct rio_mport *mport, int mbox, int entries)
> +int rio_open_inb_mbox(struct rio_mport *mport, void *dev_id, int  
> mbox,
> int entries)
>  {
>      int i, rc = 0;
>
> @@ -572,6 +577,7 @@ int rio_open_inb_mbox(struct rio_mport *
>      }
>
>      /* Initialize client buffer ring */
> +    msg_rx_ring.dev_id = dev_id;
>      msg_rx_ring.size = entries;
>      msg_rx_ring.rx_slot = 0;
>      for (i = 0; i < msg_rx_ring.size; i++)
> @@ -777,7 +783,7 @@ mpc85xx_rio_dbell_handler(int irq, void
>              }
>          }
>          if (found) {
> -            dbell->dinb(port, DBELL_SID(dmsg),
> DBELL_TID(dmsg),
> +            dbell->dinb(port, dbell->dev_id,
> DBELL_SID(dmsg), DBELL_TID(dmsg),
>                      DBELL_INF(dmsg));
>          } else {
>              pr_debug
> diff --git a/drivers/rapidio/rio-sysfs.c b/drivers/rapidio/rio-sysfs.c
> --- a/drivers/rapidio/rio-sysfs.c
> +++ b/drivers/rapidio/rio-sysfs.c
> @@ -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;
> diff --git a/drivers/rapidio/rio.c b/drivers/rapidio/rio.c
> --- a/drivers/rapidio/rio.c
> +++ b/drivers/rapidio/rio.c
> @@ -48,6 +48,7 @@ u16 rio_local_get_device_id(struct rio_m
>  /**
>   * 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_m
>   * 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_mpor
>          /* 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_mpor
>  /**
>   * 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_mpor
>   * 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_mpo
>          /* 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_mpo
>  /**
>   * 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_mpo
>   * 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 *mp
>
>      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 *mp
>  /**
>   * 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 *mp
>   * 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_mpo
>          }
>
>          /* 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;
>
> diff --git a/include/linux/rio.h b/include/linux/rio.h
> --- a/include/linux/rio.h
> +++ b/include/linux/rio.h
> @@ -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(struc
>                     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__ */
> diff --git a/include/linux/rio_drv.h b/include/linux/rio_drv.h
> --- a/include/linux/rio_drv.h
> +++ b/include/linux/rio_drv.h
> @@ -348,8 +348,8 @@ static inline void rio_init_dbell_res(st
>      .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(s
>      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(
>  }
>
>  /* 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 *);
> -
> To unsubscribe from this list: send the line "unsubscribe linux- 
> kernel"
> in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH][MM] rapidio: message interface updates
  2005-09-15 15:05 ` Kumar Gala
@ 2005-09-15 15:24   ` Matt Porter
  2005-09-15 19:23     ` Andrew Morton
  0 siblings, 1 reply; 5+ messages in thread
From: Matt Porter @ 2005-09-15 15:24 UTC (permalink / raw)
  To: Kumar Gala; +Cc: Matt Porter, akpm, linux-kernel

On Thu, Sep 15, 2005 at 10:05:43AM -0500, Kumar Gala wrote:
> I'm guessing we are looking at a 2.6.15 timeframe now for getting the  
> RapidIO subsystem in?  Are there any other changes beyond what is  
> setting in -mm that need to be done?

Well, at least 2.6.15, 2.6.14 cutoff has passed. We are waiting on
a review of of the rionet updates I reposted a week ago. I've held
off on going too far with MMIO and 8548 support since the last rionet
changes required changes to the messaging support.

-Matt

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH][MM] rapidio: message interface updates
  2005-09-15 15:24   ` Matt Porter
@ 2005-09-15 19:23     ` Andrew Morton
  2005-09-15 21:48       ` Matt Porter
  0 siblings, 1 reply; 5+ messages in thread
From: Andrew Morton @ 2005-09-15 19:23 UTC (permalink / raw)
  To: Matt Porter; +Cc: kumar.gala, mporter, linux-kernel

Matt Porter <mporter@kernel.crashing.org> wrote:
>
> On Thu, Sep 15, 2005 at 10:05:43AM -0500, Kumar Gala wrote:
> > I'm guessing we are looking at a 2.6.15 timeframe now for getting the  
> > RapidIO subsystem in?  Are there any other changes beyond what is  
> > setting in -mm that need to be done?
> 
> Well, at least 2.6.15, 2.6.14 cutoff has passed.

Merging rapidio has negligible chance of breaking any existing kernel code,
but I suppose that to be good little kernel citizens we should await 2.6.15
if that's OK.

> We are waiting on
> a review of of the rionet updates I reposted a week ago. I've held
> off on going too far with MMIO and 8548 support since the last rionet
> changes required changes to the messaging support.

Jeff added the rionet driver to his tree and I dropped it from -mm, so
we're ready to go on that front.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH][MM] rapidio: message interface updates
  2005-09-15 19:23     ` Andrew Morton
@ 2005-09-15 21:48       ` Matt Porter
  0 siblings, 0 replies; 5+ messages in thread
From: Matt Porter @ 2005-09-15 21:48 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Matt Porter, kumar.gala, linux-kernel

On Thu, Sep 15, 2005 at 12:23:01PM -0700, Andrew Morton wrote:
> Matt Porter <mporter@kernel.crashing.org> wrote:
> >
> > On Thu, Sep 15, 2005 at 10:05:43AM -0500, Kumar Gala wrote:
> > > I'm guessing we are looking at a 2.6.15 timeframe now for getting the  
> > > RapidIO subsystem in?  Are there any other changes beyond what is  
> > > setting in -mm that need to be done?
> > 
> > Well, at least 2.6.15, 2.6.14 cutoff has passed.
> 
> Merging rapidio has negligible chance of breaking any existing kernel code,
> but I suppose that to be good little kernel citizens we should await 2.6.15
> if that's OK.

That's fine with me.
 
> > We are waiting on
> > a review of of the rionet updates I reposted a week ago. I've held
> > off on going too far with MMIO and 8548 support since the last rionet
> > changes required changes to the messaging support.
> 
> Jeff added the rionet driver to his tree and I dropped it from -mm, so
> we're ready to go on that front.

Ok, I did see that. Guess that was an ack then. :)

-Matt

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-09-15 21:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-07 15:13 [PATCH][MM] rapidio: message interface updates Matt Porter
2005-09-15 15:05 ` Kumar Gala
2005-09-15 15:24   ` Matt Porter
2005-09-15 19:23     ` Andrew Morton
2005-09-15 21:48       ` Matt Porter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox