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