vstusb.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. struct vstusb_args {
  46. union {
  47. /* this struct is used for IOCTL_VSTUSB_SEND_PIPE, *
  48. * IOCTL_VSTUSB_RECV_PIPE, and read()/write() fops */
  49. struct {
  50. void __user *buffer;
  51. size_t count;
  52. unsigned int timeout_ms;
  53. int pipe;
  54. };
  55. /* this one is used for IOCTL_VSTUSB_CONFIG_RW */
  56. struct {
  57. int rd_pipe;
  58. int rd_timeout_ms;
  59. int wr_pipe;
  60. int wr_timeout_ms;
  61. };
  62. };
  63. };
  64. #define VST_IOC_MAGIC 'L'
  65. #define VST_IOC_FIRST 0x20
  66. #define IOCTL_VSTUSB_SEND_PIPE _IO(VST_IOC_MAGIC, VST_IOC_FIRST)
  67. #define IOCTL_VSTUSB_RECV_PIPE _IO(VST_IOC_MAGIC, VST_IOC_FIRST + 1)
  68. #define IOCTL_VSTUSB_CONFIG_RW _IO(VST_IOC_MAGIC, VST_IOC_FIRST + 2)