Lines Matching refs:data

118 	struct usbtmc_device_data *data;  member
134 struct usbtmc_device_data *data = to_usbtmc_data(kref); in usbtmc_delete() local
136 usb_put_dev(data->usb_dev); in usbtmc_delete()
137 kfree(data); in usbtmc_delete()
143 struct usbtmc_device_data *data; in usbtmc_open() local
156 data = usb_get_intfdata(intf); in usbtmc_open()
158 kref_get(&data->kref); in usbtmc_open()
160 mutex_lock(&data->io_mutex); in usbtmc_open()
161 file_data->data = data; in usbtmc_open()
165 file_data->term_char = data->TermChar; in usbtmc_open()
166 file_data->term_char_enabled = data->TermCharEnabled; in usbtmc_open()
170 spin_lock_irq(&data->dev_lock); in usbtmc_open()
171 list_add_tail(&file_data->file_elem, &data->file_list); in usbtmc_open()
172 spin_unlock_irq(&data->dev_lock); in usbtmc_open()
173 mutex_unlock(&data->io_mutex); in usbtmc_open()
186 mutex_lock(&file_data->data->io_mutex); in usbtmc_release()
187 spin_lock_irq(&file_data->data->dev_lock); in usbtmc_release()
191 spin_unlock_irq(&file_data->data->dev_lock); in usbtmc_release()
192 mutex_unlock(&file_data->data->io_mutex); in usbtmc_release()
194 kref_put(&file_data->data->kref, usbtmc_delete); in usbtmc_release()
195 file_data->data = NULL; in usbtmc_release()
200 static int usbtmc_ioctl_abort_bulk_in(struct usbtmc_device_data *data) in usbtmc_ioctl_abort_bulk_in() argument
210 dev = &data->intf->dev; in usbtmc_ioctl_abort_bulk_in()
215 rv = usb_control_msg(data->usb_dev, in usbtmc_ioctl_abort_bulk_in()
216 usb_rcvctrlpipe(data->usb_dev, 0), in usbtmc_ioctl_abort_bulk_in()
219 data->bTag_last_read, data->bulk_in, in usbtmc_ioctl_abort_bulk_in()
242 current_setting = data->intf->cur_altsetting; in usbtmc_ioctl_abort_bulk_in()
245 data->bulk_in) in usbtmc_ioctl_abort_bulk_in()
254 dev_dbg(&data->intf->dev, "wMaxPacketSize is %d\n", max_size); in usbtmc_ioctl_abort_bulk_in()
261 rv = usb_bulk_msg(data->usb_dev, in usbtmc_ioctl_abort_bulk_in()
262 usb_rcvbulkpipe(data->usb_dev, in usbtmc_ioctl_abort_bulk_in()
263 data->bulk_in), in usbtmc_ioctl_abort_bulk_in()
286 rv = usb_control_msg(data->usb_dev, in usbtmc_ioctl_abort_bulk_in()
287 usb_rcvctrlpipe(data->usb_dev, 0), in usbtmc_ioctl_abort_bulk_in()
290 0, data->bulk_in, buffer, 0x08, in usbtmc_ioctl_abort_bulk_in()
315 rv = usb_bulk_msg(data->usb_dev, in usbtmc_ioctl_abort_bulk_in()
316 usb_rcvbulkpipe(data->usb_dev, in usbtmc_ioctl_abort_bulk_in()
317 data->bulk_in), in usbtmc_ioctl_abort_bulk_in()
345 static int usbtmc_ioctl_abort_bulk_out(struct usbtmc_device_data *data) in usbtmc_ioctl_abort_bulk_out() argument
352 dev = &data->intf->dev; in usbtmc_ioctl_abort_bulk_out()
358 rv = usb_control_msg(data->usb_dev, in usbtmc_ioctl_abort_bulk_out()
359 usb_rcvctrlpipe(data->usb_dev, 0), in usbtmc_ioctl_abort_bulk_out()
362 data->bTag_last_write, data->bulk_out, in usbtmc_ioctl_abort_bulk_out()
382 rv = usb_control_msg(data->usb_dev, in usbtmc_ioctl_abort_bulk_out()
383 usb_rcvctrlpipe(data->usb_dev, 0), in usbtmc_ioctl_abort_bulk_out()
386 0, data->bulk_out, buffer, 0x08, in usbtmc_ioctl_abort_bulk_out()
407 rv = usb_clear_halt(data->usb_dev, in usbtmc_ioctl_abort_bulk_out()
408 usb_sndbulkpipe(data->usb_dev, data->bulk_out)); in usbtmc_ioctl_abort_bulk_out()
424 struct usbtmc_device_data *data = file_data->data; in usbtmc488_ioctl_read_stb() local
425 struct device *dev = &data->intf->dev; in usbtmc488_ioctl_read_stb()
433 data->iin_ep_present); in usbtmc488_ioctl_read_stb()
435 spin_lock_irq(&data->dev_lock); in usbtmc488_ioctl_read_stb()
440 spin_unlock_irq(&data->dev_lock); in usbtmc488_ioctl_read_stb()
446 spin_unlock_irq(&data->dev_lock); in usbtmc488_ioctl_read_stb()
452 atomic_set(&data->iin_data_valid, 0); in usbtmc488_ioctl_read_stb()
454 rv = usb_control_msg(data->usb_dev, in usbtmc488_ioctl_read_stb()
455 usb_rcvctrlpipe(data->usb_dev, 0), in usbtmc488_ioctl_read_stb()
458 data->iin_bTag, in usbtmc488_ioctl_read_stb()
459 data->ifnum, in usbtmc488_ioctl_read_stb()
472 if (data->iin_ep_present) { in usbtmc488_ioctl_read_stb()
474 data->waitq, in usbtmc488_ioctl_read_stb()
475 atomic_read(&data->iin_data_valid) != 0, in usbtmc488_ioctl_read_stb()
488 tag = data->bNotify1 & 0x7f; in usbtmc488_ioctl_read_stb()
489 if (tag != data->iin_bTag) { in usbtmc488_ioctl_read_stb()
491 data->iin_bTag, tag); in usbtmc488_ioctl_read_stb()
494 stb = data->bNotify2; in usbtmc488_ioctl_read_stb()
504 data->iin_bTag += 1; in usbtmc488_ioctl_read_stb()
505 if (data->iin_bTag > 127) in usbtmc488_ioctl_read_stb()
507 data->iin_bTag = 2; in usbtmc488_ioctl_read_stb()
513 static int usbtmc488_ioctl_simple(struct usbtmc_device_data *data, in usbtmc488_ioctl_simple() argument
516 struct device *dev = &data->intf->dev; in usbtmc488_ioctl_simple()
522 if (!(data->usb488_caps & USBTMC488_CAPABILITY_SIMPLE)) in usbtmc488_ioctl_simple()
540 rv = usb_control_msg(data->usb_dev, in usbtmc488_ioctl_simple()
541 usb_rcvctrlpipe(data->usb_dev, 0), in usbtmc488_ioctl_simple()
545 data->ifnum, in usbtmc488_ioctl_simple()
576 struct usbtmc_device_data *data = file_data->data; in usbtmc488_ioctl_trigger() local
586 buffer[1] = data->bTag; in usbtmc488_ioctl_trigger()
587 buffer[2] = ~data->bTag; in usbtmc488_ioctl_trigger()
589 retval = usb_bulk_msg(data->usb_dev, in usbtmc488_ioctl_trigger()
590 usb_sndbulkpipe(data->usb_dev, in usbtmc488_ioctl_trigger()
591 data->bulk_out), in usbtmc488_ioctl_trigger()
596 data->bTag_last_write = data->bTag; in usbtmc488_ioctl_trigger()
599 data->bTag++; in usbtmc488_ioctl_trigger()
600 if (!data->bTag) in usbtmc488_ioctl_trigger()
601 data->bTag++; in usbtmc488_ioctl_trigger()
605 dev_err(&data->intf->dev, "%s returned %d\n", in usbtmc488_ioctl_trigger()
624 struct usbtmc_device_data *data = file_data->data; in send_request_dev_dep_msg_in() local
636 buffer[1] = data->bTag; in send_request_dev_dep_msg_in()
637 buffer[2] = ~data->bTag; in send_request_dev_dep_msg_in()
650 retval = usb_bulk_msg(data->usb_dev, in send_request_dev_dep_msg_in()
651 usb_sndbulkpipe(data->usb_dev, in send_request_dev_dep_msg_in()
652 data->bulk_out), in send_request_dev_dep_msg_in()
657 data->bTag_last_write = data->bTag; in send_request_dev_dep_msg_in()
660 data->bTag++; in send_request_dev_dep_msg_in()
661 if (!data->bTag) in send_request_dev_dep_msg_in()
662 data->bTag++; in send_request_dev_dep_msg_in()
666 dev_err(&data->intf->dev, "usb_bulk_msg in send_request_dev_dep_msg_in() returned %d\n", retval); in send_request_dev_dep_msg_in()
677 struct usbtmc_device_data *data; in usbtmc_read() local
689 data = file_data->data; in usbtmc_read()
690 dev = &data->intf->dev; in usbtmc_read()
696 mutex_lock(&data->io_mutex); in usbtmc_read()
697 if (data->zombie) { in usbtmc_read()
707 if (data->auto_abort) in usbtmc_read()
708 usbtmc_ioctl_abort_bulk_out(data); in usbtmc_read()
719 retval = usb_bulk_msg(data->usb_dev, in usbtmc_read()
720 usb_rcvbulkpipe(data->usb_dev, in usbtmc_read()
721 data->bulk_in), in usbtmc_read()
728 data->bTag_last_read = data->bTag; in usbtmc_read()
732 if (data->auto_abort) in usbtmc_read()
733 usbtmc_ioctl_abort_bulk_in(data); in usbtmc_read()
742 if (data->auto_abort) in usbtmc_read()
743 usbtmc_ioctl_abort_bulk_in(data); in usbtmc_read()
749 if (data->auto_abort) in usbtmc_read()
750 usbtmc_ioctl_abort_bulk_in(data); in usbtmc_read()
754 if (buffer[1] != data->bTag_last_write) { in usbtmc_read()
755 dev_err(dev, "Device sent reply with wrong bTag: %u != %u\n", buffer[1], data->bTag_last_write); in usbtmc_read()
756 if (data->auto_abort) in usbtmc_read()
757 usbtmc_ioctl_abort_bulk_in(data); in usbtmc_read()
769 if (data->auto_abort) in usbtmc_read()
770 usbtmc_ioctl_abort_bulk_in(data); in usbtmc_read()
826 mutex_unlock(&data->io_mutex); in usbtmc_read()
835 struct usbtmc_device_data *data; in usbtmc_write() local
845 data = file_data->data; in usbtmc_write()
851 mutex_lock(&data->io_mutex); in usbtmc_write()
852 if (data->zombie) { in usbtmc_write()
871 buffer[1] = data->bTag; in usbtmc_write()
872 buffer[2] = ~data->bTag; in usbtmc_write()
892 retval = usb_bulk_msg(data->usb_dev, in usbtmc_write()
893 usb_sndbulkpipe(data->usb_dev, in usbtmc_write()
894 data->bulk_out), in usbtmc_write()
902 data->bTag_last_write = data->bTag; in usbtmc_write()
903 data->bTag++; in usbtmc_write()
905 if (!data->bTag) in usbtmc_write()
906 data->bTag++; in usbtmc_write()
909 dev_err(&data->intf->dev, in usbtmc_write()
911 if (data->auto_abort) in usbtmc_write()
912 usbtmc_ioctl_abort_bulk_out(data); in usbtmc_write()
922 mutex_unlock(&data->io_mutex); in usbtmc_write()
927 static int usbtmc_ioctl_clear(struct usbtmc_device_data *data) in usbtmc_ioctl_clear() argument
938 dev = &data->intf->dev; in usbtmc_ioctl_clear()
946 rv = usb_control_msg(data->usb_dev, in usbtmc_ioctl_clear()
947 usb_rcvctrlpipe(data->usb_dev, 0), in usbtmc_ioctl_clear()
965 current_setting = data->intf->cur_altsetting; in usbtmc_ioctl_clear()
968 if (desc->bEndpointAddress == data->bulk_in) in usbtmc_ioctl_clear()
986 rv = usb_control_msg(data->usb_dev, in usbtmc_ioctl_clear()
987 usb_rcvctrlpipe(data->usb_dev, 0), in usbtmc_ioctl_clear()
1011 rv = usb_bulk_msg(data->usb_dev, in usbtmc_ioctl_clear()
1012 usb_rcvbulkpipe(data->usb_dev, in usbtmc_ioctl_clear()
1013 data->bulk_in), in usbtmc_ioctl_clear()
1037 rv = usb_clear_halt(data->usb_dev, in usbtmc_ioctl_clear()
1038 usb_sndbulkpipe(data->usb_dev, data->bulk_out)); in usbtmc_ioctl_clear()
1050 static int usbtmc_ioctl_clear_out_halt(struct usbtmc_device_data *data) in usbtmc_ioctl_clear_out_halt() argument
1054 rv = usb_clear_halt(data->usb_dev, in usbtmc_ioctl_clear_out_halt()
1055 usb_sndbulkpipe(data->usb_dev, data->bulk_out)); in usbtmc_ioctl_clear_out_halt()
1058 dev_err(&data->usb_dev->dev, "usb_control_msg returned %d\n", in usbtmc_ioctl_clear_out_halt()
1065 static int usbtmc_ioctl_clear_in_halt(struct usbtmc_device_data *data) in usbtmc_ioctl_clear_in_halt() argument
1069 rv = usb_clear_halt(data->usb_dev, in usbtmc_ioctl_clear_in_halt()
1070 usb_rcvbulkpipe(data->usb_dev, data->bulk_in)); in usbtmc_ioctl_clear_in_halt()
1073 dev_err(&data->usb_dev->dev, "usb_control_msg returned %d\n", in usbtmc_ioctl_clear_in_halt()
1080 static int get_capabilities(struct usbtmc_device_data *data) in get_capabilities() argument
1082 struct device *dev = &data->usb_dev->dev; in get_capabilities()
1090 rv = usb_control_msg(data->usb_dev, usb_rcvctrlpipe(data->usb_dev, 0), in get_capabilities()
1110 data->capabilities.interface_capabilities = buffer[4]; in get_capabilities()
1111 data->capabilities.device_capabilities = buffer[5]; in get_capabilities()
1112 data->capabilities.usb488_interface_capabilities = buffer[14]; in get_capabilities()
1113 data->capabilities.usb488_device_capabilities = buffer[15]; in get_capabilities()
1114 data->usb488_caps = (buffer[14] & 0x07) | ((buffer[15] & 0x0f) << 4); in get_capabilities()
1127 struct usbtmc_device_data *data = usb_get_intfdata(intf); \
1129 return sprintf(buf, "%d\n", data->capabilities.name); \
1154 struct usbtmc_device_data *data = usb_get_intfdata(intf); in TermChar_show() local
1156 return sprintf(buf, "%c\n", data->TermChar); in TermChar_show()
1164 struct usbtmc_device_data *data = usb_get_intfdata(intf); in TermChar_store() local
1168 data->TermChar = buf[0]; in TermChar_store()
1178 struct usbtmc_device_data *data = usb_get_intfdata(intf); \
1180 return sprintf(buf, "%d\n", data->name); \
1187 struct usbtmc_device_data *data = usb_get_intfdata(intf); \
1194 data->name = val; \
1216 static int usbtmc_ioctl_indicator_pulse(struct usbtmc_device_data *data) in usbtmc_ioctl_indicator_pulse() argument
1222 dev = &data->intf->dev; in usbtmc_ioctl_indicator_pulse()
1228 rv = usb_control_msg(data->usb_dev, in usbtmc_ioctl_indicator_pulse()
1229 usb_rcvctrlpipe(data->usb_dev, 0), in usbtmc_ioctl_indicator_pulse()
1320 !(file_data->data->capabilities.device_capabilities & 1))) in usbtmc_ioctl_config_termc()
1332 struct usbtmc_device_data *data; in usbtmc_ioctl() local
1336 data = file_data->data; in usbtmc_ioctl()
1338 mutex_lock(&data->io_mutex); in usbtmc_ioctl()
1339 if (data->zombie) { in usbtmc_ioctl()
1346 retval = usbtmc_ioctl_clear_out_halt(data); in usbtmc_ioctl()
1350 retval = usbtmc_ioctl_clear_in_halt(data); in usbtmc_ioctl()
1354 retval = usbtmc_ioctl_indicator_pulse(data); in usbtmc_ioctl()
1358 retval = usbtmc_ioctl_clear(data); in usbtmc_ioctl()
1362 retval = usbtmc_ioctl_abort_bulk_out(data); in usbtmc_ioctl()
1366 retval = usbtmc_ioctl_abort_bulk_in(data); in usbtmc_ioctl()
1391 &data->usb488_caps, in usbtmc_ioctl()
1392 sizeof(data->usb488_caps)); in usbtmc_ioctl()
1403 retval = usbtmc488_ioctl_simple(data, (void __user *)arg, in usbtmc_ioctl()
1408 retval = usbtmc488_ioctl_simple(data, (void __user *)arg, in usbtmc_ioctl()
1413 retval = usbtmc488_ioctl_simple(data, (void __user *)arg, in usbtmc_ioctl()
1423 mutex_unlock(&data->io_mutex); in usbtmc_ioctl()
1431 return fasync_helper(fd, file, on, &file_data->data->fasync); in usbtmc_fasync()
1437 struct usbtmc_device_data *data = file_data->data; in usbtmc_poll() local
1440 mutex_lock(&data->io_mutex); in usbtmc_poll()
1442 if (data->zombie) { in usbtmc_poll()
1447 poll_wait(file, &data->waitq, wait); in usbtmc_poll()
1452 mutex_unlock(&data->io_mutex); in usbtmc_poll()
1479 struct usbtmc_device_data *data = urb->context; in usbtmc_interrupt() local
1480 struct device *dev = &data->intf->dev; in usbtmc_interrupt()
1484 dev_dbg(&data->intf->dev, "int status: %d len %d\n", in usbtmc_interrupt()
1490 if (data->iin_buffer[0] > 0x81) { in usbtmc_interrupt()
1491 data->bNotify1 = data->iin_buffer[0]; in usbtmc_interrupt()
1492 data->bNotify2 = data->iin_buffer[1]; in usbtmc_interrupt()
1493 atomic_set(&data->iin_data_valid, 1); in usbtmc_interrupt()
1494 wake_up_interruptible(&data->waitq); in usbtmc_interrupt()
1498 if (data->iin_buffer[0] == 0x81) { in usbtmc_interrupt()
1502 if (data->fasync) in usbtmc_interrupt()
1503 kill_fasync(&data->fasync, in usbtmc_interrupt()
1506 spin_lock_irqsave(&data->dev_lock, flags); in usbtmc_interrupt()
1507 list_for_each(elem, &data->file_list) { in usbtmc_interrupt()
1513 file_data->srq_byte = data->iin_buffer[1]; in usbtmc_interrupt()
1516 spin_unlock_irqrestore(&data->dev_lock, flags); in usbtmc_interrupt()
1519 (unsigned int)data->iin_buffer[0], in usbtmc_interrupt()
1520 (unsigned int)data->iin_buffer[1]); in usbtmc_interrupt()
1521 wake_up_interruptible_all(&data->waitq); in usbtmc_interrupt()
1525 data->iin_buffer[0]); in usbtmc_interrupt()
1529 data->iin_wMaxPacketSize, urb->actual_length); in usbtmc_interrupt()
1549 static void usbtmc_free_int(struct usbtmc_device_data *data) in usbtmc_free_int() argument
1551 if (!data->iin_ep_present || !data->iin_urb) in usbtmc_free_int()
1553 usb_kill_urb(data->iin_urb); in usbtmc_free_int()
1554 kfree(data->iin_buffer); in usbtmc_free_int()
1555 usb_free_urb(data->iin_urb); in usbtmc_free_int()
1556 kref_put(&data->kref, usbtmc_delete); in usbtmc_free_int()
1562 struct usbtmc_device_data *data; in usbtmc_probe() local
1569 data = kzalloc(sizeof(*data), GFP_KERNEL); in usbtmc_probe()
1570 if (!data) in usbtmc_probe()
1573 data->intf = intf; in usbtmc_probe()
1574 data->id = id; in usbtmc_probe()
1575 data->usb_dev = usb_get_dev(interface_to_usbdev(intf)); in usbtmc_probe()
1576 usb_set_intfdata(intf, data); in usbtmc_probe()
1577 kref_init(&data->kref); in usbtmc_probe()
1578 mutex_init(&data->io_mutex); in usbtmc_probe()
1579 init_waitqueue_head(&data->waitq); in usbtmc_probe()
1580 atomic_set(&data->iin_data_valid, 0); in usbtmc_probe()
1581 INIT_LIST_HEAD(&data->file_list); in usbtmc_probe()
1582 spin_lock_init(&data->dev_lock); in usbtmc_probe()
1584 data->zombie = 0; in usbtmc_probe()
1587 data->bTag = 1; in usbtmc_probe()
1588 data->TermCharEnabled = 0; in usbtmc_probe()
1589 data->TermChar = '\n'; in usbtmc_probe()
1591 data->iin_bTag = 2; in usbtmc_probe()
1594 iface_desc = data->intf->cur_altsetting; in usbtmc_probe()
1595 data->ifnum = iface_desc->desc.bInterfaceNumber; in usbtmc_probe()
1605 data->bulk_in = bulk_in->bEndpointAddress; in usbtmc_probe()
1606 dev_dbg(&intf->dev, "Found bulk in endpoint at %u\n", data->bulk_in); in usbtmc_probe()
1608 data->bulk_out = bulk_out->bEndpointAddress; in usbtmc_probe()
1609 dev_dbg(&intf->dev, "Found Bulk out endpoint at %u\n", data->bulk_out); in usbtmc_probe()
1614 data->iin_ep_present = 1; in usbtmc_probe()
1615 data->iin_ep = int_in->bEndpointAddress; in usbtmc_probe()
1616 data->iin_wMaxPacketSize = usb_endpoint_maxp(int_in); in usbtmc_probe()
1617 data->iin_interval = int_in->bInterval; in usbtmc_probe()
1619 data->iin_ep); in usbtmc_probe()
1622 retcode = get_capabilities(data); in usbtmc_probe()
1629 if (data->iin_ep_present) { in usbtmc_probe()
1631 data->iin_urb = usb_alloc_urb(0, GFP_KERNEL); in usbtmc_probe()
1632 if (!data->iin_urb) { in usbtmc_probe()
1638 kref_get(&data->kref); in usbtmc_probe()
1641 data->iin_buffer = kmalloc(data->iin_wMaxPacketSize, in usbtmc_probe()
1643 if (!data->iin_buffer) { in usbtmc_probe()
1649 usb_fill_int_urb(data->iin_urb, data->usb_dev, in usbtmc_probe()
1650 usb_rcvintpipe(data->usb_dev, data->iin_ep), in usbtmc_probe()
1651 data->iin_buffer, data->iin_wMaxPacketSize, in usbtmc_probe()
1653 data, data->iin_interval); in usbtmc_probe()
1655 retcode = usb_submit_urb(data->iin_urb, GFP_KERNEL); in usbtmc_probe()
1678 usbtmc_free_int(data); in usbtmc_probe()
1680 kref_put(&data->kref, usbtmc_delete); in usbtmc_probe()
1686 struct usbtmc_device_data *data = usb_get_intfdata(intf); in usbtmc_disconnect() local
1691 mutex_lock(&data->io_mutex); in usbtmc_disconnect()
1692 data->zombie = 1; in usbtmc_disconnect()
1693 wake_up_interruptible_all(&data->waitq); in usbtmc_disconnect()
1694 mutex_unlock(&data->io_mutex); in usbtmc_disconnect()
1695 usbtmc_free_int(data); in usbtmc_disconnect()
1696 kref_put(&data->kref, usbtmc_delete); in usbtmc_disconnect()