# Uhcd

| Field  | Value |
|--------|-------|
| Index  | 298 |
| Module | Uhcd |
| Size   | 76192 bytes (0x129A0) |
| Phase  | DXE |

USB Host Controller Driver (xHCI) for the Lenovo HR650X platform. This AMI-proprietary driver manages xHCI controllers including driver entry and UHCD protocol installation, xHCI controller enumeration and initialization, USB device tree management (add/remove/update), control/bulk/interrupt/isochronous transfer scheduling, root hub emulation with port status and feature control, timer-based polling for interrupt transfers, and memory pool management for runtime USB data structures. The driver defines a large global context structure (~30KB) allocated from runtime memory and a private vtable for internal helper dispatch.

## Key Functions

- **ModuleEntryPoint** -- Driver entry; allocates gUsbData context and installs UHCD protocol
- **LocateAndInitXhciController** -- Enumerates and initializes xHCI host controllers
- **XhciCapabilityProbe** -- Probes xHCI capability registers for version and structural parameters
- **UsbRtAllocPages** -- Runtime memory pool allocation for USB data structures
- **UsbDeviceTreeAdd/Remove/Update** -- USB device tree management
- **UsbTransferSchedule** -- Schedules control/bulk/interrupt/isochronous transfers on xHCI

## Dependencies

- UefiBootServicesTableLib, UefiRuntimeServicesTableLib
- DebugLib, BaseLib, TimerLib
- CPU IO2 Protocol, UHCD Protocol (AMI proprietary)

## Platform

x86-64 PE32+ (UEFI DXE driver), Lenovo HR650X (Purley/Intel grantley-EP), AMI ModulePkg (Usb module)