AMI-Aptio-BIOS-Reversed / AmiModulePkg / AHCI / SataController /
@Ajax Dong Ajax Dong authored 7 days ago
..
README.md Recovering names 7 days ago
SataController.c Recovering names 7 days ago
SataController.h Recovering names 7 days ago
SataController.md Recovering names 7 days ago
README.md

SataController

Index: 0128 | Size: 158.0 KB | Phase: DXE | Arch: X64

Source: AmiModulePkg/AHCI/SataController/SataController.c with declarations in
SataController.h.

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

Platform

Intel Purley platform (PurleySktPkg), Lenovo HR650X. PCH SATA controller with S3 resume support.

Module/File Split Notes

  • SataController.c: recovered implementations for the EFI_IDE_CONTROLLER_INIT_PROTOCOL surface, mode calculation, PCH detection, S3 boot-script lifecycle, and SMM LockBox wrappers.
  • SataController.h: recovered canonical exports and parameter contracts for all recovered symbols.

Recovered Variable Naming

  • gBootScriptContext
  • gAltBootScriptContext
  • gBootScriptAllocated
  • gBootScriptFinalGuid
  • gBootScriptCloseGuid
  • gLockBoxGuid2
  • gEventExitBootSvc
  • gEventSetVirtualAddrMap
  • gEventReadyToLock
  • gSmst
  • gSmstAllocated
  • gDxeSmmReadyToLockEvent
  • gLockBoxCommBuffer
  • gPchSeries