[RFC PATCH 18/39] staging: comedi: usbduxfast: don't pass the private data directly

H Hartley Sweeten hsweeten at visionengravers.com
Wed May 1 22:24:25 UTC 2013


Instead of passing the private data to the internal functions, pass
the comedi_device pointer and get the private data from it.

Signed-off-by: H Hartley Sweeten <hsweeten at visionengravers.com>
Cc: Ian Abbott <abbotti at mev.co.uk>
Cc: Greg Kroah-Hartman <gregkh at linuxfonudation.org>
---
 drivers/staging/comedi/drivers/usbduxfast.c | 67 ++++++++++++++++-------------
 1 file changed, 38 insertions(+), 29 deletions(-)

diff --git a/drivers/staging/comedi/drivers/usbduxfast.c b/drivers/staging/comedi/drivers/usbduxfast.c
index f7c1d8f..61746cb 100644
--- a/drivers/staging/comedi/drivers/usbduxfast.c
+++ b/drivers/staging/comedi/drivers/usbduxfast.c
@@ -173,8 +173,9 @@ struct usbduxfast_private {
 #define SENDADCOMMANDS            0
 #define SENDINITEP6               1
 
-static int send_dux_commands(struct usbduxfast_private *devpriv, int cmd_type)
+static int send_dux_commands(struct comedi_device *dev, int cmd_type)
 {
+	struct usbduxfast_private *devpriv = dev->private;
 	int tmp, nsent;
 
 	devpriv->dux_commands[0] = cmd_type;
@@ -194,8 +195,9 @@ static int send_dux_commands(struct usbduxfast_private *devpriv, int cmd_type)
  * Stops the data acquision.
  * It should be safe to call this function from any context.
  */
-static int usbduxfastsub_unlink_InURBs(struct usbduxfast_private *devpriv)
+static int usbduxfastsub_unlink_InURBs(struct comedi_device *dev)
 {
+	struct usbduxfast_private *devpriv = dev->private;
 	int j = 0;
 	int err = 0;
 
@@ -213,9 +215,10 @@ static int usbduxfastsub_unlink_InURBs(struct usbduxfast_private *devpriv)
  * Is called from within this driver from both the
  * interrupt context and from comedi.
  */
-static int usbduxfast_ai_stop(struct usbduxfast_private *devpriv,
+static int usbduxfast_ai_stop(struct comedi_device *dev,
 			      int do_unlink)
 {
+	struct usbduxfast_private *devpriv = dev->private;
 	int ret = 0;
 
 	if (!devpriv) {
@@ -227,7 +230,7 @@ static int usbduxfast_ai_stop(struct usbduxfast_private *devpriv,
 
 	if (do_unlink)
 		/* stop aquistion */
-		ret = usbduxfastsub_unlink_InURBs(devpriv);
+		ret = usbduxfastsub_unlink_InURBs(dev);
 
 	return ret;
 }
@@ -249,7 +252,7 @@ static int usbduxfast_ai_cancel(struct comedi_device *dev,
 	}
 	down(&devpriv->sem);
 	/* unlink */
-	ret = usbduxfast_ai_stop(devpriv, 1);
+	ret = usbduxfast_ai_stop(dev, 1);
 	up(&devpriv->sem);
 
 	return ret;
@@ -295,7 +298,7 @@ static void usbduxfast_ai_interrupt(struct urb *urb)
 		async->events |= COMEDI_CB_ERROR;
 		comedi_event(dev, s);
 		/* stop the transfer w/o unlink */
-		usbduxfast_ai_stop(devpriv, 0);
+		usbduxfast_ai_stop(dev, 0);
 		return;
 
 	default:
@@ -304,7 +307,7 @@ static void usbduxfast_ai_interrupt(struct urb *urb)
 		async->events |= COMEDI_CB_EOA;
 		async->events |= COMEDI_CB_ERROR;
 		comedi_event(dev, s);
-		usbduxfast_ai_stop(devpriv, 0);
+		usbduxfast_ai_stop(dev, 0);
 		return;
 	}
 
@@ -321,7 +324,7 @@ static void usbduxfast_ai_interrupt(struct urb *urb)
 							  urb->transfer_buffer,
 							  devpriv->ai_sample_count
 							  * sizeof(uint16_t));
-				usbduxfast_ai_stop(devpriv, 0);
+				usbduxfast_ai_stop(dev, 0);
 				/* tell comedi that the acquistion is over */
 				async->events |= COMEDI_CB_EOA;
 				comedi_event(dev, s);
@@ -334,7 +337,7 @@ static void usbduxfast_ai_interrupt(struct urb *urb)
 						urb->actual_length);
 		if (unlikely(err == 0)) {
 			/* buffer overflow */
-			usbduxfast_ai_stop(devpriv, 0);
+			usbduxfast_ai_stop(dev, 0);
 			return;
 		}
 
@@ -358,14 +361,15 @@ static void usbduxfast_ai_interrupt(struct urb *urb)
 		async->events |= COMEDI_CB_EOA;
 		async->events |= COMEDI_CB_ERROR;
 		comedi_event(dev, s);
-		usbduxfast_ai_stop(devpriv, 0);
+		usbduxfast_ai_stop(dev, 0);
 	}
 }
 
-static int usbduxfastsub_start(struct usbduxfast_private *devpriv)
+static int usbduxfastsub_start(struct comedi_device *dev)
 {
-	int ret;
+	struct usbduxfast_private *devpriv = dev->private;
 	unsigned char *local_transfer_buffer;
+	int ret;
 
 	local_transfer_buffer = kmalloc(1, GFP_KERNEL);
 	if (!local_transfer_buffer)
@@ -391,10 +395,11 @@ static int usbduxfastsub_start(struct usbduxfast_private *devpriv)
 	return ret;
 }
 
-static int usbduxfastsub_stop(struct usbduxfast_private *devpriv)
+static int usbduxfastsub_stop(struct comedi_device *dev)
 {
-	int ret;
+	struct usbduxfast_private *devpriv = dev->private;
 	unsigned char *local_transfer_buffer;
+	int ret;
 
 	local_transfer_buffer = kmalloc(1, GFP_KERNEL);
 	if (!local_transfer_buffer)
@@ -418,10 +423,11 @@ static int usbduxfastsub_stop(struct usbduxfast_private *devpriv)
 	return ret;
 }
 
-static int usbduxfastsub_upload(struct usbduxfast_private *devpriv,
+static int usbduxfastsub_upload(struct comedi_device *dev,
 				unsigned char *local_transfer_buffer,
 				unsigned int startAddr, unsigned int len)
 {
+	struct usbduxfast_private *devpriv = dev->private;
 	int ret;
 
 	/* brequest, firmware */
@@ -442,8 +448,9 @@ static int usbduxfastsub_upload(struct usbduxfast_private *devpriv,
 	return 0;
 }
 
-static int usbduxfastsub_submit_InURBs(struct usbduxfast_private *devpriv)
+static int usbduxfastsub_submit_InURBs(struct comedi_device *dev)
 {
+	struct usbduxfast_private *devpriv = dev->private;
 	int ret;
 
 	if (!devpriv)
@@ -452,7 +459,7 @@ static int usbduxfastsub_submit_InURBs(struct usbduxfast_private *devpriv)
 	usb_fill_bulk_urb(devpriv->urbIn, devpriv->usb,
 			  usb_rcvbulkpipe(devpriv->usb, BULKINEP),
 			  devpriv->transfer_buffer, SIZEINBUF,
-			  usbduxfast_ai_interrupt, devpriv->comedidev);
+			  usbduxfast_ai_interrupt, dev);
 
 	ret = usb_submit_urb(devpriv->urbIn, GFP_ATOMIC);
 	if (ret) {
@@ -575,7 +582,7 @@ static int usbduxfast_ai_inttrig(struct comedi_device *dev,
 	}
 	if (!devpriv->ai_cmd_running) {
 		devpriv->ai_cmd_running = 1;
-		ret = usbduxfastsub_submit_InURBs(devpriv);
+		ret = usbduxfastsub_submit_InURBs(dev);
 		if (ret < 0) {
 			dev_err(dev->class_dev,
 				"%s: urbSubmit: err=%d\n", __func__, ret);
@@ -998,7 +1005,7 @@ static int usbduxfast_ai_cmd(struct comedi_device *dev,
 	}
 
 	/* 0 means that the AD commands are sent */
-	result = send_dux_commands(devpriv, SENDADCOMMANDS);
+	result = send_dux_commands(dev, SENDADCOMMANDS);
 	if (result < 0) {
 		dev_err(dev->class_dev,
 			"adc command could not be submitted. Aborting...\n");
@@ -1023,7 +1030,7 @@ static int usbduxfast_ai_cmd(struct comedi_device *dev,
 	if ((cmd->start_src == TRIG_NOW) || (cmd->start_src == TRIG_EXT)) {
 		/* enable this acquisition operation */
 		devpriv->ai_cmd_running = 1;
-		ret = usbduxfastsub_submit_InURBs(devpriv);
+		ret = usbduxfastsub_submit_InURBs(dev);
 		if (ret < 0) {
 			devpriv->ai_cmd_running = 0;
 			/* fixme: unlink here?? */
@@ -1118,7 +1125,7 @@ static int usbduxfast_ai_insn_read(struct comedi_device *dev,
 	devpriv->dux_commands[LOGBASE + 0] = 0;
 
 	/* 0 means that the AD commands are sent */
-	err = send_dux_commands(devpriv, SENDADCOMMANDS);
+	err = send_dux_commands(dev, SENDADCOMMANDS);
 	if (err < 0) {
 		dev_err(dev->class_dev,
 			"adc command could not be submitted. Aborting...\n");
@@ -1165,9 +1172,10 @@ static int usbduxfast_ai_insn_read(struct comedi_device *dev,
 
 #define FIRMWARE_MAX_LEN 0x2000
 
-static int firmwareUpload(struct usbduxfast_private *devpriv,
+static int firmwareUpload(struct comedi_device *dev,
 			  const u8 *firmwareBinary, int sizeFirmware)
 {
+	struct usbduxfast_private *devpriv = dev->private;
 	int ret;
 	uint8_t *fwBuf;
 
@@ -1188,7 +1196,7 @@ static int firmwareUpload(struct usbduxfast_private *devpriv,
 		return -ENOMEM;
 	}
 
-	ret = usbduxfastsub_stop(devpriv);
+	ret = usbduxfastsub_stop(dev);
 	if (ret < 0) {
 		dev_err(&devpriv->intf->dev,
 			"comedi_: can not stop firmware\n");
@@ -1196,14 +1204,14 @@ static int firmwareUpload(struct usbduxfast_private *devpriv,
 		return ret;
 	}
 
-	ret = usbduxfastsub_upload(devpriv, fwBuf, 0, sizeFirmware);
+	ret = usbduxfastsub_upload(dev, fwBuf, 0, sizeFirmware);
 	if (ret < 0) {
 		dev_err(&devpriv->intf->dev,
 			"comedi_: firmware upload failed\n");
 		kfree(fwBuf);
 		return ret;
 	}
-	ret = usbduxfastsub_start(devpriv);
+	ret = usbduxfastsub_start(dev);
 	if (ret < 0) {
 		dev_err(&devpriv->intf->dev,
 			"comedi_: can not start firmware\n");
@@ -1247,10 +1255,11 @@ static int usbduxfast_attach_common(struct comedi_device *dev)
 	return 0;
 }
 
-static int usbduxfast_request_firmware(struct usb_interface *intf)
+static int usbduxfast_request_firmware(struct comedi_device *dev)
 {
+	struct usbduxfast_private *devpriv = dev->private;
+	struct usb_interface *intf = devpriv->intf;
 	struct usb_device *usb = interface_to_usbdev(intf);
-	struct usbduxfast_private *devpriv = usb_get_intfdata(intf);
 	const struct firmware *fw;
 	int ret;
 
@@ -1258,7 +1267,7 @@ static int usbduxfast_request_firmware(struct usb_interface *intf)
 	if (ret)
 		return ret;
 
-	ret = firmwareUpload(devpriv, fw->data, fw->size);
+	ret = firmwareUpload(dev, fw->data, fw->size);
 	release_firmware(fw);
 
 	return ret;
@@ -1319,7 +1328,7 @@ static int usbduxfast_auto_attach(struct comedi_device *dev,
 	 * Request, and upload, the firmware so we can
 	 * complete the comedi_driver (*auto_attach).
 	 */
-	ret = usbduxfast_request_firmware(intf);
+	ret = usbduxfast_request_firmware(dev);
 	if (ret) {
 		dev_err(&intf->dev, "could not load firmware (err=%d)\n", ret);
 		return ret;
-- 
1.8.1.4




More information about the devel mailing list