home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / linux / usbdevice_fs.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  5.4 KB  |  178 lines

  1. /*****************************************************************************/
  2.  
  3. /*
  4.  *    usbdevice_fs.h  --  USB device file system.
  5.  *
  6.  *    Copyright (C) 2000
  7.  *          Thomas Sailer (sailer@ife.ee.ethz.ch)
  8.  *
  9.  *    This program is free software; you can redistribute it and/or modify
  10.  *    it under the terms of the GNU General Public License as published by
  11.  *    the Free Software Foundation; either version 2 of the License, or
  12.  *    (at your option) any later version.
  13.  *
  14.  *    This program is distributed in the hope that it will be useful,
  15.  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  *    GNU General Public License for more details.
  18.  *
  19.  *    You should have received a copy of the GNU General Public License
  20.  *    along with this program; if not, write to the Free Software
  21.  *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22.  *
  23.  *  History:
  24.  *   0.1  04.01.2000  Created
  25.  *
  26.  *  $Id: usbdevice_fs.h,v 1.1 2000/01/06 18:40:41 tom Exp $
  27.  */
  28.  
  29. /*****************************************************************************/
  30.  
  31. #ifndef _LINUX_USBDEVICE_FS_H
  32. #define _LINUX_USBDEVICE_FS_H
  33.  
  34. #include <linux/types.h>
  35.  
  36. /* --------------------------------------------------------------------- */
  37.  
  38. #define USBDEVICE_SUPER_MAGIC 0x9fa2
  39.  
  40. /* usbdevfs ioctl codes */
  41.  
  42. struct usbdevfs_ctrltransfer {
  43.     __u8 bRequestType;
  44.     __u8 bRequest;
  45.     __u16 wValue;
  46.     __u16 wIndex;
  47.     __u16 wLength;
  48.     __u32 timeout;  /* in milliseconds */
  49.      void __user *data;
  50. };
  51.  
  52. struct usbdevfs_bulktransfer {
  53.     unsigned int ep;
  54.     unsigned int len;
  55.     unsigned int timeout; /* in milliseconds */
  56.     void __user *data;
  57. };
  58.  
  59. struct usbdevfs_setinterface {
  60.     unsigned int interface;
  61.     unsigned int altsetting;
  62. };
  63.  
  64. struct usbdevfs_disconnectsignal {
  65.     unsigned int signr;
  66.     void __user *context;
  67. };
  68.  
  69. #define USBDEVFS_MAXDRIVERNAME 255
  70.  
  71. struct usbdevfs_getdriver {
  72.     unsigned int interface;
  73.     char driver[USBDEVFS_MAXDRIVERNAME + 1];
  74. };
  75.  
  76. struct usbdevfs_connectinfo {
  77.     unsigned int devnum;
  78.     unsigned char slow;
  79. };
  80.  
  81. #define USBDEVFS_URB_SHORT_NOT_OK          1
  82. #define USBDEVFS_URB_ISO_ASAP              2
  83.  
  84. #define USBDEVFS_URB_TYPE_ISO           0
  85. #define USBDEVFS_URB_TYPE_INTERRUPT       1
  86. #define USBDEVFS_URB_TYPE_CONTROL       2
  87. #define USBDEVFS_URB_TYPE_BULK           3
  88.  
  89. struct usbdevfs_iso_packet_desc {
  90.     unsigned int length;
  91.     unsigned int actual_length;
  92.     unsigned int status;
  93. };
  94.  
  95. struct usbdevfs_urb {
  96.     unsigned char type;
  97.     unsigned char endpoint;
  98.     int status;
  99.     unsigned int flags;
  100.     void __user *buffer;
  101.     int buffer_length;
  102.     int actual_length;
  103.     int start_frame;
  104.     int number_of_packets;
  105.     int error_count;
  106.     unsigned int signr;  /* signal to be sent on error, -1 if none should be sent */
  107.     void *usercontext;
  108.     struct usbdevfs_iso_packet_desc iso_frame_desc[0];
  109. };
  110.  
  111. /* ioctls for talking directly to drivers */
  112. struct usbdevfs_ioctl {
  113.     int    ifno;        /* interface 0..N ; negative numbers reserved */
  114.     int    ioctl_code;    /* MUST encode size + direction of data so the
  115.                  * macros in <asm/ioctl.h> give correct values */
  116.     void __user *data;    /* param buffer (in, or out) */
  117. };
  118.  
  119. /* You can do most things with hubs just through control messages,
  120.  * except find out what device connects to what port. */
  121. struct usbdevfs_hub_portinfo {
  122.     char nports;        /* number of downstream ports in this hub */
  123.     char port [127];    /* e.g. port 3 connects to device 27 */
  124. };
  125.  
  126. #ifdef __KERNEL__
  127. #ifdef CONFIG_COMPAT
  128. #include <linux/compat.h>
  129. struct usbdevfs_urb32 {
  130.     unsigned char type;
  131.     unsigned char endpoint;
  132.     compat_int_t status;
  133.     compat_uint_t flags;
  134.     compat_caddr_t buffer;
  135.     compat_int_t buffer_length;
  136.     compat_int_t actual_length;
  137.     compat_int_t start_frame;
  138.     compat_int_t number_of_packets;
  139.     compat_int_t error_count;
  140.     compat_uint_t signr;
  141.     compat_caddr_t usercontext; /* unused */
  142.     struct usbdevfs_iso_packet_desc iso_frame_desc[0];
  143. };
  144.  
  145. struct usbdevfs_ioctl32 {
  146.     s32 ifno;
  147.     s32 ioctl_code;
  148.     compat_caddr_t data;
  149. };
  150. #endif
  151. #endif /* __KERNEL__ */
  152.  
  153. #define USBDEVFS_CONTROL           _IOWR('U', 0, struct usbdevfs_ctrltransfer)
  154. #define USBDEVFS_BULK              _IOWR('U', 2, struct usbdevfs_bulktransfer)
  155. #define USBDEVFS_RESETEP           _IOR('U', 3, unsigned int)
  156. #define USBDEVFS_SETINTERFACE      _IOR('U', 4, struct usbdevfs_setinterface)
  157. #define USBDEVFS_SETCONFIGURATION  _IOR('U', 5, unsigned int)
  158. #define USBDEVFS_GETDRIVER         _IOW('U', 8, struct usbdevfs_getdriver)
  159. #define USBDEVFS_SUBMITURB         _IOR('U', 10, struct usbdevfs_urb)
  160. #define USBDEVFS_SUBMITURB32       _IOR('U', 10, struct usbdevfs_urb32)
  161. #define USBDEVFS_DISCARDURB        _IO('U', 11)
  162. #define USBDEVFS_REAPURB           _IOW('U', 12, void *)
  163. #define USBDEVFS_REAPURB32         _IOW('U', 12, u32)
  164. #define USBDEVFS_REAPURBNDELAY     _IOW('U', 13, void *)
  165. #define USBDEVFS_REAPURBNDELAY32   _IOW('U', 13, u32)
  166. #define USBDEVFS_DISCSIGNAL        _IOR('U', 14, struct usbdevfs_disconnectsignal)
  167. #define USBDEVFS_CLAIMINTERFACE    _IOR('U', 15, unsigned int)
  168. #define USBDEVFS_RELEASEINTERFACE  _IOR('U', 16, unsigned int)
  169. #define USBDEVFS_CONNECTINFO       _IOW('U', 17, struct usbdevfs_connectinfo)
  170. #define USBDEVFS_IOCTL             _IOWR('U', 18, struct usbdevfs_ioctl)
  171. #define USBDEVFS_IOCTL32           _IOWR('U', 18, struct usbdevfs_ioctl32)
  172. #define USBDEVFS_HUB_PORTINFO      _IOR('U', 19, struct usbdevfs_hub_portinfo)
  173. #define USBDEVFS_RESET             _IO('U', 20)
  174. #define USBDEVFS_CLEAR_HALT        _IOR('U', 21, unsigned int)
  175. #define USBDEVFS_DISCONNECT        _IO('U', 22)
  176. #define USBDEVFS_CONNECT           _IO('U', 23)
  177. #endif /* _LINUX_USBDEVICE_FS_H */
  178.