linux/include/linux/usb/vstusb.h
<<
>>
Prefs
   1/*****************************************************************************
   2 *  File: drivers/usb/misc/vstusb.h
   3 *
   4 *  Purpose: Support for the bulk USB Vernier Spectrophotometers
   5 *
   6 *  Author:     EQware Engineering, Inc.
   7 *              Oregon City, OR, USA 97045
   8 *
   9 *  Copyright:  2007, 2008
  10 *              Vernier Software & Technology
  11 *              Beaverton, OR, USA 97005
  12 *
  13 *  Web:        www.vernier.com
  14 *
  15 *  This program is free software; you can redistribute it and/or modify
  16 *  it under the terms of the GNU General Public License version 2 as
  17 *  published by the Free Software Foundation.
  18 *
  19 *****************************************************************************/
  20/*****************************************************************************
  21 *
  22 *  The vstusb module is a standard usb 'client' driver running on top of the
  23 *  standard usb host controller stack.
  24 *
  25 *  In general, vstusb supports standard bulk usb pipes.  It supports multiple
  26 *  devices and multiple pipes per device.
  27 *
  28 *  The vstusb driver supports two interfaces:
  29 *  1 - ioctl SEND_PIPE/RECV_PIPE - a general bulk write/read msg
  30 *      interface to any pipe with timeout support;
  31 *  2 - standard read/write with ioctl config - offers standard read/write
  32 *      interface with ioctl configured pipes and timeouts.
  33 *
  34 *  Both interfaces can be signal from other process and will abort its i/o
  35 *  operation.
  36 *
  37 *  A timeout of 0 means NO timeout.  The user can still terminate the read via
  38 *  signal.
  39 *
  40 *  If using multiple threads with this driver, the user should ensure that
  41 *  any reads, writes, or ioctls are complete before closing the device.
  42 *  Changing read/write timeouts or pipes takes effect on next read/write.
  43 *
  44 *****************************************************************************/
  45
  46struct vstusb_args {
  47        union {
  48                /* this struct is used for IOCTL_VSTUSB_SEND_PIPE,      *
  49                 * IOCTL_VSTUSB_RECV_PIPE, and read()/write() fops      */
  50                struct {
  51                        void __user     *buffer;
  52                        size_t          count;
  53                        unsigned int    timeout_ms;
  54                        int             pipe;
  55                };
  56
  57                /* this one is used for IOCTL_VSTUSB_CONFIG_RW          */
  58                struct {
  59                        int rd_pipe;
  60                        int rd_timeout_ms;
  61                        int wr_pipe;
  62                        int wr_timeout_ms;
  63                };
  64        };
  65};
  66
  67#define VST_IOC_MAGIC 'L'
  68#define VST_IOC_FIRST 0x20
  69#define IOCTL_VSTUSB_SEND_PIPE  _IO(VST_IOC_MAGIC, VST_IOC_FIRST)
  70#define IOCTL_VSTUSB_RECV_PIPE  _IO(VST_IOC_MAGIC, VST_IOC_FIRST + 1)
  71#define IOCTL_VSTUSB_CONFIG_RW  _IO(VST_IOC_MAGIC, VST_IOC_FIRST + 2)
  72