The working group "VISA for Linux" of the IVI Foundation www.ivifoundation.org specifies common rules, shared libraries and drivers to implement the specification of "VPP-4.3: The VISA Library" on Linux to be compatible with implementations on other operating systems. The USBTMC protocol is part of the "VISA Library" that is used by many popular T&M applications. Initial implementations for Linux based on libusb has been created. However using one common USBTMC driver results in more benefits: - Multiple applications can share access to the same instruments. - The driver handles SRQ conflicts. - Simplifies definition of udev rules for USBTMC devices. - Simplifies development of applications using T&M instruments. The following collaborative patches meet the requirements of the IVI Foundation to implement the library based on the usbtmc driver. Improvements in the data transfer rate of over 130 MByte/s for usb 3.x connections have been measured. V6: Using void __user* pointer again and drop 32 bit compatibility for the following 3 iotcls: USBTMC_IOCTL_CTRL_REQUEST USBTMC_IOCTL_WRITE, USBTMC_IOCTL_READ to simplify kernel driver and user applications. Note that supporting 32 bit applications running on 64 bit target systems are not in the focus of the IVI Foundation. However all other convenient ioctls of the USBTMC driver can still be used in 32 bit applications as well. Note that 32 bit applications running on 32 bit target systems are not affected by this limitation. V5: Added this version history. No change to patches. V4: Removed redundant #ifdef CONFIG_COMPAT. V3: Replaced data pointer of type void* in structs usbtmc_ctrlrequest and usbtmc_message with data pointer of type __u64 to avoid double implementation of ioctls with different structure sizes for 32 and 64 bit applications. Following patch is added to usb-next branch: usb: usbtmc: Add support for 32 bit compat applications V2: Split patch series into smaller patches. Add compatible ioctls and structs to support 32 bit applications. Incorporates feedback from reviewers. Following patches are added to usb-next branch: usb: usbtmc: Add ioctl for termination character usb: usbtmc: Add ioctl for EOM bit usb: usbtmc: Add ioctl for trigger usb: usbtmc: Add ioctls to set/get usb timeout usb: usbtmc: use consistent timeout error usb: usbtmc: Support Read Status Byte with SRQ per file V1: usb: usbtmc: Remove rigol_quirk (accepted) https://patchwork.kernel.org/patch/10407097/ Guido Kiener, Dave Penkler, Steve Bayless (22): usb: usbtmc: Add ioctl for generic requests on control usb: usbtmc: Add ioctl for vendor specific write usb: usbtmc: Add ioctl USBTMC_IOCTL_WRITE_RESULT usb: usbtmc: Add ioctl for vendor specific read usb: usbtmc: Add ioctl USBTMC_IOCTL_CANCEL_IO usb: usbtmc: Add ioctl USBTMC_IOCTL_CLEANUP_IO usb: usbtmc: Fix suspend/resume usb: usbtmc: Add ioctl USBTMC488_IOCTL_WAIT_SRQ usb: usbtmc: add ioctl USBTMC_IOCTL_MSG_IN_ATTR usb: usbtmc: Add ioctl USBTMC_IOCTL_AUTO_ABORT usb: usbtmc: Optimize usbtmc_write usb: usbtmc: Optimize usbtmc_read usb: usbtmc: Fix ioctl USBTMC_IOCTL_CLEAR usb: usbtmc: Fix ioctl USBTMC_IOCTL_ABORT_BULK_IN usb: usbtmc: Fix ioctl USBTMC_IOCTL_ABORT_BULK_OUT usb: usbtmc: Replace USBTMC_TIMEOUT macros for control messages usb: usbtmc: Add ioctl USBTMC_IOCTL_API_VERSION usb: usbtmc: Update ioctl-number.txt usb: usbtmc: Remove redundant code usb: usbtmc: Remove redundant macro USBTMC_SIZE_IOBUFFER usb: usbtmc: Fix split quoted string in debug message usb: usbtmc: Remove sysfs group TermChar and auto_abort .../ABI/stable/sysfs-driver-usb-usbtmc | 35 - Documentation/ioctl/ioctl-number.txt | 2 +- drivers/usb/class/usbtmc.c | 1644 +++++++++++++---- include/uapi/linux/usb/tmc.h | 41 + 4 files changed, 1283 insertions(+), 439 deletions(-) -- 2.17.1