This series is a bit large but it should be straight forward to review. Push the usb_driver (*probe) and (*disconnect) into the comedi_driver (*auto_attach) and (*detach). This allows the driver to dynamically allocate the private data for the attached device and removes the 16 device limitation due to the static array for the private data. Fix all the checkpatch.pl issues other than: WARNING: Avoid CamelCase: <intf->altsetting->desc.bInterfaceNumber> #1689: FILE: staging/comedi/drivers/usbduxsigma.c:1689: + intf->altsetting->desc.bInterfaceNumber, 3); That CamelCase warning is outside the scope of this driver. Clean up the driver so it's easier to understand and maintain. H Hartley Sweeten (77): staging: comedi: usbduxsigma: remove function trace noise staging: comedi: usbduxsigma: remove unlink urb debug messages staging: comedi: usbduxsigma: cleanup the unlink urb functions staging: comedi: usbduxsigma: cleanup the stop functions staging: comedi: usbduxsigma: change return type of the stop functions staging: comedi: usbduxsigma: remove check of 'probed' in (*cancel) functions staging: comedi: usbduxsigma: cleanup the (*cancel) functions staging: comedi: usbduxsigma: use usbdux_ai_stop() to force unlink all urbs staging: comedi: usbduxsigma: absorb usbduxsub_unlink_InURBs() into caller staging: comedi: usbduxsigma: use usbdux_ao_stop() to force unlink all urbs staging: comedi: usbduxsigma: absorb usbduxsub_unlink_OutURBs() into caller staging: comedi: usbduxsigma: use usbdux_pwm_stop() to force unlink urb staging: comedi: usbduxsigma: absorb usbduxsub_unlink_PwmURBs() into caller staging: comedi: usbduxsigma: tidy up usbduxsub_ai_IsocIrq() staging: comedi: usbduxsigma: tidy up usbduxsub_ao_IsocIrq() staging: comedi: usbduxsigma: remove dev_{level} messages in submit urbs functions staging: comedi: usbduxsigma: generalize the usb_submit_urb functions staging: comedi: usbduxsigma: remove 'probed' checks in comedi functions staging: comedi: usbduxsigma: tidy up usbduxsub_pwm_irq() staging: comedi: usbduxsigma: rename the private data struct staging: comedi: usbduxsigma: tidy up usbduxsigma_usb_probe() staging: comedi: usbduxsigma: factor usb buffer allocation out of (*probe) staging: comedi: usbduxsigma: push usb (*disconnect) into comedi (*detach) staging: comedi: usbduxsigma: push usb (*probe) into comedi (*auto_attach) staging: comedi: usbduxsigma: remove NOISY_DUX_DEBUGBUG staging: comedi: usbduxsigma: tidy up send_dux_commands() staging: comedi: usbduxsigma: tidy up receive_dux_commands() staging: comedi: usbduxsigma: tidy up usbduxsub_submit_PwmURBs() staging: comedi: usbduxsigma: remove 'comedidev' from the private data staging: comedi: usbduxsigma: remove 'usbdev' from the private data staging: comedi: usbduxsigma: tidy up firmware upload error messages staging: comedi: usbduxsigma: remove private data sanity checks staging: comedi: usbduxsigma: tidy up usbdux_ao_inttrig() staging: comedi: usbduxsigma: tidy up usbdux_ai_inttrig() staging: comedi: usbduxsigma: remove unnecessary check in usbdux_ai_cmd() staging: comedi: usbduxsigma: remove unnecessary check in usbdux_ao_cmd() staging: comedi: usbduxsigma: remove SUBDEV_* defines staging: comedi: usbduxsigma: tidy up usbduxsigma_attach_common() staging: comedi: usbduxsigma: tidy up usbdux_getstatusinfo() staging: comedi: usbduxsigma: remove tidy_up() from (*auto_attach) staging: comedi: usbduxsigma: move usb_set_intfdata(intf, NULL) to (*detach) staging: comedi: usbduxsigma: kill all urbs before freeing them staging: comedi: usbduxsigma: tidy up tidy_up() staging: comedi: usbduxsigma: remove an extra ';' staging: comedi: usbduxsigma: move usbduxsigma_firmware_upload() staging: comedi: usbduxsigma: tidy up usbduxsigma_pwm_config() staging: comedi: usbduxsigma: remove usbdux_pwm_read() staging: comedi: usbduxsigma: tidy up usbdux_pwm_write() staging: comedi: usbduxsigma: tidy up usbdux_pwm_pattern() staging: comedi: usbduxsigma: tidy up usbdux_pwm_start() staging: comedi: usbduxsigma: tidy up usbdux_dio_insn_bits() staging: comedi: usbduxsigma: tidy up usbdux_dio_insn_config() staging: comedi: usbduxsigma: remove some dev_{level} noise staging: comedi: usbduxsigma: remove 'interface' from the private data staging: comedi: usbduxsigma: change private data flags to bit fields staging: comedi: usbduxsigma: tidy up usbdux_pwm_period() staging: comedi: usbduxsigma: rename usbdux_pwm_irq() staging: comedi: usbduxsigma: rename usbdux_pwm_cancel() staging: comedi: usbduxsigma: rename usbdux_pwm_stop() staging: comedi: usbduxsigma: tidy up analog output command support staging: comedi: usbduxsigma: tidy up analog output (*insn_{read,write}) staging: comedi: usbduxsigma: cleanup the private data 'outBuffer' staging: comedi: usbduxsigma: tidy up usbdux_ai_insn_read() staging: comedi: usbduxsigma: tidy up analog input command support staging: comedi: usbduxsigma: check for invalid 'ao_timer' in all cases staging: comedi: usbduxsigma: rename {send,receive}_dux_commands() staging: comedi: usbduxsigma: rename the urb completion handlers staging: comedi: usbduxsigma: rename the (*cancel) functions staging: comedi: usbduxsigma: rename usbdux_{ai,ao}_stop() functions staging: comedi: usbduxsigma: cleanup comedi_lrange table staging: comedi: usbduxsigma: tidy up the usb endpoint defines staging: comedi: usbduxsigma: remove some unused defines staging: comedi: usbduxsigma: rename CamelCase vars in private data staging: comedi: usbduxsigma: add missing spaces reported by checkpatch.pl staging: comedi: usbduxsigma: tidy up chanToInterval() staging: comedi: usbduxsigma: remove a space before tab staging: comedi: usbduxsigma: tidy up the multi-line comments drivers/staging/comedi/drivers/usbduxsigma.c | 2854 ++++++++++---------------- 1 file changed, 1028 insertions(+), 1826 deletions(-) -- 1.8.1.4 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel