diff --git a/sys/dev/usb/umass.c b/sys/dev/usb/umass.c index 01dea4bd528f..7118f24e3118 100644 --- a/sys/dev/usb/umass.c +++ b/sys/dev/usb/umass.c @@ -202,6 +202,7 @@ typedef struct { typedef struct { uDWord dCSWSignature; # define CSWSIGNATURE 0x53425355 +# define CSWSIGNATURE_IMAGINATION_DBX1 0x43425355 # define CSWSIGNATURE_OLYMPUS_C1 0x55425355 uDWord dCSWTag; uDWord dCSWDataResidue; @@ -347,6 +348,10 @@ Static struct umass_devdescr_t umass_devdescrs[] = { 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 @@ -1620,9 +1625,12 @@ umass_bbb_state(usbd_xfer_handle xfer, usbd_private_handle priv, DIF(UDMASS_BBB, umass_bbb_dump_csw(sc, &sc->csw)); /* Translate weird command-status signatures. */ - if ((sc->quirks & WRONG_CSWSIG) && - UGETDW(sc->csw.dCSWSignature) == CSWSIGNATURE_OLYMPUS_C1) - USETDW(sc->csw.dCSWSignature, CSWSIGNATURE); + if (sc->quirks & WRONG_CSWSIG) { + uDWord dCSWSignature = UGETDW(sc->csw.dCSWSignature); + if (dCSWSignature == CSWSIGNATURE_OLYMPUS_C1 || + dCSWSignature == CSWSIGNATURE_IMAGINATION_DBX1) + USETDW(sc->csw.dCSWSignature, CSWSIGNATURE); + } int Residue; Residue = UGETDW(sc->csw.dCSWDataResidue); diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs index 38e4f44f2fc9..a8ed6e759c6a 100644 --- a/sys/dev/usb/usbdevs +++ b/sys/dev/usb/usbdevs @@ -506,6 +506,7 @@ vendor LINKSYS4 0x13b1 Linksys vendor SHARK 0x13d2 Shark vendor SILICOM 0x1485 Silicom vendor RALINK 0x148f Ralink Technology +vendor IMAGINATION 0x149a Imagination Technologies vendor CONCEPTRONIC 0x14b2 Conceptronic vendor SILICONPORTALS 0x1527 Silicon Portals vendor SOHOWARE 0x15e8 SOHOware @@ -978,6 +979,9 @@ product HP2 C500 0x6002 PhotoSmart C500 /* IBM Corporation */ product IBM USBCDROMDRIVE 0x4427 USB CD-ROM Drive +/* Imagination Technologies products */ +product IMAGINATION DBX1 0x2107 DBX1 DSP core + /* Inside Out Networks products */ product INSIDEOUT EDGEPORT4 0x0001 EdgePort/4 serial ports