- •Single-User License Agreement
- •Chapter 1: Design Goals of USB
- •Chapter 2: The Big Picture
- •Chapter 3: Cables and Connectors
- •Chapter 4: USB Cable Power Distribution
- •Chapter 5: LS/FS Signaling Environment
- •Chapter 6: LS/FS Transfer Types & Scheduling
- •Chapter 7: Packets & Transactions
- •Chapter 8: Error Recovery
- •Chapter 9: USB Power Conservation
- •Chapter 10: Overview of HS Device Operation
- •Chapter 11: The High-Speed Signaling Environment
- •Chapter 12: HS Transfers, Transactions, & Scheduling
- •Chapter 13: HS Error Detection and Handling
- •Chapter 14: HS Suspend and Resume
- •Chapter 15: HS Hub Overview
- •Chapter 16: 2.0 Hubs During HS Transactions
- •Chapter 17: 2.0 Hubs During LS/FS Transactions
- •Chapter 18: Configuration Process
- •Chapter 19: USB Device Configuration
- •Chapter 20: Hub Configuration
- •Chapter 21: Device Classes
- •Chapter 22: Overview of USB Host Software
- •Appendix A: Standard Device Requests
- •Appendix B: Hub Requests
- •Appendix C: Universal Host Controller
- •Appendix D: Open Host Controller
- •About This Book
- •The MindShare Architecture Series
- •Cautionary Note
- •Specifications This Book is Based On
- •Organization of This Book
- •Part One: Overview of USB 2.0
- •Part Two: Low- & Full-Speed Device Operation
- •Part III: High-Speed Device Operation
- •Part IV: USB 2.0 Hub Operation with LS/FS/HS Devices
- •Part VI: USB Software Overview
- •Appendices
- •Who Should Read this Book
- •Prerequisite Knowledge
- •Documentation Conventions
- •Hexadecimal Notation
- •Binary Notation
- •Decimal Notation
- •Bits Versus Byte Notation
- •Identification of Bit Fields (logical groups of bits or signals)
- •Visit Our Web Page
- •We Want Your Feedback
- •Shortcomings of the Original PC I/O Paradigm
- •Limited System Resources
- •Interrupts
- •I/O Addresses
- •Non-shareable Interfaces
- •End User Concerns
- •Cable Crazed
- •Installation and Configuration of Expansion Cards
- •No Hot Attachment of Peripherals
- •Cost
- •The USB Paradigm
- •Enhanced System Performance
- •Hot Plug and Play Support
- •Expandability
- •Legacy Hardware/Software Support
- •Low Cost
- •Summary of Key USB Features
- •How to Get the USB Specifications
- •2 The Big Picture
- •Overview
- •USB 1.x Systems and Devices
- •Low-Speed and Full-Speed Devices
- •How Transactions Are Generated
- •What the Descriptors Contain
- •How the Transfer Descriptors Are Fetched
- •Frame Generation
- •Sharing the Bus
- •Bandwidth Consideration Summary
- •2.0 Systems and Devices
- •Low-Speed and Full-Speed Devices in a 2.0 System
- •Example 2.0 Host Controller Support for LS/FS Devices
- •High-Speed Devices in a 2.0 System
- •High-Speed Devices Attached to 1.x Ports
- •High-Speed Transactions and Microframe Generation
- •High-Speed Bandwidth Summary
- •The Players
- •USB Client Drivers
- •USB Bus Driver
- •USB Host Controller Driver
- •USB Host Controller/Root Hub
- •The Host Controller
- •The Root Hub
- •USB Hubs
- •Hub Controller
- •Hub Repeater
- •Hub’s Role in Configuration
- •USB Devices
- •High-Speed Devices
- •Full-Speed Devices
- •Low-Speed Devices
- •USB Communications Model
- •Communications Flow
- •Transfers, IRPs, Frames, and Packets
- •Transfers
- •The USB Driver, IRPs, and Frames
- •The Host Controller Driver and Transactions
- •The Host Controller and Packets
- •Device Framework (how devices present themselves to software)
- •Device Descriptors
- •Device Framework
- •USB Bus Interface Layer
- •USB Device Layer
- •Function Layer
- •USB Peripheral Connection
- •Full-Speed Hubs
- •High-Speed Hubs
- •High-Speed Devices
- •Topology
- •The Connectors
- •Series A Connectors
- •Series B Connectors
- •Cables
- •Low-Speed Cables
- •Cable Power
- •Electrical and Mechanical Specifications
- •USB Power
- •Hubs
- •Current Budget
- •Over-Current Protection
- •Voltage Drop Budget
- •Power Switching
- •Bus-Powered Hubs
- •Power During Hub Configuration
- •Bus-Powered Hub Attached to 500ma Port
- •Bus-Powered Hub Attached to 100ma Port
- •Bus-Powered Hub Attached to Port with >100ma but <500ma
- •Current Limiting
- •Bus-Powered Devices
- •Low-Power Devices
- •High-Power Devices
- •Power During Configuration
- •Insufficient Port Power
- •Self-Powered Hubs
- •Power During Configuration
- •Locally Powered Bus Interface
- •Hybrid Powered Device
- •Current Limiting
- •Self-Powered Devices
- •Power During Configuration
- •Locally Powered Bus Interface
- •Hybrid Powered Device
- •Overview
- •Detecting Device Attachment and Speed Detect
- •Full-Speed Device Connect
- •Low-Speed Device Connect
- •Detecting Device Disconnect
- •Bus Idle
- •Device RESET
- •Differential Signaling
- •Differential Drivers
- •Full-Speed Drivers
- •Low-Speed Drivers
- •Hub Driver Characteristics
- •Differential Receivers
- •Start of Packet (SOP)
- •End of Packet (EOP)
- •Single-Ended Receivers
- •NRZI Encoding
- •Bit Stuffing
- •Summary of USB Signaling States
- •Overview
- •Client Initiates Transfer
- •Communications Pipes
- •Communication Initiated by I/O Request Packets
- •Frame-Based Transfers
- •Transfer Types
- •Isochronous Transfers
- •Direction of Transfers
- •Service Period
- •Bandwidth Allocation
- •Error Recovery
- •Establishing Synchronous Connections
- •The Problem with Isochronous Transfers
- •The Feedback/Feed Forwarding Solution
- •Synchronization Types
- •Source/Sink Combinations and Synchronization Methods
- •How Endpoints Report Their Synchronization Capabilities
- •Feedback Data
- •Association Between Data Endpoint and Feedback Endpoint
- •Interrupt Transfers
- •Service Period
- •Bus Bandwidth Allocation
- •Error Recovery
- •Control Transfers
- •Bus Bandwidth Allocation
- •Error Recovery
- •Bulk Transfers
- •Bus Bandwidth Allocation
- •Error Recovery
- •Overview
- •Packets — The Basic Building Blocks of USB Transactions
- •Synchronization Sequence
- •Packet Identifier
- •Packet-Specific Information
- •Cyclic Redundancy Checking (CRC)
- •End of Packet (EOP)
- •Token Packets
- •SOF Packet
- •IN Packet
- •OUT Packet
- •SETUP Packet
- •Data Packets — DATA0 and Data1
- •Handshake Packets
- •Preamble Packet
- •Transactions
- •IN Transactions
- •IN Transaction Without Errors
- •IN Transaction with Errors
- •IN Transaction with No Interrupt Pending/Target Busy
- •IN Transaction with Target Stalled
- •IN Transaction During Isochronous Transfer
- •OUT Transactions
- •OUT Transaction Without Data Packet Errors
- •OUT Transaction with Errors
- •OUT Transaction — Target Unable to Accept Data
- •OUT Transaction With Target Stalled
- •OUT Transaction During Isochronous Transfer
- •Setup Transactions/Control Transfers
- •Two Stage Control Transfer
- •Three Stage Control Transfer with IN Data Stage
- •Three Stage Control Transfer with OUT Data Stage
- •Control Transfers With Errors
- •8 Error Recovery
- •Overview
- •Packet Errors
- •PID Checks
- •CRC Errors
- •Bit Stuff Errors
- •Packet-Related Error Handling
- •Token Packet Errors
- •Data Packet Errors
- •Handshake Packet Errors
- •Bus Time-Out
- •False EOPs
- •False EOP During Host Transmission
- •False EOP During Target Transmission
- •Data Toggle Errors
- •Data Toggle Procedure Without Errors
- •Data Toggle during OUT Transactions
- •Data Toggle During IN Transactions
- •Data Toggle Procedure with Data Packet Errors
- •Data Toggle and Data Packet Errors — OUT Transactions
- •Data Toggle and Data Packet Errors — IN Transactions
- •Data Toggle With Handshake Packet Error — IN Transaction
- •Special Case: Data Toggle During Control Transfer
- •Babbling Devices
- •Loss of Activity (LOA)
- •Babble/LOA Detection and Recovery
- •Frame Timer
- •Host to Hub Skew
- •Hub Repeater State Machine
- •Isochronous Transfers (Delivery Not Guaranteed)
- •Interrupt Transfer Error Recovery
- •Bulk Transfer Error Recovery
- •Control Transfer Error Recovery
- •Power Conservation — Suspend
- •Device Response to Suspend
- •Hub Response to Suspend
- •Global Suspend
- •Initiating Global Suspend
- •Resume from Global Suspend
- •Resume Initiated by Host
- •Remote Wakeup from Device
- •Remote Wakeup via Hub Port Event
- •Selective Suspend
- •Initiating Selective Suspend
- •Resume from Selective Suspend
- •Host Initiated Selective Resume
- •Selective Wakeup from Device
- •Selective Suspend When Hub is Suspended
- •Device Signals Resume
- •Port Receives Connect or Disconnect
- •Selective Suspend Followed by Global Suspend
- •Resume via Reset
- •Hub Frame Timer After Wakeup
- •Overview
- •New High-Speed Device Features
- •1.x USB Device Support
- •The 2.0 Host Controller
- •Overview
- •Detecting High-Speed Device Attachment
- •Initial Device Detection
- •Device Reset and the Chirp Sequence
- •High-Speed Interfaces Idled
- •High-Speed Differential Signaling
- •Impedance Matching
- •High-Speed Driver Characteristics
- •High-Speed Idle
- •High-Speed Differential Receivers
- •High-Speed Driver/Receiver Compliance Testing
- •Activating Test Mode
- •The Test Setup
- •Eye Pattern Tests
- •High-Speed Start of Packet & Synchronization Sequence
- •High-Speed End of Packet (EOP)
- •Detection of High-Speed Device Removal
- •High-Speed RESET and Suspend
- •Signaling RESET
- •Signaling Suspend
- •Differentiating Between RESET and Suspend
- •Overview
- •High-Speed Transaction Scheduling
- •Microframes
- •Theoretical HS Bandwidth
- •Periodic Transfers
- •High-Speed Isochronous Transfers
- •Maximum Packet Size
- •Isochronous Bandwidth/Performance
- •Isochronous Transaction Errors
- •High-Speed Interrupt Transfers
- •Maximum Packet Size
- •Interrupt Bandwidth
- •Interrupt Transaction Errors
- •High-Bandwidth Transactions
- •Detecting High-Bandwidth Endpoints and Packet Size
- •Isochronous High-Bandwidth Scheduling and Protocol
- •High Bandwidth Interrupt Transactions
- •High Bandwidth Throughput
- •Non-Periodic Transfers
- •High-Speed Bulk Transfers
- •Maximum Packet Size
- •Bulk Bandwidth
- •Bulk Transactions Errors
- •High-Speed Control Transfers
- •High-Speed Control Bandwidth
- •Ping Transactions
- •The Problem
- •The Solution
- •The Ping Protocol
- •Overview
- •High-Speed Bus Time-out
- •False EOP
- •HS Babbling Device Detection
- •Overview
- •Entering Device Suspend
- •Device Resume
- •15 HS Hub Overview
- •Overview
- •USB 2.0 Hub Attached to High-Speed Port
- •High-Speed Transactions
- •USB 2.0 Hub Attached to Full-Speed Port
- •Overview
- •High-Speed Hub Repeater
- •Receiver Squelch
- •Re-clocking the Packet
- •Port Selector State Machine
- •Elasticity Buffer
- •The Repeater State Machine
- •Overview
- •The Structure of Split Transactions
- •Isochronous Split Transaction Examples
- •Example Split Isochronous OUT Transaction
- •Example Split Isochronous IN Transaction
- •Example Split Transactions with Data Verification
- •Split OUT Sequence
- •Split IN Sequence
- •The Split Token Packet
- •The Transaction Translator
- •The Major Elements of the Transaction Translator
- •High-Speed Handler
- •Periodic Transfer Start-Split Buffer
- •Periodic Complete-Split Buffer
- •Bulk/Control Buffers
- •Low-Speed/Full-Speed Handler
- •Split Transaction Scheduling
- •Split Transaction Scheduling Example
- •SOF Packets
- •Host Delivers Isochronous Start Split
- •Host Delivers Interrupt Start Split
- •Host Issues Complete-Split to Fetch Isochronous IN Data
- •Host Fetches Interrupt OUT Completion Status
- •Host Continues to Fetch Isochronous IN Data
- •Transaction End
- •High-Speed Scheduling Can Include Other Transactions
- •Single versus Multiple Transaction Translators
- •Periodic Split Transactions
- •Periodic Split Transaction Pipeline
- •High Speed Handler Receives Start Split
- •Start-Split Buffer
- •Low-Speed/Full-Speed Handler
- •Complete-Split Buffer
- •Isochronous OUT Split Transaction Sequence
- •Isochronous OUT Start Split
- •Handling CRC16 During Split Isochronous OUT Transactions
- •Isochronous IN Split Transaction Sequence
- •Isochronous IN Start Split
- •Isochronous IN Complete Split
- •Handling CRC16 During Split Isochronous IN Transactions
- •Interrupt Split OUT Transaction Sequence
- •Interrupt OUT Start Split Sequence
- •Interrupt OUT Complete Split Sequence
- •Interrupt IN Split Transaction Sequence
- •Interrupt IN Start Split Sequence
- •Interrupt IN Complete Split Sequence
- •Handling CRC16 During Split Interrupt IN Transactions
- •Non Periodic Split Transactions
- •Non-Periodic Split Transaction Pipeline
- •High Speed Handler
- •Non-periodic Buffers
- •Low-/Full-Speed Handler
- •Bulk/Control Split OUT Transaction Sequence
- •Bulk/Control OUT Start Split Sequence
- •Bulk/Control OUT Complete Split Sequence
- •Bulk/Control Split IN Transaction Sequence
- •Bulk/Control IN Start Split Sequence
- •Bulk/Control IN Complete Split Sequence
- •Overview
- •The Configuration Software Elements
- •USB Host Controller Driver
- •Configuration Software
- •Default Control Pipe
- •Resource Management
- •Device Client Software
- •Root Hub Configuration
- •Each Device Is Isolated for Configuration
- •Reset Forces Device to Default Address (zero)
- •Host Assigns a Unique Device Address
- •Host Software Verifies Configuration
- •Power Requirements
- •Bus Bandwidth
- •Configuration Value Is Assigned
- •Client Software Is Notified
- •Overview
- •Summary of Configuration Process
- •How Software Detects Device Attachment & Speed
- •Polling the Status Change Endpoint
- •Getting Port Status
- •Resetting the Port
- •Reading and Interpreting the USB Descriptors
- •The Standard Descriptors
- •How Software Accesses the Descriptors
- •Device Descriptor
- •Class Code Field
- •Maximum Packet Size Zero
- •Manufacturer, Product, Serial Number
- •Number of Configurations
- •Device Qualifier Descriptor
- •Configuration Descriptors
- •Number of Interfaces
- •Configuration Value
- •Attributes and Maximum Power
- •Other Speed Configuration Descriptor
- •Interface Descriptors
- •Interface Number and Alternate Setting
- •Number of Endpoints
- •Interface Class and Subclass
- •Protocol
- •Endpoint Descriptors
- •Device States
- •Attached State
- •Powered State
- •Default State
- •Addressed State
- •Configured State
- •Suspend State
- •Client Software Configuration
- •Configuring the Hub
- •The Default Pipe
- •The Status Change Pipe
- •Reading the Hub’s Descriptors
- •1.x Hub Descriptors
- •Hub’s Standard Device Descriptor
- •Hub Configuration Descriptor
- •Number of Interfaces
- •Configuration Value
- •Maximum Bus Power Consumed
- •Hub Interface Descriptor
- •Status Endpoint Descriptor
- •Status Change Endpoint Address/Transfer Direction
- •Transfer Type
- •Maximum Data Packet Size
- •Polling Interval
- •Hub Class Descriptor
- •Power Switching Mode Implemented
- •Compound Device or Hub Only
- •Over-Current Protection Mode
- •Power On to Power Good Delay
- •Maximum Bus Current for Hub Controller
- •Device Removable/Non-removable
- •Port Power Mask
- •High-Speed Capable Hub Descriptors
- •Descriptors When Hub Is Operating at Full Speed
- •The 2.0 Hub’s Class-Specific Descriptor
- •Powering the Hub
- •Checking Hub Status
- •Detecting Hub Status Changes
- •Reading the Hub Status Field
- •Reading Port Status
- •Enabling the Device
- •Summary of Hub Port States
- •21 Device Classes
- •Overview
- •Device Classes
- •Audio Device Class
- •Standard Audio Interface Requirements
- •Synchronization Types
- •Audio Class-Specific Descriptors
- •Audio Class-Specific Requests
- •Communications Device Class
- •Communications Device Interfaces
- •Communications Class-Specific Descriptors
- •Communications Class-Specific Requests
- •Display Device Class
- •The Standard Display Device Class Interface
- •Display Device-Specific Descriptors
- •Device-Specific Requests
- •Mass Storage Device Class
- •Standard Mass Storage Interface
- •Control Endpoint
- •Bulk Transfer Endpoints
- •Interrupt Endpoint
- •General Mass Storage Subclass
- •CD-ROM Subclass
- •Tape Subclass
- •Solid State Subclass
- •USB Software
- •Function Layer
- •Device Layer
- •Interface Layer
- •The Software Components
- •USB Driver (USBD)
- •Configuration Management
- •USB Elements Requiring Configuration
- •Allocating USB Resources
- •Verifying Power
- •Tracking and Allocating Bus Bandwidth
- •Bus Bandwidth Reclamation
- •Data Transfer Management
- •Providing Client Services (The USB Driver Interface)
- •Pipe Mechanisms
- •Client Pipe Requirements
- •Command Mechanisms
- •Appendix
- •Overview
- •Standard Device Requests
- •Set/Clear Feature
- •Device Remote Wakeup
- •Endpoint Stall
- •Set/Get Configuration
- •Set/Get Descriptor
- •Set/Get Interface
- •Get Status
- •Device Status
- •Self-Powered Bit
- •Remote Wakeup Bit
- •Port Test Bit
- •Endpoint Status
- •Sync Frame
- •Device Tests
- •High-speed Driver/Receiver Compliance Testing
- •Activating Test Mode
- •Overview
- •Hub Request Types
- •Standard Requests and Hub Response
- •Hub Class Requests
- •Get/Set Descriptor Request
- •Get Hub Status Request
- •Hub Status Fields
- •Local Power Status
- •Over-Current Indicator
- •Hub State Change Fields
- •Local Power Status Change
- •Over-Current Indicator Change
- •Set/Clear Hub Feature Request
- •Hub Local Power Change Request
- •Hub Over-Current Change Request
- •Get Port Status Request
- •Port Status Fields
- •Current Connect Status Field
- •Port Enabled/Disabled
- •Suspend
- •Over-Current Indicator
- •Reset
- •Port Power
- •Low-Speed Device Attached
- •High-Speed Device Attached
- •Port Test
- •Port Indicator Control
- •Port Change Fields
- •Current Status Change
- •Port Enable/Disable Change
- •Suspend Change (Resume Complete)
- •Over-Current Indicator Change
- •Reset Complete
- •Set/Clear Port Feature
- •Port Test Modes
- •Get Bus State
- •Overview
- •Universal Host Controller Transaction Scheduling
- •Universal Host Controller Frame List Access
- •UHC Transfer Scheduling Mechanism
- •Bus Bandwidth Reclamation
- •Transfer Descriptors
- •Queue Heads
- •UHC Control Registers
- •Overview
- •Open Host Controller Transfer Scheduling
- •The Open Host Controller Transfer Mechanism
- •The ED and TD List Structure
- •Interrupt and Isochronous Transfer Processing
- •Control and Bulk Transfer Processing
- •The Done Queue
- •Interrupt Transfer Scheduling
- •Endpoint Descriptors
- •Transfer Descriptors
- •General Transfer Descriptor
- •Isochronous Transfer Descriptor
- •The Open Host Controller Registers
- •Index
Chapter 20: Hub Configuration
Hub Class Descriptor
A class-specific descriptor is defined for hub devices as in Table 20-5 on page 388. This descriptor is read via the class-specific “Get Descriptor” request. Note that this descriptor is pre-defined by the specification with an index of zero. The USB enumerator reads the hub class descriptor to determine the following information:
•Power switching mode implemented.
•Whether hub is part of compound device or not.
•Whether device implements global, individual port, or no over-current protection.
•The time delay from software requesting power be applied to a port until power is valid.
•Maximum bus current required by the hub controller (compare offset 8 of Table 20-2 on page 382).
•Whether the device attached to a port is removable or not.
•Whether a port is powered in gang mode or individually.
Refer to Table 20-5 on page 388 during the following discussions.
Power Switching Mode Implemented
A hub may control power to ports in three ways. Offset 3, bits 1:0, within the hub class descriptor defines which method is employed by this hub:
•Ganged power switching — power is switched to all ports at the same time.
•Individual port power switching — power is applied to each port separately. The “Set Port Power” Feature request is used to apply power to the individual port selected.
•No power switching — power is applied to all ports when the hub is configured (i.e., when the “Set Configuration” request is made).
Note that if ganged power mode switching is defined, some ports may be unaffected by the ganged power switching. Refer to the section entitled “Port Power Mask” on page 391 for more information.
387
USB System Architecture
Table 20-5: Hub Class Descriptor
Offset |
Field |
Size |
|
Description |
|
|
|
|
|
0 |
DescLength |
1 |
Number of bytes in the descriptor, including this byte. |
|
|
|
|
|
|
1 |
DescriptorType |
1 |
Descriptor Type = 29h (hub class descriptor). |
|
|
|
|
|
|
2 |
NbrPorts |
1 |
Number of downstream ports that this hub supports. |
|
|
|
|
|
|
3 |
HubCharacteristics |
2 |
D1:D0 |
Power Switching Mode. |
|
|
|
00 |
Ganged power switching (all ports powered at |
|
|
|
|
once) |
|
|
|
01 Individual port power switching |
|
|
|
|
1X Used in 1.0 hubs to indicate no power switching |
|
|
|
|
|
(ports always powered on when hub is on, and |
|
|
|
|
off when hub is off) |
|
|
|
|
Reserved in 2.0 |
|
|
|
D2 |
Identifies a Compound Device |
|
|
|
0 Hub is not part of a compound device |
|
|
|
|
1 Hub is part of a compound device |
|
|
|
|
D4:D3 |
Over-current Protection Mode. |
|
|
|
00 Global Over-Current Protection. The hub |
|
|
|
|
|
reports over-current as a summation of all |
|
|
|
|
ports’ current draw, without a breakdown of |
|
|
|
|
individual port over-current status. |
|
|
|
01 Individual Port Over-Current Protection. The |
|
|
|
|
|
hub reports over-current on a per port basis. |
|
|
|
|
Each port has an over-current indicator. |
|
|
|
1X |
No Over-Current Protection. This option is only |
|
|
|
|
allowed for bus-powered hubs that don’t |
|
|
|
|
implement over-current protection. |
|
|
|
D15:D5 |
Reserved |
|
|
|
|
|
5 |
PwrOn2PwrGood |
1 |
Time (in 2ms intervals) from the time power-on sequence |
|
|
|
|
begins on a port until power is good on that port. System |
|
|
|
|
software uses this value to determine how long to wait |
|
|
|
|
before accessing a powered-on port. |
|
|
|
|
|
|
6 |
HubContrCurrent |
1 |
Maximum current requirements of the hub controller |
|
|
|
|
electronics, in 2ma increments. |
|
|
|
|
|
|
388
Chapter 20: Hub Configuration
Table 20-5: Hub Class Descriptor
Offset |
Field |
Size |
|
Description |
|
|
|
|
|
|
|
|
|
|
7 |
DeviceRemovable |
Depends on |
Indicates if a port has a removable device attached. If a |
|
|
|
num of ports |
non-removable device is attached to a port, that port will |
|
|
|
|
never receive an insertion change notification. This field |
|
|
|
|
is reported on byte-granularity. Within a byte, if no port |
|
|
|
|
exists for a given location, then the field representing the |
|
|
|
|
port characteristics returns to 0. |
|
|
|
|
Bit definition: |
|
|
|
|
0 |
Device is removable. |
|
|
|
1 Device is not removable. |
|
|
|
|
This is a bitmap corresponding to the individual ports on |
|
|
|
|
the hub: |
|
|
|
|
Bit 0 |
Reserved |
|
|
|
Bit 1 |
Port 1 |
|
|
|
Bit 2 |
Port 2 |
|
|
|
: |
|
|
|
|
Bit n Port n (implementation dependent) |
|
|
|
|
|
|
Vari- |
PortPwrCtrlMask |
Depends on |
In 2.0 these bits are all set to “1b.” These bits are used |
|
able |
|
num of ports |
only in 1.0 hubs as discussed below: |
|
|
|
|
Indicates if a port is not affected by a gang-mode power |
|
|
|
|
control request. Ports that have this field set always |
|
|
|
|
require a manual SetPortFeature (PORT_POWER) |
|
|
|
|
request to control the port’s power state. |
|
|
|
|
Bit definition |
|
|
|
|
0 |
Port does not mask the gang-mode power con- |
|
|
|
|
trol capability. |
|
|
|
1 |
Port is not affected by gang-mode power com- |
|
|
|
|
mands. Manual commands must be sent to |
|
|
|
|
this port to turn power on and off. |
|
|
|
This is a bitmap corresponding to the individual ports on |
|
|
|
|
the hub: |
|
|
|
|
Bit 0 Reserved for future use. |
|
|
|
|
Bit 1 |
Port 1 |
|
|
|
Bit 2 |
Port 2 |
|
|
|
: |
|
|
|
|
Bit n Port n (implementation dependent) |
|
|
|
|
|
|
389
USB System Architecture
Compound Device or Hub Only
Whether a hub is part of a compound device implementation or not is defined at offset 3, bit 2, within the hub class descriptor.
Over-Current Protection Mode
A hub may choose to implement over-current protection in different ways, as long as it conforms to the safety requirement of allowing no more than 5a of current to be drawn by a given port. Offset 3, bits 4:3, specify which over-cur- rent protection mode is implemented for this hub as described in Table 20-5 on page 388.
Power On to Power Good Delay
Configuration software must know how long the device requires power to be applied to the device. Once system software requests that power be applied to the hub, there will be a delay until power is good at the port. Software must wait until it knows that power is good before accessing the port. Offset 5 defines the delay between the power-on request and power good. The value is defined in 2ms intervals.
Maximum Bus Current for Hub Controller
Offset 6 within the hub class descriptor specifies the maximum amount of current that the hub controller consumes. Note that this value is different from the maximum current field in the configuration descriptor, which specifies total power that the device consumes. (See the section entitled “Maximum Bus Power Consumed” on page 381.)
Device Removable/Non-removable
The DeviceRemovable field at offset 7 provides a bitmap of all ports supported by this hub. Each bit position corresponds to a given hub (i.e., bit 1 specifies port 1). If the bit field corresponding to a port is cleared, the device is removable, and if the bit is set, the device is permanently attached (e.g., an embedded device). The field size is one byte for hubs that support from one to seven ports. Another byte must be added for 8 to 15 ports, etc.
390
