Spinpoint M9TU-USB 3.0 Product Manual REV 1.0
64
USB INTERFACE AND USB COMMANDS
6.3.6.4
Standard USB Descriptor
The standard descriptors defined in this specification may only be modified or extended by revision of the
Universal Serial Bus Specification.
Note: An extension to the USB 1.0 standard endpoint descriptor has been published in Device Class Specification
for Audio Devices Revision 1.0. This is the only extension defined outside USB Specification that is allowed.
Future revisions of the USB Specification that extend the standard endpoint descriptor will do so as to not
conflict with the extension defined in the Audio Device Class Specification Revision 1.0.
6.3.6.4.1
Standard USB Descriptor Overview
USB devices report their attributes using descriptors. A descriptor is a data structure with a defined format. Each
descriptor begins with a byte-wide field that contains the total number of bytes in the descriptor followed by a
byte-wide field that identifies the descriptor type.
Using descriptors allows concise storage of the attributes of individual configurations because each
configuration may reuse descriptors or portions of descriptors from other configurations that have the same
characteristics. In this manner, the descriptors resemble individual data records in a relational database. Where
appropriate, descriptors contain references to string descriptors that provide displayable information describing a
descriptor in human-readable form. The inclusion of string descriptors is optional. However, the reference fields
within descriptors are mandatory. If a device does not support string descriptors, string reference fields must be
reset to zero to indicate no string descriptor is available.
If a descriptor returns with a value in its length field that is less than defined by this specification, the descriptor
is invalid and should be rejected by the host. If the descriptor returns with a value in its length field that is greater
than defined by this specification, the extra bytes are ignored by the host, but the next descriptor is located using
the length returned rather than the length expected.
A device may return class- or vendor-specific descriptors in two ways:
1. If the class or vendor specific descriptors use the same format as standard descriptors (e.g., start with a length
byte and followed by a type byte), they must be returned interleaved with standard descriptors in the
configuration information returned by a GetDescriptor(Configuration) request. In this case, the class or vendor-
specific descriptors must follow a related standard descriptor they modify or extend.
2. If the class or vendor specific descriptors are independent of configuration information or use a nonstandard
format, a GetDescriptor() request specifying the class or vendor specific descriptor type and index may be used to
retrieve the descriptor from the device. A class or vendor specification will define the appropriate way to retrieve
these descriptors.
6.3.6.4.2
Device Descriptor
A device descriptor describes general information about a USB device. It includes information that applies
globally to the device and all of the device’s configurations. A USB device has only one device descriptor. A
high-speed capable device that has different device information for full-speed and high-speed must also have a
device_qualifier descriptor.
The DEVICE descriptor of a high-speed capable device has a version number of 2.0 (0200H). If the device is
full-speed only or low-speed only, this version number indicates that it will respond correctly to a request for the
device_qualifier descriptor (i.e., it will respond with a request error).
The
bcdUSB
field contains a BCD version number. The value of the
bcdUSB
field is 0xJJMN for version
JJ.M.N (JJ – major version number, M – minor version number, N – sub-minor version number), e.g., version
2.1.3 is represented with value 0x0213 and version 2.0 is represented with a value of 0x0200.
The
bNumConfigurations
field indicates the number of configurations at the current operating speed.
Configurations for the other operating speed are not included in the count. If there are specific configurations of
the device for specific speeds, the
bNumConfigurations
field only reflects the number of configurations for a
single speed, not the total number of configurations for both speeds.
If the device is operating at high-speed, the
bMaxPacketSize0
field must be 64 indicating a 64 byte maximum
packet. High-speed operation does not allow other maximum packet sizes for the control endpoint (endpoint 0).
All USB devices have a Default Control Pipe. The maximum packet size of a device’s Default Control Pipe is
described in the device descriptor. Endpoints specific to a configuration and its interface(s) are described in the
configuration descriptor. A configuration and its interface(s) do not include an endpoint descriptor for the Default
Control Pipe. Other than the maximum packet size, the characteristics of the Default Control Pipe are defined by
this specification and are the same for all USB devices.
The
bNumConfigurations
field identifies the number of configurations the device supports. Table 6-11 shows the
standard device descriptor.