Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 /*
0003  * Copyright (C) 2007 Stefan Kopp, Gechingen, Germany
0004  * Copyright (C) 2008 Novell, Inc.
0005  * Copyright (C) 2008 Greg Kroah-Hartman <gregkh@suse.de>
0006  * Copyright (C) 2015 Dave Penkler <dpenkler@gmail.com>
0007  * Copyright (C) 2018 IVI Foundation, Inc.
0008  *
0009  * This file holds USB constants defined by the USB Device Class
0010  * and USB488 Subclass Definitions for Test and Measurement devices
0011  * published by the USB-IF.
0012  *
0013  * It also has the ioctl and capability definitions for the
0014  * usbtmc kernel driver that userspace needs to know about.
0015  */
0016 
0017 #ifndef __LINUX_USB_TMC_H
0018 #define __LINUX_USB_TMC_H
0019 
0020 #include <linux/types.h>   /* __u8 etc */
0021 
0022 /* USB TMC status values */
0023 #define USBTMC_STATUS_SUCCESS               0x01
0024 #define USBTMC_STATUS_PENDING               0x02
0025 #define USBTMC_STATUS_FAILED                0x80
0026 #define USBTMC_STATUS_TRANSFER_NOT_IN_PROGRESS      0x81
0027 #define USBTMC_STATUS_SPLIT_NOT_IN_PROGRESS     0x82
0028 #define USBTMC_STATUS_SPLIT_IN_PROGRESS         0x83
0029 
0030 /* USB TMC requests values */
0031 #define USBTMC_REQUEST_INITIATE_ABORT_BULK_OUT      1
0032 #define USBTMC_REQUEST_CHECK_ABORT_BULK_OUT_STATUS  2
0033 #define USBTMC_REQUEST_INITIATE_ABORT_BULK_IN       3
0034 #define USBTMC_REQUEST_CHECK_ABORT_BULK_IN_STATUS   4
0035 #define USBTMC_REQUEST_INITIATE_CLEAR           5
0036 #define USBTMC_REQUEST_CHECK_CLEAR_STATUS       6
0037 #define USBTMC_REQUEST_GET_CAPABILITIES         7
0038 #define USBTMC_REQUEST_INDICATOR_PULSE          64
0039 #define USBTMC488_REQUEST_READ_STATUS_BYTE      128
0040 #define USBTMC488_REQUEST_REN_CONTROL           160
0041 #define USBTMC488_REQUEST_GOTO_LOCAL            161
0042 #define USBTMC488_REQUEST_LOCAL_LOCKOUT         162
0043 
0044 struct usbtmc_request {
0045     __u8 bRequestType;
0046     __u8 bRequest;
0047     __u16 wValue;
0048     __u16 wIndex;
0049     __u16 wLength;
0050 } __attribute__ ((packed));
0051 
0052 struct usbtmc_ctrlrequest {
0053     struct usbtmc_request req;
0054     void __user *data; /* pointer to user space */
0055 } __attribute__ ((packed));
0056 
0057 struct usbtmc_termchar {
0058     __u8 term_char;
0059     __u8 term_char_enabled;
0060 } __attribute__ ((packed));
0061 
0062 /*
0063  * usbtmc_message->flags:
0064  */
0065 #define USBTMC_FLAG_ASYNC       0x0001
0066 #define USBTMC_FLAG_APPEND      0x0002
0067 #define USBTMC_FLAG_IGNORE_TRAILER  0x0004
0068 
0069 struct usbtmc_message {
0070     __u32 transfer_size; /* size of bytes to transfer */
0071     __u32 transferred; /* size of received/written bytes */
0072     __u32 flags; /* bit 0: 0 = synchronous; 1 = asynchronous */
0073     void __user *message; /* pointer to header and data in user space */
0074 } __attribute__ ((packed));
0075 
0076 /* Request values for USBTMC driver's ioctl entry point */
0077 #define USBTMC_IOC_NR           91
0078 #define USBTMC_IOCTL_INDICATOR_PULSE    _IO(USBTMC_IOC_NR, 1)
0079 #define USBTMC_IOCTL_CLEAR      _IO(USBTMC_IOC_NR, 2)
0080 #define USBTMC_IOCTL_ABORT_BULK_OUT _IO(USBTMC_IOC_NR, 3)
0081 #define USBTMC_IOCTL_ABORT_BULK_IN  _IO(USBTMC_IOC_NR, 4)
0082 #define USBTMC_IOCTL_CLEAR_OUT_HALT _IO(USBTMC_IOC_NR, 6)
0083 #define USBTMC_IOCTL_CLEAR_IN_HALT  _IO(USBTMC_IOC_NR, 7)
0084 #define USBTMC_IOCTL_CTRL_REQUEST   _IOWR(USBTMC_IOC_NR, 8, struct usbtmc_ctrlrequest)
0085 #define USBTMC_IOCTL_GET_TIMEOUT    _IOR(USBTMC_IOC_NR, 9, __u32)
0086 #define USBTMC_IOCTL_SET_TIMEOUT    _IOW(USBTMC_IOC_NR, 10, __u32)
0087 #define USBTMC_IOCTL_EOM_ENABLE         _IOW(USBTMC_IOC_NR, 11, __u8)
0088 #define USBTMC_IOCTL_CONFIG_TERMCHAR    _IOW(USBTMC_IOC_NR, 12, struct usbtmc_termchar)
0089 #define USBTMC_IOCTL_WRITE      _IOWR(USBTMC_IOC_NR, 13, struct usbtmc_message)
0090 #define USBTMC_IOCTL_READ       _IOWR(USBTMC_IOC_NR, 14, struct usbtmc_message)
0091 #define USBTMC_IOCTL_WRITE_RESULT   _IOWR(USBTMC_IOC_NR, 15, __u32)
0092 #define USBTMC_IOCTL_API_VERSION    _IOR(USBTMC_IOC_NR, 16, __u32)
0093 
0094 #define USBTMC488_IOCTL_GET_CAPS    _IOR(USBTMC_IOC_NR, 17, unsigned char)
0095 #define USBTMC488_IOCTL_READ_STB    _IOR(USBTMC_IOC_NR, 18, unsigned char)
0096 #define USBTMC488_IOCTL_REN_CONTROL _IOW(USBTMC_IOC_NR, 19, unsigned char)
0097 #define USBTMC488_IOCTL_GOTO_LOCAL  _IO(USBTMC_IOC_NR, 20)
0098 #define USBTMC488_IOCTL_LOCAL_LOCKOUT   _IO(USBTMC_IOC_NR, 21)
0099 #define USBTMC488_IOCTL_TRIGGER     _IO(USBTMC_IOC_NR, 22)
0100 #define USBTMC488_IOCTL_WAIT_SRQ    _IOW(USBTMC_IOC_NR, 23, __u32)
0101 
0102 #define USBTMC_IOCTL_MSG_IN_ATTR    _IOR(USBTMC_IOC_NR, 24, __u8)
0103 #define USBTMC_IOCTL_AUTO_ABORT     _IOW(USBTMC_IOC_NR, 25, __u8)
0104 
0105 #define USBTMC_IOCTL_GET_STB            _IOR(USBTMC_IOC_NR, 26, __u8)
0106 #define USBTMC_IOCTL_GET_SRQ_STB        _IOR(USBTMC_IOC_NR, 27, __u8)
0107 
0108 /* Cancel and cleanup asynchronous calls */
0109 #define USBTMC_IOCTL_CANCEL_IO      _IO(USBTMC_IOC_NR, 35)
0110 #define USBTMC_IOCTL_CLEANUP_IO     _IO(USBTMC_IOC_NR, 36)
0111 
0112 /* Driver encoded usb488 capabilities */
0113 #define USBTMC488_CAPABILITY_TRIGGER         1
0114 #define USBTMC488_CAPABILITY_SIMPLE          2
0115 #define USBTMC488_CAPABILITY_REN_CONTROL     2
0116 #define USBTMC488_CAPABILITY_GOTO_LOCAL      2
0117 #define USBTMC488_CAPABILITY_LOCAL_LOCKOUT   2
0118 #define USBTMC488_CAPABILITY_488_DOT_2       4
0119 #define USBTMC488_CAPABILITY_DT1             16
0120 #define USBTMC488_CAPABILITY_RL1             32
0121 #define USBTMC488_CAPABILITY_SR1             64
0122 #define USBTMC488_CAPABILITY_FULL_SCPI       128
0123 
0124 #endif