From da63c39c65ae90adf527875c7a7988893d05a138 Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Tue, 14 May 2013 13:33:13 -0700 Subject: [PATCH] staging: comedi: usbduxfast: don't pass the private data directly 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 Cc: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- 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 b51bd97dd53b..a83526cf12cc 100644 --- a/drivers/staging/comedi/drivers/usbduxfast.c +++ b/drivers/staging/comedi/drivers/usbduxfast.c @@ -170,8 +170,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; @@ -191,8 +192,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; @@ -210,9 +212,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) { @@ -224,7 +227,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; } @@ -246,7 +249,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; @@ -292,7 +295,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: @@ -301,7 +304,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; } @@ -318,7 +321,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); @@ -331,7 +334,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; } @@ -355,14 +358,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) @@ -388,10 +392,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) @@ -415,10 +420,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 */ @@ -439,8 +445,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) @@ -449,7 +456,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) { @@ -572,7 +579,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); @@ -995,7 +1002,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"); @@ -1020,7 +1027,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?? */ @@ -1115,7 +1122,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"); @@ -1162,9 +1169,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; @@ -1185,7 +1193,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"); @@ -1193,14 +1201,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"); @@ -1244,10 +1252,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; @@ -1255,7 +1264,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; @@ -1316,7 +1325,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; -- 2.30.2