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 / usb_usual.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  3.8 KB  |  126 lines

  1. /*
  2.  * Interface to the libusual.
  3.  *
  4.  * Copyright (c) 2005 Pete Zaitcev <zaitcev@redhat.com>
  5.  * Copyright (c) 1999-2002 Matthew Dharm (mdharm-usb@one-eyed-alien.net)
  6.  * Copyright (c) 1999 Michael Gee (michael@linuxspecific.com)
  7.  */
  8.  
  9. #ifndef __LINUX_USB_USUAL_H
  10. #define __LINUX_USB_USUAL_H
  11.  
  12.  
  13. /* We should do this for cleanliness... But other usb_foo.h do not do this. */
  14. /* #include <linux/usb.h> */
  15.  
  16. /*
  17.  * The flags field, which we store in usb_device_id.driver_info.
  18.  * It is compatible with the old usb-storage flags in lower 24 bits.
  19.  */
  20.  
  21. /*
  22.  * Static flag definitions.  We use this roundabout technique so that the
  23.  * proc_info() routine can automatically display a message for each flag.
  24.  */
  25. #define US_DO_ALL_FLAGS                        \
  26.     US_FLAG(SINGLE_LUN,    0x00000001)            \
  27.         /* allow access to only LUN 0 */        \
  28.     US_FLAG(NEED_OVERRIDE,    0x00000002)            \
  29.         /* unusual_devs entry is necessary */        \
  30.     US_FLAG(SCM_MULT_TARG,    0x00000004)            \
  31.         /* supports multiple targets */            \
  32.     US_FLAG(FIX_INQUIRY,    0x00000008)            \
  33.         /* INQUIRY response needs faking */        \
  34.     US_FLAG(FIX_CAPACITY,    0x00000010)            \
  35.         /* READ CAPACITY response too big */        \
  36.     US_FLAG(IGNORE_RESIDUE,    0x00000020)            \
  37.         /* reported residue is wrong */            \
  38.     US_FLAG(BULK32,        0x00000040)            \
  39.         /* Uses 32-byte CBW length */            \
  40.     US_FLAG(NOT_LOCKABLE,    0x00000080)            \
  41.         /* PREVENT/ALLOW not supported */        \
  42.     US_FLAG(GO_SLOW,    0x00000100)            \
  43.         /* Need delay after Command phase */        \
  44.     US_FLAG(NO_WP_DETECT,    0x00000200)            \
  45.         /* Don't check for write-protect */        \
  46.  
  47. #define US_FLAG(name, value)    US_FL_##name = value ,
  48. enum { US_DO_ALL_FLAGS };
  49. #undef US_FLAG
  50.  
  51. /*
  52.  * The bias field for libusual and friends.
  53.  */
  54. #define USB_US_TYPE_NONE   0
  55. #define USB_US_TYPE_STOR   1        /* usb-storage */
  56. #define USB_US_TYPE_UB     2        /* ub */
  57.  
  58. #define USB_US_TYPE(flags)         (((flags) >> 24) & 0xFF)
  59. #define USB_US_ORIG_FLAGS(flags)    ((flags) & 0x00FFFFFF)
  60.  
  61. /*
  62.  * This is probably not the best place to keep these constants, conceptually.
  63.  * But it's the only header included into all places which need them.
  64.  */
  65.  
  66. /* Sub Classes */
  67.  
  68. #define US_SC_RBC    0x01        /* Typically, flash devices */
  69. #define US_SC_8020    0x02        /* CD-ROM */
  70. #define US_SC_QIC    0x03        /* QIC-157 Tapes */
  71. #define US_SC_UFI    0x04        /* Floppy */
  72. #define US_SC_8070    0x05        /* Removable media */
  73. #define US_SC_SCSI    0x06        /* Transparent */
  74. #define US_SC_ISD200    0x07        /* ISD200 ATA */
  75. #define US_SC_MIN    US_SC_RBC
  76. #define US_SC_MAX    US_SC_ISD200
  77.  
  78. #define US_SC_DEVICE    0xff        /* Use device's value */
  79.  
  80. /* Protocols */
  81.  
  82. #define US_PR_CBI    0x00        /* Control/Bulk/Interrupt */
  83. #define US_PR_CB    0x01        /* Control/Bulk w/o interrupt */
  84. #define US_PR_BULK    0x50        /* bulk only */
  85. #ifdef CONFIG_USB_STORAGE_USBAT
  86. #define US_PR_USBAT    0x80        /* SCM-ATAPI bridge */
  87. #endif
  88. #ifdef CONFIG_USB_STORAGE_SDDR09
  89. #define US_PR_EUSB_SDDR09    0x81    /* SCM-SCSI bridge for SDDR-09 */
  90. #endif
  91. #ifdef CONFIG_USB_STORAGE_SDDR55
  92. #define US_PR_SDDR55    0x82        /* SDDR-55 (made up) */
  93. #endif
  94. #define US_PR_DPCM_USB  0xf0        /* Combination CB/SDDR09 */
  95. #ifdef CONFIG_USB_STORAGE_FREECOM
  96. #define US_PR_FREECOM   0xf1        /* Freecom */
  97. #endif
  98. #ifdef CONFIG_USB_STORAGE_DATAFAB
  99. #define US_PR_DATAFAB   0xf2        /* Datafab chipsets */
  100. #endif
  101. #ifdef CONFIG_USB_STORAGE_JUMPSHOT
  102. #define US_PR_JUMPSHOT  0xf3        /* Lexar Jumpshot */
  103. #endif
  104. #ifdef CONFIG_USB_STORAGE_ALAUDA
  105. #define US_PR_ALAUDA    0xf4        /* Alauda chipsets */
  106. #endif
  107.  
  108. #define US_PR_DEVICE    0xff        /* Use device's value */
  109.  
  110. /*
  111.  */
  112. #ifdef CONFIG_USB_LIBUSUAL
  113.  
  114. extern struct usb_device_id storage_usb_ids[];
  115. extern void usb_usual_set_present(int type);
  116. extern void usb_usual_clear_present(int type);
  117. extern int usb_usual_check_type(const struct usb_device_id *, int type);
  118. #else
  119.  
  120. #define usb_usual_set_present(t)    do { } while(0)
  121. #define usb_usual_clear_present(t)    do { } while(0)
  122. #define usb_usual_check_type(id, t)    (0)
  123. #endif /* CONFIG_USB_LIBUSUAL */
  124.  
  125. #endif /* __LINUX_USB_USUAL_H */
  126.