SataController
Index: 0128 | Size: 158.0 KB | Phase: DXE | Arch: X64
Overview
SATA host controller driver implementing the EFI_IDE_CONTROLLER_INIT_PROTOCOL for Intel PCH SATA controllers on the Purley platform. Manages channel enumeration, device identification (IDENTIFY DEVICE), PIO/DMA mode calculation, and asynchronous command submission. Also integrates S3 boot script management -- saves/restores SATA controller configuration to/from the SMM LockBox for S3 resume path.
Key Functions
- SataGetDeviceCount / SataGetDevice: Enumerate and identify SATA devices on available channels
- SataIdentifyDevice: Execute ATA IDENTIFY DEVICE command, parse capabilities (PIO modes, DMA modes, IORDY support)
- SataCalculateBestPioMode: Determine optimal PIO timing mode from IDENTIFY data (modes 0-4 based on Field103)
- PchGetPchSeries: Detect PCH generation (SPT range 0x9D00-0x9D3F, CNP range, Cannon Point) for controller-specific configuration
- S3BootScriptLibInit / SaveBootScriptDataToLockBox: Save SATA register state to LockBox for S3 resume, including memory ranges and boot script context
Protocols/Dependencies
- EFI_IDE_CONTROLLER_INIT_PROTOCOL, EFI_SMM_BASE2_PROTOCOL
- PCI I/O protocol (MmPciBase for PCH register access)
- SMM LockBox protocol (SmmLockBoxSave/Restore/SetAttributes)
- S3 Boot Script Library, DxeSmmReadyToLock event
Intel Purley platform (PurleySktPkg), Lenovo HR650X. PCH SATA controller with S3 resume support.