home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / usb_usual.h < prev    next >
Encoding:
C/C++ Source or Header  |  2009-09-09  |  4.4 KB  |  141 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.     US_FLAG(MAX_SECTORS_64,    0x00000400)            \
  47.         /* Sets max_sectors to 64    */            \
  48.     US_FLAG(IGNORE_DEVICE,    0x00000800)            \
  49.         /* Don't claim device */            \
  50.     US_FLAG(CAPACITY_HEURISTICS,    0x00001000)        \
  51.         /* sometimes sizes is too big */        \
  52.     US_FLAG(MAX_SECTORS_MIN,0x00002000)            \
  53.         /* Sets max_sectors to arch min */        \
  54.     US_FLAG(BULK_IGNORE_TAG,0x00004000)            \
  55.         /* Ignore tag mismatch in bulk operations */    \
  56.     US_FLAG(CAPACITY_OK,    0x00010000)            \
  57.         /* READ CAPACITY response is correct */
  58.  
  59. #define US_FLAG(name, value)    US_FL_##name = value ,
  60. enum { US_DO_ALL_FLAGS };
  61. #undef US_FLAG
  62.  
  63. /*
  64.  * The bias field for libusual and friends.
  65.  */
  66. #define USB_US_TYPE_NONE   0
  67. #define USB_US_TYPE_STOR   1        /* usb-storage */
  68. #define USB_US_TYPE_UB     2        /* ub */
  69.  
  70. #define USB_US_TYPE(flags)         (((flags) >> 24) & 0xFF)
  71. #define USB_US_ORIG_FLAGS(flags)    ((flags) & 0x00FFFFFF)
  72.  
  73. /*
  74.  * This is probably not the best place to keep these constants, conceptually.
  75.  * But it's the only header included into all places which need them.
  76.  */
  77.  
  78. /* Sub Classes */
  79.  
  80. #define US_SC_RBC    0x01        /* Typically, flash devices */
  81. #define US_SC_8020    0x02        /* CD-ROM */
  82. #define US_SC_QIC    0x03        /* QIC-157 Tapes */
  83. #define US_SC_UFI    0x04        /* Floppy */
  84. #define US_SC_8070    0x05        /* Removable media */
  85. #define US_SC_SCSI    0x06        /* Transparent */
  86. #define US_SC_LOCKABLE    0x07        /* Password-protected */
  87.  
  88. #define US_SC_ISD200    0xf0        /* ISD200 ATA */
  89. #define US_SC_CYP_ATACB 0xf1        /* Cypress ATACB */
  90. #define US_SC_DEVICE    0xff        /* Use device's value */
  91.  
  92. /* Protocols */
  93.  
  94. #define US_PR_CBI    0x00        /* Control/Bulk/Interrupt */
  95. #define US_PR_CB    0x01        /* Control/Bulk w/o interrupt */
  96. #define US_PR_BULK    0x50        /* bulk only */
  97. #ifdef CONFIG_USB_STORAGE_USBAT
  98. #define US_PR_USBAT    0x80        /* SCM-ATAPI bridge */
  99. #endif
  100. #ifdef CONFIG_USB_STORAGE_SDDR09
  101. #define US_PR_EUSB_SDDR09    0x81    /* SCM-SCSI bridge for SDDR-09 */
  102. #endif
  103. #ifdef CONFIG_USB_STORAGE_SDDR55
  104. #define US_PR_SDDR55    0x82        /* SDDR-55 (made up) */
  105. #endif
  106. #define US_PR_DPCM_USB  0xf0        /* Combination CB/SDDR09 */
  107. #ifdef CONFIG_USB_STORAGE_FREECOM
  108. #define US_PR_FREECOM   0xf1        /* Freecom */
  109. #endif
  110. #ifdef CONFIG_USB_STORAGE_DATAFAB
  111. #define US_PR_DATAFAB   0xf2        /* Datafab chipsets */
  112. #endif
  113. #ifdef CONFIG_USB_STORAGE_JUMPSHOT
  114. #define US_PR_JUMPSHOT  0xf3        /* Lexar Jumpshot */
  115. #endif
  116. #ifdef CONFIG_USB_STORAGE_ALAUDA
  117. #define US_PR_ALAUDA    0xf4        /* Alauda chipsets */
  118. #endif
  119. #ifdef CONFIG_USB_STORAGE_KARMA
  120. #define US_PR_KARMA     0xf5        /* Rio Karma */
  121. #endif
  122.  
  123. #define US_PR_DEVICE    0xff        /* Use device's value */
  124.  
  125. /*
  126.  */
  127. #ifdef CONFIG_USB_LIBUSUAL
  128.  
  129. extern struct usb_device_id storage_usb_ids[];
  130. extern void usb_usual_set_present(int type);
  131. extern void usb_usual_clear_present(int type);
  132. extern int usb_usual_check_type(const struct usb_device_id *, int type);
  133. #else
  134.  
  135. #define usb_usual_set_present(t)    do { } while(0)
  136. #define usb_usual_clear_present(t)    do { } while(0)
  137. #define usb_usual_check_type(id, t)    (0)
  138. #endif /* CONFIG_USB_LIBUSUAL */
  139.  
  140. #endif /* __LINUX_USB_USUAL_H */
  141.