The CY4640 implements a mass storage class driver that supports devices that are Bulk Only Transport (BOT) Mass Storage Compliant devices. The device must be a direct access device that has 512 byte sectors. This means that optical devices such as CD-ROMs or DVDs will not work with the CY4640 but most USB HDDs should. If optical support is necessary then a new driver would need to be developed and memory will be come more of an issue due to the large sector sizes. The CY4640 also supports removable media devices as long as the design also meets the above criteria. One of the most popular uses for the CY4640 are with the small USB Flash based drives and it is ideal for these types of devices. Cypress has tested the CY4640 with a variety of these Flash based drives and has built the CY4640 to work with a large variety of drives. There is a chipset used in many of these flash drives that insert a hub between the flash drive and the outside world. For these drives to work a minihub driver was implemented and is included in the kit. The minihub support is not a full featured hub and if your design is not going to support these types of devices the minihub can be compiled out by modifying the fwxcfg.h file. A list of devices that were tested is included in the CY4640 RDK.
The CY4640 MSC driver will match using VID/PID and Class/Protocol codes. The bInterfaceSubclass in the Interface Descriptor is typically 0x06 for mass storage HDDs, which is the SCSI Tranarent Command Block set. If other bInterfaceSubclasses are required then the user will be required to make the modifications to accomodate any necessary changes. This may include changing the command structures in the scsi.h file.