USB: add USB test and measurement class driver
This driver was originaly written by Stefan Kopp, but massively reworked by Greg for submission. Thanks to Felipe Balbi <me@felipebalbi.com> for lots of work in cleaning up this driver. Thanks to Oliver Neukum <oliver@neukum.org> for reviewing previous versions and pointing out problems. Cc: Stefan Kopp <stefan_kopp@agilent.com> Cc: Marcel Janssen <korgull@home.nl> Cc: Felipe Balbi <me@felipebalbi.com> Cc: Oliver Neukum <oliver@neukum.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
eb86be5424
commit
5b775f672c
8 changed files with 1209 additions and 1 deletions
62
Documentation/ABI/stable/sysfs-driver-usb-usbtmc
Normal file
62
Documentation/ABI/stable/sysfs-driver-usb-usbtmc
Normal file
|
@ -0,0 +1,62 @@
|
|||
What: /sys/bus/usb/drivers/usbtmc/devices/*/interface_capabilities
|
||||
What: /sys/bus/usb/drivers/usbtmc/devices/*/device_capabilities
|
||||
Date: August 2008
|
||||
Contact: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
Description:
|
||||
These files show the various USB TMC capabilities as described
|
||||
by the device itself. The full description of the bitfields
|
||||
can be found in the USB TMC documents from the USB-IF entitled
|
||||
"Universal Serial Bus Test and Measurement Class Specification
|
||||
(USBTMC) Revision 1.0" section 4.2.1.8.
|
||||
|
||||
The files are read only.
|
||||
|
||||
|
||||
What: /sys/bus/usb/drivers/usbtmc/devices/*/usb488_interface_capabilities
|
||||
What: /sys/bus/usb/drivers/usbtmc/devices/*/usb488_device_capabilities
|
||||
Date: August 2008
|
||||
Contact: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
Description:
|
||||
These files show the various USB TMC capabilities as described
|
||||
by the device itself. The full description of the bitfields
|
||||
can be found in the USB TMC documents from the USB-IF entitled
|
||||
"Universal Serial Bus Test and Measurement Class, Subclass
|
||||
USB488 Specification (USBTMC-USB488) Revision 1.0" section
|
||||
4.2.2.
|
||||
|
||||
The files are read only.
|
||||
|
||||
|
||||
What: /sys/bus/usb/drivers/usbtmc/devices/*/TermChar
|
||||
Date: August 2008
|
||||
Contact: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
Description:
|
||||
This file is the TermChar value to be sent to the USB TMC
|
||||
device as described by the document, "Universal Serial Bus Test
|
||||
and Measurement Class Specification
|
||||
(USBTMC) Revision 1.0" as published by the USB-IF.
|
||||
|
||||
Note that the TermCharEnabled file determines if this value is
|
||||
sent to the device or not.
|
||||
|
||||
|
||||
What: /sys/bus/usb/drivers/usbtmc/devices/*/TermCharEnabled
|
||||
Date: August 2008
|
||||
Contact: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
Description:
|
||||
This file determines if the TermChar is to be sent to the
|
||||
device on every transaction or not. For more details about
|
||||
this, please see the document, "Universal Serial Bus Test and
|
||||
Measurement Class Specification (USBTMC) Revision 1.0" as
|
||||
published by the USB-IF.
|
||||
|
||||
|
||||
What: /sys/bus/usb/drivers/usbtmc/devices/*/auto_abort
|
||||
Date: August 2008
|
||||
Contact: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
Description:
|
||||
This file determines if the the transaction of the USB TMC
|
||||
device is to be automatically aborted if there is any error.
|
||||
For more details about this, please see the document,
|
||||
"Universal Serial Bus Test and Measurement Class Specification
|
||||
(USBTMC) Revision 1.0" as published by the USB-IF.
|
|
@ -2571,6 +2571,9 @@ Your cooperation is appreciated.
|
|||
160 = /dev/usb/legousbtower0 1st USB Legotower device
|
||||
...
|
||||
175 = /dev/usb/legousbtower15 16th USB Legotower device
|
||||
176 = /dev/usb/usbtmc1 First USB TMC device
|
||||
...
|
||||
192 = /dev/usb/usbtmc16 16th USB TMC device
|
||||
240 = /dev/usb/dabusb0 First daubusb device
|
||||
...
|
||||
243 = /dev/usb/dabusb3 Fourth dabusb device
|
||||
|
|
|
@ -110,6 +110,8 @@ Code Seq# Include File Comments
|
|||
'W' 00-1F linux/wanrouter.h conflict!
|
||||
'X' all linux/xfs_fs.h
|
||||
'Y' all linux/cyclades.h
|
||||
'[' 00-07 linux/usb/usbtmc.h USB Test and Measurement Devices
|
||||
<mailto:gregkh@suse.de>
|
||||
'a' all ATM on linux
|
||||
<http://lrcwww.epfl.ch/linux-atm/magic.html>
|
||||
'b' 00-FF bit3 vme host bridge
|
||||
|
|
|
@ -40,3 +40,13 @@ config USB_WDM
|
|||
To compile this driver as a module, choose M here: the
|
||||
module will be called cdc-wdm.
|
||||
|
||||
config USB_TMC
|
||||
tristate "USB Test and Measurement Class support"
|
||||
depends on USB
|
||||
help
|
||||
Say Y here if you want to connect a USB device that follows
|
||||
the USB.org specification for USB Test and Measurement devices
|
||||
to your computer's USB port.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called usbtmc.
|
||||
|
|
|
@ -6,3 +6,4 @@
|
|||
obj-$(CONFIG_USB_ACM) += cdc-acm.o
|
||||
obj-$(CONFIG_USB_PRINTER) += usblp.o
|
||||
obj-$(CONFIG_USB_WDM) += cdc-wdm.o
|
||||
obj-$(CONFIG_USB_TMC) += usbtmc.o
|
||||
|
|
1087
drivers/usb/class/usbtmc.c
Normal file
1087
drivers/usb/class/usbtmc.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -4,4 +4,4 @@ header-y += ch9.h
|
|||
header-y += gadgetfs.h
|
||||
header-y += midi.h
|
||||
header-y += g_printer.h
|
||||
|
||||
header-y += tmc.h
|
||||
|
|
43
include/linux/usb/tmc.h
Normal file
43
include/linux/usb/tmc.h
Normal file
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright (C) 2007 Stefan Kopp, Gechingen, Germany
|
||||
* Copyright (C) 2008 Novell, Inc.
|
||||
* Copyright (C) 2008 Greg Kroah-Hartman <gregkh@suse.de>
|
||||
*
|
||||
* This file holds USB constants defined by the USB Device Class
|
||||
* Definition for Test and Measurement devices published by the USB-IF.
|
||||
*
|
||||
* It also has the ioctl definitions for the usbtmc kernel driver that
|
||||
* userspace needs to know about.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_USB_TMC_H
|
||||
#define __LINUX_USB_TMC_H
|
||||
|
||||
/* USB TMC status values */
|
||||
#define USBTMC_STATUS_SUCCESS 0x01
|
||||
#define USBTMC_STATUS_PENDING 0x02
|
||||
#define USBTMC_STATUS_FAILED 0x80
|
||||
#define USBTMC_STATUS_TRANSFER_NOT_IN_PROGRESS 0x81
|
||||
#define USBTMC_STATUS_SPLIT_NOT_IN_PROGRESS 0x82
|
||||
#define USBTMC_STATUS_SPLIT_IN_PROGRESS 0x83
|
||||
|
||||
/* USB TMC requests values */
|
||||
#define USBTMC_REQUEST_INITIATE_ABORT_BULK_OUT 1
|
||||
#define USBTMC_REQUEST_CHECK_ABORT_BULK_OUT_STATUS 2
|
||||
#define USBTMC_REQUEST_INITIATE_ABORT_BULK_IN 3
|
||||
#define USBTMC_REQUEST_CHECK_ABORT_BULK_IN_STATUS 4
|
||||
#define USBTMC_REQUEST_INITIATE_CLEAR 5
|
||||
#define USBTMC_REQUEST_CHECK_CLEAR_STATUS 6
|
||||
#define USBTMC_REQUEST_GET_CAPABILITIES 7
|
||||
#define USBTMC_REQUEST_INDICATOR_PULSE 64
|
||||
|
||||
/* Request values for USBTMC driver's ioctl entry point */
|
||||
#define USBTMC_IOC_NR 91
|
||||
#define USBTMC_IOCTL_INDICATOR_PULSE _IO(USBTMC_IOC_NR, 1)
|
||||
#define USBTMC_IOCTL_CLEAR _IO(USBTMC_IOC_NR, 2)
|
||||
#define USBTMC_IOCTL_ABORT_BULK_OUT _IO(USBTMC_IOC_NR, 3)
|
||||
#define USBTMC_IOCTL_ABORT_BULK_IN _IO(USBTMC_IOC_NR, 4)
|
||||
#define USBTMC_IOCTL_CLEAR_OUT_HALT _IO(USBTMC_IOC_NR, 6)
|
||||
#define USBTMC_IOCTL_CLEAR_IN_HALT _IO(USBTMC_IOC_NR, 7)
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue