Author: thompsa
Date: Thu Dec 31 00:19:16 2009
New Revision: 201314
URL: http://svn.freebsd.org/changeset/base/201314

Log:
  MFC r200886
  
   Move all Mass Storage Quirks over to the USB quirk module.
  
  Submitted by: Hans Petter Selasky

Modified:
  stable/8/sys/dev/usb/quirk/usb_quirk.c
  stable/8/sys/dev/usb/quirk/usb_quirk.h
  stable/8/sys/dev/usb/storage/umass.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/dev/usb/quirk/usb_quirk.c
==============================================================================
--- stable/8/sys/dev/usb/quirk/usb_quirk.c      Thu Dec 31 00:18:38 2009        
(r201313)
+++ stable/8/sys/dev/usb/quirk/usb_quirk.c      Thu Dec 31 00:19:16 2009        
(r201314)
@@ -66,7 +66,7 @@ MODULE_VERSION(usb_quirk, 1);
 #define        USB_QUIRK_ENTRY(v,p,l,h,...) \
   .vid = (v), .pid = (p), .lo_rev = (l), .hi_rev = (h), .quirks = { 
__VA_ARGS__ }
 
-#define        USB_DEV_QUIRKS_MAX 128
+#define        USB_DEV_QUIRKS_MAX 256
 #define        USB_SUB_QUIRKS_MAX 8
 
 struct usb_quirk_entry {
@@ -183,10 +183,396 @@ static struct usb_quirk_entry usb_quirks
        {USB_QUIRK_ENTRY(USB_VENDOR_CURITEL, USB_PRODUCT_CURITEL_UM175,
            0x0000, 0xFFFF, UQ_ASSUME_CM_OVER_DATA)},
 
+       /* USB Mass Storage Class Quirks */
+       {USB_QUIRK_ENTRY(USB_VENDOR_ASAHIOPTICAL, 0,
+           0x0000, 0xFFFF, UQ_MSC_NO_RS_CLEAR_UA, UQ_MATCH_VENDOR_ONLY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ADDON, USB_PRODUCT_ADDON_ATTACHE, 0x0000,
+           0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ADDON, USB_PRODUCT_ADDON_A256MB,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ADDON, USB_PRODUCT_ADDON_DISKPRO512,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ADDONICS2, USB_PRODUCT_ADDONICS2_CABLE_205,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_AIPTEK, USB_PRODUCT_AIPTEK_POCKETCAM3M,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_AIPTEK2, USB_PRODUCT_AIPTEK2_SUNPLUS_TECH,
+           0x0000, 0xFFFF, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ALCOR, USB_PRODUCT_ALCOR_SDCR_6335,
+           0x0000, 0xFFFF, UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ALCOR, USB_PRODUCT_ALCOR_AU6390,
+           0x0000, 0xFFFF, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ALCOR, USB_PRODUCT_ALCOR_UMCR_9361,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ALCOR, USB_PRODUCT_ALCOR_TRANSCEND,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ASAHIOPTICAL, 
USB_PRODUCT_ASAHIOPTICAL_OPTIO230,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ASAHIOPTICAL, 
USB_PRODUCT_ASAHIOPTICAL_OPTIO330,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_USB2SCSI,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_CASIO, USB_PRODUCT_CASIO_QV_DIGICAM,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_CCYU, USB_PRODUCT_CCYU_ED1064,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_CENTURY, USB_PRODUCT_CENTURY_EX35QUAT,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_FORCE_SHORT_INQ, UQ_MSC_NO_START_STOP,
+           UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_XX6830XX,
+           0x0000, 0xFFFF, UQ_MSC_NO_GETMAXLUN, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_DESKNOTE, USB_PRODUCT_DESKNOTE_UCR_61S2B,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_DMI, USB_PRODUCT_DMI_CFSM_RW,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_STYLUS_875DC,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_EPSON, USB_PRODUCT_EPSON_STYLUS_895,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_FEIYA, USB_PRODUCT_FEIYA_5IN1,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_FREECOM, USB_PRODUCT_FREECOM_DVD,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_FUJIPHOTO, USB_PRODUCT_FUJIPHOTO_MASS0100,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI_I, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_NO_RS_CLEAR_UA)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_GENESYS, USB_PRODUCT_GENESYS_GL641USB2IDE,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_FORCE_SHORT_INQ, UQ_MSC_NO_START_STOP, UQ_MSC_IGNORE_RESIDUE,
+           UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_GENESYS, USB_PRODUCT_GENESYS_GL641USB2IDE_2,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_FORCE_SHORT_INQ, UQ_MSC_NO_START_STOP, 
UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_GENESYS, USB_PRODUCT_GENESYS_GL641USB,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_FORCE_SHORT_INQ, UQ_MSC_NO_START_STOP, 
UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_GENESYS, USB_PRODUCT_GENESYS_GL641USB_2,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_WRONG_CSWSIG)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_HAGIWARA, USB_PRODUCT_HAGIWARA_FG,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_HAGIWARA, USB_PRODUCT_HAGIWARA_FGSM,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_HITACHI, 
USB_PRODUCT_HITACHI_DVDCAM_DZ_MV100A,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_HITACHI, USB_PRODUCT_HITACHI_DVDCAM_USB,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI_I, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_HP, USB_PRODUCT_HP_CDW4E,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_ATAPI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_HP, USB_PRODUCT_HP_CDW8200,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI_I, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_START_STOP)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_IMAGINATION, USB_PRODUCT_IMAGINATION_DBX1,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_WRONG_CSWSIG)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_INSYSTEM, USB_PRODUCT_INSYSTEM_USBCABLE,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_START_STOP, 
UQ_MSC_ALT_IFACE_1)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_INSYSTEM, USB_PRODUCT_INSYSTEM_ATAPI,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_RBC)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_INSYSTEM, USB_PRODUCT_INSYSTEM_STORAGE_V2,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_RBC)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_IODATA, USB_PRODUCT_IODATA_IU_CD2,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_IODATA, USB_PRODUCT_IODATA_DVR_UEH8,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_IOMEGA, USB_PRODUCT_IOMEGA_ZIP100,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_TEST_UNIT_READY)}, /* XXX ZIP drives can also use ATAPI */
+       {USB_QUIRK_ENTRY(USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_FINECAM_L3,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_FINECAM_S3X,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_FINECAM_S4,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_FINECAM_S5,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_LACIE, USB_PRODUCT_LACIE_HD,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_RBC)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_LEXAR, USB_PRODUCT_LEXAR_CF_READER,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_LEXAR, USB_PRODUCT_LEXAR_JUMPSHOT,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_LOGITEC, USB_PRODUCT_LOGITEC_LDR_H443SU2,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_LOGITEC, USB_PRODUCT_LOGITEC_LDR_H443U2,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_DUBPXXG,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_FORCE_SHORT_INQ, UQ_MSC_NO_START_STOP, 
UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MICROTECH, USB_PRODUCT_MICROTECH_DPCM,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_START_STOP)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MICROTECH, USB_PRODUCT_MICROTECH_SCSIDB25,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MICROTECH, USB_PRODUCT_MICROTECH_SCSIHD50,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MINOLTA, USB_PRODUCT_MINOLTA_E223,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MINOLTA, USB_PRODUCT_MINOLTA_F300,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MITSUMI, USB_PRODUCT_MITSUMI_CDRRW,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI | UQ_MSC_FORCE_PROTO_ATAPI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MITSUMI, USB_PRODUCT_MITSUMI_FDD,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MOTOROLA2, USB_PRODUCT_MOTOROLA2_E398,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_FORCE_SHORT_INQ, UQ_MSC_NO_INQUIRY_EVPD, 
UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MPMAN, 0,
+           0x0000, 0xFFFF, UQ_MSC_NO_SYNC_CACHE, UQ_MATCH_VENDOR_ONLY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MSYSTEMS, USB_PRODUCT_MSYSTEMS_DISKONKEY,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_IGNORE_RESIDUE, UQ_MSC_NO_GETMAXLUN, UQ_MSC_NO_RS_CLEAR_UA)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MSYSTEMS, USB_PRODUCT_MSYSTEMS_DISKONKEY2,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_ATAPI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MYSON, USB_PRODUCT_MYSON_HEDEN,
+           0x0000, 0xFFFF, UQ_MSC_IGNORE_RESIDUE, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MYSON, USB_PRODUCT_MYSON_HEDEN_8813,
+           0x0000, 0xFFFF, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MYSON, USB_PRODUCT_MYSON_STARREADER,
+           0x0000, 0xFFFF, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_NEODIO, USB_PRODUCT_NEODIO_ND3260,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_FORCE_SHORT_INQ)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_NETAC, USB_PRODUCT_NETAC_CF_CARD,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_NETAC, USB_PRODUCT_NETAC_ONLYDISK,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_NETCHIP, USB_PRODUCT_NETCHIP_CLIK_40,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_ATAPI, UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_NIKON, USB_PRODUCT_NIKON_D300,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_OLYMPUS, USB_PRODUCT_OLYMPUS_C1,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_WRONG_CSWSIG)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_OLYMPUS, USB_PRODUCT_OLYMPUS_C700,
+           0x0000, 0xFFFF, UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_SDS_HOTFIND_D,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_GETMAXLUN, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_CFMS_RW,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_CFSM_COMBO,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_CFSM_READER,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_CFSM_READER2,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ONSPEC, 
USB_PRODUCT_ONSPEC_MDCFE_B_CF_READER,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_MDSM_B_READER,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_READER,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_UCF100,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_NO_INQUIRY | UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ONSPEC2, 
USB_PRODUCT_ONSPEC2_IMAGEMATE_SDDR55,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_PANASONIC, USB_PRODUCT_PANASONIC_KXL840AN,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_PANASONIC, USB_PRODUCT_PANASONIC_KXLCB20AN,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_PANASONIC, USB_PRODUCT_PANASONIC_KXLCB35AN,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_PANASONIC, USB_PRODUCT_PANASONIC_LS120CAM,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_UFI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_PHILIPS, USB_PRODUCT_PHILIPS_SPE3030CC,
+           0x0000, 0xFFFF, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_PLEXTOR, USB_PRODUCT_PLEXTOR_40_12_40U,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_TEST_UNIT_READY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_PNY, USB_PRODUCT_PNY_ATTACHE2,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_IGNORE_RESIDUE, UQ_MSC_NO_START_STOP)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SAMSUNG_TECHWIN, 
USB_PRODUCT_SAMSUNG_TECHWIN_DIGIMAX_410,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDDR05A,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_READ_CAP_OFFBY1, UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDDR09,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_READ_CAP_OFFBY1,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDDR12,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_READ_CAP_OFFBY1, UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDCZ2_256,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDCZ4_128,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDCZ4_256,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDDR31,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_READ_CAP_OFFBY1)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SCANLOGIC, USB_PRODUCT_SCANLOGIC_SL11R,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_EUSB,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI_I, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_START_STOP, 
UQ_MSC_SHUTTLE_INIT)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_CDRW,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_ATAPI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_CF,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_ATAPI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_EUSBATAPI,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_ATAPI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_EUSBCFSM,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_EUSCSI,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_HIFD,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_SDDR09,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_ZIOMMC,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SIGMATEL, USB_PRODUCT_SIGMATEL_I_BEAD100,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_SHUTTLE_INIT)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SIIG, USB_PRODUCT_SIIG_WINTERREADER,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SKANHEX, USB_PRODUCT_SKANHEX_MD_7425,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SKANHEX, USB_PRODUCT_SKANHEX_SX_520Z,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_HANDYCAM,
+           0x0500, 0x0500, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_RBC,
+           UQ_MSC_RBC_PAD_TO_12)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_CLIE_40_MS,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_DSC,
+           0x0500, 0x0500, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_RBC,
+           UQ_MSC_RBC_PAD_TO_12)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_DSC,
+           0x0600, 0x0600, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_RBC,
+           UQ_MSC_RBC_PAD_TO_12)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_DSC,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_RBC)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_HANDYCAM,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_RBC)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_MSC,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_RBC)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_MS_MSC_U03,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_UFI,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_MS_NW_MS7,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_MS_PEG_N760C,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_MSACUS1,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SONY, USB_PRODUCT_SONY_PORTABLE_HDD_V2,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_SUPERTOP, USB_PRODUCT_SUPERTOP_IDE,
+           0x0000, 0xFFFF, UQ_MSC_IGNORE_RESIDUE, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_TAUGA, USB_PRODUCT_TAUGA_CAMERAMATE,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_TEAC, USB_PRODUCT_TEAC_FD05PUB,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_UFI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_TECLAST, USB_PRODUCT_TECLAST_TLC300,
+           0x0000, 0xFFFF, UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_TREK, USB_PRODUCT_TREK_MEMKEY,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_TREK, USB_PRODUCT_TREK_THUMBDRIVE_8MB,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_TRUMPION, USB_PRODUCT_TRUMPION_C3310,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_UFI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_TRUMPION, USB_PRODUCT_TRUMPION_MP3,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_RBC)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_TRUMPION, USB_PRODUCT_TRUMPION_T33520,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_TWINMOS, USB_PRODUCT_TWINMOS_MDIV,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_VIA, USB_PRODUCT_VIA_USB2IDEBRIDGE,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_VIVITAR, USB_PRODUCT_VIVITAR_35XX,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_WESTERN, USB_PRODUCT_WESTERN_COMBO,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_FORCE_SHORT_INQ, UQ_MSC_NO_START_STOP, 
UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_WESTERN, USB_PRODUCT_WESTERN_EXTHDD,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_FORCE_SHORT_INQ, UQ_MSC_NO_START_STOP, 
UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_WESTERN, USB_PRODUCT_WESTERN_MYBOOK,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY_EVPD)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_WESTERN, USB_PRODUCT_WESTERN_MYPASSWORD,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_SHORT_INQ)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_WINMAXGROUP, 
USB_PRODUCT_WINMAXGROUP_FLASH64MC,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_YANO, USB_PRODUCT_YANO_FW800HD,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_FORCE_SHORT_INQ, UQ_MSC_NO_START_STOP, 
UQ_MSC_IGNORE_RESIDUE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_YANO, USB_PRODUCT_YANO_U640MO,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI_I, UQ_MSC_FORCE_PROTO_ATAPI,
+           UQ_MSC_FORCE_SHORT_INQ)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_YEDATA, USB_PRODUCT_YEDATA_FLASHBUSTERU,
+           0x0000, 0x007F, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_UFI,
+           UQ_MSC_NO_RS_CLEAR_UA, UQ_MSC_FLOPPY_SPEED,
+           UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_YEDATA, USB_PRODUCT_YEDATA_FLASHBUSTERU,
+           0x0080, 0x0080, UQ_MSC_FORCE_WIRE_CBI_I, UQ_MSC_FORCE_PROTO_UFI,
+           UQ_MSC_NO_RS_CLEAR_UA, UQ_MSC_FLOPPY_SPEED,
+           UQ_MSC_NO_TEST_UNIT_READY, UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_YEDATA, USB_PRODUCT_YEDATA_FLASHBUSTERU,
+           0x0081, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI_I, UQ_MSC_FORCE_PROTO_UFI,
+           UQ_MSC_NO_RS_CLEAR_UA, UQ_MSC_FLOPPY_SPEED, UQ_MSC_NO_GETMAXLUN)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ZORAN, USB_PRODUCT_ZORAN_EX20DSC,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_CBI, UQ_MSC_FORCE_PROTO_ATAPI)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_MEIZU, USB_PRODUCT_MEIZU_M6_SL,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_INQUIRY, UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ACTIONS, USB_PRODUCT_ACTIONS_MP4,
+           0x0000, 0xFFFF, UQ_MSC_FORCE_WIRE_BBB, UQ_MSC_FORCE_PROTO_SCSI,
+           UQ_MSC_NO_SYNC_CACHE)},
+       {USB_QUIRK_ENTRY(USB_VENDOR_ASUS, USB_PRODUCT_ASUS_GMSC,
+           0x0000, 0xFFFF, UQ_MSC_NO_SYNC_CACHE)},
 };
 
 static const char *usb_quirk_str[USB_QUIRK_MAX] = {
        [UQ_NONE]               = "UQ_NONE",
+       [UQ_MATCH_VENDOR_ONLY]  = "UQ_MATCH_VENDOR_ONLY",
        [UQ_AUDIO_SWAP_LR]      = "UQ_AUDIO_SWAP_LR",
        [UQ_AU_INP_ASYNC]       = "UQ_AU_INP_ASYNC",
        [UQ_AU_NO_FRAC]         = "UQ_AU_NO_FRAC",
@@ -210,7 +596,29 @@ static const char *usb_quirk_str[USB_QUI
        [UQ_CFG_INDEX_3]        = "UQ_CFG_INDEX_3",
        [UQ_CFG_INDEX_4]        = "UQ_CFG_INDEX_4",
        [UQ_CFG_INDEX_0]        = "UQ_CFG_INDEX_0",
-       [UQ_ASSUME_CM_OVER_DATA]= "UQ_ASSUME_CM_OVER_DATA",
+       [UQ_ASSUME_CM_OVER_DATA]        = "UQ_ASSUME_CM_OVER_DATA",
+       [UQ_MSC_NO_TEST_UNIT_READY]     = "UQ_MSC_NO_TEST_UNIT_READY",
+       [UQ_MSC_NO_RS_CLEAR_UA]         = "UQ_MSC_NO_RS_CLEAR_UA",
+       [UQ_MSC_NO_START_STOP]          = "UQ_MSC_NO_START_STOP",
+       [UQ_MSC_NO_GETMAXLUN]           = "UQ_MSC_NO_GETMAXLUN",
+       [UQ_MSC_NO_INQUIRY]             = "UQ_MSC_NO_INQUIRY",
+       [UQ_MSC_NO_INQUIRY_EVPD]        = "UQ_MSC_NO_INQUIRY_EVPD",
+       [UQ_MSC_NO_SYNC_CACHE]          = "UQ_MSC_NO_SYNC_CACHE",
+       [UQ_MSC_SHUTTLE_INIT]           = "UQ_MSC_SHUTTLE_INIT",
+       [UQ_MSC_ALT_IFACE_1]            = "UQ_MSC_ALT_IFACE_1",
+       [UQ_MSC_FLOPPY_SPEED]           = "UQ_MSC_FLOPPY_SPEED",
+       [UQ_MSC_IGNORE_RESIDUE]         = "UQ_MSC_IGNORE_RESIDUE",
+       [UQ_MSC_WRONG_CSWSIG]           = "UQ_MSC_WRONG_CSWSIG",
+       [UQ_MSC_RBC_PAD_TO_12]          = "UQ_MSC_RBC_PAD_TO_12",
+       [UQ_MSC_READ_CAP_OFFBY1]        = "UQ_MSC_READ_CAP_OFFBY1",
+       [UQ_MSC_FORCE_SHORT_INQ]        = "UQ_MSC_FORCE_SHORT_INQ",
+       [UQ_MSC_FORCE_WIRE_BBB]         = "UQ_MSC_FORCE_WIRE_BBB",
+       [UQ_MSC_FORCE_WIRE_CBI]         = "UQ_MSC_FORCE_WIRE_CBI",
+       [UQ_MSC_FORCE_WIRE_CBI_I]       = "UQ_MSC_FORCE_WIRE_CBI_I",
+       [UQ_MSC_FORCE_PROTO_SCSI]       = "UQ_MSC_FORCE_PROTO_SCSI",
+       [UQ_MSC_FORCE_PROTO_ATAPI]      = "UQ_MSC_FORCE_PROTO_ATAPI",
+       [UQ_MSC_FORCE_PROTO_UFI]        = "UQ_MSC_FORCE_PROTO_UFI",
+       [UQ_MSC_FORCE_PROTO_RBC]        = "UQ_MSC_FORCE_PROTO_RBC",
 };
 
 /*------------------------------------------------------------------------*
@@ -246,11 +654,22 @@ usb_test_quirk_by_info(const struct usbd
        for (x = 0; x != USB_DEV_QUIRKS_MAX; x++) {
                /* see if quirk information does not match */
                if ((usb_quirks[x].vid != info->idVendor) ||
-                   (usb_quirks[x].pid != info->idProduct) ||
                    (usb_quirks[x].lo_rev > info->bcdDevice) ||
                    (usb_quirks[x].hi_rev < info->bcdDevice)) {
                        continue;
                }
+               /* see if quirk only should match vendor ID */
+               if (usb_quirks[x].pid != info->idProduct) {
+                       if (usb_quirks[x].pid != 0)
+                               continue;
+
+                       for (y = 0; y != USB_SUB_QUIRKS_MAX; y++) {
+                               if (usb_quirks[x].quirks[y] == 
UQ_MATCH_VENDOR_ONLY)
+                                       break;
+                       }
+                       if (y == USB_SUB_QUIRKS_MAX)
+                               continue;
+               }
                /* lookup quirk */
                for (y = 0; y != USB_SUB_QUIRKS_MAX; y++) {
                        if (usb_quirks[x].quirks[y] == quirk) {

Modified: stable/8/sys/dev/usb/quirk/usb_quirk.h
==============================================================================
--- stable/8/sys/dev/usb/quirk/usb_quirk.h      Thu Dec 31 00:18:38 2009        
(r201313)
+++ stable/8/sys/dev/usb/quirk/usb_quirk.h      Thu Dec 31 00:19:16 2009        
(r201314)
@@ -30,6 +30,11 @@
 /* NOTE: UQ_NONE is not a valid quirk */
 enum { /* keep in sync with usb_quirk_str table */
        UQ_NONE,
+
+       UQ_MATCH_VENDOR_ONLY,
+
+       /* Various quirks */
+
        UQ_AUDIO_SWAP_LR,       /* left and right sound channels are swapped */
        UQ_AU_INP_ASYNC,        /* input is async despite claim of adaptive */
        UQ_AU_NO_FRAC,          /* don't adjust for fractional samples */
@@ -54,6 +59,31 @@ enum {       /* keep in sync with usb_quirk_st
        UQ_CFG_INDEX_4,         /* select configuration index 4 by default */
        UQ_CFG_INDEX_0,         /* select configuration index 0 by default */
        UQ_ASSUME_CM_OVER_DATA, /* modem device breaks on cm over data */
+
+       /* USB Mass Storage Quirks. See "storage/umass.c" for a detailed 
description. */
+       UQ_MSC_NO_TEST_UNIT_READY,
+       UQ_MSC_NO_RS_CLEAR_UA,
+       UQ_MSC_NO_START_STOP,
+       UQ_MSC_NO_GETMAXLUN,
+       UQ_MSC_NO_INQUIRY,
+       UQ_MSC_NO_INQUIRY_EVPD,
+       UQ_MSC_NO_SYNC_CACHE,
+       UQ_MSC_SHUTTLE_INIT,
+       UQ_MSC_ALT_IFACE_1,
+       UQ_MSC_FLOPPY_SPEED,
+       UQ_MSC_IGNORE_RESIDUE,
+       UQ_MSC_WRONG_CSWSIG,
+       UQ_MSC_RBC_PAD_TO_12,
+       UQ_MSC_READ_CAP_OFFBY1,
+       UQ_MSC_FORCE_SHORT_INQ,
+       UQ_MSC_FORCE_WIRE_BBB,
+       UQ_MSC_FORCE_WIRE_CBI,
+       UQ_MSC_FORCE_WIRE_CBI_I,
+       UQ_MSC_FORCE_PROTO_SCSI,
+       UQ_MSC_FORCE_PROTO_ATAPI,
+       UQ_MSC_FORCE_PROTO_UFI,
+       UQ_MSC_FORCE_PROTO_RBC,
+
        USB_QUIRK_MAX
 };
 

Modified: stable/8/sys/dev/usb/storage/umass.c
==============================================================================
--- stable/8/sys/dev/usb/storage/umass.c        Thu Dec 31 00:18:38 2009        
(r201313)
+++ stable/8/sys/dev/usb/storage/umass.c        Thu Dec 31 00:19:16 2009        
(r201314)
@@ -127,6 +127,8 @@ __FBSDID("$FreeBSD$");
 #include <dev/usb/usb_device.h>
 #include "usbdevs.h"
 
+#include <dev/usb/quirk/usb_quirk.h>
+
 #include <cam/cam.h>
 #include <cam/cam_ccb.h>
 #include <cam/cam_sim.h>
@@ -311,32 +313,18 @@ typedef void (umass_callback_t)(struct u
 typedef uint8_t (umass_transform_t)(struct umass_softc *sc, uint8_t *cmd_ptr,
        uint8_t cmd_len);
 
-struct umass_devdescr {
-       uint32_t vid;
-#define        VID_WILDCARD    0xffffffff
-#define        VID_EOT         0xfffffffe
-       uint32_t pid;
-#define        PID_WILDCARD    0xffffffff
-#define        PID_EOT         0xfffffffe
-       uint32_t rid;
-#define        RID_WILDCARD    0xffffffff
-#define        RID_EOT         0xfffffffe
-
-       /* wire and command protocol */
-       uint16_t proto;
-#define        UMASS_PROTO_DEFAULT     0x0000  /* use protocol indicated by 
USB descriptors */
+/* Wire and command protocol */
 #define        UMASS_PROTO_BBB         0x0001  /* USB wire protocol */
 #define        UMASS_PROTO_CBI         0x0002
 #define        UMASS_PROTO_CBI_I       0x0004
-#define        UMASS_PROTO_WIRE                0x00ff  /* USB wire protocol 
mask */
-#define        UMASS_PROTO_SCSI                0x0100  /* command protocol */
+#define        UMASS_PROTO_WIRE        0x00ff  /* USB wire protocol mask */
+#define        UMASS_PROTO_SCSI        0x0100  /* command protocol */
 #define        UMASS_PROTO_ATAPI       0x0200
 #define        UMASS_PROTO_UFI         0x0400
 #define        UMASS_PROTO_RBC         0x0800
 #define        UMASS_PROTO_COMMAND     0xff00  /* command protocol mask */
 
-       /* Device specific quirks */
-       uint16_t quirks;
+/* Device specific quirks */
 #define        NO_QUIRKS               0x0000
        /*
         * The drive does not support Test Unit Ready. Convert to Start Unit
@@ -384,608 +372,6 @@ struct umass_devdescr {
         * result.
         */
 #define        NO_SYNCHRONIZE_CACHE    0x4000
-};
-
-static const struct umass_devdescr umass_devdescr[] = {
-       {USB_VENDOR_ASAHIOPTICAL, PID_WILDCARD, RID_WILDCARD,
-               UMASS_PROTO_DEFAULT,
-               RS_NO_CLEAR_UA
-       },
-       {USB_VENDOR_ADDON, USB_PRODUCT_ADDON_ATTACHE, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               IGNORE_RESIDUE
-       },
-       {USB_VENDOR_ADDON, USB_PRODUCT_ADDON_A256MB, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               IGNORE_RESIDUE
-       },
-       {USB_VENDOR_ADDON, USB_PRODUCT_ADDON_DISKPRO512, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               IGNORE_RESIDUE
-       },
-       {USB_VENDOR_ADDONICS2, USB_PRODUCT_ADDONICS2_CABLE_205, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_AIPTEK, USB_PRODUCT_AIPTEK_POCKETCAM3M, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_AIPTEK2, USB_PRODUCT_AIPTEK2_SUNPLUS_TECH, RID_WILDCARD,
-               UMASS_PROTO_DEFAULT,
-               NO_SYNCHRONIZE_CACHE
-       },
-       {USB_VENDOR_ALCOR, USB_PRODUCT_ALCOR_SDCR_6335, RID_WILDCARD,
-               UMASS_PROTO_DEFAULT,
-               NO_TEST_UNIT_READY | NO_SYNCHRONIZE_CACHE
-       },
-       {USB_VENDOR_ALCOR, USB_PRODUCT_ALCOR_AU6390, RID_WILDCARD,
-               UMASS_PROTO_DEFAULT,
-               NO_SYNCHRONIZE_CACHE
-       },
-       {USB_VENDOR_ALCOR, USB_PRODUCT_ALCOR_UMCR_9361, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_GETMAXLUN
-       },
-       {USB_VENDOR_ALCOR, USB_PRODUCT_ALCOR_TRANSCEND, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_GETMAXLUN
-       },
-       {USB_VENDOR_ASAHIOPTICAL, USB_PRODUCT_ASAHIOPTICAL_OPTIO230, 
RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_ASAHIOPTICAL, USB_PRODUCT_ASAHIOPTICAL_OPTIO330, 
RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_USB2SCSI, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_CASIO, USB_PRODUCT_CASIO_QV_DIGICAM, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_CBI,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_CCYU, USB_PRODUCT_CCYU_ED1064, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_CENTURY, USB_PRODUCT_CENTURY_EX35QUAT, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               FORCE_SHORT_INQUIRY | NO_START_STOP | IGNORE_RESIDUE
-       },
-       {USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_XX6830XX, RID_WILDCARD,
-               UMASS_PROTO_DEFAULT,
-               NO_GETMAXLUN | NO_SYNCHRONIZE_CACHE
-       },
-       {USB_VENDOR_DESKNOTE, USB_PRODUCT_DESKNOTE_UCR_61S2B, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_DMI, USB_PRODUCT_DMI_CFSM_RW, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_GETMAXLUN
-       },
-       {USB_VENDOR_EPSON, USB_PRODUCT_EPSON_STYLUS_875DC, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_CBI,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_EPSON, USB_PRODUCT_EPSON_STYLUS_895, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_GETMAXLUN
-       },
-       {USB_VENDOR_FEIYA, USB_PRODUCT_FEIYA_5IN1, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_FREECOM, USB_PRODUCT_FREECOM_DVD, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_FUJIPHOTO, USB_PRODUCT_FUJIPHOTO_MASS0100, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_CBI_I,
-               RS_NO_CLEAR_UA
-       },
-       {USB_VENDOR_GENESYS, USB_PRODUCT_GENESYS_GL641USB2IDE, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               FORCE_SHORT_INQUIRY | NO_START_STOP | IGNORE_RESIDUE
-                   | NO_SYNCHRONIZE_CACHE
-       },
-       {USB_VENDOR_GENESYS, USB_PRODUCT_GENESYS_GL641USB2IDE_2, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_BBB,
-               FORCE_SHORT_INQUIRY | NO_START_STOP | IGNORE_RESIDUE
-       },
-       {USB_VENDOR_GENESYS, USB_PRODUCT_GENESYS_GL641USB, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               FORCE_SHORT_INQUIRY | NO_START_STOP | IGNORE_RESIDUE
-       },
-       {USB_VENDOR_GENESYS, USB_PRODUCT_GENESYS_GL641USB_2, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               WRONG_CSWSIG
-       },
-       {USB_VENDOR_HAGIWARA, USB_PRODUCT_HAGIWARA_FG, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_HAGIWARA, USB_PRODUCT_HAGIWARA_FGSM, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_HITACHI, USB_PRODUCT_HITACHI_DVDCAM_DZ_MV100A, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_CBI,
-               NO_GETMAXLUN
-       },
-       {USB_VENDOR_HITACHI, USB_PRODUCT_HITACHI_DVDCAM_USB, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_CBI_I,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_HP, USB_PRODUCT_HP_CDW4E, RID_WILDCARD,
-               UMASS_PROTO_ATAPI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_HP, USB_PRODUCT_HP_CDW8200, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_CBI_I,
-               NO_TEST_UNIT_READY | NO_START_STOP
-       },
-       {USB_VENDOR_IMAGINATION, USB_PRODUCT_IMAGINATION_DBX1, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               WRONG_CSWSIG
-       },
-       {USB_VENDOR_INSYSTEM, USB_PRODUCT_INSYSTEM_USBCABLE, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_CBI,
-               NO_TEST_UNIT_READY | NO_START_STOP | ALT_IFACE_1
-       },
-       {USB_VENDOR_INSYSTEM, USB_PRODUCT_INSYSTEM_ATAPI, RID_WILDCARD,
-               UMASS_PROTO_RBC | UMASS_PROTO_CBI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_INSYSTEM, USB_PRODUCT_INSYSTEM_STORAGE_V2, RID_WILDCARD,
-               UMASS_PROTO_RBC | UMASS_PROTO_CBI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_IODATA, USB_PRODUCT_IODATA_IU_CD2, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_IODATA, USB_PRODUCT_IODATA_DVR_UEH8, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_IOMEGA, USB_PRODUCT_IOMEGA_ZIP100, RID_WILDCARD,
-               /*
-                * XXX This is not correct as there are Zip drives that use
-                * ATAPI.
-                */
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_TEST_UNIT_READY
-       },
-       {USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_FINECAM_L3, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_FINECAM_S3X, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_CBI,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_FINECAM_S4, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_CBI,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_FINECAM_S5, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_LACIE, USB_PRODUCT_LACIE_HD, RID_WILDCARD,
-               UMASS_PROTO_RBC | UMASS_PROTO_CBI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_LEXAR, USB_PRODUCT_LEXAR_CF_READER, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_LEXAR, USB_PRODUCT_LEXAR_JUMPSHOT, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_LOGITEC, USB_PRODUCT_LOGITEC_LDR_H443SU2, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_LOGITEC, USB_PRODUCT_LOGITEC_LDR_H443U2, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_MELCO, USB_PRODUCT_MELCO_DUBPXXG, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               FORCE_SHORT_INQUIRY | NO_START_STOP | IGNORE_RESIDUE
-       },
-       {USB_VENDOR_MICROTECH, USB_PRODUCT_MICROTECH_DPCM, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_CBI,
-               NO_TEST_UNIT_READY | NO_START_STOP
-       },
-       {USB_VENDOR_MICROTECH, USB_PRODUCT_MICROTECH_SCSIDB25, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_MICROTECH, USB_PRODUCT_MICROTECH_SCSIHD50, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_MINOLTA, USB_PRODUCT_MINOLTA_E223, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_MINOLTA, USB_PRODUCT_MINOLTA_F300, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_MITSUMI, USB_PRODUCT_MITSUMI_CDRRW, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_CBI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_MITSUMI, USB_PRODUCT_MITSUMI_FDD, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_GETMAXLUN
-       },
-       {USB_VENDOR_MOTOROLA2, USB_PRODUCT_MOTOROLA2_E398, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               FORCE_SHORT_INQUIRY | NO_INQUIRY_EVPD | NO_GETMAXLUN
-       },
-       {USB_VENDOR_MPMAN, PID_WILDCARD, RID_WILDCARD,
-               UMASS_PROTO_DEFAULT,
-               NO_SYNCHRONIZE_CACHE
-       },
-       {USB_VENDOR_MSYSTEMS, USB_PRODUCT_MSYSTEMS_DISKONKEY, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               IGNORE_RESIDUE | NO_GETMAXLUN | RS_NO_CLEAR_UA
-       },
-       {USB_VENDOR_MSYSTEMS, USB_PRODUCT_MSYSTEMS_DISKONKEY2, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_MYSON, USB_PRODUCT_MYSON_HEDEN, RID_WILDCARD,
-               UMASS_PROTO_DEFAULT,
-               IGNORE_RESIDUE | NO_SYNCHRONIZE_CACHE
-       },
-       {USB_VENDOR_MYSON, USB_PRODUCT_MYSON_HEDEN_8813, RID_WILDCARD,
-               UMASS_PROTO_DEFAULT,
-               NO_SYNCHRONIZE_CACHE
-       },
-       {USB_VENDOR_MYSON, USB_PRODUCT_MYSON_STARREADER, RID_WILDCARD,
-               UMASS_PROTO_DEFAULT,
-               NO_SYNCHRONIZE_CACHE
-       },
-       {USB_VENDOR_NEODIO, USB_PRODUCT_NEODIO_ND3260, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               FORCE_SHORT_INQUIRY
-       },
-       {USB_VENDOR_NETAC, USB_PRODUCT_NETAC_CF_CARD, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_NETAC, USB_PRODUCT_NETAC_ONLYDISK, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               IGNORE_RESIDUE
-       },
-       {USB_VENDOR_NETCHIP, USB_PRODUCT_NETCHIP_CLIK_40, RID_WILDCARD,
-               UMASS_PROTO_ATAPI,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_NIKON, USB_PRODUCT_NIKON_D300, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_OLYMPUS, USB_PRODUCT_OLYMPUS_C1, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               WRONG_CSWSIG
-       },
-       {USB_VENDOR_OLYMPUS, USB_PRODUCT_OLYMPUS_C700, RID_WILDCARD,
-               UMASS_PROTO_DEFAULT,
-               NO_GETMAXLUN
-       },
-       {USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_SDS_HOTFIND_D, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_GETMAXLUN | NO_SYNCHRONIZE_CACHE
-       },
-       {USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_CFMS_RW, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_CFSM_COMBO, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_CFSM_READER, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_CFSM_READER2, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_MDCFE_B_CF_READER, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_MDSM_B_READER, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_READER, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_UCF100, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_BBB,
-               NO_INQUIRY | NO_GETMAXLUN
-       },
-       {USB_VENDOR_ONSPEC2, USB_PRODUCT_ONSPEC2_IMAGEMATE_SDDR55, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_GETMAXLUN
-       },
-       {USB_VENDOR_PANASONIC, USB_PRODUCT_PANASONIC_KXL840AN, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_BBB,
-               NO_GETMAXLUN
-       },
-       {USB_VENDOR_PANASONIC, USB_PRODUCT_PANASONIC_KXLCB20AN, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_PANASONIC, USB_PRODUCT_PANASONIC_KXLCB35AN, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_PANASONIC, USB_PRODUCT_PANASONIC_LS120CAM, RID_WILDCARD,
-               UMASS_PROTO_UFI,
-               NO_QUIRKS
-       },
-       { USB_VENDOR_PHILIPS, USB_PRODUCT_PHILIPS_SPE3030CC, RID_WILDCARD,
-               UMASS_PROTO_DEFAULT,
-               NO_SYNCHRONIZE_CACHE
-       },
-       {USB_VENDOR_PLEXTOR, USB_PRODUCT_PLEXTOR_40_12_40U, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_TEST_UNIT_READY
-       },
-       {USB_VENDOR_PNY, USB_PRODUCT_PNY_ATTACHE2, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               IGNORE_RESIDUE | NO_START_STOP
-       },
-       {USB_VENDOR_SAMSUNG_TECHWIN, USB_PRODUCT_SAMSUNG_TECHWIN_DIGIMAX_410, 
RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDDR05A, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_CBI,
-               READ_CAPACITY_OFFBY1 | NO_GETMAXLUN
-       },
-       {USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDDR09, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               READ_CAPACITY_OFFBY1 | NO_GETMAXLUN
-       },
-       {USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDDR12, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_CBI,
-               READ_CAPACITY_OFFBY1 | NO_GETMAXLUN
-       },
-       {USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDCZ2_256, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               IGNORE_RESIDUE
-       },
-       {USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDCZ4_128, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               IGNORE_RESIDUE
-       },
-       {USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDCZ4_256, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               IGNORE_RESIDUE
-       },
-       {USB_VENDOR_SANDISK, USB_PRODUCT_SANDISK_SDDR31, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               READ_CAPACITY_OFFBY1
-       },
-       {USB_VENDOR_SCANLOGIC, USB_PRODUCT_SCANLOGIC_SL11R, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_BBB,
-               NO_INQUIRY
-       },
-       {USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_EUSB, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_CBI_I,
-               NO_TEST_UNIT_READY | NO_START_STOP | SHUTTLE_INIT
-       },
-       {USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_CDRW, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_CBI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_CF, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_CBI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_EUSBATAPI, RID_WILDCARD,
-               UMASS_PROTO_ATAPI | UMASS_PROTO_CBI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_EUSBCFSM, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_EUSCSI, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
-               NO_QUIRKS
-       },
-       {USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_HIFD, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_CBI,
-               NO_GETMAXLUN
-       },
-       {USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_SDDR09, RID_WILDCARD,
-               UMASS_PROTO_SCSI,
-               NO_GETMAXLUN
-       },
-       {USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_ZIOMMC, RID_WILDCARD,
-               UMASS_PROTO_SCSI | UMASS_PROTO_CBI,
-               NO_GETMAXLUN

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to