Lines Matching refs:devpriv

180 	struct usbduxsigma_private *devpriv = dev->private;  in usbduxsigma_ai_stop()  local
182 if (do_unlink && devpriv->ai_urbs) in usbduxsigma_ai_stop()
183 usbduxsigma_unlink_urbs(devpriv->ai_urbs, devpriv->n_ai_urbs); in usbduxsigma_ai_stop()
185 devpriv->ai_cmd_running = 0; in usbduxsigma_ai_stop()
191 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ai_cancel() local
193 mutex_lock(&devpriv->mut); in usbduxsigma_ai_cancel()
195 usbduxsigma_ai_stop(dev, devpriv->ai_cmd_running); in usbduxsigma_ai_cancel()
196 mutex_unlock(&devpriv->mut); in usbduxsigma_ai_cancel()
205 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ai_handle_urb() local
213 devpriv->ai_counter--; in usbduxsigma_ai_handle_urb()
214 if (devpriv->ai_counter == 0) { in usbduxsigma_ai_handle_urb()
215 devpriv->ai_counter = devpriv->ai_timer; in usbduxsigma_ai_handle_urb()
222 val = be32_to_cpu(devpriv->in_buf[i + 1]); in usbduxsigma_ai_handle_urb()
253 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ai_urb_complete() local
258 if (!devpriv->ai_cmd_running) in usbduxsigma_ai_urb_complete()
264 memcpy(devpriv->in_buf, urb->transfer_buffer, SIZEINBUF); in usbduxsigma_ai_urb_complete()
306 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ao_stop() local
308 if (do_unlink && devpriv->ao_urbs) in usbduxsigma_ao_stop()
309 usbduxsigma_unlink_urbs(devpriv->ao_urbs, devpriv->n_ao_urbs); in usbduxsigma_ao_stop()
311 devpriv->ao_cmd_running = 0; in usbduxsigma_ao_stop()
317 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ao_cancel() local
319 mutex_lock(&devpriv->mut); in usbduxsigma_ao_cancel()
321 usbduxsigma_ao_stop(dev, devpriv->ao_cmd_running); in usbduxsigma_ao_cancel()
322 mutex_unlock(&devpriv->mut); in usbduxsigma_ao_cancel()
331 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ao_handle_urb() local
338 devpriv->ao_counter--; in usbduxsigma_ao_handle_urb()
339 if (devpriv->ao_counter == 0) { in usbduxsigma_ao_handle_urb()
340 devpriv->ao_counter = devpriv->ao_timer; in usbduxsigma_ao_handle_urb()
392 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ao_urb_complete() local
397 if (!devpriv->ao_cmd_running) in usbduxsigma_ao_urb_complete()
472 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ai_cmdtest() local
473 int high_speed = devpriv->high_speed; in usbduxsigma_ai_cmdtest()
557 struct usbduxsigma_private *devpriv = dev->private; in usbbuxsigma_send_cmd() local
560 devpriv->dux_commands[0] = cmd_type; in usbbuxsigma_send_cmd()
563 devpriv->dux_commands, SIZEOFDUXBUFFER, in usbbuxsigma_send_cmd()
570 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_receive_cmd() local
577 devpriv->insn_buf, SIZEINSNBUF, in usbduxsigma_receive_cmd()
582 if (devpriv->insn_buf[0] == command) in usbduxsigma_receive_cmd()
596 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ai_inttrig() local
603 mutex_lock(&devpriv->mut); in usbduxsigma_ai_inttrig()
604 if (!devpriv->ai_cmd_running) { in usbduxsigma_ai_inttrig()
605 devpriv->ai_cmd_running = 1; in usbduxsigma_ai_inttrig()
606 ret = usbduxsigma_submit_urbs(dev, devpriv->ai_urbs, in usbduxsigma_ai_inttrig()
607 devpriv->n_ai_urbs, 1); in usbduxsigma_ai_inttrig()
609 devpriv->ai_cmd_running = 0; in usbduxsigma_ai_inttrig()
610 mutex_unlock(&devpriv->mut); in usbduxsigma_ai_inttrig()
615 mutex_unlock(&devpriv->mut); in usbduxsigma_ai_inttrig()
623 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ai_cmd() local
632 mutex_lock(&devpriv->mut); in usbduxsigma_ai_cmd()
634 if (devpriv->high_speed) { in usbduxsigma_ai_cmd()
642 devpriv->ai_interval = interval; in usbduxsigma_ai_cmd()
643 devpriv->ai_timer = cmd->scan_begin_arg / (125000 * interval); in usbduxsigma_ai_cmd()
646 devpriv->ai_interval = 1; in usbduxsigma_ai_cmd()
647 devpriv->ai_timer = cmd->scan_begin_arg / 1000000; in usbduxsigma_ai_cmd()
656 devpriv->dux_commands[1] = devpriv->ai_interval; in usbduxsigma_ai_cmd()
657 devpriv->dux_commands[2] = len; /* num channels per time step */ in usbduxsigma_ai_cmd()
658 devpriv->dux_commands[3] = 0x12; /* CONFIG0 */ in usbduxsigma_ai_cmd()
659 devpriv->dux_commands[4] = 0x03; /* CONFIG1: 23kHz sample, delay 0us */ in usbduxsigma_ai_cmd()
660 devpriv->dux_commands[5] = 0x00; /* CONFIG3: diff. channels off */ in usbduxsigma_ai_cmd()
661 devpriv->dux_commands[6] = muxsg0; in usbduxsigma_ai_cmd()
662 devpriv->dux_commands[7] = muxsg1; in usbduxsigma_ai_cmd()
663 devpriv->dux_commands[8] = sysred; in usbduxsigma_ai_cmd()
667 mutex_unlock(&devpriv->mut); in usbduxsigma_ai_cmd()
671 devpriv->ai_counter = devpriv->ai_timer; in usbduxsigma_ai_cmd()
675 devpriv->ai_cmd_running = 1; in usbduxsigma_ai_cmd()
676 ret = usbduxsigma_submit_urbs(dev, devpriv->ai_urbs, in usbduxsigma_ai_cmd()
677 devpriv->n_ai_urbs, 1); in usbduxsigma_ai_cmd()
679 devpriv->ai_cmd_running = 0; in usbduxsigma_ai_cmd()
680 mutex_unlock(&devpriv->mut); in usbduxsigma_ai_cmd()
688 mutex_unlock(&devpriv->mut); in usbduxsigma_ai_cmd()
698 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ai_insn_read() local
706 mutex_lock(&devpriv->mut); in usbduxsigma_ai_insn_read()
707 if (devpriv->ai_cmd_running) { in usbduxsigma_ai_insn_read()
708 mutex_unlock(&devpriv->mut); in usbduxsigma_ai_insn_read()
715 devpriv->dux_commands[1] = 0x16; /* CONFIG0: chopper on */ in usbduxsigma_ai_insn_read()
716 devpriv->dux_commands[2] = 0x80; /* CONFIG1: 2kHz sampling rate */ in usbduxsigma_ai_insn_read()
717 devpriv->dux_commands[3] = 0x00; /* CONFIG3: diff. channels off */ in usbduxsigma_ai_insn_read()
718 devpriv->dux_commands[4] = muxsg0; in usbduxsigma_ai_insn_read()
719 devpriv->dux_commands[5] = muxsg1; in usbduxsigma_ai_insn_read()
720 devpriv->dux_commands[6] = sysred; in usbduxsigma_ai_insn_read()
725 mutex_unlock(&devpriv->mut); in usbduxsigma_ai_insn_read()
734 mutex_unlock(&devpriv->mut); in usbduxsigma_ai_insn_read()
740 *)(devpriv->insn_buf + 1))); in usbduxsigma_ai_insn_read()
744 mutex_unlock(&devpriv->mut); in usbduxsigma_ai_insn_read()
754 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ao_insn_read() local
757 mutex_lock(&devpriv->mut); in usbduxsigma_ao_insn_read()
759 mutex_unlock(&devpriv->mut); in usbduxsigma_ao_insn_read()
769 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ao_insn_write() local
774 mutex_lock(&devpriv->mut); in usbduxsigma_ao_insn_write()
775 if (devpriv->ao_cmd_running) { in usbduxsigma_ao_insn_write()
776 mutex_unlock(&devpriv->mut); in usbduxsigma_ao_insn_write()
781 devpriv->dux_commands[1] = 1; /* num channels */ in usbduxsigma_ao_insn_write()
782 devpriv->dux_commands[2] = data[i]; /* value */ in usbduxsigma_ao_insn_write()
783 devpriv->dux_commands[3] = chan; /* channel number */ in usbduxsigma_ao_insn_write()
786 mutex_unlock(&devpriv->mut); in usbduxsigma_ao_insn_write()
791 mutex_unlock(&devpriv->mut); in usbduxsigma_ao_insn_write()
800 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ao_inttrig() local
807 mutex_lock(&devpriv->mut); in usbduxsigma_ao_inttrig()
808 if (!devpriv->ao_cmd_running) { in usbduxsigma_ao_inttrig()
809 devpriv->ao_cmd_running = 1; in usbduxsigma_ao_inttrig()
810 ret = usbduxsigma_submit_urbs(dev, devpriv->ao_urbs, in usbduxsigma_ao_inttrig()
811 devpriv->n_ao_urbs, 0); in usbduxsigma_ao_inttrig()
813 devpriv->ao_cmd_running = 0; in usbduxsigma_ao_inttrig()
814 mutex_unlock(&devpriv->mut); in usbduxsigma_ao_inttrig()
819 mutex_unlock(&devpriv->mut); in usbduxsigma_ao_inttrig()
828 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ao_cmdtest() local
850 mutex_unlock(&devpriv->mut); in usbduxsigma_ao_cmdtest()
895 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_ao_cmd() local
899 mutex_lock(&devpriv->mut); in usbduxsigma_ao_cmd()
907 devpriv->ao_timer = cmd->scan_begin_arg / 1000000; in usbduxsigma_ao_cmd()
909 devpriv->ao_counter = devpriv->ao_timer; in usbduxsigma_ao_cmd()
913 devpriv->ao_cmd_running = 1; in usbduxsigma_ao_cmd()
914 ret = usbduxsigma_submit_urbs(dev, devpriv->ao_urbs, in usbduxsigma_ao_cmd()
915 devpriv->n_ao_urbs, 0); in usbduxsigma_ao_cmd()
917 devpriv->ao_cmd_running = 0; in usbduxsigma_ao_cmd()
918 mutex_unlock(&devpriv->mut); in usbduxsigma_ao_cmd()
926 mutex_unlock(&devpriv->mut); in usbduxsigma_ao_cmd()
954 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_dio_insn_bits() local
957 mutex_lock(&devpriv->mut); in usbduxsigma_dio_insn_bits()
962 devpriv->dux_commands[1] = s->io_bits & 0xff; in usbduxsigma_dio_insn_bits()
963 devpriv->dux_commands[4] = s->state & 0xff; in usbduxsigma_dio_insn_bits()
964 devpriv->dux_commands[2] = (s->io_bits >> 8) & 0xff; in usbduxsigma_dio_insn_bits()
965 devpriv->dux_commands[5] = (s->state >> 8) & 0xff; in usbduxsigma_dio_insn_bits()
966 devpriv->dux_commands[3] = (s->io_bits >> 16) & 0xff; in usbduxsigma_dio_insn_bits()
967 devpriv->dux_commands[6] = (s->state >> 16) & 0xff; in usbduxsigma_dio_insn_bits()
976 s->state = devpriv->insn_buf[1] | in usbduxsigma_dio_insn_bits()
977 (devpriv->insn_buf[2] << 8) | in usbduxsigma_dio_insn_bits()
978 (devpriv->insn_buf[3] << 16); in usbduxsigma_dio_insn_bits()
984 mutex_unlock(&devpriv->mut); in usbduxsigma_dio_insn_bits()
991 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_pwm_stop() local
994 if (devpriv->pwm_urb) in usbduxsigma_pwm_stop()
995 usb_kill_urb(devpriv->pwm_urb); in usbduxsigma_pwm_stop()
998 devpriv->pwm_cmd_running = 0; in usbduxsigma_pwm_stop()
1004 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_pwm_cancel() local
1007 usbduxsigma_pwm_stop(dev, devpriv->pwm_cmd_running); in usbduxsigma_pwm_cancel()
1015 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_pwm_urb_complete() local
1028 if (devpriv->pwm_cmd_running) in usbduxsigma_pwm_urb_complete()
1034 if (devpriv->pwm_cmd_running) { in usbduxsigma_pwm_urb_complete()
1042 if (!devpriv->pwm_cmd_running) in usbduxsigma_pwm_urb_complete()
1045 urb->transfer_buffer_length = devpriv->pwm_buf_sz; in usbduxsigma_pwm_urb_complete()
1061 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_submit_pwm_urb() local
1062 struct urb *urb = devpriv->pwm_urb; in usbduxsigma_submit_pwm_urb()
1066 urb->transfer_buffer, devpriv->pwm_buf_sz, in usbduxsigma_submit_pwm_urb()
1076 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_pwm_period() local
1086 devpriv->pwm_delay = fx2delay; in usbduxsigma_pwm_period()
1087 devpriv->pwm_period = period; in usbduxsigma_pwm_period()
1094 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_pwm_start() local
1097 if (devpriv->pwm_cmd_running) in usbduxsigma_pwm_start()
1100 devpriv->dux_commands[1] = devpriv->pwm_delay; in usbduxsigma_pwm_start()
1105 memset(devpriv->pwm_urb->transfer_buffer, 0, devpriv->pwm_buf_sz); in usbduxsigma_pwm_start()
1107 devpriv->pwm_cmd_running = 1; in usbduxsigma_pwm_start()
1110 devpriv->pwm_cmd_running = 0; in usbduxsigma_pwm_start()
1123 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_pwm_pattern() local
1126 char *buf = (char *)(devpriv->pwm_urb->transfer_buffer); in usbduxsigma_pwm_pattern()
1127 int szbuf = devpriv->pwm_buf_sz; in usbduxsigma_pwm_pattern()
1172 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_pwm_config() local
1187 data[1] = devpriv->pwm_cmd_running; in usbduxsigma_pwm_config()
1192 data[1] = devpriv->pwm_period; in usbduxsigma_pwm_config()
1211 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_getstatusinfo() local
1238 devpriv->dux_commands[1] = 0x12; /* CONFIG0 */ in usbduxsigma_getstatusinfo()
1239 devpriv->dux_commands[2] = 0x80; /* CONFIG1: 2kHz sampling rate */ in usbduxsigma_getstatusinfo()
1240 devpriv->dux_commands[3] = 0x00; /* CONFIG3: diff. channels off */ in usbduxsigma_getstatusinfo()
1241 devpriv->dux_commands[4] = 0; in usbduxsigma_getstatusinfo()
1242 devpriv->dux_commands[5] = 0; in usbduxsigma_getstatusinfo()
1243 devpriv->dux_commands[6] = sysred; in usbduxsigma_getstatusinfo()
1253 val = be32_to_cpu(get_unaligned((__be32 *)(devpriv->insn_buf + 1))); in usbduxsigma_getstatusinfo()
1333 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_alloc_usb_buffers() local
1337 devpriv->dux_commands = kzalloc(SIZEOFDUXBUFFER, GFP_KERNEL); in usbduxsigma_alloc_usb_buffers()
1338 devpriv->in_buf = kzalloc(SIZEINBUF, GFP_KERNEL); in usbduxsigma_alloc_usb_buffers()
1339 devpriv->insn_buf = kzalloc(SIZEINSNBUF, GFP_KERNEL); in usbduxsigma_alloc_usb_buffers()
1340 devpriv->ai_urbs = kcalloc(devpriv->n_ai_urbs, sizeof(urb), GFP_KERNEL); in usbduxsigma_alloc_usb_buffers()
1341 devpriv->ao_urbs = kcalloc(devpriv->n_ao_urbs, sizeof(urb), GFP_KERNEL); in usbduxsigma_alloc_usb_buffers()
1342 if (!devpriv->dux_commands || !devpriv->in_buf || !devpriv->insn_buf || in usbduxsigma_alloc_usb_buffers()
1343 !devpriv->ai_urbs || !devpriv->ao_urbs) in usbduxsigma_alloc_usb_buffers()
1346 for (i = 0; i < devpriv->n_ai_urbs; i++) { in usbduxsigma_alloc_usb_buffers()
1351 devpriv->ai_urbs[i] = urb; in usbduxsigma_alloc_usb_buffers()
1368 for (i = 0; i < devpriv->n_ao_urbs; i++) { in usbduxsigma_alloc_usb_buffers()
1373 devpriv->ao_urbs[i] = urb; in usbduxsigma_alloc_usb_buffers()
1391 if (devpriv->pwm_buf_sz) { in usbduxsigma_alloc_usb_buffers()
1395 devpriv->pwm_urb = urb; in usbduxsigma_alloc_usb_buffers()
1397 urb->transfer_buffer = kzalloc(devpriv->pwm_buf_sz, in usbduxsigma_alloc_usb_buffers()
1408 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_free_usb_buffers() local
1412 urb = devpriv->pwm_urb; in usbduxsigma_free_usb_buffers()
1417 if (devpriv->ao_urbs) { in usbduxsigma_free_usb_buffers()
1418 for (i = 0; i < devpriv->n_ao_urbs; i++) { in usbduxsigma_free_usb_buffers()
1419 urb = devpriv->ao_urbs[i]; in usbduxsigma_free_usb_buffers()
1425 kfree(devpriv->ao_urbs); in usbduxsigma_free_usb_buffers()
1427 if (devpriv->ai_urbs) { in usbduxsigma_free_usb_buffers()
1428 for (i = 0; i < devpriv->n_ai_urbs; i++) { in usbduxsigma_free_usb_buffers()
1429 urb = devpriv->ai_urbs[i]; in usbduxsigma_free_usb_buffers()
1435 kfree(devpriv->ai_urbs); in usbduxsigma_free_usb_buffers()
1437 kfree(devpriv->insn_buf); in usbduxsigma_free_usb_buffers()
1438 kfree(devpriv->in_buf); in usbduxsigma_free_usb_buffers()
1439 kfree(devpriv->dux_commands); in usbduxsigma_free_usb_buffers()
1447 struct usbduxsigma_private *devpriv; in usbduxsigma_auto_attach() local
1452 devpriv = comedi_alloc_devpriv(dev, sizeof(*devpriv)); in usbduxsigma_auto_attach()
1453 if (!devpriv) in usbduxsigma_auto_attach()
1456 mutex_init(&devpriv->mut); in usbduxsigma_auto_attach()
1458 usb_set_intfdata(intf, devpriv); in usbduxsigma_auto_attach()
1460 devpriv->high_speed = (usb->speed == USB_SPEED_HIGH); in usbduxsigma_auto_attach()
1461 if (devpriv->high_speed) { in usbduxsigma_auto_attach()
1462 devpriv->n_ai_urbs = NUMOFINBUFFERSHIGH; in usbduxsigma_auto_attach()
1463 devpriv->n_ao_urbs = NUMOFOUTBUFFERSHIGH; in usbduxsigma_auto_attach()
1464 devpriv->pwm_buf_sz = 512; in usbduxsigma_auto_attach()
1466 devpriv->n_ai_urbs = NUMOFINBUFFERSFULL; in usbduxsigma_auto_attach()
1467 devpriv->n_ao_urbs = NUMOFOUTBUFFERSFULL; in usbduxsigma_auto_attach()
1488 ret = comedi_alloc_subdevices(dev, (devpriv->high_speed) ? 4 : 3); in usbduxsigma_auto_attach()
1535 if (devpriv->high_speed) { in usbduxsigma_auto_attach()
1541 s->maxdata = devpriv->pwm_buf_sz; in usbduxsigma_auto_attach()
1563 struct usbduxsigma_private *devpriv = dev->private; in usbduxsigma_detach() local
1567 if (!devpriv) in usbduxsigma_detach()
1570 mutex_lock(&devpriv->mut); in usbduxsigma_detach()
1579 mutex_unlock(&devpriv->mut); in usbduxsigma_detach()
1581 mutex_destroy(&devpriv->mut); in usbduxsigma_detach()