American Megatrends, Inc.

AhciSources

Copyright

Release Notes

© American Megatrends, Inc.


AhciSources

AMIBIOS Document References

Previous Release Notes

Release Notes 019.htm

Release Notes 020.htm

ReleaseNotes021.htm

ReleaseNotes022.htm

ReleaseNotes023.htm

ReleaseNotes024.htm

ReleaseNotes025.htm

ReleaseNotes026.htm

Built on 17:22:30 01/07/15


Release Notes - NDA Required

Component Information:
Component Title: AHCI
Component Reference Name: AHCI
Component Type: eModule
Release Date: 2012-03-06
Source Control Label: 4.6.3_AhciSrc_019
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AHCI;
Driver Dependencies
N0NE
Protocol Dependencies
EFI_LEGACY_BIOS_PROTOCOL_GUID and EFI_SMM_BASE_PROTOCOL_GUID
File Dependencies
Pidebus.h Source Safe Version 22
PAhciBus.h Source Safe Version 4
PDiskInfo.h Source Safe Version 4
Non-Compiled BIN and LIB File(s) within this Component:

AI13.bin
Component Title: AHCI
Component Reference Name: AHCI
Component Source Control Label: AHCI.12_CSM16.57_11
Component Source Control Location: SS: ALASKA;$/Alaska/CSM16/AHCI;
Project Source Control Label: 8.00.10.00.0x.57
Project Source Control Location: SS: ALASKA;$/Alaska/CSM16/Complete Project/Furball10.64K/Furball10.veb;
Component Description:
Advanced Host Controller Interface (AHCI) is a programming interface for SATA host controllers. AHCI defines transactions between the SATA controller and software and enables advanced performance and usability with SATA. AHCI has advantage of performance features such as no master/slave designation for SATA devices—each device is treated as a master—and hardware assisted native command queuing. AHCI also provides usability enhancements such as Hot-Plug. AHCI also requires appropriate software support (e.g., an AHCI driver) and for some features, hardware support in the SATA device.
The AhciSrc Module can be added to a EFI BIOS to support Initialization, Detection and Enumeration of drives in Native Ahci Mode.
The Module can be bisected to view the following functionality:
Ahci Bus :
This file will take care of installing and Uninstalling the driver binding protocol, Block Io Protocol for the Ahci Bus. Besides this it will take care of the detection of SATA device connected to given Port and PM Port and initializing, configuring and Programming the Ports and Ahci Controller if present. Other functionality about the Disk information, Identification and other miscellaneous task such as delays status check memory test etc will also be preformed when the disk is enumerated.
AhciController :
All the Controller related functionality are handled in this file. Besides having the Sata Block-io protocol functions, it will execute all controller related PIO, Packet and Non Data Commands. This File will also takes care of the Command structure based information that needs to be passed and controller features like generating resets, Start and Stop unit commands for controller, Wait for Controller processing actions.
Aint13 :
This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16 which in turn passes the Number of Drives and Drive information to the legacy 16 bit binary so that the Ahci Sata devices (HDD/CD/DVD etc) will be entered in the bbs entry and passing the information
Aint13Csp :
This is chipset porting file that has routines to port index/data ports to access memory-mapped registers
AhciAccess :
Main functionality will be to provide Index Data Port Access to AHCI Controller
Contol Flow :

Ahci Driver is similar to IdeBus driver Functionality besides it uses the memory mapped access and Command structure to pass for the drive and operation instead of the Port map access. The Driver gets controlled as a generic driver binding model once it has been supported and the start function will enumerate the devices connected on the sata ports if found presence. Once Detected, the sata devices will be configured with the sata protocols and all the supplementary functionality. Finally at the end of Post, the enumerated devices are added to the bbs Prioroty table and the device information will be passed to the legacy 16 bit Csm Module.
Filename | Description
Main Component | Root\Core\em\Ahci
AhciSrc.cif | Component information file for the eModule.
AhciSrc.mak | Make file becomes part of the BIOS build process.
AhciSrc.sdl | Contains BIOS build parameters.
AhciBus.c | Files that has Ahci Bus detection and Enumeration Related Functions and Protocols.
AhciBus.h | Headers, Definitions, Macros and Function Prototypes are defined in this File.
AhciController.c | Files that has Ahci Controller Related Functions and Protocols.
AhciController.h | Headers, Definitions, Macros and Function Prototypes for Ahci controller are defined.
AhciComponentName.c | Component Name Protocol Member Functions for Ahci Bus.
AhciSources.Chm | CHM file for the eModule.
AHCI Int13 ModulePart | Root\Core\eM\Ahci - This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16.
Aint13.cif | Component information file for the Module part.
Aint13.sdl | Contains BIOS build parameters.
Aint13.mak | Make file becomes part of the BIOS build process.
Aint13.inf | Rev and Bin Info of Module
AInt13.h | Headers, Definitions, Macros and Function Prototypes for Aint13 are defined.
AInt13.c | Files that has Aint13 Related Functions and Protocols.
AHCI Int13 Protocol ModulePart | Root\Include\Protocol - This has the AHCI INT13 initialization protocol.
Aint13Protocol.cif | Component information file for the Module part.
LegacyAhci.h | Protocol Definition of Legacy Ahci are defined.
AHCI 16 Bit binary ModulePart | Root\Addon - This contains 16 bit Csm Binary File.
ahcibin.cif | Component information file for the Module part.
AI13.bin | It is the 16 bit Csm Binary File for Ahci Int 13.
AHCI Int 13 CSP-Template ModulePart | Root\Chipset\eM\Ahci - This is chipset porting file that has routines to port index/data ports to access memory-mapped registers.
AhciCsp.cif | Component information file for the Module part.
AHCIACC.ASM | Assembly file for Ahci Access.
HACCESS.EQU | Equates Defined for Asm Files.
AHCI.EQU | Equates Defined for Asm Files.
AINT13.EQU | Equates Defined for Asm Files.
AInt13Csp.c | Files that has Aint13 Csp Related Functions and Protocols.
AHCI CSP-Template ModulePart | Root\Chipset\eM\Ahci - Main functionality will be to provide Index Data Port Access to AHCI Controller .
AhciAccess.cif | Component information file for the Module part.
AhciAccess.c | Files that has Aint13 Csp Related Functions and Protocols.
AhciMmioSmm ModulePart | Root\Core\em\Ahci\AhciMmioSmm - This modulepart is used to implement the Sw SMI to access the MMIO of the AHCI controller base address.
AhciMmioSmm.cif | Component information file for the Module part.
AhciMmioSmm.sdl | Contains BIOS build parameters.
AhciMmioSmm.mak | Make file becomes part of the BIOS build process.
AhciMmioSmm.dxs | Depency file for this module part.
AhciMmioSmm.c | This contains functions to access the MMIO of the AHCI controller base address through Sw SMI.
AhciSmm ModulePart | Root\Core\eM\Ahci\AhciSmm - This module part contains the code that is executed in SMM.
AhciSmm.cif | Component information file for the Module part.
AhciSmm.sdl | Contains BIOS build parameters.
AhciSmm.mak | Make file becomes part of the BIOS build process.
AhciSmm.dxs | Depency file for this module part.
AhciSmm.h | Headers, Definitions, Macros and Function Prototypes are defined.
AhciSmm.c | It contains Functions that are executed in SMM.
AhciSmmProtocols ModulePart | Root\Include\Protocol - Protocol definition for AHCI bus is defined here.
AhciSmmProtocols.cif | Component information file for the Module part.
AhciSmmProtocol.h | Files that has Functions and Protocols for Ahci Smm.
BIOS Parameters:
Parameter Name | Type | Description
AhciSrc_SUPPORT | Boolean | Main switch to enable AHCI support in Project.
PORT_MULTIPLIER_SUPPORT | Boolean | Switch to Enable/Disable PM Support.
INDEX_DATA_PORT_ACCESS | Boolean | 0-MMIO Access , 1- Index/Port access.
HDD_PASSWORD_SUPPORT_UNDER_RAIDMODE | Boolean | 0-HDD Password not support under Raid mode 1- Enabled.
SUPPORT_ATAPI_IN_RAID_MODE | Boolean | 1-Under Raid mode , Atapi devices are handled by AhciBus driver. 0 - Raid option rom will handle the Atapi devices.
AINT13_SUPPORT | Boolean | Main switch to enable AHCI Int13 support in the project.
AHCIMMIOSMM_SUPPORT | Boolean | Main switch to enable AhciMmioSmm support in Project.
AHCI_MMIO_SWSMI | Integer | SW SMI value to be used in AhciMmioSmm.
AhciSmm_SUPPORT | Boolean | Main switch to enable AhciSmm support in Project.
ICH_SATA_BUS_NUMBER | Integer | This token represents the Sata Bus number.
ICH_SATA_DEVICE_NUMBER | Integer | This token represents the Sata Devicenumber.
ICH_SATA_FUNCTION_NUMBER | Integer | This token represents the Sata Function number.
AHCI_CONTROLLER_COUNT | Integer | The controller count can range from 1-6
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_38, Dated: 2011-12-20
Visual eBios: RSS.5.72.0219, Dated: 2011-12-20
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
General Bug Fixes:
  • EIP#82275 - SataReadWritePio doesn't work if the ReadSector count is more than 256 sectors

EIP addressed in this label:
  • EIP#82275 - SataReadWritePio doesn't work if the ReadSector count is more than 256 sectors

  • EIP#78099 - Handle multiple AHCI controller in legacy.

Files changed for EIP fixes:
  • Root\Core\eM\Ahci\AhciController.c (EIP #82275)
  • Root\Core\eM\Ahci\Aint13.sdl (EIP #78099)
  • Root\Core\eM\Ahci\Aint13.c (EIP #78099)
  • Root\Core\eM\Ahci\Aint13.h (EIP #78099)
  • Root\Chipset\eM\Ahci\AHCIACC.ASM (EIP #78099)
  • Root\Chipset\eM\Ahci\AINT13.EQU (EIP #78099)
  • Root\Addon\AI13.bin (EIP #78099)
Known issues and limitations in this label:
None
Remaining Issues:
None
Unit Testing:
UEFI2.0 | UEFI2.1 | OS(Windows7) installation | Detection on different ports | File system available under Shell environment | OS Boot
Pass | Pass | Pass | Pass | Pass | Pass
Validation Testing:
Validate the AHCI module with the following test cases and conditions.

  1. ATA and ATAPI device detection testing

    • Connect ATA and ATAPI devices to SATA Ports
    • Boot to Setup and make sure all the devices displayed in SATA device information page
    • Go to Boot Priority menu and check all the devices shows up in the boot priority list also
    • Make sure all the device shows up in the boot override menu also.

  2. Testing File System

    • Connect ATA and ATAPI devices to SATA Ports
    • Boot to Shell and make sure you could see the file system for each device attached

    Note: ATA device should have EFI known file system and ATAPI devices should have EFI known file system Media on it.

  3. Testing Legacy OS boot

    • Connect ATA and ATAPI devices to SATA Ports
    • Test the Win7 32 bit installation through ATA and ATAPI devices.
    • Test the Win7 32 bit booting through ATA devices.
    • Test the Win7 32 bit booting through ATAPI devices.

    Note: Some Legacy OS might require the AHCI driver for OS installation.

  4. Testing UEFI OS boot

    • Connect ATA and ATAPI devices to SATA Ports
    • Test the UEFI Win7 installation through ATA and ATAPI devices.
    • Test the UEFI Win7 booting through ATA devices.
    • Test the UEFI Win7 booting through ATAPI devices.

  5. AhciSmm Driver Testing

    • Connect ATA devices to SATA ports and install the HDD password on it.
    • Boot to windows and go to S3 and wakeup the system from S3 and make sure system wakeup properly and system HDD works fine after wakeup.

  6. IdeSMART Testing

    • Connect ATA devices to SATA ports.
    • Perform IdeSMART testing in AHCI mode to ensure compatibility.

  7. IdeSecurity Testing

    • Connect ATA devices to SATA ports.
    • Perform IdeSecurity testing in AHCI mode to ensure compatibility.

Repeat the above test procedure on one Intel motherboard and one AMD motherboard.
Validation Test Report

Validation Test Report.
Release History:
4.6.3_AhciSrc_019:
  • [TAG] - EIP82275
    [Category] - Bug Fix
    [Severity] - Minor
    [Symptom] - SataReadWritePio doesn't work if the ReadSector count is more than 256 sectors
    [RootCause] - Buffer Address not incremented for the next Read
    [Solution] - Handled the buffer address properly for the next Pio Read
    [Files] - AhciController.c

  • [TAG] - EIP78099
    [Category] - Improvement
    [Description] - Handle multiple AHCI controller in legacy.
    [Files] - Aint13.sdl , AInt13.c , AInt13.h , AHCIACC.ASM , AHCI.EQU , AINT13.bin (AHCIACC.ASM , AINT13.EQU)

    AHCI.12_CSM16.57_11
  • [TAG] - EIP81580
    [Category] - Bug Fix
    [Severity] - Important
    [Symptom] - AHCI CDROM read function improperly use EBDA if the size of it exceeds 64KB
    [RootCause] - FS segment that is used as EBDA segment can not be used when EBDA esceeds 64K
    [Solution] - Initialize and use GS for >64K EBDA addresssing
    [Files] - Acdr.asm

  • [TAG]- EIP 80742
    [Category]-Enhancement
    [Description]- The speed is slow when recover image via internal/eSATA ODD w/ ghost.
    [Files]- Acdr.asm

  • [TAG] - EIP78099
    [Category] - Improvement
    [Description] - Handle multiple AHCI controller in legacy.
    [Files] - Aint13.sdl , AInt13.c , AInt13.h , AHCIACC.ASM , AHCI.EQU , AINT13.bin (AHCIACC.ASM , AINT13.EQU, AINT13.ASM)

  • [TAG] - EIP77052
    [Category] - Improvement
    [Description] - Increased the default time out value from 5s to 16s
    [Files] - Aint13.equ

NOTE: This label requires Pidebus.h Source Safe Version 22, PAhciBus.h Source Safe Version 4 and PDiskInfo.h Source Safe Version 4.

4.6.3_AhciSrc_018:
  • [TAG] - EIP 59997
    [Category]- IMPROVEMENT
    [Description]- AHCI eModule can't be built successfully if CSM_SUPPORT = 0 or removed CSM eModule from a project
    [Files] - AhciSrc.Sdl, Aint13.sdl

  • [TAG] - EIP 53565
    [Category] - New Feature
    [Description] - UEFI2.3+ Specifications defines Storage Security protocol which needs to be implemented.
    [Files] - AhciBus.c,IdeBus.c,AHCIOpalSec.c,IDEOpalSec.c,OpalSecurity.c,OpalSecurity.chm,OpalSecurity.cif,OpalSecurity.h, OpalSecurity.mak,OpalSecurity.sdl,PIDEBus.h,StorageSecurityProtocol.CIF,StorageSecurityProtocol.h

  • [TAG]- EIP 59495
    [Category]-IMPROVEMENT
    [Description]- Update implementation of EFI_BLOCK_IO_PROTOCOL as described in UEFI specification v 2.3.1, page 12.8
    [Files]- AhciBus.c

  • [TAG] - EIP 56530
    [Category] - Improvement
    [Description] - EFI_IDE_CONTROLLER_INIT_PROTOCOL and EFI_DISK_INFO_PROTOCOL are used accordingly to the PI 1.2 spec
    [Files] - AhciBus.c, IdeControllerInit.h, PDiskInfo.h

  • [TAG] - EIP 61076
    [Category]- IMPROVEMENT
    [Description]- Setting the Interface Speed Support in CAP.ISS. so that it's get programmed in PxSCT[7:4]. For this programming the link communication should not be established. If it's already established we should use GeneratePortReset function to set the speed
    [Files] - AhciBus.c

  • [TAG] - EIP 71410
    [Category] - Bug Fix
    [Severity] - Important
    [Symptom] - 10 seconds Delay in post if ODD with CD/DVD
    [RootCause] - ATA Specific commands are executed for ATAPI devices also.
    [Solution] - ATA device check added before sending the command.
    [Files] - Ahcibus.c

  • [TAG] - EIP 59552
    [Category] - BUG FIX
    [Severity] - Normal
    [Symptom] -AhciController.c file in Ahci driver needs modification to Support Index/Data Port access method for getting the FIS Address.
    [RootCause] - FISAddress was Obtained using MMIO method irrespective of "INDEX_DATA_PORT_ACCESS" SDL token. [Solution] - FISAddress is now obtained using Port I/O or MMIO method depending on
    "INDEX_DATA_PORT_ACCESS" SDL token.
    [Files] - AhciController.c

  • [TAG] - EIP 69295
    [Category] - Improvement
    [Description] - The Timeout values used by IDE and AHCI drivers are made as SDL tokens, so that the timeout values can be varied.
    [Files] - IdeBusBoard.c, CORE_DXE.sdl, AhciSmm.h, AhciBus.h, IDESMM.h, Ata.c, Atapi.c, IdeBus.c, IdeBus.h, IdeBusMaster.c, IdeBusBoard.h

  • [TAG] - EIP 69398
    [Category] - Bug Fix
    [Severity] - Minor
    [Symptom] - Function ConfigureController() has a runtime error (NULL pointer dereference)
    [RootCause] - variable SupportedModes has been initialized again in ConfigureController().
    [Solution] - variable SupportedModes is passed as an input parameter for ConfigureController() and ConfigureDevice().
    [Files] - AhciBus.c, AhciBus.h

  • [TAG] - EIP 61801
    [Category] - Improvement
    [Description] - Added dependency on LegacyBios protocol.

  • [TAG]- EIP 57762
    [Category]-IMPROVEMENT
    [Description]- Please help to put SATA ODD PxCLB and PxCLBU to E820 and below 1M.
    [Files]- Aint13.c

    AHCI.12_CSM16.57_09
  • [TAG] - EIP53546
    [Category] - Enhancement
    [Description] - Multisession CD can not boot from SATA ODD with AHCI mode
    [Files] - ACDR.ASM

  • [TAG]- EIP 54231
    [Category]-IMPROVEMENT
    [Description]- Display the virus warning message when writting into MBR of HDD. This support added for IDE, AHCI and USB HD devices.
    [Files]- Bfiport.asm , Bfiusb.asm , Aint13.asm, Hd.asm , HdApi.inc, Jmp.asm, Mo.asm

    Test Report: Installed and Booted Legacy OS under AHCI mode.

Note: This label requires Pidebus.h Source Safe Version 22, PAhciBus.h Source Safe Version 4 and PDiskInfo.h Source Safe Version 4
4.6.3_AhciSrc_017:
  • [TAG]- EIP 51884
    [Category]- New Feature
    [Description]- Added packet command function in AhciSMM for sending command in SMM handler
    [Files]- AhciSmm.c, AhciSmm.h, AhciSmmProtocols.h

  • [TAG] - EIP53849
    [Category] - BUG FIX
    [Severity] - Normal
    [Symptom] - Ide Bus Sources cannot build in IA32 DEBUG mode.
    [RootCause] - It happened because of usage of << and * with UINT64 values in AtaPioDataOut() and SataPioDataOut().
    [Solution] - Shl64 and Mul64 functions have been implemented to operate UINT64 values.
    [Files] - Ata.c, AhciController.c

  • [TAG] - EIP37975
    [Category] - Improvement
    [Description] - Klocwork Issues II - IDE/Ahci module.
    [Files] - AhciBus.c, AhciController.c

  • [TAG] - EIP37975
    [Category] - Improvement
    [Description] - Klocwork Issues II - IDE/Ahci module.
    [Files] - AhciBus.c, AhciController.c

  • [TAG] - EIP53704
    [Category] - Improvement
    [Description] - AMI headers update for Alaska Ahci Driver
    [Files] - AhciSrc.mak, AhciBus.c, AhciController.c, AhciComponentName.c, AhciBus.h, AhciController.h, Aint13.mak, AInt13.h, AInt13.c, AHCIACC.ASM, HACCESS.EQU, AHCI.EQU, AINT13.EQU, AInt13Csp.c, AhciAccess.c, AhciSmm.mak, AhciSmm.dxs, AhciSmm.c, AhciSmm.h, AhciSmmProtocol.h

  • [TAG] - EIP53730
    [Category] - Improvement
    [Description] - Add Odd Loading type information into ATAPI_DEVICE structure in AHCI mode
    [Files] - AhciBus.c, AhciController.c, AhciBus.h

  • [TAG]- EIP 42817
    [Category]-IMPROVEMENT
    [Description]- Ide Smart checks HDDs for errors moved after Idebus Device path has been installed.

  • [TAG] - EIP 44800
    [Category] - Defect
    [Severity] - Major
    [Symptom] - Side Effect of EIP 40528. HDD security setup option disappear on warn boot in AHCI mode.
    [RootCause]- When FORCE_HDD_PASSWORD_PROMPT token enabled,Software preservation is disabled only when password is enabled.
    [Solution] - Software preservation is disabled when HDD can support software preservation.
    [Files] - AhciBus.c

  • [TAG] - EIP 45266
    [Category]- BUG FIX
    [Severity]- Minor
    [Symptom] - E-SATA card will hang up on post and debug card show "AE
    [RootCause]- Device doesn't support any of the UDMA mode and function ReturnMsbbit returns incorrect values
    [Solution] - If any of the bit is not set in Input value, ReturnMsbbit returns 0xFF.
    [Files] - Ata.c, AhciBus.c

  • [TAG] - EIP 48045
    [Category]- BUG FIX
    [Severity]- Minor
    [Symptom] - DISABLE_SOFT_SET_PREV sdl token set 1 , throws build error in AHCI driver.
    [RootCause]- Status Variable not declared
    [Solution] - Declared the Status variable.
    [Files] - Ahcibus.c

  • [TAG] - EIP41445
    [Category] - NEW FEATURE
    [Description] - Created SataPioDataOut and AtaPioDataOut protocol function that can accept additional input parameters.
    [Files] - AhciBus.h, AhciBus.c, AhciController.c, Ata.c, IdeBus.c, IdeBus.h, IdeBusMaster.c,PAhciBus.h, PIdeBus.h

  • [TAG] - EIP 49229
    [Category]- BUG FIX
    [Severity]- Minor
    [Symptom] - SATA interface setting (SATA speed)
    [RootCause]- Read the SATA device speed from the Capabilities Register and set it to Port Control speed Register
    [Solution] - Read the SATA device speed from the Capabilities Register and set it to Port Control speed Register.
    [Files] - AhciBus.c

  • [TAG] EIP44641
    [Synopsis] Calpella: Build error when Token INDEX_DATA_PORT_ACCESS = 1 in AhciSrc.sdl
    [Category] Defect
    [Severity] Normal
    [Resolution] Updated AhciSmm.h and AhciSmm.mak to resolve build errors.
    [Files] AhciSmm.h, AhciSmm.mak

  • [TAG] EIP48678
    [Category] Action Item
    [Description] AHCI module does not build without CSM
    [Solution] Remove dependecies on CSM that are required for AHCI module
    [Files] AhciSmm.dxs

  • EIP 38444 - AHCI Legacy booting through MMIO reg.

  • EIP#38384 - Checked the Device Configuration Overlay feature set supported status before sending the DEV_CONFIG_FREEZE_LOCK
NOTE: This label requires Pidebus.h Source Safe Version 19.
4.6.3_AhciSrc_016:
  • AhciBus.c - EIP#30719: Support for the HDD with sector size more than 512bytes.
    • EIP#34744: UEFI2.1 compliance change.
    EIP#34744: UEFI2.1 compliance change.
    EIP#34583: Atapi devices are handled by AhciBus driver based on SUPPORT_ATAPI_IN_RAID_MODE SDL token.
    EIP#11835: Acoustic Management Function.
    EIP#30041: Device Initiated Power Management Support.
  • AhciController.c - EIP#30719: Support for the HDD with sector size more than 512bytes..
  • AhciComponentName.c - EIP#34744: UEFI2.1 compliance change.
NOTE:
  • For Acoustic management and DiPM support, SBIDE component along with latest PIDEBus.h file should be included in the project
  • The latest label is UEFI2.0 and UEFI2.1 compliant
  • The module has been validated on the Calpella Crb (Red Fort Fab3)
4.6.3_AhciSrc_015:
  • AhciBus.c - EIP#28961: Corrected the Disk Info Protocol installation information, and corrected it from EFI_BLOCK_IO_PROTOCOL to EFI_DISK_INFO_PROTOCOL.
  • AhciSmm.c - Correct S3 resume hanging problem in AHCI mode (EIP 29827).
    •       AhciBaseAddress initilization moved from entryfunction to AhciSmmInitPortOnS3Resume. EIP: 29827.
  • AhciSmm.dxs - EIP#29827:HDD Password can not be unlocked on AHCI mode when the system resume from S3.
4.6.3_AhciSrc_014:
  • Symptom: After installing the UEFI windows 7 and reboot, system hangs on post.
    • Rootcause: Devicepath created with NULL when the Remainingdevicepath has valid value. .
    Solution: Created the Devicepath even if the RemainingDevicePath has the valid value.if the Erase command timeout value is 0 or 255, wait for the Erase command completion without timeout value.
    EIP:20630.
  • Corrected command parameter error in all PACKET_COMMAND - EIP 24817.
  • AHCI bus driver doesn't detect the devices other than port 0 when the remaining device path is not nullEIP:25368.
  • Acoustic Management function updated to set acoustic level according to setup option EIP:11835.
  • Coding Standard and unwanted code removal in InitAcousticSupport function.
  • With some HDD, bios takes longer time to cross checkpoint A2 in AHCI mode.This has been updated in the document - EIP 25604.
  • It takes a long time to detect large size HDD(eg. 500GB, 1TB size) under AHCI mode-EIP26499.Replaced TAB with spaces for AMI code standard.
  • Code modified to update SataDevInterface->identifydata in GetIdentifyData function instead of returning in global variable - EIP26411.
4.6.3_AhciSrc_013:
  • if the Erase command timeout value is 0 or 255, wait for the Erase command completion without timeout valueEIP:20630.
  • Odd Type information Saved in Atapi Device Structure.EIP:21548.
  • Fixed the Read/Write failure when ALPE is Enabled.
4.6.3_AhciSrc_012:
  • After COMRESET, wait for shadow status register to get synced up with D2H FIS.
  • BugFix- Validate the PIO mode before programming the PIO mode into the device EIP:17885..
  • Security Erase command timeout value should be from the Identify packet command word 89 EIP 20630.
  • HDD password support in RAID mode. EIP:20421.
  • Added AhciSMM support.
4.6.3_AhciSrc_011:
  • AhciController.c : Fixed Ahci Block Write Issue Which Exceeds 4MB. Added the Proper Offset of Descriptor and Fixed Valid PRDT_I Bit.
  • AI13.Bin : VDS support.
4.6.3_AhciSrc_010:
  • Aint13.c : Added AHCI_CD_CSM_ID_OFFSET for assigning device numbers for CDs/DVDs in order to avoid a CSM16 conflict with PATA CD devices, which may be present on some systems.
  • Aint13.h : Added AHCI_CD_CSM_ID_OFFSET for assigning device numbers for CDs/DVDs in order to a void a CSM16 conflict with PATA CD devices, which may be present on some systems.
4.6.3_AhciSrc_009:
  • AhciSrc.sdl : Added TargetH = Yes to have the token defined in token.h file during build.
  • AhciBus.c : Compatible Mode AHCI Support Added and Sdl Token Added in IdeBusSrc.sdl.
  • AhciController.c : Fixed the error reported by EFI Diag r(CD/DVD test) to return EFI_NO_MEDIA.
  • AI13.bin : Updated the Int13 support for AHCI.
NOTE: This label requires ACOUSTIC_MANAGEMENT_SUPPORT token tNote: With this you will have to have the latest IdeBus Sources module label 4.6.3_IdeBusSrc_004 or later also to work properly.
4.6.3_AhciSrc_008:
  • Modification in AINT13.BIN that takes care of AMD SB700 issues.
4.6.3_AhciSrc_007:
  • INDEX_DATA_PORT_ACCESS SDL token added and based on SDL token MMIO or Index/Data access method used.
  • Error code added if error happens while configuring device or controller. Cdrom block size initilized.
  • Default status initilized for handleatapierror.
4.6.3_AhciSrc_006:
  • AhciController.c - PMPort field in Command header and in FIS is set to zero when accessed.
  • AhciBus.c - Security feature stopped when the AHCI bus driver is stopped.Device SPINUP is enabled, check is added for COMRESET.
4.6.3_AhciSrc_005:
  • AhciController.c - ReadytoAcceptCmd Status is initialized.
4.6.3_AhciSrc_004:
  • Changed to an eModule.
4.6.3_AhciSrc_003:
  • AhciBus.c - Fixed the issue that HDD Password prompt is not displayed in POST in AHCI mode when DISABLE_SOFT_SET_PREV is enabled.
  • AhciController.c - Fixed issue that few HDDs not detected because of PhyRdy Change bit.
  • AhciSrc.sdl - Default Port_Multiplier support TOKEN is disabled by default.

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: AHCI
Component Reference Name: AHCI
Component Type: eModule
Release Date: 2012-06-07
Source Control Label: 4.6.3_AhciSrc_020
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AHCI;
Dependencies
Component Dependencies
N0NE

File Dependencies
ONE
Dependent File Name with Extension: Pidebus.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Include/Protocol/PIDEBus.h;
Dependent Source Control Label: 22
TWO
Dependent File Name with Extension: PAhciBus.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Include/Protocol/PAhciBus.h;
Dependent Source Control Label: 4
Three
Dependent File Name with Extension: PDiskInfo.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Modules/IdeBus/PDiskInfo.h 4;
Dependent Source Control Label: 4

Protocol Dependencies
ONE
Dependent Protocol Name: LEGACY BIOS PROTOCOL
Dependent Protocol GUID: EFI_LEGACY_BIOS_PROTOCOL_GUID
TWO
Dependent Protocol Name: SMM BASE PROTOCOL
Dependent Protocol GUID: EFI_SMM_BASE_PROTOCOL_GUID
Non-Compiled BIN and LIB File(s) within this Component:

AI13.bin
Component Title: AHCI
Component Reference Name: AHCI
Component Source Control Label: AHCI.12_CSM16.57_11
Component Source Control Location: SS: ALASKA;$/Alaska/CSM16/AHCI;
Project Source Control Label: 8.00.10.00.0x.57
Project Source Control Location: SS: ALASKA;$/Alaska/CSM16/Complete Project/Furball10.64K/Furball10.veb;
Component Description:
Advanced Host Controller Interface (AHCI) is a programming interface for SATA host controllers. AHCI defines transactions between the SATA controller and software and enables advanced performance and usability with SATA. AHCI has advantage of performance features such as no master/slave designation for SATA devices—each device is treated as a master—and hardware assisted native command queuing. AHCI also provides usability enhancements such as Hot-Plug. AHCI also requires appropriate software support (e.g., an AHCI driver) and for some features, hardware support in the SATA device.
The AhciSrc Module can be added to a EFI BIOS to support Initialization, Detection and Enumeration of drives in Native Ahci Mode.
The Module can be bisected to view the following functionality:
Ahci Bus :
This file will take care of installing and Uninstalling the driver binding protocol, Block Io Protocol for the Ahci Bus. Besides this it will take care of the detection of SATA device connected to given Port and PM Port and initializing, configuring and Programming the Ports and Ahci Controller if present. Other functionality about the Disk information, Identification and other miscellaneous task such as delays status check memory test etc will also be preformed when the disk is enumerated.
AhciController :
All the Controller related functionality are handled in this file. Besides having the Sata Block-io protocol functions, it will execute all controller related PIO, Packet and Non Data Commands. This File will also takes care of the Command structure based information that needs to be passed and controller features like generating resets, Start and Stop unit commands for controller, Wait for Controller processing actions.
Aint13 :
This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16 which in turn passes the Number of Drives and Drive information to the legacy 16 bit binary so that the Ahci Sata devices (HDD/CD/DVD etc) will be entered in the bbs entry and passing the information
Aint13Csp :
This is chipset porting file that has routines to port index/data ports to access memory-mapped registers
AhciAccess :
Main functionality will be to provide Index Data Port Access to AHCI Controller
Contol Flow :

Ahci Driver is similar to IdeBus driver Functionality besides it uses the memory mapped access and Command structure to pass for the drive and operation instead of the Port map access. The Driver gets controlled as a generic driver binding model once it has been supported and the start function will enumerate the devices connected on the sata ports if found presence. Once Detected, the sata devices will be configured with the sata protocols and all the supplementary functionality. Finally at the end of Post, the enumerated devices are added to the bbs Prioroty table and the device information will be passed to the legacy 16 bit Csm Module.
Filename | Description
Main Component | Root\Core\em\Ahci
AhciSrc.cif | Component information file for the eModule.
AhciSrc.mak | Make file becomes part of the BIOS build process.
AhciSrc.sdl | Contains BIOS build parameters.
AhciBus.c | Files that has Ahci Bus detection and Enumeration Related Functions and Protocols.
AhciBus.h | Headers, Definitions, Macros and Function Prototypes are defined in this File.
AhciController.c | Files that has Ahci Controller Related Functions and Protocols.
AhciController.h | Headers, Definitions, Macros and Function Prototypes for Ahci controller are defined.
AhciComponentName.c | Component Name Protocol Member Functions for Ahci Bus.
AhciSources.Chm | CHM file for the eModule.
AHCI Int13 ModulePart | Root\Core\eM\Ahci - This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16.
Aint13.cif | Component information file for the Module part.
Aint13.sdl | Contains BIOS build parameters.
Aint13.mak | Make file becomes part of the BIOS build process.
Aint13.inf | Rev and Bin Info of Module
AInt13.h | Headers, Definitions, Macros and Function Prototypes for Aint13 are defined.
AInt13.c | Files that has Aint13 Related Functions and Protocols.
AHCI Int13 Protocol ModulePart | Root\Include\Protocol - This has the AHCI INT13 initialization protocol.
Aint13Protocol.cif | Component information file for the Module part.
LegacyAhci.h | Protocol Definition of Legacy Ahci are defined.
AHCI 16 Bit binary ModulePart | Root\Addon - This contains 16 bit Csm Binary File.
ahcibin.cif | Component information file for the Module part.
AI13.bin | It is the 16 bit Csm Binary File for Ahci Int 13.
AHCI Int 13 CSP-Template ModulePart | Root\Chipset\eM\Ahci - This is chipset porting file that has routines to port index/data ports to access memory-mapped registers.
AhciCsp.cif | Component information file for the Module part.
AHCIACC.ASM | Assembly file for Ahci Access.
HACCESS.EQU | Equates Defined for Asm Files.
AHCI.EQU | Equates Defined for Asm Files.
AINT13.EQU | Equates Defined for Asm Files.
AInt13Csp.c | Files that has Aint13 Csp Related Functions and Protocols.
AHCI CSP-Template ModulePart | Root\Chipset\eM\Ahci - Main functionality will be to provide Index Data Port Access to AHCI Controller .
AhciAccess.cif | Component information file for the Module part.
AhciAccess.c | Files that has Aint13 Csp Related Functions and Protocols.
AhciMmioSmm ModulePart | Root\Core\em\Ahci\AhciMmioSmm - This modulepart is used to implement the Sw SMI to access the MMIO of the AHCI controller base address.
AhciMmioSmm.cif | Component information file for the Module part.
AhciMmioSmm.sdl | Contains BIOS build parameters.
AhciMmioSmm.mak | Make file becomes part of the BIOS build process.
AhciMmioSmm.dxs | Depency file for this module part.
AhciMmioSmm.c | This contains functions to access the MMIO of the AHCI controller base address through Sw SMI.
AhciSmm ModulePart | Root\Core\eM\Ahci\AhciSmm - This module part contains the code that is executed in SMM.
AhciSmm.cif | Component information file for the Module part.
AhciSmm.sdl | Contains BIOS build parameters.
AhciSmm.mak | Make file becomes part of the BIOS build process.
AhciSmm.dxs | Depency file for this module part.
AhciSmm.h | Headers, Definitions, Macros and Function Prototypes are defined.
AhciSmm.c | It contains Functions that are executed in SMM.
AhciSmmProtocols ModulePart | Root\Include\Protocol - Protocol definition for AHCI bus is defined here.
AhciSmmProtocols.cif | Component information file for the Module part.
AhciSmmProtocol.h | Files that has Functions and Protocols for Ahci Smm.
BIOS Parameters:
Parameter Name | Type | Description
AhciSrc_SUPPORT | Boolean | Main switch to enable AHCI support in Project.
PORT_MULTIPLIER_SUPPORT | Boolean | Switch to Enable/Disable PM Support.
INDEX_DATA_PORT_ACCESS | Boolean | 0-MMIO Access , 1- Index/Port access.
HDD_PASSWORD_SUPPORT_UNDER_RAIDMODE | Boolean | 0-HDD Password not support under Raid mode 1- Enabled.
SUPPORT_ATAPI_IN_RAID_MODE | Boolean | 1-Under Raid mode , Atapi devices are handled by AhciBus driver. 0 - Raid option rom will handle the Atapi devices.
AINT13_SUPPORT | Boolean | Main switch to enable AHCI Int13 support in the project.
AHCIMMIOSMM_SUPPORT | Boolean | Main switch to enable AhciMmioSmm support in Project.
AHCI_MMIO_SWSMI | Integer | SW SMI value to be used in AhciMmioSmm.
AhciSmm_SUPPORT | Boolean | Main switch to enable AhciSmm support in Project.
ICH_SATA_BUS_NUMBER | Integer | This token represents the Sata Bus number.
ICH_SATA_DEVICE_NUMBER | Integer | This token represents the Sata Devicenumber.
ICH_SATA_FUNCTION_NUMBER | Integer | This token represents the Sata Function number.
AHCI_CONTROLLER_COUNT | Integer | The controller count can range from 1-6
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_39, Dated: 2012-01-04
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes and EIP Addressed in this Label:

EIP Addressed
EIP #86336 - Can't boot from AHCI if SATA_PORT_COUNT=12
EIP #91233 - pBS->CloseEvent(Event) has to be added in function of SetEbdaAddressForPort() asit cabn handle the multiple legacy boot events.
Files Changed for General Bug Fixes and EIP Addressed in this Label:

EIP Addressed
Root\Core\eM\Ahci\Aint13.c (EIP #86336, #91233)
Root\Core\eM\Ahci\Aint13.h (EIP #86336)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
UEFI2.0 | UEFI2.1 | OS(Windows7) installation | Detection on different ports | File system available under Shell environment | OS Boot
Pass | Pass | Pass | Pass | Pass | Pass
Validation Testing:
DOCUMENT ANY BQA TESTING RESULTS
Here is the Quality Assurance System Test Plan
Here is the Quality Assurance Test Results
Release History:
4.6.3_AhciSrc_020:
  • [TAG] - EIP86336
    [Category] - Bug Fix
    [Severity] - Normal
    [Symptom] - Can't boot from AHCI if SATA_PORT_COUNT=12
    [RootCause] - The controller number was not updated in DEV_INFO_STRUC for all the Hard Disk
    [Solution] - Updated the controller number in the DEV_INFO_STRUC for all the AHCI devices.
    [Files] - AInt13.c, AInt13.h

  • [TAG] - EIP91233
    [Category] - Bug Fix
    [Severity] - Important
    [Symptom] - pBS->CloseEvent(Event) has to be added in function of SetEbdaAddressForPort() asit cabn handle the multiple legacy boot events.
    [RootCause] - CloseEvent not handled properly as SetEbdaAddressForPort will be re executed
    [Solution] - Event should be closed in SetEbdaAddressForPort when the event callback happens
    [Files] - AInt13.c

NOTE: This label requires Pidebus.h Source Safe Version 22, PAhciBus.h Source Safe Version 4 and PDiskInfo.h Source Safe Version 4.

Release_4.6.3_AhciSrc_019

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: AHCI
Component Reference Name: AHCI
Component Type: eModule
Release Date: 2012-09-03
Source Control Label: 4.6.3_AhciSrc_021
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AHCI;
Dependencies
Component Dependencies
N0NE

File Dependencies
ONE
Dependent File Name with Extension: Pidebus.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Include/Protocol/PIDEBus.h;
Dependent Source Control Label: 22
TWO
Dependent File Name with Extension: PAhciBus.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Include/Protocol/PAhciBus.h;
Dependent Source Control Label: 4
Three
Dependent File Name with Extension: PDiskInfo.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Modules/IdeBus/PDiskInfo.h 4;
Dependent Source Control Label: 4

Protocol Dependencies
ONE
Dependent Protocol Name: LEGACY BIOS PROTOCOL
Dependent Protocol GUID: EFI_LEGACY_BIOS_PROTOCOL_GUID
TWO
Dependent Protocol Name: SMM BASE PROTOCOL
Dependent Protocol GUID: EFI_SMM_BASE_PROTOCOL_GUID
Non-Compiled BIN and LIB File(s) within this Component:

AI13.bin
Component Title: AHCI
Component Reference Name: AHCI
Component Source Control Label: AHCI.12_CSM16.57_11
Component Source Control Location: SS: ALASKA;$/Alaska/CSM16/AHCI;
Project Source Control Label: 8.00.10.00.0x.57
Project Source Control Location: SS: ALASKA;$/Alaska/CSM16/Complete Project/Furball10.64K/Furball10.veb;
Component Description:
Advanced Host Controller Interface (AHCI) is a programming interface for SATA host controllers. AHCI defines transactions between the SATA controller and software and enables advanced performance and usability with SATA. AHCI has advantage of performance features such as no master/slave designation for SATA devices—each device is treated as a master—and hardware assisted native command queuing. AHCI also provides usability enhancements such as Hot-Plug. AHCI also requires appropriate software support (e.g., an AHCI driver) and for some features, hardware support in the SATA device.
The AhciSrc Module can be added to a EFI BIOS to support Initialization, Detection and Enumeration of drives in Native Ahci Mode.
The Module can be bisected to view the following functionality:
Ahci Bus :
This file will take care of installing and Uninstalling the driver binding protocol, Block Io Protocol for the Ahci Bus. Besides this it will take care of the detection of SATA device connected to given Port and PM Port and initializing, configuring and Programming the Ports and Ahci Controller if present. Other functionality about the Disk information, Identification and other miscellaneous task such as delays status check memory test etc will also be preformed when the disk is enumerated.
AhciController :
All the Controller related functionality are handled in this file. Besides having the Sata Block-io protocol functions, it will execute all controller related PIO, Packet and Non Data Commands. This File will also takes care of the Command structure based information that needs to be passed and controller features like generating resets, Start and Stop unit commands for controller, Wait for Controller processing actions.
Aint13 :
This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16 which in turn passes the Number of Drives and Drive information to the legacy 16 bit binary so that the Ahci Sata devices (HDD/CD/DVD etc) will be entered in the bbs entry and passing the information
Aint13Csp :
This is chipset porting file that has routines to port index/data ports to access memory-mapped registers
AhciAccess :
Main functionality will be to provide Index Data Port Access to AHCI Controller
Contol Flow :

Ahci Driver is similar to IdeBus driver Functionality besides it uses the memory mapped access and Command structure to pass for the drive and operation instead of the Port map access. The Driver gets controlled as a generic driver binding model once it has been supported and the start function will enumerate the devices connected on the sata ports if found presence. Once Detected, the sata devices will be configured with the sata protocols and all the supplementary functionality. Finally at the end of Post, the enumerated devices are added to the bbs Prioroty table and the device information will be passed to the legacy 16 bit Csm Module.
Filename | Description
Main Component | Root\Core\em\Ahci
AhciSrc.cif | Component information file for the eModule.
AhciSrc.mak | Make file becomes part of the BIOS build process.
AhciSrc.sdl | Contains BIOS build parameters.
AhciBus.c | Files that has Ahci Bus detection and Enumeration Related Functions and Protocols.
AhciBus.h | Headers, Definitions, Macros and Function Prototypes are defined in this File.
AhciController.c | Files that has Ahci Controller Related Functions and Protocols.
AhciController.h | Headers, Definitions, Macros and Function Prototypes for Ahci controller are defined.
AhciComponentName.c | Component Name Protocol Member Functions for Ahci Bus.
AhciSources.Chm | CHM file for the eModule.
AHCI Int13 ModulePart | Root\Core\eM\Ahci - This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16.
Aint13.cif | Component information file for the Module part.
Aint13.sdl | Contains BIOS build parameters.
Aint13.mak | Make file becomes part of the BIOS build process.
Aint13.inf | Rev and Bin Info of Module
AInt13.h | Headers, Definitions, Macros and Function Prototypes for Aint13 are defined.
AInt13.c | Files that has Aint13 Related Functions and Protocols.
AHCI Int13 Protocol ModulePart | Root\Include\Protocol - This has the AHCI INT13 initialization protocol.
Aint13Protocol.cif | Component information file for the Module part.
LegacyAhci.h | Protocol Definition of Legacy Ahci are defined.
AHCI 16 Bit binary ModulePart | Root\Addon - This contains 16 bit Csm Binary File.
ahcibin.cif | Component information file for the Module part.
AI13.bin | It is the 16 bit Csm Binary File for Ahci Int 13.
AHCI Int 13 CSP-Template ModulePart | Root\Chipset\eM\Ahci - This is chipset porting file that has routines to port index/data ports to access memory-mapped registers.
AhciCsp.cif | Component information file for the Module part.
AHCIACC.ASM | Assembly file for Ahci Access.
HACCESS.EQU | Equates Defined for Asm Files.
AHCI.EQU | Equates Defined for Asm Files.
AINT13.EQU | Equates Defined for Asm Files.
AInt13Csp.c | Files that has Aint13 Csp Related Functions and Protocols.
AHCI CSP-Template ModulePart | Root\Chipset\eM\Ahci - Main functionality will be to provide Index Data Port Access to AHCI Controller .
AhciAccess.cif | Component information file for the Module part.
AhciAccess.c | Files that has Aint13 Csp Related Functions and Protocols.
AhciMmioSmm ModulePart | Root\Core\em\Ahci\AhciMmioSmm - This modulepart is used to implement the Sw SMI to access the MMIO of the AHCI controller base address.
AhciMmioSmm.cif | Component information file for the Module part.
AhciMmioSmm.sdl | Contains BIOS build parameters.
AhciMmioSmm.mak | Make file becomes part of the BIOS build process.
AhciMmioSmm.dxs | Depency file for this module part.
AhciMmioSmm.c | This contains functions to access the MMIO of the AHCI controller base address through Sw SMI.
AhciSmm ModulePart | Root\Core\eM\Ahci\AhciSmm - This module part contains the code that is executed in SMM.
AhciSmm.cif | Component information file for the Module part.
AhciSmm.sdl | Contains BIOS build parameters.
AhciSmm.mak | Make file becomes part of the BIOS build process.
AhciSmm.dxs | Depency file for this module part.
AhciSmm.h | Headers, Definitions, Macros and Function Prototypes are defined.
AhciSmm.c | It contains Functions that are executed in SMM.
AhciSmmProtocols ModulePart | Root\Include\Protocol - Protocol definition for AHCI bus is defined here.
AhciSmmProtocols.cif | Component information file for the Module part.
AhciSmmProtocol.h | Files that has Functions and Protocols for Ahci Smm.
BIOS Parameters:
Parameter Name | Type | Description
AhciSrc_SUPPORT | Boolean | Main switch to enable AHCI support in Project.
PORT_MULTIPLIER_SUPPORT | Boolean | Switch to Enable/Disable PM Support.
INDEX_DATA_PORT_ACCESS | Boolean | 0-MMIO Access , 1- Index/Port access.
HDD_PASSWORD_SUPPORT_UNDER_RAIDMODE | Boolean | 0-HDD Password not support under Raid mode 1- Enabled.
SUPPORT_ATAPI_IN_RAID_MODE | Boolean | 1-Under Raid mode , Atapi devices are handled by AhciBus driver. 0 - Raid option rom will handle the Atapi devices.
AINT13_SUPPORT | Boolean | Main switch to enable AHCI Int13 support in the project.
AHCIMMIOSMM_SUPPORT | Boolean | Main switch to enable AhciMmioSmm support in Project.
AHCI_MMIO_SWSMI | Integer | SW SMI value to be used in AhciMmioSmm.
AhciSmm_SUPPORT | Boolean | Main switch to enable AhciSmm support in Project.
ICH_SATA_BUS_NUMBER | Integer | This token represents the Sata Bus number.
ICH_SATA_DEVICE_NUMBER | Integer | This token represents the Sata Devicenumber.
ICH_SATA_FUNCTION_NUMBER | Integer | This token represents the Sata Function number.
AHCI_CONTROLLER_COUNT | Integer | The controller count can range from 1-6
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_39, Dated: 2012-01-04
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
EIP #88683 - EFI_ATA_PASS_THRU_PROTOCOL Support for Aptio IDE
EIP #97048 - ATAPI PassThru Support using EFI_EXT_SCSI_PASS_THRU_PROTOCOL.
General Bug Fixes and EIP Addressed in this Label:

EIP Addressed
EIP #88683 - EFI_ATA_PASS_THRU_PROTOCOL Support for Aptio IDE
EIP #93480 - AHCI legacy support module is corrupting the memory.
EIP #97199 - AhciMMIOSMM driver should be updated for PI1.1 and above
EIP #97048 - ATAPI PassThru Support using EFI_EXT_SCSI_PASS_THRU_PROTOCOL.
EIP #98436 - FISAddress is being set incorrrectly.
EIP #95863 - AhciSmm doesnt save and restore the upper 32bits of FBU and CLBU
EIP #98526 - FIS and CommandList Base address store and restore wont work incase of recursive call
Files Changed for General Bug Fixes and EIP Addressed in this Label:

EIP Addressed
Root\Core\eM\Ahci\AhciBus.c (EIP #88683, #97048, #98436)
Root\Core\eM\Ahci\AhciBus.h (EIP #88683)
Root\Core\eM\Ahci\Aint13.c (EIP #93480)
Root\Core\eM\Ahci\Aint13.h (EIP #88683, #93480)
Root\Chipset\eM\Ahci\AINT13.EQU (EIP #93480)
Root\Chipset\eM\Ahci\AHCIACC.ASM (EIP #93480)
Root\CORE\EM\Ahci\AhciMmioSmm.c (EIP #97199)
Root\Core\eM\Ahci\AhciController.c (EIP #97048, #95863, #98526)
Root\CORE\EM\Ahci\AhciSmm\AhciSmm.c (EIP #95863)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
UEFI2.0 | UEFI2.1 | OS(Windows7) installation | Detection on different ports | File system available under Shell environment | OS Boot
Pass | Pass | Pass | Pass | Pass | Pass
Validation Testing:
DOCUMENT ANY BQA TESTING RESULTS
Here is the Quality Assurance System Test Plan
Here is the Quality Assurance Test Results
Release History:
4.6.3_AhciSrc_021:
  • [TAG] - EIP88683
    [Category] - New Feature
    [Description] - EFI_ATA_PASS_THRU_PROTOCOL Support for Aptio IDE
    [Files] - AhciBus.c,AhciBus.h,AInt13.h,IdeBus.c,IdeBus.h,PIDEBus.h,PAhciBus.h,AtaPassThru.sdl,AtaPassThru.mak,AtaPassThru.c, AtaPassThruSupport.h,AtaPassThru.chm

  • [TAG] - EIP93480
    [Category] - Bug Fix
    [Symptom] - AHCI legacy support module is corrupting the memory.
    [RootCause] - AHCI legacy support module is corrupting the memory as it was using wrong offset for storing the base address.
    [Solution] - Properly calculating offset for storing the base address.
    [Files] - AINT13.EQU, AInt13.c, AInt13.h and AHCIACC.ASM

  • [TAG] - EIP97199
    [Category] - Improvement
    [Description] - AhciMMIOSMM driver should be updated for PI1.1 and above
    [Files] - AhciMmioSmm.c

  • [TAG] - EIP97048
    [Category] - New Feature
    [Description] - ATAPI PassThru Support using EFI_EXT_SCSI_PASS_THRU_PROTOCOL.
    [Files] - AhciBus.c, AhciController.c, IdeBus.c, Atapi.c, PIDEBus.h, PAhciBus.h, ScsiPassThruAtapi.sdl, ScsiPassThruAtapi.mak, ScsiPassThruAtapi.c, ScsiPassThruAtapiSupport.h, ScsiPassThruAtapi.chm, ScsiPassThruExt.h

  • [TAG] - EIP98436
    [Category] - Bug Fix
    [Severity] - Important
    [Symptom] - FISAddress is being set incorrrectly.
    [RootCause] - Before setting the FIS Address, it has been used in GeneratePortReset function.
    [Solution] - Moveed the FIS base address and command list base address programming before GeneratePortReset
    [Files] - Ahcibus.c

  • [TAG] - EIP95863
    [Category] - Bug Fix
    [Symptom] - AhciSmm doesnt save and restore the upper 32bits of FBU and CLBU
    [RootCause] - As Windows uses the 64bit address for FIS Base Address and Command List Base Address, and AHCISMM driver doesn't take care of the upper 32bit value of those which cause the failure in AhciSMM driver.
    [Solution] - Save and Restore the upper 32bits of FBU and CLBU in AhciSmm Driver.
    [Files] - AhciController.c, AhciSmm.c

  • [TAG] - EIP98526
    [Category] - Bug Fix
    [Severity] - Important
    [Symptom] - FIS and CommandList Base address store and restore wont work incase of recursive call
    [RootCause] - FIS and CommandList Base address store and restore wont work incase of recursive call
    [Solution] - FIS and Command List base Address save and restore done properly when the function called recursively.
    [Files] - Ahcicontroller.c

NOTE: This label requires Pidebus.h Source Safe Version 22, PAhciBus.h Source Safe Version 4 and PDiskInfo.h Source Safe Version 4.

Release_4.6.3_AhciSrc_020
Release_4.6.3_AhciSrc_019

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: AHCI
Component Reference Name: AHCI
Component Type: eModule
Release Date: 2013-01-09
Source Control Label: 4.6.3_AhciSrc_022
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AHCI;
Dependencies
Component Dependencies
N0NE

File Dependencies
ONE
Dependent File Name with Extension: Pidebus.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Include/Protocol/PIDEBus.h;
Dependent Source Control Label: 22
TWO
Dependent File Name with Extension: PAhciBus.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Include/Protocol/PAhciBus.h;
Dependent Source Control Label: 7
Three
Dependent File Name with Extension: PDiskInfo.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Modules/IdeBus/PDiskInfo.h;
Dependent Source Control Label: 4

Protocol Dependencies
ONE
Dependent Protocol Name: LEGACY BIOS PROTOCOL
Dependent Protocol GUID: EFI_LEGACY_BIOS_PROTOCOL_GUID
TWO
Dependent Protocol Name: SMM BASE PROTOCOL
Dependent Protocol GUID: EFI_SMM_BASE_PROTOCOL_GUID
Non-Compiled BIN and LIB File(s) within this Component:

AI13.bin
Component Title: AHCI
Component Reference Name: AHCI
Component Source Control Label: AHCI.12_CSM16.57_12
Component Source Control Location: SS: ALASKA;$/Alaska/CSM16/AHCI;
Project Source Control Label: 8.00.10.00.0x.57
Project Source Control Location: SS: ALASKA;$/Alaska/CSM16/Complete Project/Furball10.64K/Furball10.veb;
Component Description:
Advanced Host Controller Interface (AHCI) is a programming interface for SATA host controllers. AHCI defines transactions between the SATA controller and software and enables advanced performance and usability with SATA. AHCI has advantage of performance features such as no master/slave designation for SATA devices—each device is treated as a master—and hardware assisted native command queuing. AHCI also provides usability enhancements such as Hot-Plug. AHCI also requires appropriate software support (e.g., an AHCI driver) and for some features, hardware support in the SATA device.
The AhciSrc Module can be added to a EFI BIOS to support Initialization, Detection and Enumeration of drives in Native Ahci Mode.
The Module can be bisected to view the following functionality:
Ahci Bus :
This file will take care of installing and Uninstalling the driver binding protocol, Block Io Protocol for the Ahci Bus. Besides this it will take care of the detection of SATA device connected to given Port and PM Port and initializing, configuring and Programming the Ports and Ahci Controller if present. Other functionality about the Disk information, Identification and other miscellaneous task such as delays status check memory test etc will also be preformed when the disk is enumerated.
AhciController :
All the Controller related functionality are handled in this file. Besides having the Sata Block-io protocol functions, it will execute all controller related PIO, Packet and Non Data Commands. This File will also takes care of the Command structure based information that needs to be passed and controller features like generating resets, Start and Stop unit commands for controller, Wait for Controller processing actions.
Aint13 :
This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16 which in turn passes the Number of Drives and Drive information to the legacy 16 bit binary so that the Ahci Sata devices (HDD/CD/DVD etc) will be entered in the bbs entry and passing the information
Aint13Csp :
This is chipset porting file that has routines to port index/data ports to access memory-mapped registers
AhciAccess :
Main functionality will be to provide Index Data Port Access to AHCI Controller
Contol Flow :

Ahci Driver is similar to IdeBus driver Functionality besides it uses the memory mapped access and Command structure to pass for the drive and operation instead of the Port map access. The Driver gets controlled as a generic driver binding model once it has been supported and the start function will enumerate the devices connected on the sata ports if found presence. Once Detected, the sata devices will be configured with the sata protocols and all the supplementary functionality. Finally at the end of Post, the enumerated devices are added to the bbs Prioroty table and the device information will be passed to the legacy 16 bit Csm Module.
Filename | Description
Main Component | Root\Core\em\Ahci
AhciSrc.cif | Component information file for the eModule.
AhciSrc.mak | Make file becomes part of the BIOS build process.
AhciSrc.sdl | Contains BIOS build parameters.
AhciBus.c | Files that has Ahci Bus detection and Enumeration Related Functions and Protocols.
AhciBus.h | Headers, Definitions, Macros and Function Prototypes are defined in this File.
AhciController.c | Files that has Ahci Controller Related Functions and Protocols.
AhciController.h | Headers, Definitions, Macros and Function Prototypes for Ahci controller are defined.
AhciComponentName.c | Component Name Protocol Member Functions for Ahci Bus.
AhciSources.Chm | CHM file for the eModule.
AHCI Int13 ModulePart | Root\Core\eM\Ahci - This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16.
Aint13.cif | Component information file for the Module part.
Aint13.sdl | Contains BIOS build parameters.
Aint13.mak | Make file becomes part of the BIOS build process.
Aint13.inf | Rev and Bin Info of Module
AInt13.h | Headers, Definitions, Macros and Function Prototypes for Aint13 are defined.
AInt13.c | Files that has Aint13 Related Functions and Protocols.
AHCI Int13 Protocol ModulePart | Root\Include\Protocol - This has the AHCI INT13 initialization protocol.
Aint13Protocol.cif | Component information file for the Module part.
LegacyAhci.h | Protocol Definition of Legacy Ahci are defined.
AHCI 16 Bit binary ModulePart | Root\Addon - This contains 16 bit Csm Binary File.
ahcibin.cif | Component information file for the Module part.
AI13.bin | It is the 16 bit Csm Binary File for Ahci Int 13.
AHCI Int 13 CSP-Template ModulePart | Root\Chipset\eM\Ahci - This is chipset porting file that has routines to port index/data ports to access memory-mapped registers.
AhciCsp.cif | Component information file for the Module part.
AHCIACC.ASM | Assembly file for Ahci Access.
HACCESS.EQU | Equates Defined for Asm Files.
AHCI.EQU | Equates Defined for Asm Files.
AINT13.EQU | Equates Defined for Asm Files.
AInt13Csp.c | Files that has Aint13 Csp Related Functions and Protocols.
AHCI CSP-Template ModulePart | Root\Chipset\eM\Ahci - Main functionality will be to provide Index Data Port Access to AHCI Controller .
AhciAccess.cif | Component information file for the Module part.
AhciAccess.c | Files that has Aint13 Csp Related Functions and Protocols.
AhciMmioSmm ModulePart | Root\Core\em\Ahci\AhciMmioSmm - This modulepart is used to implement the Sw SMI to access the MMIO of the AHCI controller base address.
AhciMmioSmm.cif | Component information file for the Module part.
AhciMmioSmm.sdl | Contains BIOS build parameters.
AhciMmioSmm.mak | Make file becomes part of the BIOS build process.
AhciMmioSmm.dxs | Depency file for this module part.
AhciMmioSmm.c | This contains functions to access the MMIO of the AHCI controller base address through Sw SMI.
AhciSmm ModulePart | Root\Core\eM\Ahci\AhciSmm - This module part contains the code that is executed in SMM.
AhciSmm.cif | Component information file for the Module part.
AhciSmm.sdl | Contains BIOS build parameters.
AhciSmm.mak | Make file becomes part of the BIOS build process.
AhciSmm.dxs | Depency file for this module part.
AhciSmm.h | Headers, Definitions, Macros and Function Prototypes are defined.
AhciSmm.c | It contains Functions that are executed in SMM.
AhciSmmProtocols ModulePart | Root\Include\Protocol - Protocol definition for AHCI bus is defined here.
AhciSmmProtocols.cif | Component information file for the Module part.
AhciSmmProtocol.h | Files that has Functions and Protocols for Ahci Smm.
BIOS Parameters:
Parameter Name | Type | Description
AhciSrc_SUPPORT | Boolean | Main switch to enable AHCI support in Project.
PORT_MULTIPLIER_SUPPORT | Boolean | Switch to Enable/Disable PM Support.
INDEX_DATA_PORT_ACCESS | Boolean | 0-MMIO Access , 1- Index/Port access.
HDD_PASSWORD_SUPPORT_UNDER_RAIDMODE | Boolean | 0-HDD Password not support under Raid mode 1- Enabled.
SUPPORT_ATAPI_IN_RAID_MODE | Boolean | 1-Under Raid mode , Atapi devices are handled by AhciBus driver. 0 - Raid option rom will handle the Atapi devices.
AINT13_SUPPORT | Boolean | Main switch to enable AHCI Int13 support in the project.
AHCIMMIOSMM_SUPPORT | Boolean | Main switch to enable AhciMmioSmm support in Project.
AHCI_MMIO_SWSMI | Integer | SW SMI value to be used in AhciMmioSmm.
AhciSmm_SUPPORT | Boolean | Main switch to enable AhciSmm support in Project.
ICH_SATA_BUS_NUMBER | Integer | This token represents the Sata Bus number.
ICH_SATA_DEVICE_NUMBER | Integer | This token represents the Sata Devicenumber.
ICH_SATA_FUNCTION_NUMBER | Integer | This token represents the Sata Function number.
AHCI_CONTROLLER_COUNT | Integer | The controller count can range from 1-6
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_40, Dated: 2012-01-04
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes
EIP #100891 - PortFISBaseAddr and PortCommandListBaseAddr allocation to support memory allocation above 4gb.
EIP #95446 - Diskinfo Identify function returns the invalid Identify data after post.
EIP #100847 - System hangs when Memory allocation >4Gb in AHCI Mode.
EIP #102518 - SCT failure for ATAPI BlockIO.
EIP Addressed
EIP #100335 - Port Multiplier spend long time to connect device.
EIP #107365 - Increase the SATA_PORT_COUNT to 32 to support 32 SATA devices on Legacyboot.
EIP #94991 - If the link is already established before setting up the allowed port speed, current interface speed has not been set based on the port speed allowed. ComReset has been issued to setup the current interface speed according to the port speed allowed.
EIP #95440 - Add HddSecurity and HddSmart feature under UEFI Raid driver mode.
EIP #105050 - Boot Sector virus checking added for Extended Int13 function calls also.
Files Changed for General Bug Fixes and EIP Addressed in this Label:

EIP Addressed
Root\Core\EM\Ahci\AhciBus.c (EIP #100335, #100891, #95446, #95440)
Root\Core\EM\Ahci\Aint13.c (EIP #95440)
Root\Core\EM\Ahci\Aint13.h (EIP #107365)
Root\Core\EM\Ahci\AhciController.c (EIP #100335, #100847, #102518)
Root\Core\EM\Ahci\Ahci.sdl (EIP #107365)
Root\Core\EM\Ahci\Aint13.ASM (EIP #105050)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
UEFI2.0 | UEFI2.1 | OS(Windows7) installation | Detection on different ports | File system available under Shell environment | OS Boot
Pass | Pass | Pass | Pass | Pass | Pass
Validation Testing:
Here is the Quality Assurance System Test Plan
Here is the Validation Test Report
Release History:
4.6.3_AhciSrc_022:
  • [TAG] - EIP100891
    [Category] - Bug Fix
    [Symptom] - PortFISBaseAddr and PortCommandListBaseAddr allocation to support memory allocation above 4gb.
    [RootCause] - System hangs in Ahci Mode > 4Gb memory allocation, With Filesystem and UEFI Boot Failing.
    [Solution] - Fixed by handling FIS and Command List base Address allocation >4gb allocation.
    [Files] - AhciBus.c

  • [TAG] - EIP100335
    [Category] - Improvement
    [Description] - Port Multiplier spend long time to connect device
    [Files] - Ahcibus.c, AhciController.c

  • [TAG] - EIP95446
    [Category] - Bug Fix
    [Severity] - Minor
    [Symptom] - Diskinfo Identify function returns the invalid Identify data after post.
    [RootCause] - DiskInfoIdentify function copies the identify data from buffer.
    [Solution] - DiskInfoIdentify function should send command and get identify data.
    [Files] - IdeBus.c, AhciBus.c

  • [TAG] - EIP95440
    [Category] - Improvement
    [Description]- Add HddSecurity and HddSmart feature under UEFI Raid driver mode [Files] - Ahcibus.c, Pahcibus.h, Aint13.c

  • [TAG] - EIP100847
    [Category] - Bug Fix
    [Severity] - Important
    [Symptom] - System hangs when Memory allocation >4Gb in AHCI Mode.
    [RootCause] - DBAU not programmed for AhciController.
    [Solution] - Fixed by Programming DBAU in PRDT Table.
    [Files] - Ahcicontroller.c

  • [TAG] - EIP102518
    [Category] - Bug Fix
    [Severity] - Minor
    [Symptom] - SCT failure for ATAPI BlockIO.
    [RootCause] - BufferSize and IOAllign checking not added for Atapi BlockIO protocol functions.
    [Solution] - Added BufferSize and IOAllign checking for Atapi BlockIO protocol functions.
    [Files] - Ahcicontroller.c

  • [TAG] - EIP94991
    [Category] - Improvement
    [Description]- If the link is already established before setting up the allowed port speed, current interface speed has not been set based on the port speed allowed. ComReset has been issued to setup the current interface speed according to the port speed allowed.
    [Files] - Ahcibus.h

    AHCI.12_CSM16.57_12
  • [TAG] - EIP105050
    [Category] - Improvement
    [Description] - Boot Sector virus checking added for Extended Int13 function calls also.
    [Files] -AINT13.ASM

  • [TAG] - EIP107365
    [Category] - Improvement
    [Description] - Increase the SATA_PORT_COUNT to 32 to support 32 SATA devices on Legacyboot.
    [Files] -Ahci.sdl

    • NOTE: This label requires Pidebus.h Source Safe Version 22, PAhciBus.h Source Safe Version 7 and PDiskInfo.h Source Safe Version 4.
Release_4.6.3_AhciSrc_021
Release_4.6.3_AhciSrc_020
Release_4.6.3_AhciSrc_019

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: AHCI
Component Reference Name: AHCI
Component Type: eModule
Release Date: 2013-08-16
Source Control Label: 4.6.3_AhciSrc_023
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AHCI;
Dependencies
Component Dependencies
N0NE

File Dependencies
ONE
Dependent File Name with Extension: Pidebus.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Include/Protocol/PIDEBus.h;
Dependent Source Control Label: 29
TWO
Dependent File Name with Extension: PAhciBus.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Include/Protocol/PAhciBus.h;
Dependent Source Control Label: 11
Three
Dependent File Name with Extension: PDiskInfo.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Modules/IdeBus/PDiskInfo.h;
Dependent Source Control Label: 4

Protocol Dependencies
ONE
Dependent Protocol Name: LEGACY BIOS PROTOCOL
Dependent Protocol GUID: EFI_LEGACY_BIOS_PROTOCOL_GUID
TWO
Dependent Protocol Name: SMM BASE PROTOCOL
Dependent Protocol GUID: EFI_SMM_BASE_PROTOCOL_GUID
Non-Compiled BIN and LIB File(s) within this Component:

AI13.bin
Component Title: AHCI
Component Reference Name: AHCI
Component Source Control Label: AHCI.12_CSM16.57_12
Component Source Control Location: SS: ALASKA;$/Alaska/CSM16/AHCI;
Project Source Control Label: 8.00.10.00.0x.57
Project Source Control Location: SS: ALASKA;$/Alaska/CSM16/Complete Project/Furball10.64K/Furball10.veb;
Component Description:
Advanced Host Controller Interface (AHCI) is a programming interface for SATA host controllers. AHCI defines transactions between the SATA controller and software and enables advanced performance and usability with SATA. AHCI has advantage of performance features such as no master/slave designation for SATA devices—each device is treated as a master—and hardware assisted native command queuing. AHCI also provides usability enhancements such as Hot-Plug. AHCI also requires appropriate software support (e.g., an AHCI driver) and for some features, hardware support in the SATA device.
The AhciSrc Module can be added to a EFI BIOS to support Initialization, Detection and Enumeration of drives in Native Ahci Mode.
The Module can be bisected to view the following functionality:
Ahci Bus :
This file will take care of installing and Uninstalling the driver binding protocol, Block Io Protocol for the Ahci Bus. Besides this it will take care of the detection of SATA device connected to given Port and PM Port and initializing, configuring and Programming the Ports and Ahci Controller if present. Other functionality about the Disk information, Identification and other miscellaneous task such as delays status check memory test etc will also be preformed when the disk is enumerated.
AhciController :
All the Controller related functionality are handled in this file. Besides having the Sata Block-io protocol functions, it will execute all controller related PIO, Packet and Non Data Commands. This File will also takes care of the Command structure based information that needs to be passed and controller features like generating resets, Start and Stop unit commands for controller, Wait for Controller processing actions.
Aint13 :
This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16 which in turn passes the Number of Drives and Drive information to the legacy 16 bit binary so that the Ahci Sata devices (HDD/CD/DVD etc) will be entered in the bbs entry and passing the information
Aint13Csp :
This is chipset porting file that has routines to port index/data ports to access memory-mapped registers
AhciAccess :
Main functionality will be to provide Index Data Port Access to AHCI Controller
Contol Flow :

Ahci Driver is similar to IdeBus driver Functionality besides it uses the memory mapped access and Command structure to pass for the drive and operation instead of the Port map access. The Driver gets controlled as a generic driver binding model once it has been supported and the start function will enumerate the devices connected on the sata ports if found presence. Once Detected, the sata devices will be configured with the sata protocols and all the supplementary functionality. Finally at the end of Post, the enumerated devices are added to the bbs Prioroty table and the device information will be passed to the legacy 16 bit Csm Module.
Filename | Description
Main Component | Root\Core\em\Ahci
AhciSrc.cif | Component information file for the eModule.
AhciSrc.mak | Make file becomes part of the BIOS build process.
AhciSrc.sdl | Contains BIOS build parameters.
AhciBus.c | Files that has Ahci Bus detection and Enumeration Related Functions and Protocols.
AhciBus.h | Headers, Definitions, Macros and Function Prototypes are defined in this File.
AhciController.c | Files that has Ahci Controller Related Functions and Protocols.
AhciController.h | Headers, Definitions, Macros and Function Prototypes for Ahci controller are defined.
AhciComponentName.c | Component Name Protocol Member Functions for Ahci Bus.
AhciSources.Chm | CHM file for the eModule.
AHCI Int13 ModulePart | Root\Core\eM\Ahci - This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16.
Aint13.cif | Component information file for the Module part.
Aint13.sdl | Contains BIOS build parameters.
Aint13.mak | Make file becomes part of the BIOS build process.
Aint13.inf | Rev and Bin Info of Module
AInt13.h | Headers, Definitions, Macros and Function Prototypes for Aint13 are defined.
AInt13.c | Files that has Aint13 Related Functions and Protocols.
AHCI Int13 Protocol ModulePart | Root\Include\Protocol - This has the AHCI INT13 initialization protocol.
Aint13Protocol.cif | Component information file for the Module part.
LegacyAhci.h | Protocol Definition of Legacy Ahci are defined.
AHCI 16 Bit binary ModulePart | Root\Addon - This contains 16 bit Csm Binary File.
ahcibin.cif | Component information file for the Module part.
AI13.bin | It is the 16 bit Csm Binary File for Ahci Int 13.
AHCI Int 13 CSP-Template ModulePart | Root\Chipset\eM\Ahci - This is chipset porting file that has routines to port index/data ports to access memory-mapped registers.
AhciCsp.cif | Component information file for the Module part.
AHCIACC.ASM | Assembly file for Ahci Access.
HACCESS.EQU | Equates Defined for Asm Files.
AHCI.EQU | Equates Defined for Asm Files.
AINT13.EQU | Equates Defined for Asm Files.
AInt13Csp.c | Files that has Aint13 Csp Related Functions and Protocols.
AHCI CSP-Template ModulePart | Root\Chipset\eM\Ahci - Main functionality will be to provide Index Data Port Access to AHCI Controller .
AhciAccess.cif | Component information file for the Module part.
AhciAccess.c | Files that has Aint13 Csp Related Functions and Protocols.
AhciMmioSmm ModulePart | Root\Core\em\Ahci\AhciMmioSmm - This modulepart is used to implement the Sw SMI to access the MMIO of the AHCI controller base address.
AhciMmioSmm.cif | Component information file for the Module part.
AhciMmioSmm.sdl | Contains BIOS build parameters.
AhciMmioSmm.mak | Make file becomes part of the BIOS build process.
AhciMmioSmm.dxs | Depency file for this module part.
AhciMmioSmm.c | This contains functions to access the MMIO of the AHCI controller base address through Sw SMI.
AhciSmm ModulePart | Root\Core\eM\Ahci\AhciSmm - This module part contains the code that is executed in SMM.
AhciSmm.cif | Component information file for the Module part.
AhciSmm.sdl | Contains BIOS build parameters.
AhciSmm.mak | Make file becomes part of the BIOS build process.
AhciSmm.dxs | Depency file for this module part.
AhciSmm.h | Headers, Definitions, Macros and Function Prototypes are defined.
AhciSmm.c | It contains Functions that are executed in SMM.
AhciSmmProtocols ModulePart | Root\Include\Protocol - Protocol definition for AHCI bus is defined here.
AhciSmmProtocols.cif | Component information file for the Module part.
AhciSmmProtocol.h | Files that has Functions and Protocols for Ahci Smm.
BIOS Parameters:
Parameter Name | Type | Description
AhciSrc_SUPPORT | Boolean | Main switch to enable AHCI support in Project.
PORT_MULTIPLIER_SUPPORT | Boolean | Switch to Enable/Disable PM Support.
INDEX_DATA_PORT_ACCESS | Boolean | 0-MMIO Access , 1- Index/Port access.
HDD_PASSWORD_SUPPORT_UNDER_RAIDMODE | Boolean | 0-HDD Password not support under Raid mode 1- Enabled.
SUPPORT_ATAPI_IN_RAID_MODE | Boolean | 1-Under Raid mode , Atapi devices are handled by AhciBus driver. 0 - Raid option rom will handle the Atapi devices.
DiPM_SUPPORT | Boolean | Support Device Initiated Power Management
AINT13_SUPPORT | Boolean | Main switch to enable AHCI Int13 support in the project.
AHCIMMIOSMM_SUPPORT | Boolean | Main switch to enable AhciMmioSmm support in Project.
AHCI_MMIO_SWSMI | Integer | SW SMI value to be used in AhciMmioSmm.
AhciSmm_SUPPORT | Boolean | Main switch to enable AhciSmm support in Project.
ICH_SATA_BUS_NUMBER | Integer | This token represents the Sata Bus number.
ICH_SATA_DEVICE_NUMBER | Integer | This token represents the Sata Devicenumber.
ICH_SATA_FUNCTION_NUMBER | Integer | This token represents the Sata Function number.
AHCI_CONTROLLER_COUNT | Integer | The controller count can range from 1-6
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_40, Dated: 2012-01-04
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes
NONE
EIP Addressed
EIP#129989 - Added DIPM support in Aptio 4.x AHCIBUS driver.
EIP#114276 - Error in AHCIBus Driver when Power management and HPA support is turned on. Removed the unused Power mangement and HPA code from Ahcibus driver.
EIP#118033 - If the device is not yet detected in the remaining device path port, proceed for the device detection and configuration.
EIP#119759 - Ahcibus driver should not be stated when the Idebus driver is active on the SATA Controller.
EIP#106423 - HddPassword Support in UEFI Raid and Legacy Raid. And also taken care where there is no Conin Device avilable in the post.
EIP#125560 - Please support Boot Sector Virus Protection for CSM Disabled Mode.
EIP#127919 - "Device is Atapi" bit of PxCMD will be set if the ATAPI device connected on the Port and "Drive LED on ATAPI" Enabled by AHCI platform policy.
EIP#129028 - Implement the POWERUP_IN_STANDBY_MODE support in AHCIBUS driver.
EIP#128912 - 10b to 8b decode error is mentioned as Diagnostic error for use by Diagnostic software, So removed this error status checking.
EIP#125654 - MMIO Address validated before reading or writing to the MMIO region in the SW SMI handler.
EIP#129831 - Please provide a new Token to record the version of AI13.bin.
Files Changed for General Bug Fixes and EIP Addressed in this Label:

EIP Addressed
Root\Core\EM\Ahci\AhciBus.c (EIP #129989, #129028, #11427, #118033, #119759, #106423, #125560, #127919)
Root\Core\EM\Ahci\AhciController.c (EIP #125560)
Root\Core\EM\Ahci\AhciController.h (EIP #129989, #128912)
Root\Core\EM\Ahci\AhciSrc.sdl (EIP #129989)
Root\Core\EM\Ahci\AhciBus.h (EIP #129989, #127919, #129028)
Root\Include\Protocol\PAhciBus.h (EIP #129989, #127919, #129028)
Root\Include\Protocol\PIdeBus.h (EIP #106423)
Root\Core\EM\Ahci\AInt13.sdl(EIP #129831)
Root\Core\EM\Ahci\AhciMmioSmm.c(EIP #125654)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
UEFI2.0 | UEFI2.1 | OS(Windows7) installation | Detection on different ports | File system available under Shell environment | OS Boot
Pass | Pass | Pass | Pass | Pass | Pass
Validation Testing:
Here is the Quality Assurance System Test Plan
Here is the Quality Assurance Test Results
Release History:
4.6.3_AhciSrc_023:
CppCheck was performed with latest CppCheck tool 1.60.1 for this label and no errors were found.
  • [TAG] - EIP129989
    [Category] - Improvement
    [Description] - Added DIPM support in Aptio 4.x AHCIBUS driver
    [Files] - AhciBus.c, AhciBus.h, AhciController.h, AhciSrc.sdl, PAhciBus.h

  • [TAG] - EIP114276
    [Category] - Improvement
    [Description]- Error in AHCIBus Driver when Power management and HPA support is turned on. Removed the unused Power mangement and HPA code from Ahcibus driver
    [Files] - Ahcibus.c

  • [TAG] - EIP118033
    [Category] - Improvement
    [Description] - If the device is not yet detected in the remaining device path port, proceed for the device detection and configuration.
    [Files] - Ahcibus.c

  • [TAG] - EIP119759
    [Category] - Improvement
    [Description]- Ahcibus driver should not be stated when the Idebus driver is active on the SATA Controller.
    [Files] - Ahcibus.c

  • [TAG] - EIP106423
    [Category] - Improvement
    [Description] - HddPassword Support in UEFI Raid and Legacy Raid. And also taken care where there is no Conin Device avilable in the post.
    [Files] -IdeSecurity.cif,IdeSecurity.sdl,IdeSecurity.mak,IdeSecurityBdsCall.c,HddPassword.c, Ahcibus.c, Pidebus.h

  • [TAG] - EIP125560
    [Category] - Improvement
    [Description] - Please support Boot Sector Virus Protection for CSM Disabled Mode.
    [Files] -VirusProtect.c, VirusProtect.dxs, AhciBus.c, AhciController.c, CsmBlockIo.c, CsmInt13.c, Ata.c, IdeBus.c, SdioBlkIo.c, SdioDriver.c, efiusbmass.c

  • [TAG] - EIP127919
    [Category] - Improvement
    [Description] - "Device is Atapi" bit of PxCMD will be set if the ATAPI device connected on the Port and "Drive LED on ATAPI" Enabled by AHCI platform policy
    [Files] - Pahcibus.h, Ahcibus.c, Ahcibus.h

  • [TAG] - EIP129028
    [Category] - Improvement
    [Description] - Implement the POWERUP_IN_STANDBY_MODE support in AHCIBUS driver
    [Files] - Ahcibus.c, Ahcibus.h, Pahcibus.h

  • [TAG] - EIP128912
    [Category] - Improvement
    [Description] - 10b to 8b decode error is mentioned as Diagnostic error for use by Diagnostic software, So removed this error status checking.
    [Files] - AhciController.h

  • [TAG] - EIP129831
    [Description] - Please provide a new Token to record the version of AI13.bin
    [Files] - Aint13.sdl

  • [TAG] - EIP125654
    [Category] - Improvement
    [Description] - MMIO Address validated before reading or writing to the MMIO region in the SW SMI handler
    [Files] - AhciMmioSmm.c

    • NOTE: This label requires Pidebus.h Source Safe Version 29, PAhciBus.h Source Safe Version 11 and PDiskInfo.h Source Safe Version 4.
Release_4.6.3_AhciSrc_022
Release_4.6.3_AhciSrc_021
Release_4.6.3_AhciSrc_020
Release_4.6.3_AhciSrc_019

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: AHCI
Component Reference Name: AHCI
Component Type: eModule
Release Date: 2013-08-30
Source Control Label: 4.6.3_AhciSrc_024
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AHCI;
Dependencies
Component Dependencies
N0NE

File Dependencies
ONE
Dependent File Name with Extension: Pidebus.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Include/Protocol/PIDEBus.h;
Dependent Source Control Label: 29
TWO
Dependent File Name with Extension: PAhciBus.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Include/Protocol/PAhciBus.h;
Dependent Source Control Label: 11
Three
Dependent File Name with Extension: PDiskInfo.h
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core/Modules/IdeBus/PDiskInfo.h;
Dependent Source Control Label: 4

Protocol Dependencies
ONE
Dependent Protocol Name: LEGACY BIOS PROTOCOL
Dependent Protocol GUID: EFI_LEGACY_BIOS_PROTOCOL_GUID
TWO
Dependent Protocol Name: SMM BASE PROTOCOL
Dependent Protocol GUID: EFI_SMM_BASE_PROTOCOL_GUID
Non-Compiled BIN and LIB File(s) within this Component:

AI13.bin
Component Title: AHCI
Component Reference Name: AHCI
Component Source Control Label: AHCI.12_CSM16.57_12
Component Source Control Location: SS: ALASKA;$/Alaska/CSM16/AHCI;
Project Source Control Label: 8.00.10.00.0x.57
Project Source Control Location: SS: ALASKA;$/Alaska/CSM16/Complete Project/Furball10.64K/Furball10.veb;
Component Description:
Advanced Host Controller Interface (AHCI) is a programming interface for SATA host controllers. AHCI defines transactions between the SATA controller and software and enables advanced performance and usability with SATA. AHCI has advantage of performance features such as no master/slave designation for SATA devices—each device is treated as a master—and hardware assisted native command queuing. AHCI also provides usability enhancements such as Hot-Plug. AHCI also requires appropriate software support (e.g., an AHCI driver) and for some features, hardware support in the SATA device.
The AhciSrc Module can be added to a EFI BIOS to support Initialization, Detection and Enumeration of drives in Native Ahci Mode.
The Module can be bisected to view the following functionality:
Ahci Bus :
This file will take care of installing and Uninstalling the driver binding protocol, Block Io Protocol for the Ahci Bus. Besides this it will take care of the detection of SATA device connected to given Port and PM Port and initializing, configuring and Programming the Ports and Ahci Controller if present. Other functionality about the Disk information, Identification and other miscellaneous task such as delays status check memory test etc will also be preformed when the disk is enumerated.
AhciController :
All the Controller related functionality are handled in this file. Besides having the Sata Block-io protocol functions, it will execute all controller related PIO, Packet and Non Data Commands. This File will also takes care of the Command structure based information that needs to be passed and controller features like generating resets, Start and Stop unit commands for controller, Wait for Controller processing actions.
Aint13 :
This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16 which in turn passes the Number of Drives and Drive information to the legacy 16 bit binary so that the Ahci Sata devices (HDD/CD/DVD etc) will be entered in the bbs entry and passing the information
Aint13Csp :
This is chipset porting file that has routines to port index/data ports to access memory-mapped registers
AhciAccess :
Main functionality will be to provide Index Data Port Access to AHCI Controller
Contol Flow :

Ahci Driver is similar to IdeBus driver Functionality besides it uses the memory mapped access and Command structure to pass for the drive and operation instead of the Port map access. The Driver gets controlled as a generic driver binding model once it has been supported and the start function will enumerate the devices connected on the sata ports if found presence. Once Detected, the sata devices will be configured with the sata protocols and all the supplementary functionality. Finally at the end of Post, the enumerated devices are added to the bbs Prioroty table and the device information will be passed to the legacy 16 bit Csm Module.
Filename | Description
Main Component | Root\Core\em\Ahci
AhciSrc.cif | Component information file for the eModule.
AhciSrc.mak | Make file becomes part of the BIOS build process.
AhciSrc.sdl | Contains BIOS build parameters.
AhciBus.c | Files that has Ahci Bus detection and Enumeration Related Functions and Protocols.
AhciBus.h | Headers, Definitions, Macros and Function Prototypes are defined in this File.
AhciController.c | Files that has Ahci Controller Related Functions and Protocols.
AhciController.h | Headers, Definitions, Macros and Function Prototypes for Ahci controller are defined.
AhciComponentName.c | Component Name Protocol Member Functions for Ahci Bus.
AhciSources.Chm | CHM file for the eModule.
AHCI Int13 ModulePart | Root\Core\eM\Ahci - This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16.
Aint13.cif | Component information file for the Module part.
Aint13.sdl | Contains BIOS build parameters.
Aint13.mak | Make file becomes part of the BIOS build process.
Aint13.inf | Rev and Bin Info of Module
AInt13.h | Headers, Definitions, Macros and Function Prototypes for Aint13 are defined.
AInt13.c | Files that has Aint13 Related Functions and Protocols.
AHCI Int13 Protocol ModulePart | Root\Include\Protocol - This has the AHCI INT13 initialization protocol.
Aint13Protocol.cif | Component information file for the Module part.
LegacyAhci.h | Protocol Definition of Legacy Ahci are defined.
AHCI 16 Bit binary ModulePart | Root\Addon - This contains 16 bit Csm Binary File.
ahcibin.cif | Component information file for the Module part.
AI13.bin | It is the 16 bit Csm Binary File for Ahci Int 13.
AHCI Int 13 CSP-Template ModulePart | Root\Chipset\eM\Ahci - This is chipset porting file that has routines to port index/data ports to access memory-mapped registers.
AhciCsp.cif | Component information file for the Module part.
AHCIACC.ASM | Assembly file for Ahci Access.
HACCESS.EQU | Equates Defined for Asm Files.
AHCI.EQU | Equates Defined for Asm Files.
AINT13.EQU | Equates Defined for Asm Files.
AInt13Csp.c | Files that has Aint13 Csp Related Functions and Protocols.
AHCI CSP-Template ModulePart | Root\Chipset\eM\Ahci - Main functionality will be to provide Index Data Port Access to AHCI Controller .
AhciAccess.cif | Component information file for the Module part.
AhciAccess.c | Files that has Aint13 Csp Related Functions and Protocols.
AhciMmioSmm ModulePart | Root\Core\em\Ahci\AhciMmioSmm - This modulepart is used to implement the Sw SMI to access the MMIO of the AHCI controller base address.
AhciMmioSmm.cif | Component information file for the Module part.
AhciMmioSmm.sdl | Contains BIOS build parameters.
AhciMmioSmm.mak | Make file becomes part of the BIOS build process.
AhciMmioSmm.dxs | Depency file for this module part.
AhciMmioSmm.c | This contains functions to access the MMIO of the AHCI controller base address through Sw SMI.
AhciSmm ModulePart | Root\Core\eM\Ahci\AhciSmm - This module part contains the code that is executed in SMM.
AhciSmm.cif | Component information file for the Module part.
AhciSmm.sdl | Contains BIOS build parameters.
AhciSmm.mak | Make file becomes part of the BIOS build process.
AhciSmm.dxs | Depency file for this module part.
AhciSmm.h | Headers, Definitions, Macros and Function Prototypes are defined.
AhciSmm.c | It contains Functions that are executed in SMM.
AhciSmmProtocols ModulePart | Root\Include\Protocol - Protocol definition for AHCI bus is defined here.
AhciSmmProtocols.cif | Component information file for the Module part.
AhciSmmProtocol.h | Files that has Functions and Protocols for Ahci Smm.
BIOS Parameters:
Parameter Name | Type | Description
AhciSrc_SUPPORT | Boolean | Main switch to enable AHCI support in Project.
PORT_MULTIPLIER_SUPPORT | Boolean | Switch to Enable/Disable PM Support.
INDEX_DATA_PORT_ACCESS | Boolean | 0-MMIO Access , 1- Index/Port access.
HDD_PASSWORD_SUPPORT_UNDER_RAIDMODE | Boolean | 0-HDD Password not support under Raid mode 1- Enabled.
SUPPORT_ATAPI_IN_RAID_MODE | Boolean | 1-Under Raid mode , Atapi devices are handled by AhciBus driver. 0 - Raid option rom will handle the Atapi devices.
DiPM_SUPPORT | Boolean | Support Device Initiated Power Management
AINT13_SUPPORT | Boolean | Main switch to enable AHCI Int13 support in the project.
AHCIMMIOSMM_SUPPORT | Boolean | Main switch to enable AhciMmioSmm support in Project.
AHCI_MMIO_SWSMI | Integer | SW SMI value to be used in AhciMmioSmm.
AhciSmm_SUPPORT | Boolean | Main switch to enable AhciSmm support in Project.
ICH_SATA_BUS_NUMBER | Integer | This token represents the Sata Bus number.
ICH_SATA_DEVICE_NUMBER | Integer | This token represents the Sata Devicenumber.
ICH_SATA_FUNCTION_NUMBER | Integer | This token represents the Sata Function number.
AHCI_CONTROLLER_COUNT | Integer | The controller count can range from 1-6
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_40, Dated: 2012-01-04
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes
NONE
EIP Addressed
EIP#106423 - Password installation is done in UEFI and Legacy RAID.
EIP#125560 - Please support Boot Sector Virus Protection for CSM Disabled Mode.
EIP#134204 - Build Error if token "INDEX_DATA_PORT_ACCESS" is enabled.
Files Changed for General Bug Fixes and EIP Addressed in this Label:

EIP Addressed
Root\Core\EM\Ahci\AhciBus.c (EIP #125560, #134204, #106423)
Root\Core\EM\Ahci\AhciController.c (EIP #125560)
Root\Core\EM\Ahci\AhciBus.h (EIP #125560)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
UEFI2.0 | UEFI2.1 | OS(Windows7) installation | Detection on different ports | File system available under Shell environment | OS Boot
Pass | Pass | Pass | Pass | Pass | Pass
Validation Testing:
Here is the Quality Assurance System Test Plan
Here is the Quality Assurance Test Results
Release History:
4.6.3_AhciSrc_024:
CppCheck was performed with latest CppCheck tool 1.60.1 for this label and no errors were found.
  • [TAG] - EIP125560
    [Category] - Improvement
    [Description] - MbrWriteProtectionProtocol file name changesd to AmiMbrWriteProtectionProtocol.h
    [Files] - AhciController.c, AhciBus.h, Ahcibus.c

  • [TAG] - EIP134204
    [Category] - Improvement
    [Description]- Build Error resolved if token INDEX_DATA_PORT_ACCESS is enabled.
    [Files] - Aint13.mak

  • [TAG] - EIP106423
    [Category] - Improvement
    [Description]- Correcting the previous changes.
    [Files] - AhciBus.c

Release_4.6.3_AhciSrc_023
Release_4.6.3_AhciSrc_022
Release_4.6.3_AhciSrc_021
Release_4.6.3_AhciSrc_020
Release_4.6.3_AhciSrc_019

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: AHCI
Component Reference Name: AHCI
Component Type: eModule
Release Date: 2013-12-06
Source Control Label: 4.6.3_AhciSrc_025
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AHCI;
Dependencies
Component Dependencies
Core
Dependent Component Title: Core
Dependent Component Reference Name: Core
Dependent Source Control Label: (INT)4.6.5.5_02
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core;

File Dependencies
NONE

Protocol Dependencies
ONE
Dependent Protocol Name: LEGACY BIOS PROTOCOL
Dependent Protocol GUID: EFI_LEGACY_BIOS_PROTOCOL_GUID
TWO
Dependent Protocol Name: SMM BASE PROTOCOL
Dependent Protocol GUID: EFI_SMM_BASE_PROTOCOL_GUID
Non-Compiled BIN and LIB File(s) within this Component:

AI13.bin
Component Title: AHCI
Component Reference Name: AHCI
Component Source Control Label: AHCI.12_CSM16.57_12
Component Source Control Location: SS: ALASKA;$/Alaska/CSM16/AHCI;
Project Source Control Label: 8.00.10.00.0x.57
Project Source Control Location: SS: ALASKA;$/Alaska/CSM16/Complete Project/Furball10.64K/Furball10.veb;
Component Description:
Advanced Host Controller Interface (AHCI) is a programming interface for SATA host controllers. AHCI defines transactions between the SATA controller and software and enables advanced performance and usability with SATA. AHCI has advantage of performance features such as no master/slave designation for SATA devices—each device is treated as a master—and hardware assisted native command queuing. AHCI also provides usability enhancements such as Hot-Plug. AHCI also requires appropriate software support (e.g., an AHCI driver) and for some features, hardware support in the SATA device.
The AhciSrc Module can be added to a EFI BIOS to support Initialization, Detection and Enumeration of drives in Native Ahci Mode.
The Module can be bisected to view the following functionality:
Ahci Bus :
This file will take care of installing and Uninstalling the driver binding protocol, Block Io Protocol for the Ahci Bus. Besides this it will take care of the detection of SATA device connected to given Port and PM Port and initializing, configuring and Programming the Ports and Ahci Controller if present. Other functionality about the Disk information, Identification and other miscellaneous task such as delays status check memory test etc will also be preformed when the disk is enumerated.
AhciController :
All the Controller related functionality are handled in this file. Besides having the Sata Block-io protocol functions, it will execute all controller related PIO, Packet and Non Data Commands. This File will also takes care of the Command structure based information that needs to be passed and controller features like generating resets, Start and Stop unit commands for controller, Wait for Controller processing actions.
Aint13 :
This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16 which in turn passes the Number of Drives and Drive information to the legacy 16 bit binary so that the Ahci Sata devices (HDD/CD/DVD etc) will be entered in the bbs entry and passing the information
Aint13Csp :
This is chipset porting file that has routines to port index/data ports to access memory-mapped registers
AhciAccess :
Main functionality will be to provide Index Data Port Access to AHCI Controller
Contol Flow :

Ahci Driver is similar to IdeBus driver Functionality besides it uses the memory mapped access and Command structure to pass for the drive and operation instead of the Port map access. The Driver gets controlled as a generic driver binding model once it has been supported and the start function will enumerate the devices connected on the sata ports if found presence. Once Detected, the sata devices will be configured with the sata protocols and all the supplementary functionality. Finally at the end of Post, the enumerated devices are added to the bbs Prioroty table and the device information will be passed to the legacy 16 bit Csm Module.
Filename | Description
Main Component | Root\Core\em\Ahci
AhciSrc.cif | Component information file for the eModule.
AhciSrc.mak | Make file becomes part of the BIOS build process.
AhciSrc.sdl | Contains BIOS build parameters.
AhciBus.c | Files that has Ahci Bus detection and Enumeration Related Functions and Protocols.
AhciBus.h | Headers, Definitions, Macros and Function Prototypes are defined in this File.
AhciController.c | Files that has Ahci Controller Related Functions and Protocols.
AhciController.h | Headers, Definitions, Macros and Function Prototypes for Ahci controller are defined.
AhciComponentName.c | Component Name Protocol Member Functions for Ahci Bus.
AhciSources.Chm | CHM file for the eModule.
AHCI Int13 ModulePart | Root\Core\eM\Ahci - This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16.
Aint13.cif | Component information file for the Module part.
Aint13.sdl | Contains BIOS build parameters.
Aint13.mak | Make file becomes part of the BIOS build process.
Aint13.inf | Rev and Bin Info of Module
AInt13.h | Headers, Definitions, Macros and Function Prototypes for Aint13 are defined.
AInt13.c | Files that has Aint13 Related Functions and Protocols.
AHCI Int13 Protocol ModulePart | Root\Include\Protocol - This has the AHCI INT13 initialization protocol.
Aint13Protocol.cif | Component information file for the Module part.
LegacyAhci.h | Protocol Definition of Legacy Ahci are defined.
AHCI 16 Bit binary ModulePart | Root\Addon - This contains 16 bit Csm Binary File.
ahcibin.cif | Component information file for the Module part.
AI13.bin | It is the 16 bit Csm Binary File for Ahci Int 13.
AHCI Int 13 CSP-Template ModulePart | Root\Chipset\eM\Ahci - This is chipset porting file that has routines to port index/data ports to access memory-mapped registers.
AhciCsp.cif | Component information file for the Module part.
AHCIACC.ASM | Assembly file for Ahci Access.
HACCESS.EQU | Equates Defined for Asm Files.
AHCI.EQU | Equates Defined for Asm Files.
AINT13.EQU | Equates Defined for Asm Files.
AInt13Csp.c | Files that has Aint13 Csp Related Functions and Protocols.
AHCI CSP-Template ModulePart | Root\Chipset\eM\Ahci - Main functionality will be to provide Index Data Port Access to AHCI Controller .
AhciAccess.cif | Component information file for the Module part.
AhciAccess.c | Files that has Aint13 Csp Related Functions and Protocols.
AhciMmioSmm ModulePart | Root\Core\em\Ahci\AhciMmioSmm - This modulepart is used to implement the Sw SMI to access the MMIO of the AHCI controller base address.
AhciMmioSmm.cif | Component information file for the Module part.
AhciMmioSmm.sdl | Contains BIOS build parameters.
AhciMmioSmm.mak | Make file becomes part of the BIOS build process.
AhciMmioSmm.dxs | Depency file for this module part.
AhciMmioSmm.c | This contains functions to access the MMIO of the AHCI controller base address through Sw SMI.
AhciSmm ModulePart | Root\Core\eM\Ahci\AhciSmm - This module part contains the code that is executed in SMM.
AhciSmm.cif | Component information file for the Module part.
AhciSmm.sdl | Contains BIOS build parameters.
AhciSmm.mak | Make file becomes part of the BIOS build process.
AhciSmm.dxs | Depency file for this module part.
AhciSmm.h | Headers, Definitions, Macros and Function Prototypes are defined.
AhciSmm.c | It contains Functions that are executed in SMM.
AhciSmmProtocols ModulePart | Root\Include\Protocol - Protocol definition for AHCI bus is defined here.
AhciSmmProtocols.cif | Component information file for the Module part.
AhciSmmProtocol.h | Files that has Functions and Protocols for Ahci Smm.
BIOS Parameters:
Parameter Name | Type | Description
AhciSrc_SUPPORT | Boolean | Main switch to enable AHCI support in Project.
PORT_MULTIPLIER_SUPPORT | Boolean | Switch to Enable/Disable PM Support.
INDEX_DATA_PORT_ACCESS | Boolean | 0-MMIO Access , 1- Index/Port access.
HDD_PASSWORD_SUPPORT_UNDER_RAIDMODE | Boolean | 0-HDD Password not support under Raid mode 1- Enabled.
SUPPORT_ATAPI_IN_RAID_MODE | Boolean | 1-Under Raid mode , Atapi devices are handled by AhciBus driver. 0 - Raid option rom will handle the Atapi devices.
DiPM_SUPPORT | Boolean | Support Device Initiated Power Management
AINT13_SUPPORT | Boolean | Main switch to enable AHCI Int13 support in the project.
AHCIMMIOSMM_SUPPORT | Boolean | Main switch to enable AhciMmioSmm support in Project.
AHCI_MMIO_SWSMI | Integer | SW SMI value to be used in AhciMmioSmm.
AhciSmm_SUPPORT | Boolean | Main switch to enable AhciSmm support in Project.
ICH_SATA_BUS_NUMBER | Integer | This token represents the Sata Bus number.
ICH_SATA_DEVICE_NUMBER | Integer | This token represents the Sata Devicenumber.
ICH_SATA_FUNCTION_NUMBER | Integer | This token represents the Sata Function number.
AHCI_CONTROLLER_COUNT | Integer | The controller count can range from 1-6
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_41, Dated: 2013-03-19
Visual eBios: RSS.5.73.0244, Dated: 2012-03-19
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes
NONE
EIP Addressed
EIP#138377 - "CR has Bad Signature" error on AHCI eModule when "disconnect -r" from shell
EIP#128963 - Uninitilized variable cleaned up in AhciBus Stop Function.
EIP#125006 - Dummy Protocol installed for the protocol event signaling is uninstalled. So that Ahcibus driver can signal the event again if the bus driver gets starts again.
EIP#143018 - Removed the EIP 128912 changes and checked-in again. EIP 128912 changes creates lot more side effect, so we planed to remove the changes.
Files Changed for General Bug Fixes and EIP Addressed in this Label:

EIP Addressed
Root\Core\EM\Ahci\AhciBus.c (EIP #138377,#128963,#125006)
Root\Core\EM\Ahci\AhciController.h (EIP #143018)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
UEFI2.0 UEFI2.1 OS(Windows7) installation Detection on different ports File system available
under Shell environment 		OS Boot There should not be any delay
in POST at Checkpoint 0xA2
Pass Pass Pass Pass Pass Pass Pass
Validation Testing:
Here is the Quality Assurance System Test Plan
Here is the Quality Assurance Test Results
Release History:
4.6.3_AhciSrc_025:
  • [TAG] - EIP138377
    [Category] - Improvement
    [Description] - "CR has Bad Signature" error on AHCI eModule when "disconnect -r" from shell
    [Files] - Ahcibus.c

  • [TAG] - EIP128963
    [Category] - Improvement
    [Description]- Uninitilized variable cleaned up in AhciBus Stop Function.
    [Files] - AhciBus.c

  • [TAG] - EIP125006
    [Category] - Improvement
    [Description]- Dummy Protocol installed for the protocol event signaling is uninstalled. So that Ahcibus driver can signal the event again if the bus driver gets starts again.
    [Files] - AhciBus.c

  • [TAG] - EIP143018
    [Category] - Improvement
    [Description]- Removed the EIP 128912 changes and checked-in again. EIP 128912 changes creates lot more side effect, so we planed to remove the changes.
    [Files] - AhciController.h

Note: To build this label succussfully use PAhciBus.h version 11 and PIdeBus.h version 29.
Release_4.6.3_AhciSrc_024
Release_4.6.3_AhciSrc_023
Release_4.6.3_AhciSrc_022
Release_4.6.3_AhciSrc_021
Release_4.6.3_AhciSrc_020
Release_4.6.3_AhciSrc_019

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: AHCI
Component Reference Name: AHCI
Component Type: eModule
Release Date: 2014-06-13
Source Control Label: 4.6.3_AhciSrc_026
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AHCI;
Dependencies
Component Dependencies
Core
Dependent Component Title: Core
Dependent Component Reference Name: Core
Dependent Source Control Label: 4.6.5.5
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core;

File Dependencies
NONE

Protocol Dependencies
ONE
Dependent Protocol Name: LEGACY BIOS PROTOCOL
Dependent Protocol GUID: EFI_LEGACY_BIOS_PROTOCOL_GUID
TWO
Dependent Protocol Name: SMM BASE PROTOCOL
Dependent Protocol GUID: EFI_SMM_BASE_PROTOCOL_GUID
Non-Compiled BIN and LIB File(s) within this Component:

AI13.bin
Component Title: AHCI
Component Reference Name: AHCI
Component Source Control Label: AHCI.12_CSM16.57_12
Component Source Control Location: SS: ALASKA;$/Alaska/CSM16/AHCI;
Project Source Control Label: 8.00.10.00.0x.57
Project Source Control Location: SS: ALASKA;$/Alaska/CSM16/Complete Project/Furball10.64K/Furball10.veb;
Component Description:
Advanced Host Controller Interface (AHCI) is a programming interface for SATA host controllers. AHCI defines transactions between the SATA controller and software and enables advanced performance and usability with SATA. AHCI has advantage of performance features such as no master/slave designation for SATA devices—each device is treated as a master—and hardware assisted native command queuing. AHCI also provides usability enhancements such as Hot-Plug. AHCI also requires appropriate software support (e.g., an AHCI driver) and for some features, hardware support in the SATA device.
The AhciSrc Module can be added to a EFI BIOS to support Initialization, Detection and Enumeration of drives in Native Ahci Mode.
The Module can be bisected to view the following functionality:
Ahci Bus :
This file will take care of installing and Uninstalling the driver binding protocol, Block Io Protocol for the Ahci Bus. Besides this it will take care of the detection of SATA device connected to given Port and PM Port and initializing, configuring and Programming the Ports and Ahci Controller if present. Other functionality about the Disk information, Identification and other miscellaneous task such as delays status check memory test etc will also be preformed when the disk is enumerated.
AhciController :
All the Controller related functionality are handled in this file. Besides having the Sata Block-io protocol functions, it will execute all controller related PIO, Packet and Non Data Commands. This File will also takes care of the Command structure based information that needs to be passed and controller features like generating resets, Start and Stop unit commands for controller, Wait for Controller processing actions.
Aint13 :
This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16 which in turn passes the Number of Drives and Drive information to the legacy 16 bit binary so that the Ahci Sata devices (HDD/CD/DVD etc) will be entered in the bbs entry and passing the information
Aint13Csp :
This is chipset porting file that has routines to port index/data ports to access memory-mapped registers
AhciAccess :
Main functionality will be to provide Index Data Port Access to AHCI Controller
Contol Flow :

Ahci Driver is similar to IdeBus driver Functionality besides it uses the memory mapped access and Command structure to pass for the drive and operation instead of the Port map access. The Driver gets controlled as a generic driver binding model once it has been supported and the start function will enumerate the devices connected on the sata ports if found presence. Once Detected, the sata devices will be configured with the sata protocols and all the supplementary functionality. Finally at the end of Post, the enumerated devices are added to the bbs Prioroty table and the device information will be passed to the legacy 16 bit Csm Module.
Filename | Description
Main Component | Root\Core\em\Ahci
AhciSrc.cif | Component information file for the eModule.
AhciSrc.mak | Make file becomes part of the BIOS build process.
AhciSrc.sdl | Contains BIOS build parameters.
AhciBus.c | Files that has Ahci Bus detection and Enumeration Related Functions and Protocols.
AhciBus.h | Headers, Definitions, Macros and Function Prototypes are defined in this File.
AhciController.c | Files that has Ahci Controller Related Functions and Protocols.
AhciController.h | Headers, Definitions, Macros and Function Prototypes for Ahci controller are defined.
AhciComponentName.c | Component Name Protocol Member Functions for Ahci Bus.
AhciSources.Chm | CHM file for the eModule.
AHCI Int13 ModulePart | Root\Core\eM\Ahci - This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16.
Aint13.cif | Component information file for the Module part.
Aint13.sdl | Contains BIOS build parameters.
Aint13.mak | Make file becomes part of the BIOS build process.
Aint13.inf | Rev and Bin Info of Module
AInt13.h | Headers, Definitions, Macros and Function Prototypes for Aint13 are defined.
AInt13.c | Files that has Aint13 Related Functions and Protocols.
AHCI Int13 Protocol ModulePart | Root\Include\Protocol - This has the AHCI INT13 initialization protocol.
Aint13Protocol.cif | Component information file for the Module part.
LegacyAhci.h | Protocol Definition of Legacy Ahci are defined.
AHCI 16 Bit binary ModulePart | Root\Addon - This contains 16 bit Csm Binary File.
ahcibin.cif | Component information file for the Module part.
AI13.bin | It is the 16 bit Csm Binary File for Ahci Int 13.
AHCI Int 13 CSP-Template ModulePart | Root\Chipset\eM\Ahci - This is chipset porting file that has routines to port index/data ports to access memory-mapped registers.
AhciCsp.cif | Component information file for the Module part.
AHCIACC.ASM | Assembly file for Ahci Access.
HACCESS.EQU | Equates Defined for Asm Files.
AHCI.EQU | Equates Defined for Asm Files.
AINT13.EQU | Equates Defined for Asm Files.
AInt13Csp.c | Files that has Aint13 Csp Related Functions and Protocols.
AHCI CSP-Template ModulePart | Root\Chipset\eM\Ahci - Main functionality will be to provide Index Data Port Access to AHCI Controller .
AhciAccess.cif | Component information file for the Module part.
AhciAccess.c | Files that has Aint13 Csp Related Functions and Protocols.
AhciMmioSmm ModulePart | Root\Core\em\Ahci\AhciMmioSmm - This modulepart is used to implement the Sw SMI to access the MMIO of the AHCI controller base address.
AhciMmioSmm.cif | Component information file for the Module part.
AhciMmioSmm.sdl | Contains BIOS build parameters.
AhciMmioSmm.mak | Make file becomes part of the BIOS build process.
AhciMmioSmm.dxs | Depency file for this module part.
AhciMmioSmm.c | This contains functions to access the MMIO of the AHCI controller base address through Sw SMI.
AhciSmm ModulePart | Root\Core\eM\Ahci\AhciSmm - This module part contains the code that is executed in SMM.
AhciSmm.cif | Component information file for the Module part.
AhciSmm.sdl | Contains BIOS build parameters.
AhciSmm.mak | Make file becomes part of the BIOS build process.
AhciSmm.dxs | Depency file for this module part.
AhciSmm.h | Headers, Definitions, Macros and Function Prototypes are defined.
AhciSmm.c | It contains Functions that are executed in SMM.
AhciSmmProtocols ModulePart | Root\Include\Protocol - Protocol definition for AHCI bus is defined here.
AhciSmmProtocols.cif | Component information file for the Module part.
AhciSmmProtocol.h | Files that has Functions and Protocols for Ahci Smm.
BIOS Parameters:
Ahci Module Parameters:
Parameter Name | Type | Description
AhciSrc_SUPPORT | Boolean | Main switch to enable AHCI support in Project.
AHCI Int13 Module Parameters:
Parameter Name | Type | Description
AINT13_SUPPORT | Boolean | Main switch to enable AHCI Int13 support in the project.
AHCI_CONTROLLER_COUNT | Boolean | The controller count can range from 1-6
AI13_BINARY_VERSION | Boolean | Version of AI13.bin. Higher 2 digits represent CSM version and lower 2 digits represent AI13.bin build number
AhciMmioSmm Module Parameters:
Parameter Name | Type | Description
AHCIMMIOSMM_SUPPORT | Boolean | Main switch to enable AhciMmioSmm support in Project
AHCI_MMIO_SWSMI | Boolean | SW SMI value to be used in AhciMmioSmm
BIG_REAL_MODE_MMIO_ACCESS | Boolean | 1- Access the MMIO region by switching to big real mode, 0 - Access the MMIO using SMI handler
AhciSmm Module Parameters:
Parameter Name | Type | Description
AhciSmm_SUPPORT | Boolean | Main switch to enable AhciSmm support in Project
ICH_SATA_BUS_NUMBER | Integer | Sata BUS number
ICH_SATA_DEVICE_NUMBER | Integer | Sata Device Number
ICH_SATA_FUNCTION_NUMBER | Integer | SATA Function No
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_41, Dated: 2013-03-19
Visual eBios: RSS.5.73.0244, Dated: 2012-03-19
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
EIP #147909 - Boot devices can not find after resume from s4
EIP Addressed
EIP #147909 - Boot devices can not find after resume from s4
EIP #127356 - Flash NVRAM seems to cause HDD can't be unlocked when S3 resume.
EIP #126640 - AHCIBUS driver need to preserve the port settings in GeneratePortReset
EIP #148180 - change from EFI_MBR_WRITE_PROTECTION_PROTOCOL to AMI_BLOCKIO_WRITE_PROTECTION_PROTOCOL
EIP #172443 - "RaidDriverBlockingStatus" is using gEfiGlobalVariableGuid that violates UEFI 2.4 spec in IdeSecurityBdsCall.c and Runtime attribute set of this variable need to be removed
EIP #131322 - [Foxconn][V2670] improve S4 resume time with PCIE SSD under Win7, per customer reported that if enable AHCIMMIOSMM_SUPPORT, and then S4 resume time is very long(about 50s) with win 7. (Add support for accessing MMIO region using BIG real mode)
Files Changed for General Bug Fixes and EIP Addressed in this Label:
Root\Core\EM\Ahci\AhciBus.c (EIP #127356, #126640, #147909, #148180, #172443)
Root\Core\EM\Ahci\AhciBus.h (EIP #127356, #148180)
Root\Core\EM\Ahci\AhciController.c (EIP #126640, #148180)
Root\Core\EM\Ahci\AhciComponentName.c (EIP #148180)
Root\Core\EM\Ahci\AhciMmioSmm\AhciMmioSmm.sdl (EIP #131322)
Root\Chipset\eM\Ahci\AHCIACC.asm (EIP #131322)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
UEFI2.0 UEFI2.1 OS(Windows7) installation Detection on different ports File system available
under Shell environment 		OS Boot There should not be any delay
in POST at Checkpoint 0xA2
Pass Pass Pass Pass Pass Pass Pass
Validation Testing:
Quality Assurance System Test Plan
Quality Assurance Test Results
Release History:
4.6.3_AhciSrc_026:
  • [TAG] EIP127356
    [Category] Improvement
    [Description] Flash NVRAM seems to cause HDD can't be unlocked when S3 resume.
    [Files] IdeSecurity.c, IDESMM.c, HddPassword.c, AhciBus.c, AhciBus.h

  • [TAG] EIP126640
    [Category] Improvement
    [Description] AHCIBUS driver need to preserve the port settings in GeneratePortReset
    [Files] Ahcibus.c, AhciController.c

  • [TAG] EIP147909
    [Category] Bug Fix
    [Severity] Important
    [Symptom] Boot devices can not find after resume from s4
    [RootCause] HddPassword Verification failed because of gHddSecurityEndProtocolGuid is uninstalled on the controller handle
    [Solution] If the gHddSecurityEndProtocolGuid protocol is already installed , to signel the event Reinstall Protocol interface is done instead of uninstalling the protocol interface.
    [Files] Ahcibus.c

  • [TAG] EIP148180
    [Category] Improvement
    [Description] change from EFI_MBR_WRITE_PROTECTION_PROTOCOL to AMI_BLOCKIO_WRITE_PROTECTION_PROTOCOL
    [Files] Ahcibus.c, Ahcibus.h, AhciComponentName.c, AhciController.c

  • [TAG] EIP172443
    [Category] Improvement
    [Description] "RaidDriverBlockingStatus" is using gEfiGlobalVariableGuid that violates UEFI 2.4 spec in IdeSecurityBdsCall.c and Runtime attribute set of this variable need to be removed
    [Files] IdeSecurityBdsCall.c, AhciBus.c

  • [TAG] EIP131322
    [Category] Improvement
    [Description] [Foxconn][V2670] improve S4 resume time with PCIE SSD under Win7, per customer reported that if enable AHCIMMIOSMM_SUPPORT, and then S4 resume time is very long(about 50s) with win 7. (Add support for accessing MMIO region using BIG real mode)
    [Files] AhciMmioSmm.sdl, AHCIACC.asm

Note: To build this label succussfully use PAhciBus.h version 11 or above and PIdeBus.h version 29 or above.
Release_4.6.3_AhciSrc_025
Release_4.6.3_AhciSrc_024
Release_4.6.3_AhciSrc_023
Release_4.6.3_AhciSrc_022
Release_4.6.3_AhciSrc_021
Release_4.6.3_AhciSrc_020
Release_4.6.3_AhciSrc_019

© American Megatrends Inc.


AhciSources

AMIBIOS Document References

Previous Validation Test Reports

Validation Test Report 19.htm

Validation Test Report 20.htm

ValidationTestReport21.htm

ValidationTestReport22.htm

ValidationTestReport23.htm

ValidationTestReport24.htm

ValidationTestReport25.htm

ValidationTestReport26.htm


Release Notes - NDA Required

Validation Test Report for Ahcidriver Label (INT)_a_4.6.3_AhciSrc_019

Platform Information Form :

Board Information - Maho Bay
BIOS Information (Label, Path) - Labeled '4.6.5.3_VEB_1APTC018'; Path 'SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_MahoBay_Crb_1APTC/MahoBay.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- U/T
Status Update: *** Video Drivers is not available for this platform

REF-33104: Windows 8 x64 Beta S3 Power Button---- U/T
Status Update: *** Video Drivers is not available for this Win8

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

OS
1) REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:

2) REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:

3) REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update:

4) REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:

Platform Information Form :

Board Information - HuronRiver
BIOS Information (Label, Path) - Labeled'4.6.5.1_VEB_1ABUC103'; Path 'SS: Alaska;$/Alaska/Projects/Intel/SandyBridge/CougarPoint_HuronRiver_4650_1ABUC/HuronRiver.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:

REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update:

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

OS
1) REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:

2) REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:

3) REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update:

4) REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:

Platform Information Form :

Board Information - Bromolow
BIOS Information (Label, Path) - Labeled'4.6.4.1_VEB_1AOSX015'; Path 'SS: Alaska;$/Alaska/Projects/Intel/SandyBridge/CougarPoint_Bromolow_Crb_1AOSX/Bromolow.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- U/T
Status Update: *** Drivers sis not available for this platform

REF-33104: Windows 8 x64 Beta S3 Power Button---- U/T
Status Update: *** Drivers is not available for this platform

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

OS
1) REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:

2) REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:

3) REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update:

4) REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for Ahcidriver Label (INT)_a_4.6.3_AhciSrc_020

Platform Information Form :

Board Information - Maho Bay
BIOS Information (Label, Path) - Labeled '4.6.5.3_VEB_1APTC020'; Path 'SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_MahoBay_Crb_1APTC/MahoBay.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:Driver Ver:8.15.10.2761

REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update:

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

OS
1) REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update: Windows 7 Ver 6.1.7600 Build 7600

2) REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update: Windows 7 Ver 6.1.7600 Build 7600

3) REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update: Windows 7 Ver 6.1.7600 Build 7600

4) REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update: Windows 7 Ver 6.1.7600 Build 7600

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:

Platform Information Form :

Board Information - ChiefRiver
BIOS Information (Label, Path) - Labeled'4.6.5.3_VEB_1APTJ020 '; Path 'SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/ChiefRiver.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:Driver Ver:8.15.10.2761

REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update: Driver Vers: 9.17.10.2753

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

OS
1) REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:Windows 7 Ver 6.1.7600 Build 7600

2) REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:Windows 7 Ver 6.1.7600 Build 7600

3) REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update: Windows 7 Ver 6.1.7600 Build 7600

4) REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:Windows 7 x32 ulimate: Ver 6.1.7600 Build 7600

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:

Platform Information Form :

Board Information - Bromolow
BIOS Information (Label, Path) - Labeled'4.6.4.1_VEB_1AOSX015'; Path 'SS: Alaska;$/Alaska/Projects/Intel/SandyBridge/CougarPoint_Bromolow_Crb_1AOSX/Bromolow.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- U/T
Status Update:*** Drivers sis not available for this platform

REF-33104: Windows 8 x64 Beta S3 Power Button---- U/T
Status Update: *** Drivers is not available for this platform

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

OS
1) REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:

2) REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:

3) REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update:

4) REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for Ahcidriver Label (INT)_a_4.6.3_AhciSrc_021

Platform Information Form :

Board Information - Sugar Bay
BIOS Information (Label, Path) - Labeled (INT)4.6.5.4';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:Driver
REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update:

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

Hdd Acoustic
REF-33885: EFI Check Bypass Mode with AcousticVal.efi in IDE mode ---- PASS
Status Update:
REF-33887: EFI Check Max.Performance with AcousticVal.efi in IDE ---- PASS
Status Update:
REF-33886: EFI Check Quiet Mode with AcousticVal.efi in IDE mode ---- PASS
Status Update:
REF-33889: EFI Multiple HDD verify with AcousticVal.efi in IDE ---- PASS
Status Update:

Hdd Security
REF-28741 :.N/A HDD Password Validation in IDE Mode ---- PASS
Status Update:
REF-33707 :.N/A Remove HDD password in IDE Mode---- PASS
Status Update:
REF-33711 : Windows 7 x64 Windows 7 S3 Resume in IDE Mode---- PASS
Status Update:

OS
REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:
REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:
REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- U/T
Status Update: Hard drive with S.M.A.R.T. reporting bad is unavailable.
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- PASS
Status Update:

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:

Platform Information Form :

Board Information - ChiefRiver
BIOS Information (Label, Path) - Labeled'4.6.5.3_VEB_1APTJ023'; Path 'SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/ChiefRiver.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:Driver
REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update:

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

Hdd Acoustic
REF-33885: EFI Check Bypass Mode with AcousticVal.efi in IDE mode ---- PASS
Status Update:
REF-33887: EFI Check Max.Performance with AcousticVal.efi in IDE ---- PASS
Status Update:
REF-33886: EFI Check Quiet Mode with AcousticVal.efi in IDE mode ---- PASS
Status Update:
REF-33889: EFI Multiple HDD verify with AcousticVal.efi in IDE ---- PASS
Status Update:

Hdd Security
REF-28741 :.N/A HDD Password Validation in IDE Mode ---- PASS
Status Update:
REF-33707 :.N/A Remove HDD password in IDE Mode---- PASS
Status Update:
REF-33711 : Windows 7 x64 Windows 7 S3 Resume in IDE Mode---- PASS
Status Update:

OS
REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:
REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:
REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- U/T
Status Update: Hard drive with S.M.A.R.T. reporting bad is unavailable.
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- PASS
Status Update:

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:

Platform Information Form :

Board Information - Bromolow
BIOS Information (Label, Path) - Labeled'4.6.4.1_VEB_1AOSX015'; Path 'SS: Alaska;$/Alaska/Projects/Intel/SandyBridge/CougarPoint_Bromolow_Crb_1AOSX/Bromolow.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- U/T
Status Update:Supporting drivers not available.
REF-33104: Windows 8 x64 Beta S3 Power Button---- U/T
Status Update: Supporting drivers not available.

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

Hdd Acoustic
REF-33885: EFI Check Bypass Mode with AcousticVal.efi in IDE mode ---- PASS
Status Update:
REF-33887: EFI Check Max.Performance with AcousticVal.efi in IDE ---- PASS
Status Update:
REF-33886: EFI Check Quiet Mode with AcousticVal.efi in IDE mode ---- PASS
Status Update:
REF-33889: EFI Multiple HDD verify with AcousticVal.efi in IDE ---- PASS
Status Update:

Hdd Security
REF-28741 :.N/A HDD Password Validation in IDE Mode ---- PASS
Status Update:
REF-33707 :.N/A Remove HDD password in IDE Mode---- PASS
Status Update:
REF-33711 : Windows 7 x64 Windows 7 S3 Resume in IDE Mode---- U/T
Status Update: Supporting drivers not available.

OS
REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:
REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:
REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- U/T
Status Update: Hard drive with S.M.A.R.T. reporting bad is unavailable.
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- PASS
Status Update:

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for Ahcidriver Label (INT)_a_4.6.3_AhciSrc_022

Platform Information Form :

Board Information - ChiefRiver
BIOS Information (Label, Path) - Labeled'4.6.5.3_VEB_1APTJ025'; Path 'SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/ChiefRiver.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:Driver
REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update:

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

Hdd Acoustic
REF-33885: EFI Check Bypass Mode with AcousticVal.efi in IDE mode ---- PASS
Status Update:
REF-33887: EFI Check Max.Performance with AcousticVal.efi in IDE ---- PASS
Status Update:
REF-33886: EFI Check Quiet Mode with AcousticVal.efi in IDE mode ---- PASS
Status Update:
REF-33889: EFI Multiple HDD verify with AcousticVal.efi in IDE ---- PASS
Status Update:

Hdd Security
REF-28741 :.N/A HDD Password Validation in IDE Mode ---- PASS
Status Update:
REF-33707 :.N/A Remove HDD password in IDE Mode---- PASS
Status Update:
REF-33711 : Windows 7 x64 Windows 7 S3 Resume in IDE Mode---- PASS
Status Update:

OS
REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:
REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:
REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- U/T
Status Update: Hard drive with S.M.A.R.T. reporting bad is unavailable.
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- U/T
Status Update: No HDD available without SMART support

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:

Platform Information Form :

Board Information - AMD Dory
BIOS Information (Label, Path) - Labeled'4.6.5.3_VEB_1AOUQ_016'; Path 'SS: Alaska;$/Alaska/Projects/AMD/AgesaV5/OrochiPI/Dory_1AOUQ/';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- U/T
Status Update:Supporting drivers not available.
REF-33104: Windows 8 x64 Beta S3 Power Button---- U/T
Status Update: Supporting drivers not available.

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

Hdd Acoustic
REF-33885: EFI Check Bypass Mode with AcousticVal.efi in IDE mode ---- U/T
Status Update: This platform does not support IdeAcoustic
REF-33887: EFI Check Max.Performance with AcousticVal.efi in IDE ---- U/T
Status Update: This platform does not support IdeAcoustic
REF-33886: EFI Check Quiet Mode with AcousticVal.efi in IDE mode ---- U/T
Status Update: This platform does not support IdeAcoustic
REF-33889: EFI Multiple HDD verify with AcousticVal.efi in IDE ---- U/T
Status Update: This platform does not support IdeAcoustic

Hdd Security
REF-28741 :.N/A HDD Password Validation in IDE Mode ---- PASS
Status Update:
REF-33707 :.N/A Remove HDD password in IDE Mode---- PASS
Status Update:
REF-33711 : Windows 7 x64 Windows 7 S3 Resume in IDE Mode---- U/T
Status Update: Supporting drivers not available.

OS
REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:
REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:
REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- U/T
Status Update: Hard drive with S.M.A.R.T. reporting bad is unavailable.
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- U/T
Status Update: No HDD available without SMART support

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for Ahcidriver Label (INT)_a_4.6.3_AhciSrc_023

Platform Information Form :

Board Information - ChiefRiver
BIOS Information (Label, Path) - Labeled'4.6.5.3_VEB_1APTJ027'; Path 'SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/ChiefRiver.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:Driver
REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update:

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

Hdd Acoustic
REF-33885: EFI Check Bypass Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33887: EFI Check Max.Performance with AcousticVal.efi in AHCI ---- PASS
Status Update:
REF-33886: EFI Check Quiet Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33889: EFI Multiple HDD verify with AcousticVal.efi in AHCI ---- PASS
Status Update:

Hdd Security
REF-28741 :.N/A HDD Password Validation in AHCI Mode ---- PASS
Status Update:
REF-33707 :.N/A Remove HDD password in AHCI Mode---- PASS
Status Update:
REF-33711 : Windows 7 x64 Windows 7 S3 Resume in AHCI Mode---- PASS
Status Update:

OS
REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:
REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:
REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- U/T
Status Update: Hard drive with S.M.A.R.T. reporting bad is unavailable.
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- U/T
Status Update: No HDD available without SMART support

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

SCT
REF-28581: EFI SCT Execution ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:

Platform Information Form :

Board Information - SugarBay
BIOS Information (Label, Path) - Latest 4.6.5.3.'; Path 'SS: Alaska;$/Alaska/Projects/Intel/SandyBridge/CougarPoint_SugarBay';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:
REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update:

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

Hdd Acoustic
REF-33885: EFI Check Bypass Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update: This platform does not support IdeAcoustic
REF-33887: EFI Check Max.Performance with AcousticVal.efi in AHCI ---- PASS
Status Update: This platform does not support IdeAcoustic
REF-33886: EFI Check Quiet Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update: This platform does not support IdeAcoustic
REF-33889: EFI Multiple HDD verify with AcousticVal.efi in AHCI ---- PASS
Status Update: This platform does not support IdeAcoustic

Hdd Security
REF-28741 :.N/A HDD Password Validation in AHCI Mode ---- PASS
Status Update:
REF-33707 :.N/A Remove HDD password in AHCI Mode---- PASS
Status Update:
REF-33711 : Windows 7 x64 Windows 7 S3 Resume in AHCI Mode---- FAIL
Status Update: After the system resumes it either hangs or blue screen error is coming and gets rebooted.But this is not AHCI driver issue.

OS
REF-28562 :Windows 7 x64 UEFI Windows7 x64 Install ---- PASS
Status Update:
REF-28567 :Windows 7 x64 Windows 7 AHCI Install ---- PASS
Status Update:
REF-28565 :Windows 7 x64 Windows 7 Ultimate x64 ---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86 ---- PASS
Status Update:

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- U/T
Status Update: Hard drive with S.M.A.R.T. reporting bad is unavailable.
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- U/T
Status Update: No HDD available without SMART support

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

SCT
REF-28581: EFI SCT Execution ---- FAIL
Status Update: The failure is not due to AHCI module it is project issue.

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for Ahcidriver Label (INT)_b_4.6.3_AhciSrc_024

Platform Information Form :

Board Information - SharkBay
BIOS Information (Label, Path) - Latest 4.6.5.4.'; Path 'SS: Alaska;$/Alaska/Projects/Intel/Haswell/LynxPoint_SharkBay_MB_Crb_1AQPM';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:
REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update:

Build
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

Hdd Acoustic
REF-33882: EFI Check Bypass Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33884: EFI Check Max.Performance with AcousticVal.efi in AHCI ---- PASS
Status Update:
REF-33883: EFI Check Quiet Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33888: EFI Multiple HDD verify with AcousticVal.efi in AHCI ---- PASS
Status Update:

Hdd Security
REF-33705 :.N/A HDD Password Validation in AHCI Mode ---- PASS
Status Update:
REF-33708 :.N/A Remove HDD password in AHCI Mode---- PASS
Status Update:
REF-33712 : Windows 7 x64 Windows 7 S3 Resume in AHCI Mode---- PASS
Status Update:

OS
REF-28565 :Windows 7 x64 Legacy Windows 7 Ultimate x64---- PASS
Status Update:
REF-28562 :Windows 7 x64 UEFI Windows 7 x64 Install---- PASS
Status Update:
REF-28567 :Windows 7 x64 Windows 7 AHCI Install---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86---- PASS
Status Update:

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- U/T
Status Update: Hardware not available
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- U/T
Status Update: Hardware not available

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

SCT
REF-28581: EFI SCT Execution ---- PASS
Status Update:

Setup
TSE
1) REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
2) REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for Ahcidriver Label (INT)_a_4.6.3_AhciSrc_025

Platform Information Form :

Board Information - SharkBay
BIOS Information (Label, Path) - Latest '4.6.5.4_VEB_1AQPM032'; Path 'SS: Alaska;$/Alaska/Projects/Intel/Haswell/LynxPoint_SharkBay_MB_Crb_1AQPM/SharkBay.veb';
Chipset Information (Type, Stepping) -LynxPoint C1
CPU Information (Type, Stepping) -Haswell C0
Memory Info (Manufacturer, Speed, Configuration) -4GB 1600MHz
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -Win64_8.15.10.2761\Win32_10.18.10.3277

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:
REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update:

Build
REF-31718: .N/A 32 Bit Project Compile ---- Untestable
Status Update: Intel CPU Reference Code is not to support X64_BUILD=0.
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

Hdd Acoustic
REF-33882: EFI Check Bypass Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33884: EFI Check Max.Performance with AcousticVal.efi in AHCI ---- PASS
Status Update:
REF-33883: EFI Check Quiet Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33888: EFI Multiple HDD verify with AcousticVal.efi in AHCI ---- PASS
Status Update:

Hdd Security
REF-33705 :.N/A HDD Password Validation in AHCI Mode ---- PASS
Status Update:
REF-33708 :.N/A Remove HDD password in AHCI Mode---- PASS
Status Update:
REF-33712 : Windows 7 x64 Windows 7 S3 Resume in AHCI Mode---- PASS
Status Update:

OS
REF-28565 :Windows 7 x64 Legacy Windows 7 Ultimate x64---- PASS
Status Update:
REF-28562 :Windows 7 x64 UEFI Windows 7 x64 Install---- PASS
Status Update:
REF-32313 :Windows 8 x64 UEFI Windows 8 x64 Install(AHCI Mode)---- PASS
Status Update:
REF-36909 :UEFI Windows 8.1/Blue/Next UEFI Windows 8.1 x64 Install - AHCI Mode---- PASS
Status Update:
REF-28567 :Windows 7 x64 Windows 7 AHCI Install---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86---- PASS
Status Update:
REF-35821 :Windows 8 x64 RTM Windows8 x64 installation - AHCI Mode---- PASS
Status Update:
REF-35822 :Windows 8 x86 RTM Windows8 x86 installation - AHCI Mode---- PASS
Status Update:

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- Untestable
Status Update: Drive reports that bad S.M.A.R.T. HDD is not available
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- Untestable
Status Update: Hard Drive Without S.M.A.R.T not available

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

SCT
REF-28581: EFI SCT Execution ---- PASS
Status Update:

Setup
TSE
REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:

Platform Information Form :

Board Information - ChiefRiver
BIOS Information (Label, Path) - Latest '4.6.5.4_VEB_1APTJ029'; Path 'SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/ChiefRiver.veb';
Chipset Information (Type, Stepping) -PPT A0
CPU Information (Type, Stepping) -IVY C0
Memory Info (Manufacturer, Speed, Configuration) -1GB 2300MHz
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -Win64_8.15.10.2761\Win32_10.18.10.3277

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:UEFI MS Windows 7 Ultimate Build 7600 Drivers: Win64_8.15.10.2761
REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update:

Build
REF-31718: .N/A 32 Bit Project Compile ---- Untestable
Status Update: Intel CPU Reference Code is not to support X64_BUILD=0.
REF-31549: .N/A Test ROM Build ---- PASS
Status Update: Label: 4.6.5.4_VEB_1APTJ029 Drivers: win64_8.15.10.2761 Build tools: Tools41

Hdd Acoustic
REF-33882: EFI Check Bypass Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33884: EFI Check Max.Performance with AcousticVal.efi in AHCI ---- PASS
Status Update:
REF-33883: EFI Check Quiet Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33888: EFI Multiple HDD verify with AcousticVal.efi in AHCI ---- PASS
Status Update:

Hdd Security
REF-33705 :.N/A HDD Password Validation in AHCI Mode ---- PASS
Status Update:
REF-33708 :.N/A Remove HDD password in AHCI Mode---- PASS
Status Update:
REF-33712 : Windows 7 x64 Windows 7 S3 Resume in AHCI Mode---- PASS
Status Update:

OS
REF-28565 :Windows 7 x64 Legacy Windows 7 Ultimate x64---- PASS
Status Update: S3 - PASS S4 - PASS MS Windows 7 Ultimate Build 7600
REF-28562 :Windows 7 x64 UEFI Windows 7 x64 Install---- PASS
Status Update: UEFI MS windows 7 ultimate Build 7600 Driver: win64_8.15.10.2761 S3-PASS S4-PASS
REF-32313 :Windows 8 x64 UEFI Windows 8 x64 Install(AHCI Mode)---- PASS
Status Update: Windows 8 pro Build 9200 Driver: win64_8.15.10.2761 S3 - PASS S4 - Pass
REF-36909 :UEFI Windows 8.1/Blue/Next UEFI Windows 8.1 x64 Install - AHCI Mode---- PASS
Status Update: Drivers: win64_9.17.10.2753 Windows 8.1 Build 9600 S3 - PASS S4 - PASS
REF-28567 :Windows 7 x64 Windows 7 AHCI Install---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86---- PASS
Status Update: MS Windows ultimate Build 7601 Drivers: Win32_8.15.10.2761 S3 - PASS S4 - PASS
REF-35821 :Windows 8 x64 RTM Windows8 x64 installation - AHCI Mode---- PASS
Status Update: Windows 8 Pro Build 9200 S3 - PASS S4 - PASS Driver: win64_9.17.10.2753
REF-35822 :Windows 8 x86 RTM Windows8 x86 installation - AHCI Mode---- PASS
Status Update: S3- Pass S4 - Pass Windows 8 Enterpride Build 9200 Driver: Win32_10.18.10.3277

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- Untestable
Status Update: Drive reports that bad S.M.A.R.T. HDD is not available
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- Untestable
Status Update: Drive reports that bad S.M.A.R.T. HDD is not available

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

SCT
REF-28581: EFI SCT Execution ---- PASS
Status Update:

Setup
TSE
REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:


Release Notes - NDA Required

Validation Test Report for Ahcidriver Label (INT)_a_4.6.3_AhciSrc_026

Platform Information Form :

Board Information - SharkBay
BIOS Information (Label, Path) - Latest '4.6.5.4_VEB_1AQPM035'; Path 'SS: Alaska;$/Alaska/Projects/Intel/Haswell/LynxPoint_SharkBay_MB_Crb_1AQPM/SharkBay.veb';
Chipset Information (Type, Stepping) -LynxPoint C1
CPU Information (Type, Stepping) -Haswell C0
Memory Info (Manufacturer, Speed, Configuration) -4GB 1600MHz
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -Win64_8.15.10.2761\Win32_10.18.10.3277

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:
REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update:

Build
REF-31718: .N/A 32 Bit Project Compile ---- U/T
Status Update: This project doesn't support 32 bit build.
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

Hdd Acoustic
REF-33882: EFI Check Bypass Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33884: EFI Check Max.Performance with AcousticVal.efi in AHCI ---- PASS
Status Update:
REF-33883: EFI Check Quiet Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33888: EFI Multiple HDD verify with AcousticVal.efi in AHCI ---- PASS
Status Update:

Hdd Security
REF-33705 :.N/A HDD Password Validation in AHCI Mode ---- PASS
Status Update:
REF-33708 :.N/A Remove HDD password in AHCI Mode---- PASS
Status Update:
REF-33712 : Windows 7 x64 Windows 7 S3 Resume in AHCI Mode---- PASS
Status Update:

OS
REF-28565 :Windows 7 x64 Legacy Windows 7 Ultimate x64---- PASS
Status Update:
REF-28562 :Windows 7 x64 UEFI Windows 7 x64 Install---- PASS
Status Update:
REF-32313 :Windows 8 x64 UEFI Windows 8 x64 Install(AHCI Mode)---- PASS
Status Update:
REF-36909 :UEFI Windows 8.1/Blue/Next UEFI Windows 8.1 x64 Install - AHCI Mode---- PASS
Status Update:
REF-28567 :Windows 7 x64 Windows 7 AHCI Install---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86---- PASS
Status Update:
REF-35821 :Windows 8 x64 RTM Windows8 x64 installation - AHCI Mode---- PASS
Status Update:
REF-35822 :Windows 8 x86 RTM Windows8 x86 installation - AHCI Mode---- PASS
Status Update:

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- PASS
Status Update:
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- U/T
Status Update: Hard Drive Without S.M.A.R.T not available

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

SCT
REF-28581: EFI SCT Execution ---- PASS
Status Update:

Setup
TSE
REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:

Platform Information Form :

Board Information - SugarBay
BIOS Information (Label, Path) - Latest 4.6.5.5.'; Path 'SS: Alaska;$/Alaska/Projects/Intel/SandyBridge/CougarPoint_SugarBay';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- Untestable
Status Update: Drivers not available to support S3 resume in this platform.
REF-33104: Windows 8 x64 Beta S3 Power Button---- Untestable
Status Update: Drivers not available to support S3 resume in this platform.

Build
REF-31718: .N/A 32 Bit Project Compile ---- PASS
Status Update:
REF-31549: .N/A Test ROM Build ---- PASS
Status Update:

Hdd Acoustic
REF-33882: EFI Check Bypass Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33884: EFI Check Max.Performance with AcousticVal.efi in AHCI ---- PASS
Status Update:
REF-33883: EFI Check Quiet Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33888: EFI Multiple HDD verify with AcousticVal.efi in AHCI ---- PASS
Status Update:

Hdd Security
REF-33705 :.N/A HDD Password Validation in AHCI Mode ---- PASS
Status Update:
REF-33708 :.N/A Remove HDD password in AHCI Mode---- PASS
Status Update:
REF-33712 : Windows 7 x64 Windows 7 S3 Resume in AHCI Mode---- U/T
Status Update: Drivers not available to support S3 resume in this platform.

OS
REF-28565 :Windows 7 x64 Legacy Windows 7 Ultimate x64---- PASS
Status Update:
REF-28562 :Windows 7 x64 UEFI Windows 7 x64 Install---- PASS
Status Update:
REF-32313 :Windows 8 x64 UEFI Windows 8 x64 Install(AHCI Mode)---- PASS
Status Update:
REF-36909 :UEFI Windows 8.1/Blue/Next UEFI Windows 8.1 x64 Install - AHCI Mode---- PASS
Status Update:
REF-28567 :Windows 7 x64 Windows 7 AHCI Install---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86---- PASS
Status Update:
REF-35821 :Windows 8 x64 RTM Windows8 x64 installation - AHCI Mode---- PASS
Status Update:
REF-35822 :Windows 8 x86 RTM Windows8 x86 installation - AHCI Mode---- PASS
Status Update:

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- PASS
Status Update:
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- U/T
Status Update:

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

SCT
REF-28581: EFI SCT Execution ---- PASS
Status Update:

Setup
TSE
REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:


Copyright

American Megatrends, Inc.
5555 Oakbrook Parkway
Suite 200
Norcross, GA 30093 (USA)

Copyright (c) 1999-2015 American Megatrends, Inc. All Rights Reserved.

This publication contains proprietary information, which is protected by copyright. No part of this publication may be reproduced, transcribed, stored in a retrieval system, translated into any language or computer language, or transmitted in any form whatsoever without the prior written consent of the publisher, American Megatrends, Inc.

American Megatrends, Inc. retains the right to update, change, modify this publication at any time, without notice.

For Additional Information

Call American Megatrends BIOS Sales Department at 1-800-828-9264 for additional information.

Limitations of Liability

In no event shall American Megatrends be held liable for any loss, expenses, or damages of any kind whatsoever, whether direct, indirect, incidental, or consequential, arising from the design or use of this product or the support materials provided with the product.

Limited Warranty

No warranties are made, either expressed or implied, with regard to the contents of this work, its merchantability, or fitness for a particular use. American Megatrends assumes no responsibility for errors and omissions or for the uses made of the material contained herein or reader decisions based on such use.

Trademark and Copyright Acknowledgments

All product names used in this publication are for identification purposes only and are trademarks of their respective Companies.


Release Notes - NDA Required

Component Information:
Component Title: AHCI
Component Reference Name: AHCI
Component Type: eModule
Release Date: 2015-01-07
Source Control Label: 4.6.3_AhciSrc_027
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AHCI;
Dependencies
Component Dependencies
Core
Dependent Component Title: Core
Dependent Component Reference Name: Core
Dependent Source Control Label: 4.6.5.6
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Core;
AmiBufferValidationLib
Dependent Component Title: AmiBufferValidationLib
Dependent Component Reference Name: AmiBufferValidationLib
Dependent Source Control Label: AmiBufferValidationLib_01
Dependent Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AmiBufferValidationLib;

File Dependencies
NONE

Protocol Dependencies
ONE
Dependent Protocol Name: LEGACY BIOS PROTOCOL
Dependent Protocol GUID: EFI_LEGACY_BIOS_PROTOCOL_GUID
TWO
Dependent Protocol Name: SMM BASE PROTOCOL
Dependent Protocol GUID: EFI_SMM_BASE_PROTOCOL_GUID
Non-Compiled BIN and LIB File(s) within this Component:

AI13.bin
Component Title: AHCI
Component Reference Name: AHCI
Component Source Control Label: AHCI.12_CSM16.57_14
Component Source Control Location: SS: ALASKA;$/Alaska/CSM16/AHCI;
Project Source Control Label: 8.00.10.00.0x.57
Project Source Control Location: SS: ALASKA;$/Alaska/CSM16/Complete Project/Furball10.64K/Furball10.veb;
Component Description:
Advanced Host Controller Interface (AHCI) is a programming interface for SATA host controllers. AHCI defines transactions between the SATA controller and software and enables advanced performance and usability with SATA. AHCI has advantage of performance features such as no master/slave designation for SATA devices—each device is treated as a master—and hardware assisted native command queuing. AHCI also provides usability enhancements such as Hot-Plug. AHCI also requires appropriate software support (e.g., an AHCI driver) and for some features, hardware support in the SATA device.
The AhciSrc Module can be added to a EFI BIOS to support Initialization, Detection and Enumeration of drives in Native Ahci Mode.
The Module can be bisected to view the following functionality:
Ahci Bus :
This file will take care of installing and Uninstalling the driver binding protocol, Block Io Protocol for the Ahci Bus. Besides this it will take care of the detection of SATA device connected to given Port and PM Port and initializing, configuring and Programming the Ports and Ahci Controller if present. Other functionality about the Disk information, Identification and other miscellaneous task such as delays status check memory test etc will also be preformed when the disk is enumerated.
AhciController :
All the Controller related functionality are handled in this file. Besides having the Sata Block-io protocol functions, it will execute all controller related PIO, Packet and Non Data Commands. This File will also takes care of the Command structure based information that needs to be passed and controller features like generating resets, Start and Stop unit commands for controller, Wait for Controller processing actions.
Aint13 :
This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16 which in turn passes the Number of Drives and Drive information to the legacy 16 bit binary so that the Ahci Sata devices (HDD/CD/DVD etc) will be entered in the bbs entry and passing the information
Aint13Csp :
This is chipset porting file that has routines to port index/data ports to access memory-mapped registers
AhciAccess :
Main functionality will be to provide Index Data Port Access to AHCI Controller
Contol Flow :

Ahci Driver is similar to IdeBus driver Functionality besides it uses the memory mapped access and Command structure to pass for the drive and operation instead of the Port map access. The Driver gets controlled as a generic driver binding model once it has been supported and the start function will enumerate the devices connected on the sata ports if found presence. Once Detected, the sata devices will be configured with the sata protocols and all the supplementary functionality. Finally at the end of Post, the enumerated devices are added to the bbs Prioroty table and the device information will be passed to the legacy 16 bit Csm Module.
Filename | Description
Main Component | Root\Core\em\Ahci
AhciSrc.cif | Component information file for the eModule.
AhciSrc.mak | Make file becomes part of the BIOS build process.
AhciSrc.sdl | Contains BIOS build parameters.
AhciBus.c | Files that has Ahci Bus detection and Enumeration Related Functions and Protocols.
AhciBus.h | Headers, Definitions, Macros and Function Prototypes are defined in this File.
AhciController.c | Files that has Ahci Controller Related Functions and Protocols.
AhciController.h | Headers, Definitions, Macros and Function Prototypes for Ahci controller are defined.
AhciComponentName.c | Component Name Protocol Member Functions for Ahci Bus.
AhciSources.chm | CHM file for the eModule.
AHCI Int13 ModulePart | Root\Core\eM\Ahci - This file will take care of the main interaction of the Ahci EFI Module to relate to the CSM Legacy 16.
Aint13.cif | Component information file for the Module part.
Aint13.sdl | Contains BIOS build parameters.
Aint13.mak | Make file becomes part of the BIOS build process.
Aint13.inf | Rev and Bin Info of Module
AInt13.h | Headers, Definitions, Macros and Function Prototypes for Aint13 are defined.
AInt13.c | Files that has Aint13 Related Functions and Protocols.
AInt13.dxs | Dependancy expression for the component
AHCI Int13 Protocol ModulePart | Root\Include\Protocol - This has the AHCI INT13 initialization protocol.
Aint13Protocol.cif | Component information file for the Module part.
LegacyAhci.h | Protocol Definition of Legacy Ahci are defined.
AHCI 16 Bit binary ModulePart | Root\Addon - This contains 16 bit Csm Binary File.
ahcibin.cif | Component information file for the Module part.
AI13.bin | It is the 16 bit Csm Binary File for Ahci Int 13.
AHCI Int 13 CSP-Template ModulePart | Root\Chipset\eM\Ahci - This is chipset porting file that has routines to port index/data ports to access memory-mapped registers.
AhciCsp.cif | Component information file for the Module part.
AHCIACC.ASM | Assembly file for Ahci Access.
HACCESS.EQU | Equates Defined for Asm Files.
AHCI.EQU | Equates Defined for Asm Files.
AINT13.EQU | Equates Defined for Asm Files.
AInt13Csp.c | Files that has Aint13 Csp Related Functions and Protocols.
AhciInt13Smm ModulePart | Root\Core\eM\Ahci - SMM support for AHCI Int13/MMIO operations
AhciInt13Smm.cif | Component information file for the Module part.
AhciInt13Smm.sdl | Contains BIOS build parameters.
AhciInt13Smm.h | This file contains the definitions of function prototype, constant and data structure for AhciInt13Smm module.
AhciInt13Dxe.c | This file contains code for SMI handler for AHCI INT13.
AhciInt13Dxe.dxs | Dependency expression for the AhciInt13Dxe component
AhciInt13Smm.c | This file contains code for SMI handler for AHCI INT13.
AhciInt13Smm.dxs | Dependency expression for the AhciInt13Smm component
AhciInt13Smm.mak | MAK file for the AhciInt13Smm component
AHCI CSP-Template ModulePart | Root\Chipset\eM\Ahci - Main functionality will be to provide Index Data Port Access to AHCI Controller .
AhciAccess.cif | Component information file for the Module part.
AhciAccess.c | Files that has Aint13 Csp Related Functions and Protocols.
AhciSmm ModulePart | Root\Core\eM\Ahci\AhciSmm - This module part contains the code that is executed in SMM.
AhciSmm.cif | Component information file for the Module part.
AhciSmm.sdl | Contains BIOS build parameters.
AhciSmm.mak | Make file becomes part of the BIOS build process.
AhciSmm.dxs | Depency file for this module part.
AhciSmm.h | Headers, Definitions, Macros and Function Prototypes are defined.
AhciSmm.c | It contains Functions that are executed in SMM.
AhciSmmProtocols ModulePart | Root\Include\Protocol - Protocol definition for AHCI bus is defined here.
AhciSmmProtocols.cif | Component information file for the Module part.
AhciSmmProtocol.h | Files that has Functions and Protocols for Ahci Smm.
BIOS Parameters:
Ahci Module Parameters:
Parameter Name | Type | Description
AhciSrc_SUPPORT | Boolean | Main switch to enable AHCI support in Project.
PORT_MULTIPLIER_SUPPORT | Boolean | Switch to Enable/Disable PM Support
INDEX_DATA_PORT_ACCESS | Boolean | 0-MMIO Access , 1- Index/Port access
HDD_PASSWORD_SUPPORT_UNDER_RAIDMODE | Boolean | 0-HDD Password not support under Raid mode 1- Enabled
SUPPORT_ATAPI_IN_RAID_MODE | Boolean | 1-Under Raid mode , Atapi devices are handled by AhciBus driver. 0 - Raid option rom will handle the Atapi devices.
DiPM_SUPPORT | Boolean | Support Device Initiated Power Management
ENABLE_DIPM | Boolean | 0 - Disable Device Initiated Power Management Feature. 1 - Enable DipM Feature
DEVICE_SLEEP_SUPPORT | Boolean | Enable/Disable Token to support Device Sleep
ENABLE_DEVICE_SLEEP | Boolean | 0 - Disable Device Sleep Feature. 1 - Enable Device Sleep Feature
AHCI Int13 Module Parameters:
Parameter Name | Type | Description
AINT13_SUPPORT | Boolean | Main switch to enable AHCI Int13 support in the project.
AHCI_CONTROLLER_COUNT | Boolean | The controller count can range from 1-6
AI13_BINARY_VERSION | Boolean | Version of AI13.bin. Higher 2 digits represent CSM version and lower 2 digits represent AI13.bin build number
AhciInt13Smm Module Parameters:
Parameter Name | Type | Description
AHCI_INT13_SMM_SUPPORT | Boolean | Main switch to enable SMM support for AHCI Int13/MMIO operations in Project. Currently only INT13 Read/Write functions are supported.
AHCI_INT13_SMM_SWSMI_VALUE | Integer | Value to write into SMI command register to generate software SMI for AHCI INT13/MMIO operations.
AINT13_AVOID_MULTIPLE_SMI | Boolean | Execute INT13 Read/Write functions completely in SMM and avoid multiple SMI generation for single AHCI INT13 function/call.
BIG_REAL_MODE_MMIO_ACCESS | Boolean | 1- Access the MMIO region by switching to big real mode, 0 - Access the MMIO using SMI handler
AhciSmm Module Parameters:
Parameter Name | Type | Description
AhciSmm_SUPPORT | Boolean | Main switch to enable AhciSmm support in Project
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_41, Dated: 2013-03-19
Visual eBios: RSS.5.73.0244, Dated: 2012-03-19
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
EIP #170118 - MDAT can't program correctly in AHCI module
EIP #172162 - Can't install legacy windows if achiacc.obj is not first one of CSM_OEM16_OBJS elink
EIP Addressed
EIP #170118 - MDAT can't program correctly in AHCI module
EIP #172162 - Can't install legacy windows if achiacc.obj is not first one of CSM_OEM16_OBJS elink
EIP #191939 - Issue about BIG_REAL_MODE_MMIO_ACCESS of AHCI module
EIP #192297 - Replacing SmmGetMemoryType usage in AHCI driver with AmiBufferValidationLib
EIP #174961 - Sw Dispatch protocol as dependency added in dxs file. Error case handled in source file.
EIP #178239 - S3 Resume fails when HDD password is set where platform have more than one AHCI controller
Files Changed for General Bug Fixes and EIP Addressed in this Label:
Root\Core\EM\Ahci\AhciBus.c (EIP #170118)
Root\Core\EM\Ahci\AhciBus.h (EIP #170118)
Root\Core\EM\Ahci\AhciBus.sdl (EIP #170118)
Root\Addon\AI13.bin (EIP #191939)
Root\Chipset\eM\Ahci\AHCIACC.asm (EIP #191939, #172162, #192297)
Root\Core\eM\Ahci\AhciInt13Dxe.c (EIP #191939)
Root\Core\eM\Ahci\AhciInt13Dxe.dxs (EIP #191939)
Root\Core\eM\Ahci\AhciInt13Smm.c (EIP #191939, #192297)
Root\Core\eM\Ahci\AhciInt13Smm.cif (EIP #191939)
Root\Core\eM\Ahci\AhciInt13Smm.dxs (EIP #191939)
Root\Core\eM\Ahci\AhciInt13Smm.h (EIP #191939)
Root\Core\eM\Ahci\AhciInt13Smm.mak (EIP #191939, #192297)
Root\Core\eM\Ahci\AhciInt13Smm.sdl (EIP #191939)
Root\Core\eM\Ahci\AInt13.c (EIP #191939)
Root\Core\eM\Ahci\Aint13.cif (EIP #191939)
Root\Core\eM\Ahci\AInt13.h (EIP #191939)
Root\Core\eM\Ahci\AhciSmm\AhciSmm.c (EIP #191939, #178239)
Root\Core\eM\Ahci\AhciSmm\AhciSmm.h(EIP #191939)
Root\Core\eM\Ahci\AhciSmm\AhciSmm.sdl (EIP #178239)
Root\Include\Protocol\AhciSmmProtocol.h (EIP #191939)
Known Limitations and Erratas in this label:
NONE
Remaining Issues:
NONE
Unit Testing:
UEFI2.0 UEFI2.1 OS(Windows7) installation Detection on different ports File system available
under Shell environment 		OS Boot There should not be any delay
in POST at Checkpoint 0xA2
Pass Pass Pass Pass Pass Pass Pass
Validation Testing:
Quality Assurance System Test Plan
Quality Assurance Test Results
Release History:
4.6.3_AhciSrc_027:
  • [TAG] EIP170118
    [Category] Bug Fix
    [Severity] Normal
    [Symptom] MDAT can't program correctly in AHCI module
    [RootCause] Identify Data Word 76_79 Offset for DiPM Support/Enabled is incorrect for validation
    [Solution] Changed separating DiPM and Device Sleep into two routines and also modified the tokens to disable both support by default . Corrected Identify data validations.
    [Files] AhciBus.c, AhciBus.h, AhciSrc.sdl, PAhciBus.h, PIDEBus.h

  • [TAG] EIP191939
    [Category] Improvement
    [Description] Issue about BIG_REAL_MODE_MMIO_ACCESS of AHCI module
    [Files] AI13.bin,AHCIACC.ASM,AhciInt13Dxe.c,AhciInt13Dxe.dxs,AhciInt13Smm.c,AhciInt13Smm.cif,AhciInt13Smm.dxs AhciInt13Smm.h,AhciInt13Smm.mak,AhciInt13Smm.sdl,AInt13.c,Aint13.cif,AInt13.h,AhciSmm.c,AhciSmm.h,AhciSmmProtocol.h

  • [TAG] EIP172162
    [Category] Bug Fix
    [Severity] Important
    [Symptom] Can't install legacy windows if achiacc.obj is not first one of CSM_OEM16_OBJS elink
    [RootCause] Wrong offset of Newly Hooked Interrupt(CPU Exception Interrupt) address loaded in Interrupt vector table.
    [Solution] Stored Correct Offset value in IVT
    [Files] AHCIACC.ASM

  • [TAG] EIP192297
    [Category] Improvement
    [Description] Replacing SmmGetMemoryType usage in AHCI driver with AmiBufferValidationLib
    [Files] AhciInt13Smm.c, AhciInt13Smm.mak, AHCIACC.ASM

  • [TAG] EIP174961
    [Category] Improvement
    [Description] Sw Dispatch protocol as dependency added in dxs file. Error case handled in source file.
    [Files] AhciMmioSmm.c, AhciMmmioSmm.dxs

  • [TAG] EIP178239
    [Category] Improvement
    [Description] S3 Resume fails when HDD password is set where platform have more than one AHCI controller
    [Files] AhciSmm.c,AhciSmm.sdl,IDESMM.c

Note: To build this label successfully use PAhciBus.h version 14 or above and PIDEBus.h version 33 or above.
Release_4.6.3_AhciSrc_026
Release_4.6.3_AhciSrc_025
Release_4.6.3_AhciSrc_024
Release_4.6.3_AhciSrc_023
Release_4.6.3_AhciSrc_022
Release_4.6.3_AhciSrc_021
Release_4.6.3_AhciSrc_020
Release_4.6.3_AhciSrc_019

© American Megatrends Inc.


Release Notes - NDA Required

Validation Test Report for Ahci Driver Label (INT)_a_4.6.3_AhciSrc_027

Platform Information Form :

Board Information - SharkBay
BIOS Information (Label, Path) - Latest '4.6.5.4_VEB_1AQPM043'; Path 'SS: Alaska;$/Alaska/Projects/Intel/Haswell/LynxPoint_SharkBay_MB_Crb_1AQPM/SharkBay.veb';
Chipset Information (Type, Stepping) -LynxPoint C1
CPU Information (Type, Stepping) -Haswell C0
Memory Info (Manufacturer, Speed, Configuration) -4GB+2GB 1600MHz
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -Win64_10.18.10.3993\Win32_10.18.10.3993

Description:
Configuration:
Board: Grays Reef FAB 3
BIOS ID: 1AQPM043
Processor: Haswell C0
PCH: LynxPoint C1
RAM: 4GB+2GB DDR3 1600Mhz

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
ACPI
S3
REF-28665: Windows 7 x64 S3 Power Button---- PASS
Status Update:
REF-33104: Windows 8 x64 Beta S3 Power Button---- PASS
Status Update: Use Hdd Security label 4.6.3_HddSecurity_027. If your using 4.6.3_HddSecurity_026, resume from S3 will take few mins to wake up.

Build
REF-31718: .N/A 32 Bit Project Compile ---- Blocked
Status Update: Intel CPU Reference Code does Not support X64_BUILD=0
REF-37927: .N/A Linux - Test ROM build ---- Blocked
Status Update:
REF-31549: .N/A Test ROM Build ---- PASS
Status Update: Ahci label 4.6.3_AhciSrc_027 is compatible with HddSecurity label 4.6.3_HddSecurity_027

CppCheck
REF-37351: .N/A Cpp Check ---- Blocked
Status Update: Not applicable for Aptio 4

EFI
REF-40478: EFI connect\disconnect drivers in shell ---- PASS
Status Update:

Hdd Acoustic
REF-33882: EFI Check Bypass Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33884: EFI Check Max.Performance with AcousticVal.efi in AHCI ---- PASS
Status Update:
REF-33883: EFI Check Quiet Mode with AcousticVal.efi in AHCI mode ---- PASS
Status Update:
REF-33888: EFI Multiple HDD verify with AcousticVal.efi in AHCI ---- PASS
Status Update:

Hdd Security
REF-33705 :.N/A HDD Password Validation in AHCI Mode ---- PASS
Status Update:
REF-33708 :.N/A Remove HDD password in AHCI Mode---- PASS
Status Update:
REF-33712 : Windows 7 x64 Windows 7 S3 Resume in AHCI Mode---- PASS
Status Update: Use Hdd Security label 4.6.3_HddSecurity_027. If your using 4.6.3_HddSecurity_026, resume from S3 will take few mins to wake up.

OS
REF-28565 :Windows 7 x64 Legacy Windows 7 Ultimate x64---- PASS
Status Update: Drivers: win64_10.18.10.3368
Build: 7601
S3/S4: Pass

REF-28562 :Windows 7 x64 UEFI Windows 7 x64 Install---- PASS
Status Update: Drivers: win64_10.18.10.3368
Build: 7601
S3/S4: Pass
REF-32313 :Windows 8 x64 UEFI Windows 8 x64 Install(AHCI Mode)---- PASS
Status Update:
REF-36909 :UEFI Windows 8.1/Blue/Next UEFI Windows 8.1 x64 Install - AHCI Mode---- PASS
Status Update: Drivers:Win64_10.18.10.3993
Build: 9600 x64
S3/S4: Pass
REF-28567 :Windows 7 x64 Windows 7 AHCI Install---- PASS
Status Update:
REF-28566 :Windows 7 x86 Windows 7 Ultimate x86---- PASS
Status Update: Drivers: Win32_10.18.10.3993
Build: 7600 x86
S3/S4: Pass
REF-35821 :Windows 8 x64 RTM Windows8 x64 installation - AHCI Mode---- PASS
Status Update: Drivers:Win64_10.18.10.3993
Build: 9600 x64
S3/S4: Pass
REF-35822 :Windows 8 x86 RTM Windows8 x86 installation - AHCI Mode---- PASS
Status Update: Drivers:Win64_10.18.10.3993
Build: 9600 x86
S3/S4: Pass

S.M.A.R.T.
REF-28785 :Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- PASS
Status Update:
REF-31714 : Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:
REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- PASS
Status Update:

SCT
REF-28581: EFI SCT Execution ---- PASS
Status Update:

Security
REF-28741 :DOS HD Security ---- PASS
Status Update:

Setup
TSE
REF-27846 :Not OS Specific TSE Manual Device Boot ---- PASS
Status Update:
REF-27847 :Not OS Specific TSE SATA Configuration ---- PASS
Status Update:


Function by File Name

AMIBIOS Function Reference

By File Name

The following is a list of the .asm files.
For a list in alphabetical order, see In Alphabetical Order.

  • AhciBus.c
  • AhciBus.h
  • AhciController.c
  • AhciController.h
  • AhciCtrl.c
  • AhciCtrl.h
  • AhciInt13Dxe.c
  • AhciInt13Dxe.dxs
  • AhciInt13Smm.c
  • AhciInt13Smm.dxs
  • AhciInt13Smm.h
  • AhciInt13Smm.mak
  • AhciRecovery.c
  • AhciRecovery.h
  • AhciRecovery.mak
  • AhciRecoveryAccess.c
  • AhciSmm.c
  • AhciSmm.dxs
  • AhciSmm.h
  • AhciSrc.mak
  • AInt13.c
  • AInt13.h


AhciBus.c

Description:
Provides AHCI Block IO protocol

The following functions are used in the file: AhciBus.c.

Function | Description
AhciBusEntryPoint | Installs gAhciBusDriverBinding protocol
AhciBusStart | Installs AHCI Block IO Protocol
AhciBusStop | Uninstall all devices installed in start procedure.
AhciBusSupported | Checks whether EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID is installed on the controller. If 'yes', return SUCCESS else ERROR
AhciDetectDevice | Detects a SATA device connected to given Port and PMPort
AhciInitController | Initializes AHCI Controller
CheckDevicePresence | Check if any device is connected to the port
CheckPMDevicePresence | Checks for the presence device behind a Port Multiplier.
CheckPortImplemented | Check if the port is implemented in the AHCI Controller
ConfigureController | Configure the AHCI Controller
ConfigureDevice | Configure the SATA device
ConfigurePMPort | Configure Port Multiplier
ConfigurePowerUpInStandby | Configure PowerUpInStandby
ConfigureSataPort | Configure Sata Port settings
CreateSataDevicePath | Creates a SATA device devicepath and adds it to SataDevInterface
DetectAndConfigureDevice | Detects and Configures Sata Device
DiskInfoIdentify | Return Identify Data
DiskInfoInquiry | Return ATAPI Inquiry data
DiskInfoSenseData | Return InfoSenseData.
DiskInfoWhichIDE | Returns info about where the device is connected.
DMACapable | Check if DMA is supported
GetEnumOddType | Get the Enum value for ODD type found on profile
GetSataDevInterface |
InitAcousticSupport | Initialize Acoustic functionality
InitializeDeviceSleep | Initialize Device Sleep in the device and controller
InitializeDipm | Initialize Dipm in the device and controller
InitMiscConfig | Initialize misc IDE configurations.
InitSataBlockIO | Initializes SATA Block IO interface
InitSataDiskInfo | Initializes SATA DiskInfo Interface
InstallAhciBusProtocol | Installs BUS Init Protocol on the IDE controller Handle
ReturnMSBset | Returns the MOST significant Bit set.
WaitForMemClear | Wait for memory to be set to the test value.
WaitForMemSet | Wait for memory to be set to the test value.


AhciBusEntryPoint in the AhciBus.c

Function : AhciBusEntryPoint

File: AhciBus.c
Description:
Installs gAhciBusDriverBinding protocol
Input:
IN EFI_HANDLE        ImageHandle,
IN EFI_SYSTEM_TABLE  *SystemTable
Output:
EFI_STATUS
Modified:
Notes:
Here is the control flow of this function:
1. Initialize Ami Lib.
2. Install Driver Binding Protocol
3. Return EFI_SUCCESS.
Referrals:
InitAmiLib InstallMultipleProtocolInterfaces DListInit
Built on 17:22:29 01/07/15


AhciBusStart in the AhciBus.c

Function : AhciBusStart

File: AhciBus.c
Description:
Installs AHCI Block IO Protocol
Input:
IN EFI_DRIVER_BINDING_PROTOCOL    *This,
IN EFI_HANDLE                     Controller,
IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath
Output:
EFI_STATUS
Modified:
Notes:
1. Collect the info about the number of devices to detect and configure.
2. Configure the AHCI controller if it is not done yet.
3. Detect the device connected to the port
4. If the device is a Port Multiplier, detect & configure all the
devices behind it, else configure the device directly connected
to the port.
5. Continue step 3 and 4 for all the ports on the controller.
Referrals:
OpenProtocol CloseProtocol InstallProtocolInterface
AllocatePool InstallAhciBusProtocol

 CheckPortImplemented

 DetectAndConfigureDevice
.
Built on 17:22:29 01/07/15


AhciBusStop in the AhciBus.c

Function : AhciBusStop

File: AhciBus.c
Description:
Uninstall all devices installed in start procedure.
Input:
IN EFI_DRIVER_BINDING_PROTOCOL    *This,
IN EFI_HANDLE                     Controller,
IN UINTN                          NumberOfChildren,
IN EFI_HANDLE                     *ChildHandleBuffer
Output:
EFI_STATUS
Modified:
Notes:
1. Check whether "gEfiAhciBusProtocolGuid" is installed on this
controller. If not exit with error.
2. If "NumberOfChildren" is zero, check wether all child devices
have been stopped. If not exit with error.If all child devices
have been stopped, then close "gEfiAhciBusProtocolGuid" and
"gEfiIdeControllerInitProtocolGuid",uninstall
"gEfiIdeControllerInitProtocolGuid" and then exit with success.
3. If "NumberOfChildren" is non-zero,	close
"gEfiIdeControllerInitProtocolGuid" opened by the child device
in start function.Uninstall all protocols installed on this
child device in start function,free up all resources allocated
in start function. Repeat step 3 for all child devices and
return success at the end.
Referrals:
OpenProtocol CloseProtocol
Built on 17:22:29 01/07/15


AhciBusSupported in the AhciBus.c

Function : AhciBusSupported

File: AhciBus.c
Description:
Checks whether EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID
is installed on the controller. If 'yes', return SUCCESS else ERROR
Input:
IN EFI_DRIVER_BINDING_PROTOCOL    *This,
IN EFI_HANDLE                     Controller,
IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath
Output:
EFI_STATUS
Modified:
Notes:
Here is the control flow of this function:
1. If Devicepath is NULL, check "gEfiIdeControllerInitProtocolGuid"
is installed by IdeController device driver,if yes, it is the
IDE controller that this Bus will manage. Then return Success.
2. If Devicepath is valid, check if it is a SATA device Path. See
if gEfiAhciBusProtocolGuid is installed on the device.
3. make sure the the Controller class code is AHCI
Referrals:
OpenProtocol CloseProtocol
Built on 17:22:29 01/07/15


AhciDetectDevice in the AhciBus.c

Function : AhciDetectDevice

File: AhciBus.c
Description:
Detects a SATA device connected to given Port and PMPort
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN EFI_IDE_CONTROLLER_INIT_PROTOCOL    *IdeControllerInterface,
IN UINT8                               Port,
IN UINT8                               PMPort
Output:
EFI_STATUS
Modified:
Notes:
1. if

 CheckDevicePresence
 fails exit.
2. If Controller supports PM, issue Softreset
3. Check the Device Signature.
Referrals:

 CheckDevicePresence
 CheckPMDevicePresence GenerateSoftReset
Built on 17:22:29 01/07/15


AhciInitController in the AhciBus.c

Function : AhciInitController

File: AhciBus.c
Description:
Initializes AHCI Controller
Input:
IN OUT   AHCI_BUS_PROTOCOL       *AhciBusInterface
Output:
EFI_STATUS
Notes:
1. Update internal Data area about the AHCI controller Capabilities.
2. Allocate memory for FIS and CommandList
3. Enable AHCI mode
3. Disable all the ports


CheckDevicePresence in the AhciBus.c

Function : CheckDevicePresence

File: AhciBus.c
Description:
Check if any device is connected to the port
Input:
IN SATA_DEVICE_INTERFACE                *SataDevInterface,
IN EFI_IDE_CONTROLLER_INIT_PROTOCOL     *IdeControllerInterface,
IN UINT8                                Port,
IN UINT8                                PMPort
Output:
EFI_STATUS
Modified:
Notes:
1. If Staggered spin-up is supported, power-up the device.
2. Call

 CheckValidDevice
 if success exit. Else generate Softreset.
Referrals:

 HandlePortComReset

 CheckValidDevice

 GeneratePortReset


CheckPMDevicePresence in the AhciBus.c

Function : CheckPMDevicePresence

File: AhciBus.c
Description:
Checks for the presence device behind a Port Multiplier.
Input:
SATA_DEVICE_INTERFACE               *SataDevInterface,
EFI_IDE_CONTROLLER_INIT_PROTOCOL    *IdeControllerInterface,
UINT8                               Port,
UINT8                               PMPort
Output:
EFI_STATUS
Modified:
Notes:
1. Check whether communication is established?
2. If yes exit else issues Port Reset
Referrals:

 ReadWritePMPort

 GeneratePortReset


CheckPortImplemented in the AhciBus.c

Function : CheckPortImplemented

File: AhciBus.c
Description:
Check if the port is implemented in the AHCI Controller
Input:
IN AHCI_BUS_PROTOCOL        *AhciBusInterface,
IN UINT8                    Port
Output:
EFI_STATUS
Notes:
1. Check Port Implemented register whether the PORT is
implemented in the Controller or not.


ConfigureController in the AhciBus.c

Function : ConfigureController

File: AhciBus.c
Description:
Configure the AHCI Controller
Input:
IN SATA_DEVICE_INTERFACE   *SataDevInterface
IN EFI_ATA_COLLECTIVE_MODE *SupportedModes -
                   Modes collection supported by the device
Output:
EFI_STATUS
Notes:
1. Issue IdeControllerInterface->SetTiming for setting  uDMA
and PIO mode timings in the controller.
2. Update the Read/Write command for the device
3. Update the Device name used in Component Name protocol


ConfigureDevice in the AhciBus.c

Function : ConfigureDevice

File: AhciBus.c
Description:
Configure the SATA device
Input:
IN SATA_DEVICE_INTERFACE       *SataDevInterface
IN OUT EFI_ATA_COLLECTIVE_MODE **SupportedModes -
                    Modes collection supported by the device
Output:
EFI_STATUS
Modified:
Notes:
1. Get the Identify data command.
2. From the IdeControllerInit protocol, get the DMA & PIO supported
3. Issue Set feature command to set PIO, DMA and multiple mode
4. Initialize Acoustic, SMART, Power Management features.
Referrals:

 GetIdentifyData
,

 GeneratePortReset
, ExecuteNonDataCommand, InitAcousticSupport


ConfigurePMPort in the AhciBus.c

Function : ConfigurePMPort

File: AhciBus.c
Description:
Configure Port Multiplier
Input:
IN SATA_DEVICE_INTERFACE   *SataDevInterface,
Output:
Modified:
Notes:
1. Read the number of Ports implemented in the Port Multiplier
2. Update PM attached bit in the AHCI controller.
Referrals:

 ReadWritePMPort


ConfigurePowerUpInStandby in the AhciBus.c

Function : ConfigurePowerUpInStandby

File: AhciBus.c
Description:
Configure PowerUpInStandby
Input:
IN SATA_DEVICE_INTERFACE	*SataDevInterface
Output:
EFI_STATUS
Modified:
Notes:
1. Check if the device support PowerUp In Standby.
2. Check the desired state Vs the current state.
3. If both are equal nothing to do, exit else program the desired level
Referrals:
ExecuteNonDataCommand


ConfigureSataPort in the AhciBus.c

Function : ConfigureSataPort

File: AhciBus.c
Description:
Configure Sata Port settings
Input:
IN SATA_DEVICE_INTERFACE   *SataDevInterface,
Output:
EFI_SUCCESS


CreateSataDevicePath in the AhciBus.c

Function : CreateSataDevicePath

File: AhciBus.c
Description:
Creates a SATA device devicepath and adds it to SataDevInterface
Input:
IN EFI_DRIVER_BINDING_PROTOCOL    *This,
IN EFI_HANDLE                     Controller,
IN SATA_DEVICE_INTERFACE          *SataDevInterface
IN OUT EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath
Output:
EFI_STATUS
Modified:
Notes:
Here is the control flow of this function:
1. If Remaining Devicepath is not NULL, we have already verified that it is a
valid Atapi device path in IdeBusStart. So nothing to do. Just exit.
2. Build a Atapi devicepath and a End devce path.
3. Get the Devicepath for the IDE controller.
4. Append Atapi devicepath to  IDE controller devicepath.
Referrals:
AllocatePool, OpenProtocol, IdeBusStart


DetectAndConfigureDevice in the AhciBus.c

Function : DetectAndConfigureDevice

File: AhciBus.c
Description:
Detects and Configures Sata Device
Input:
IN EFI_DRIVER_BINDING_PROTOCOL    *This,
IN EFI_HANDLE                     Controller
IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath,
AHCI_BUS_PROTOCOL                 *AhciBusInterface,
EFI_IDE_CONTROLLER_INIT_PROTOCOL  *IdeControllerInterface,
UINT8                             Port,
UINT8                             PMPort
Output:
EFI_STATUS
Modified:
Notes:
1. Detect whether device is connected to the port. If no device exit.
2. Install SataDevInterface. If PMPort, Configure PMPort and Exit.
3. Configure the SATA device and the controller.
4. Install DevicePath, BlockIO and DiskInfo protocol.
Referrals:

 AhciDetectDevice
 ConfigureDevice InitSataBlockIO InitSataDiskInfo


DiskInfoIdentify in the AhciBus.c

Function : DiskInfoIdentify

File: AhciBus.c
Description:
Return Identify Data
Input:
EFI_DISK_INFO_PROTOCOL          *This,
IN OUT VOID                     *IdentifyData,
IN OUT UINT32                   *IdentifyDataSize
Output:
EFI_STATUS
Modified:
Notes:
1. Return the Identify command data.
Referrals:
InitSataDiskInfo


DiskInfoInquiry in the AhciBus.c

Function : DiskInfoInquiry

File: AhciBus.c
Description:
Return ATAPI Inquiry data
Input:
IN EFI_DISK_INFO_PROTOCOL   *This,
IN OUT VOID                 *InquiryData,
IN OUT UINT32               *InquiryDataSize
Output:
EFI_STATUS
Modified:
Notes:
1. Check for Atapi Device. If not exit
2. COpy the Inquiry Data from AtapiDevice->InquiryData to the input pointer.
Referrals:
InitSataDiskInfo


DiskInfoSenseData in the AhciBus.c

Function : DiskInfoSenseData

File: AhciBus.c
Description:
Return InfoSenseData.
Input:
EFI_DISK_INFO_PROTOCOL      *This,
VOID                        *SenseData,
UINT32                      *SenseDataSize,
UINT8                       *SenseDataNumber
Output:
EFI_STATUS
Modified:
Notes:
1. Return the Sense data for the Atapi device.
Referrals:
InitSataDiskInfo


DiskInfoWhichIDE in the AhciBus.c

Function : DiskInfoWhichIDE

File: AhciBus.c
Description:
Returns info about where the device is connected.
Input:
IN EFI_DISK_INFO_PROTOCOL   *This,
OUT UINT32                  *IdeChannel,
OUT UINT32                  *IdeDevice
Output:
EFI_STATUS
Modified:
Notes:
1. Return Port and PMPort
Referrals:
InitSataDiskInfo


DMACapable in the AhciBus.c

Function : DMACapable

File: AhciBus.c
Description:
Check if DMA is supported
Input:
IN SATA_DEVICE_INTERFACE    *SataDevInterface
Output:
TRUE : DMA Capable
Modified:
Notes:
1. Check the Identify Data to check if device supports DMA
Referrals:


GetEnumOddType in the AhciBus.c

Function : GetEnumOddType

File: AhciBus.c
Description:
Get the Enum value for ODD type found on profile
Input:

UINT16      Oddtype
Output:
ODD_TYPE    EnumValue
Modified:
Notes:

Referrals:


GetSataDevInterface in the AhciBus.c

Function : GetSataDevInterface

File: AhciBus.c
Description:
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN UINT8                               Port,
IN UINT8                               PMPort,
Output:
SATA_DEVICE_INTERFACE*
Modified:
Notes:
1. Return the Pointer to the SATA_DEVICE_INTERFACE for the given
Port and PM Port
Referrals:


InitAcousticSupport in the AhciBus.c

Function : InitAcousticSupport

File: AhciBus.c
Description:
Initialize Acoustic functionality
Input:
IN SATA_DEVICE_INTERFACE	*SataDevInterface
Output:
EFI_STATUS
Modified:
Notes:
1. Check if the device support Acoustic management.
2. Check the desired state Vs the current state.
3. If both are equal nothing to do, exit else program the desired level
Referrals:
ExecuteNonDataCommand


InitializeDeviceSleep in the AhciBus.c

Function : InitializeDeviceSleep

File: AhciBus.c
Description:
Initialize Device Sleep in the device and controller
Input:
IN SATA_DEVICE_INTERFACE   *SataDevInterface
Output:
VOID
Notes:


InitializeDipm in the AhciBus.c

Function : InitializeDipm

File: AhciBus.c
Description:
Initialize Dipm in the device and controller
Input:
IN SATA_DEVICE_INTERFACE   *SataDevInterface
Output:
VOID
Notes:


InitMiscConfig in the AhciBus.c

Function : InitMiscConfig

File: AhciBus.c
Description:
Initialize misc IDE configurations.
Input:
IN SATA_DEVICE_INTERFACE    *SataDevInterface
Output:
None


InitSataBlockIO in the AhciBus.c

Function : InitSataBlockIO

File: AhciBus.c
Description:
Initializes SATA Block IO interface
Input:
IN SATA_DEVICE_INTERFACE            *SataDevInterface
Output:
EFI_STATUS
Modified:
Notes:
Here is the control flow of this function:
1. Initialize EFI_BLOCK_IO_PROTOCOL Protocol.
2. In case of Removable devices, detect Media presence.
Referrals:
AllocatePool, OpenProtocol,

 DetectAtapiMedia
, AtapiInquiryData


InitSataDiskInfo in the AhciBus.c

Function : InitSataDiskInfo

File: AhciBus.c
Description:
Initializes SATA DiskInfo Interface
Input:
IN SATA_DEVICE_INTERFACE            *SataDevInterface
Output:
EFI_STATUS
Modified:
Notes:
Referrals:
AllocatePool


InstallAhciBusProtocol in the AhciBus.c

Function : InstallAhciBusProtocol

File: AhciBus.c
Description:
Installs BUS Init Protocol on the IDE controller Handle
Input:
IN EFI_HANDLE                   Controller,
IDE_BUS_INIT_PROTOCOL           *IdeBusInitInterface,
IDE_CONTROLLER_PROTOCOL         *IdeControllerInterface,
EFI_PCI_IO_PROTOCOL             *PciIO
Output:
EFI_STATUS
Modified:
Notes:
1. Call

 AhciInitController

2. Install gEfiAhciBusProtocolGuid protocol
Referrals:
AllocatePool, InstallProtocolInterface,

 AhciInitController


ReturnMSBset in the AhciBus.c

Function : ReturnMSBset

File: AhciBus.c
Description:
Returns the MOST significant Bit set.
Input:
IN UINT32       Data
Output:
UINT8
Modified:
Notes:

Referrals:


WaitForMemClear in the AhciBus.c

Function : WaitForMemClear

File: AhciBus.c
Description:
Wait for memory to be set to the test value.
Input:
MemTestAddr      - The memory address to test
MaskValue        - The mask value of memory
WaitTimeInMs     - The time out value for wait memory set
Output:
EFI_SUCCESS      - HBA reset successfully.
EFI_DEVICE_ERROR - HBA failed to complete hardware reset.
Modified:

Notes:

Referrals:


WaitForMemSet in the AhciBus.c

Function : WaitForMemSet

File: AhciBus.c
Description:
Wait for memory to be set to the test value.
Input:
MemTestAddr      - The memory address to test
MaskValue        - The mask value of memory
TestValue        - The test value of memory
WaitTimeInMs     - The time out value for wait memory set
Output:
EFI_SUCCESS      - HBA reset successfully.
EFI_DEVICE_ERROR - HBA failed to complete hardware reset.
Modified:
Notes:

Referrals:


AhciBus.h

Description:


AhciController.c

Description:
Provides Access to AHCI Controller

The following functions are used in the file: AhciController.c.

Function | Description
BuildAtapiCMD |
BuildCommandFIS | Build Command FIS
BuildCommandList | Builds command list
BuildPRDT | Build PRDT table
Check48BitCommand | Checks if the command is for 48-bit LBA
CheckValidDevice | Check for valid ATA/ATAPI/PMPORT signature
DetectAtapiMedia | Detects whether a Media is present in the ATAPI Removable device or not.
ExecuteDmaDataCommand |
ExecuteNonDataCommand | Issue a Non-Data command to the SATA Device
ExecutePacketCommand | Execute a Atapi Packet command
ExecutePioDataCommand | Ececute PIO Data In/Out command
GeneratePortReset | Issue a Port Reset
GenerateSoftReset | Generate Soft Reset
GetIdentifyData | Reaturn Identify data from SATA device
HandleAtapiError | Check for ATAPI Errors
HandlePortComReset | Check if COM Reset is successful or not
HostReset |
ReadSCRRegister |
ReadWritePMPort | Read/Write routine to PM ports
ReadytoAcceptCmd | Check if the device is ready to accept cmd.
SataAtaBlkReadWrite | Read/Write to/from Sata ATA Device
SataAtapiBlkRead | Read from the Sata ATAPI Device
SataAtapiBlkReadWrite | Read/Write to/from Sata ATAPI Device
SataAtapiBlkWrite | Write to Sata ATAPI Device
SataAtapiInquiryData | Return ATAPI Inquiry data
SataBlkFlush | Flush the cache
SataBlkRead | Read from the Sata ATA Device
SataBlkWrite | Write to Sata ATA Device
SataCheckOddType | Return ODD type
SataGetOddLoadingType | Return ODD Loading type information
SataPioDataOut | Issues Read/Write Command with SubCommand feature and Reads/Writes data to the ATA device.
SataReadWriteBusMaster | Issues Read/Write Command and Read/Write the data from/to the ATA device using BusMaster
SataReadWritePio | Issues Read/Write Command and Read/Write the data from/to the ATA device
SataReset | Reset ATA device
StartController |
StopController | Stop FIS and CR
TestUnitReady | Issues Start/Stop unit Command
WaitforCommandComplete | Wait till cmd completes
WaitforPMMemSet | Wait for memory to be set to the test value.
WriteSCRRegister | Write to SCONTROL/Serror/SStatus register


BuildAtapiCMD in the AhciController.c

Function : BuildAtapiCMD

File: AhciController.c
Description:
Input:
IN SATA_DEVICE_INTERFACE                *SataDevInterface,
IN COMMAND_STRUCTURE                    CommandStructure
IN AHCI_COMMAND_LIST                    *CommandList,
IN AHCI_COMMAND_TABLE                   *Commandtable
Output:
EFI_STATUS
Modified:
Notes:
1. Copy Packet data to command table
2. Set Atapi bit in Command List
Referrals:


BuildCommandFIS in the AhciController.c

Function : BuildCommandFIS

File: AhciController.c
Description:
Build Command FIS
Input:
IN SATA_DEVICE_INTERFACE                *SataDevInterface,
IN COMMAND_STRUCTURE                    CommandStructure,
IN AHCI_COMMAND_LIST                    *CommandList,
IN AHCI_COMMAND_TABLE                   *Commandtable
Output:
EFI_STATUS
Modified:
Notes:
1. Update Command FIS data area.
2. Update the Command FIS lenght in Command List table
Referrals:


BuildCommandList in the AhciController.c

Function : BuildCommandList

File: AhciController.c
Description:
Builds command list
Input:
IN SATA_DEVICE_INTERFACE            *SataDevInterface,
IN AHCI_COMMAND_LIST                *CommandList,
IN UINT32                           CommandTableBaseAddr
Output:
EFI_STATUS
Modified:
Notes:
1. Update CommandList bits
2. Not all fields like Ahci_Cmd_A are updated.
3. Port number is set to 0xF (Control port) if PM Port number is 0xFF.
Referrals:


BuildPRDT in the AhciController.c

Function : BuildPRDT

File: AhciController.c
Description:
Build PRDT table
Input:
IN SATA_DEVICE_INTERFACE                *SataDevInterface,
IN COMMAND_STRUCTURE                    CommandStructure
IN AHCI_COMMAND_LIST                    *CommandList,
IN AHCI_COMMAND_TABLE                   *Commandtable
Output:
EFI_STATUS
Modified:
Notes:
1. Build as many PRDT table entries based on ByteCount.
2. Set the I flag for the lasr PRDT table.
3. Update PRDT table lenght in CommandList
Referrals:


Check48BitCommand in the AhciController.c

Function : Check48BitCommand

File: AhciController.c
Description:
Checks if the command is for 48-bit LBA
Input:
IN UINT8            Command
Output:
TRUE/FLASE
Modified:
Notes:

Referrals:


CheckValidDevice in the AhciController.c

Function : CheckValidDevice

File: AhciController.c
Description:
Check for valid ATA/ATAPI/PMPORT signature
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN UINT8                               Port,
IN UINT8                               PMPort
Output:
EFI_STATUS
Modified:
Notes:
1. Check if Link is active
2. Enable FIS and Command list run bits
3. Check for valid signature
Referrals:


DetectAtapiMedia in the AhciController.c

Function : DetectAtapiMedia

File: AhciController.c
Description:
Detects whether a Media is present in the ATAPI Removable device or not.
Input:
IN SATA_DEVICE_INTERFACE           *SataDevInterface,
Output:
EFI_STATUS
Modified:
Notes:
1. Issue Read Capacity command for CDROM or Read Format command for other ATAPI devices.
2. If step 1  is successfull, update last LBA, Block Size, Read/Write capable, Media ID
Referrals:
TestUnitReady,

 ExecutePacketCommand


ExecuteDmaDataCommand in the AhciController.c

Function : ExecuteDmaDataCommand

File: AhciController.c
Description:
Input:
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN COMMAND_STRUCTURE                   *CommandStructure
IN BOOLEAN                              READWRITE
Output:
EFI_STATUS
Modified:
Notes:
1. Stop the Controller
2. Check if the device is ready to accept a Command.
3. Build Command list
4. Start the Controller.
5. Wait till command completes. Check for errors.
Referrals:

 StopController
,

 ReadytoAcceptCmd
,

 BuildCommandList
,

 BuildCommandFIS
,

 BuildAtapiCMD

 BuildPRDT
,

 StartController
,

 WaitforCommandComplete


ExecuteNonDataCommand in the AhciController.c

Function : ExecuteNonDataCommand

File: AhciController.c
Description:
Issue a  Non-Data command to the SATA Device
Input:
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN COMMAND_STRUCTURE                   CommandStructure
Output:
EFI_STATUS
Modified:
Notes:
1. Stop the Controller
2. Check if the device is ready to accept a Command.
3. Build Command list
4. Start the Controller.
5. Wait till command completes. Check for errors.
Referrals:

 StopController
,

 ReadytoAcceptCmd
,

 StartController
,

 WaitforCommandComplete


ExecutePacketCommand in the AhciController.c

Function : ExecutePacketCommand

File: AhciController.c
Description:
Execute a Atapi Packet command
Input:
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN COMMAND_STRUCTURE                   *CommandStructure
IN BOOLEAN                              READWRITE
Output:
EFI_STATUS
Modified:
Notes:
1. Stop the Controller
2. Check if the device is ready to accept a Command.
3. Build Command list
4. Start the Controller.
5. Wait till command completes. Check for errors.
Referrals:

 StopController
,

 ReadytoAcceptCmd
,

 BuildCommandList
,

 BuildCommandFIS
,

 BuildAtapiCMD

 BuildPRDT
,

 StartController
,

 WaitforCommandComplete


ExecutePioDataCommand in the AhciController.c

Function : ExecutePioDataCommand

File: AhciController.c
Description:
Ececute PIO Data In/Out command
Input:
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN OUT COMMAND_STRUCTURE               *CommandStructure
IN BOOLEAN                             READWRITE
Output:
EFI_STATUS, CommandStructure->ByteCount
Modified:
Notes:
1. Stop the Controller
2. Check if the device is ready to accept a Command.
3. Build Command list
4. Start the Controller.
5. Wait till command completes. Check for errors.
Referrals:

 StopController
,

 ReadytoAcceptCmd
,

 BuildCommandList
,

 BuildCommandFIS
,

 BuildAtapiCMD

 BuildPRDT
,

 StartController
,

 WaitforCommandComplete


GeneratePortReset in the AhciController.c

Function : GeneratePortReset

File: AhciController.c
Description:
Issue a Port Reset
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN UINT8                               CurrentPort,
IN UINT8                               Speed,
IN UINT8                               PowerManagement
Output:
EFI_STATUS
Modified:
Notes:
1. Issue port reset by setting DET bit in SControl register
2. Call

 HandlePortComReset
 to check the status of the reset.
Referrals:

 ReadWritePMPort
,

 HandlePortComReset


GenerateSoftReset in the AhciController.c

Function : GenerateSoftReset

File: AhciController.c
Description:
Generate Soft Reset
Input:
IN SATA_DEVICE_INTERFACE                *SataDevInterface,
In UINT8                                PMPort
Output:
EFI_STATUS
Modified:
Notes:
1. Issue a Control register update, H2D register FIS with reset bit set.
2. Wait for 100usec
3. Issue a Control register update, H2D register FIS with reset bit reset.
Referrals:

 StopController
,

 ReadytoAcceptCmd
,

 BuildCommandList
,

 BuildCommandFIS
,

 StartController


GetIdentifyData in the AhciController.c

Function : GetIdentifyData

File: AhciController.c
Description:
Reaturn Identify data from SATA device
Input:
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
Output:
gIdentifyDataBuffer
EFI_STATUS
Modified:
Notes:
1. Build CommandStructure.
2. Issue

 ExecutePioDataCommand
Referrals:


HandleAtapiError in the AhciController.c

Function : HandleAtapiError

File: AhciController.c
Description:
Check for ATAPI Errors
Input:
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
Output:
EFI_STATUS
Modified:
Notes:
1. Execute ATAPI Request Sense command.
2. Check for Device getting ready, Media Change, No Media and other errors. Update AtapiDevice->Atapi_Status
Referrals:

 ExecutePacketCommand


HandlePortComReset in the AhciController.c

Function : HandlePortComReset

File: AhciController.c
Description:
Check if COM Reset is successful or not
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN UINT8                               Port,
IN UINT8                               PMPort,
Output:
EFI_STATUS
Modified:
Notes:
1. Check if Link is active. If not return error.
2. If Link is present, wait for PhyRdy Change bit to be set.
3. Clear SError register
4. Wait for D2H register FIS
5. Check the Status register for errors.
6. If COMRESET is success wait for sometime if the device is ATAPI or GEN1
Referrals:

 ReadSCRRegister
,

 WriteSCRRegister


HostReset in the AhciController.c

Function : HostReset

File: AhciController.c
Description:
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
Output:
Modified:

Notes:

Referrals:


ReadSCRRegister in the AhciController.c

Function : ReadSCRRegister

File: AhciController.c
Description:
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN UINT8                               Port,
IN UINT8                               PMPort,
IN UINT8                               Register (0 : SStatus 1: SError 2: SControl)
Output:
UINT32
Modified:
Notes:
1. Check if the device is connected directly to the port
2. if yes, read to the AHCI Controller else write to the Port Multiplier register.
Referrals:


ReadWritePMPort in the AhciController.c

Function : ReadWritePMPort

File: AhciController.c
Description:
Read/Write routine to PM ports
Input:
IN SATA_DEVICE_INTERFACE       *SataDevInterface,
IN UINT8                        Port,
IN UINT8                        RegNum,
IN OUT UINT32                   *Data
IN BOOLEAN                      READWRITE       // TRUE for Write
Output:
EFI_STATUS
Modified:
Notes:
1. Update Command Structure for READ/Write Port Multiplier command
2. Issue command
3. Check for errors.
4. Read the out data in case of READ.
Referrals:

 StopController
,

 ReadytoAcceptCmd
,

 BuildCommandList
,

 BuildCommandFIS
,

 BuildAtapiCMD

 BuildPRDT
,

 StartController
,

 WaitforCommandComplete


ReadytoAcceptCmd in the AhciController.c

Function : ReadytoAcceptCmd

File: AhciController.c
Description:
Check if the device is ready to accept cmd.
Input:
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
Output:
EFI_STATUS
Modified:
Notes:
1. Check the device is ready to accept the command. BSY and DRQ should be de-asserted.
2. If set, generate Port reset
3. In case Port Multiplier is connected to the port, enable all the ports of the Port Multiplier.
Referrals:

 GeneratePortReset
,

 ReadWritePMPort


SataAtaBlkReadWrite in the AhciController.c

Function : SataAtaBlkReadWrite

File: AhciController.c
Description:
Read/Write to/from Sata ATA Device
Input:
IN EFI_BLOCK_IO_PROTOCOL        *This,
IN UINT32                       MediaId,
IN EFI_LBA                      LBA,
IN UINTN                        BufferSize,
OUT VOID                        *Buffer,
BOOLEAN                         READWRITE
Output:
EFI_STATUS
Modified:
Notes:
1. Check for validity of the input
2. Issue DMA or PIO Read/Write call.
Referrals:
SataReadWriteBusMaster, SataReadWritePio


SataAtapiBlkRead in the AhciController.c

Function : SataAtapiBlkRead

File: AhciController.c
Description:
Read from the Sata ATAPI Device
Input:
IN EFI_BLOCK_IO_PROTOCOL        *This,
IN UINT32                       MediaId,
IN EFI_LBA                      LBA,
IN UINTN                        BufferSize,
OUT VOID                        *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:

SataAtapiBlkReadWrite


SataAtapiBlkReadWrite in the AhciController.c

Function : SataAtapiBlkReadWrite

File: AhciController.c
Description:
Read/Write to/from Sata ATAPI Device
Input:
IN EFI_BLOCK_IO_PROTOCOL        *This,
IN UINT32                       MediaId,
IN EFI_LBA                      LBA,
IN UINTN                        BufferSize,
OUT VOID                        *Buffer
Output:
EFI_STATUS
Modified:
Notes:
1. Check for validity of Inputs
2. Check whether Media is present or not
3. Issue ATAPi Packet command
Referrals:


SataAtapiBlkWrite in the AhciController.c

Function : SataAtapiBlkWrite

File: AhciController.c
Description:
Write to Sata ATAPI Device
Input:
IN EFI_BLOCK_IO_PROTOCOL        *This,
IN UINT32                       MediaId,
IN EFI_LBA                      LBA,
IN UINTN                        BufferSize,
OUT VOID                        *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:

SataAtapiBlkReadWrite


SataAtapiInquiryData in the AhciController.c

Function : SataAtapiInquiryData

File: AhciController.c
Description:
Return ATAPI Inquiry data
Input:
IN SATA_DEVICE_INTERFACE           *SataDevInterface,
OUT UINT8                          *InquiryData,
IN OUT UINT16                      *InquiryDataSize
Output:
EFI_STATUS
Modified:
Notes:
1. Update CommandStructure
2. Issue

 ExecutePioDataCommand
Referrals:

 ExecutePioDataCommand


SataBlkFlush in the AhciController.c

Function : SataBlkFlush

File: AhciController.c
Description:
Flush the cache
Input:
IN EFI_BLOCK_IO_PROTOCOL            *This,
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


SataBlkRead in the AhciController.c

Function : SataBlkRead

File: AhciController.c
Description:
Read from the Sata ATA Device
Input:
IN EFI_BLOCK_IO_PROTOCOL        *This,
IN UINT32                       MediaId,
IN EFI_LBA                      LBA,
IN UINTN                        BufferSize,
OUT VOID                        *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:

SataAtaBlkReadWrite


SataBlkWrite in the AhciController.c

Function : SataBlkWrite

File: AhciController.c
Description:
Write to Sata ATA Device
Input:
IN EFI_BLOCK_IO_PROTOCOL        *This,
IN UINT32                       MediaId,
IN EFI_LBA                      LBA,
IN UINTN                        BufferSize,
OUT VOID                        *Buffer
Output:
EFI_STATUS
Modified:
Notes:

Referrals:

SataAtaBlkReadWrite


SataCheckOddType in the AhciController.c

Function : SataCheckOddType

File: AhciController.c
Description:
Return ODD type
Input:
IN SATA_DEVICE_INTERFACE           *SataDevInterface,
Output:
EFI_STATUS
Modified:
Notes:

Referrals:

 ExecutePioDataCommand


SataGetOddLoadingType in the AhciController.c

Function : SataGetOddLoadingType

File: AhciController.c
Description:
Return ODD Loading type information
Input:
IN SATA_DEVICE_INTERFACE           *SataDevInterface,
Output:
EFI_STATUS
Modified:
Notes:

Referrals:

 ExecutePioDataCommand


SataPioDataOut in the AhciController.c

Function : SataPioDataOut

File: AhciController.c
Description:
Issues Read/Write Command with SubCommand feature
and Reads/Writes data to the ATA device.
Input:
IN SATA_DEVICE_INTERFACE        *SataDevInterface,
IN OUT VOID                     *Buffer,
IN UINTN                        ByteCount,
IN UINT8                        Features,
IN UINT16                       LBALow,
IN UINT8                        LBALowExp,
IN UINT8                        LBAMid,
IN UINT8                        LBAMidExp,
IN UINT8                        LBAHigh,
IN UINT8                        LBAHighExp,
IN UINT8                        ReadWriteCommand
IN BOOLEAN                      READWRITE
Output:
EFI_STATUS
Modified:
Notes:
1. Get the Max. number of sectors that can be transferred in one Read/Write PIO command
2. Update the Command Structure
3. Issue

 ExecutePioDataCommand
.
Referrals:

 ExecutePioDataCommand


SataReadWriteBusMaster in the AhciController.c

Function : SataReadWriteBusMaster

File: AhciController.c
Description:
Issues Read/Write Command and Read/Write the data from/to the ATA device
using BusMaster
Input:
SATA_DEVICE_INTERFACE           *SataDevInterface,
IN OUT VOID                     *Buffer,
IN UINTN                        ByteCount,
IN UINT64                       LBA,
IN UINT8                        ReadWriteCommand,
IN BOOLEAN                      READWRITE
Output:
EFI_STATUS
Modified:
Notes:
1. Get the Max. number of sectors that can be Read/written in one Read/Write Bus master command
2. Update the Command Structure
3. Issue

 ExecutePioDataCommand
.
4. If all the bytes are read exit else goto step 2
Referrals:
ExecuteDmaDataCommand


SataReadWritePio in the AhciController.c

Function : SataReadWritePio

File: AhciController.c
Description:
Issues Read/Write Command and Read/Write the data from/to the ATA device
Input:
IN IDE_BUS_PROTOCOL             *IdeBusInterface,
IN OUT VOID                     *Buffer,
UINTN                           ByteCount,
UINT64                          LBA
IN UINT8                        ReadWriteCommand,
IN BOOLEAN                      ReadWrite        Read/Write = 0/1
Output:
*Buffer, EFI_STATUS
Modified:
Notes:
1. Get the Max. number of sectors that can be Read/written in one Read/Write PIO command
2. Update the Command Structure
3. Issue

 ExecutePioDataCommand
.
4. If all the bytes are read exit else goto step 2
Referrals:

 ExecutePioDataCommand


SataReset in the AhciController.c

Function : SataReset

File: AhciController.c
Description:
Reset ATA device
Input:
IN EFI_BLOCK_IO_PROTOCOL        *This,
IN BOOLEAN                      ExtendedVerification
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


StartController in the AhciController.c

Function : StartController

File: AhciController.c
Description:
Input:
IN AHCI_BUS_PROTOCOL                  *AhciBusInterface,
IN SATA_DEVICE_INTERFACE              *SataDevInterface,
IN UINT32                             CIBitMask
Output:
EFI_STATUS
Modified:
Notes:
1. Clear Status register
2. Enable FIS and CR running bit
3. Enable Start bit
4. Update CI bit mask
Referrals:


StopController in the AhciController.c

Function : StopController

File: AhciController.c
Description:
Stop FIS and CR
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN SATA_DEVICE_INTERFACE               *SataDevInterface
Output:
EFI_STATUS
Modified:
Notes:
1. clear ST bit and wait till CR bits gets reset
2. if not generate Port reset
3. Clear FIS running bit.
4. Clear status register
Referrals:

 GeneratePortReset


TestUnitReady in the AhciController.c

Function : TestUnitReady

File: AhciController.c
Description:
Issues Start/Stop unit Command
Input:
IN SATA_DEVICE_INTERFACE           *SataDevInterface
Output:
EFI_STATUS          EFI_SUCCESS           : If Media is accessible
           EFI_NO_MEDIA
           EFI_MEDIA_CHANGED
           EFI_DEVICE_ERROR
Modified:
Notes:
1. Update CommandStructure for ATAPI_TEST_UNIT_READY command
2. Issue

 ExecutePacketCommand

3. Check if the device is ready to accept command, whether Media is present or not.
Referrals:

 ExecutePacketCommand


WaitforCommandComplete in the AhciController.c

Function : WaitforCommandComplete

File: AhciController.c
Description:
Wait till cmd completes
Input:
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN COMMAND_TYPE                        CommandType,
IN UINTN                               TimeOut
Output:
EFI_STATUS
Modified:
Notes:
1. Check for SError bits. If set return error.
2. For PIO IN/Out and Packet IN/OUT command wait till PIO Setup FIS is received
3. If D2H register FIS is received, exit the loop.
4. Check for SError and TFD bits.
Referrals:


WaitforPMMemSet in the AhciController.c

Function : WaitforPMMemSet

File: AhciController.c
Description:
Wait for memory to be set to the test value.
Input:
SATA_DEVICE_INTERFACE   *SataDevInterface,
PMPort
Register
MaskValue        - The mask value of memory
TestValue        - The test value of memory
WaitTimeInMs     - The time out value for wait memory set
Output:
EFI_SUCCESS      - HBA reset successfully.
EFI_DEVICE_ERROR - HBA failed to complete hardware reset.
Modified:
Notes:

Referrals:


WriteSCRRegister in the AhciController.c

Function : WriteSCRRegister

File: AhciController.c
Description:
Write to SCONTROL/Serror/SStatus register
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN UINT8                               Port,
IN UINT8                               PMPort,
IN UINT8                               Register, (0 : SStatus 1: SError 2: SControl)
IN UINT32                              Data32
Output:
EFI_STATUS
Modified:
Notes:
1. Check if the device is connected directly to the port
2. if yes, write to the AHCI Controller else write to the Port Multiplier register
Referrals:


AhciController.h

Description:


AhciCtrl.c

Description:
Provides the Access to AHCI Controller

The following functions are used in the file: AhciCtrl.c.

Function | Description
Ahci_AtapiReadSectors | Issues Read command to ATAPI device.
Ahci_ReadSectors | Issues Read Command to the ATA device
AhciDetectDevice | Detects a SATA device connected to given Port and PMPort
AhciInitController | Initializes AHCI Controller
AhciTestUnitReady | Issues Start/Stop unit Command
BuildAtapiCMD | Build ATAPI CMD.
BuildCommandFIS | Build Command FIS
BuildCommandList | Builds command list
BuildPRDT | Build PRDT table
CheckDevicePresence | Check if any device is connected to the port
CheckPortImplemented | Check if the port is implemented in the AHCI Controller
CheckValidDevice | Check for valid ATA/ATAPI/PMPORT signature
CopyMemSmm | Copy Length bytes from Source to Destination.
DetectAndConfigureDevice | Detects and Configures Sata Device
DetectAtapiMedia | Detects whether a Media is present in the ATAPI Removable device or not.
ExecutePacketCommand | Execute a Atapi Packet command
ExecutePioDataCommand | Execute PIO Data In/Out command
FindFreeDevEntry | Find the Free Entry on DeviceInfo Structure
GeneratePortReset | Issue a Port Reset
GetIdentifyData | Return Identify data from SATA device
HandleAtapiError | Check for ATAPI Errors
HandlePortComReset | Check if COM Reset is successful or not
ReadSCRRegister | Read from SCONTROL/Serror/SStatus register.
ReadytoAcceptCmd | Check if the device is ready to accept cmd.
StartController | Starts SATA controller.
StopController | Stop FIS and CR
WaitforCommandComplete | Wait till cmd completes
WaitForMemClear | Wait for memory to be set to the test value.
WaitForMemSet | Wait for memory to be set to the test value.
WriteSCRRegister | Write to SCONTROL/Serror/SStatus register
ZeroMem | Clear the Memory Input : IN VOID *Buffer IN UINTN Size Output : None


Ahci_AtapiReadSectors in the AhciCtrl.c

Function : Ahci_AtapiReadSectors

File: AhciCtrl.c
Description:
Issues Read command to ATAPI device.
Input:
IN  AHCI_RECOVERY_BLK_IO_DEV     *AhciRecInterface
IN  OUT VOID                     *Buffer
IN  UINTN                        BufferSize
IN  UINT64                       LBA
IN  UINT32                       BlockSize
Output:
OUT     VOID                        *Buffer
EFI_STATUS
Modified:
Notes:
1. Check for validity of Inputs
2. Check whether Media is present or not
3. Issue ATAPi Packet command
Referrals:
Built on 17:22:29 01/07/15


Ahci_ReadSectors in the AhciCtrl.c

Function : Ahci_ReadSectors

File: AhciCtrl.c
Description:
Issues Read Command to the ATA device
Input:
IN      AHCI_RECOVERY_BLK_IO_DEV     *AhciRecInterface
IN      OUT VOID                     *Buffer
IN      UINTN                         ByteCount
IN      UINT64                        LBA
IN      UINT32                        BlockSize
Output:

EFI_STATUS
Modified:
Notes:
1. Get the Max. number of sectors that can be Read/written in one Read/Write PIO command
2. Update the Command Structure
3. Issue

 ExecutePioDataCommand
.
4. If all the bytes are read exit else goto step 2
Referrals:

 ExecutePioDataCommand
Built on 17:22:29 01/07/15


AhciDetectDevice in the AhciCtrl.c

Function : AhciDetectDevice

File: AhciCtrl.c
Description:
Detects a SATA device connected to given Port and PMPort
Input:
IN  EFI_PEI_SERVICES                     **PeiServices
IN  AHCI_RECOVERY_BLK_IO_DEV             *AhciRecInterface
IN  UINT8                                 Port
IN  UINT8                                 PMPort
IN  UINT8                                 DevEntry
Output:
EFI_STATUS
Modified:
Notes:
1. if

 CheckDevicePresence
 fails exit.
2. If Controller supports PM, issue Softreset
3. Check the Device Signature.
Referrals:

 CheckDevicePresence
 CheckPMDevicePresence GenerateSoftReset
Built on 17:22:29 01/07/15


AhciInitController in the AhciCtrl.c

Function : AhciInitController

File: AhciCtrl.c
Description:
Initializes AHCI Controller
Input:
IN  EFI_PEI_SERVICES                     **PeiServices
IN  OUT AHCI_RECOVERY_BLK_IO_DEV        *AhciRecInterface
Output:
EFI_STATUS
Notes:
1. Update internal Data area about the AHCI controller Capabilities.
2. Allocate memory for FIS and CommandList
3. Enable AHCI mode
3. Disable all the ports


AhciTestUnitReady in the AhciCtrl.c

Function : AhciTestUnitReady

File: AhciCtrl.c
Description:
Issues Start/Stop unit Command
Input:
IN AHCI_RECOVERY_BLK_IO_DEV             *AhciRecInterface
Output:
EFI_STATUS  EFI_SUCCESS     : If Media is accessible
EFI_NO_MEDIA                : If No Media is available
EFI_MEDIA_CHANGED           : If Media is Changed
EFI_DEVICE_ERROR            : If Device not found
Modified:
Notes:
1. Update CommandStructure for ATAPI_TEST_UNIT_READY command
2. Issue

 ExecutePacketCommand

3. Check if the device is ready to accept command, whether Media is present or not.
Referrals:

 ExecutePacketCommand


BuildAtapiCMD in the AhciCtrl.c

Function : BuildAtapiCMD

File: AhciCtrl.c
Description:
Build ATAPI CMD.
Input:
IN AHCI_RECOVERY_BLK_IO_DEV            *AhciRecInterface
IN COMMAND_STRUCTURE                    CommandStructure
IN AHCI_COMMAND_LIST                    *CommandList
IN AHCI_COMMAND_TABLE                   *Commandtable
Output:
EFI_STATUS
Modified:
Notes:
1. Copy Packet data to command table
2. Set Atapi bit in Command List
Referrals:


BuildCommandFIS in the AhciCtrl.c

Function : BuildCommandFIS

File: AhciCtrl.c
Description:
Build Command FIS
Input:
IN  AHCI_RECOVERY_BLK_IO_DEV            *AhciRecInterface
IN  COMMAND_STRUCTURE                   CommandStructure
IN  AHCI_COMMAND_LIST                   *CommandList
IN  AHCI_COMMAND_TABLE                  *Commandtable
Output:
EFI_STATUS
Modified:
Notes:
1. Update Command FIS data area.
2. Update the Command FIS lenght in Command List table
Referrals:


BuildCommandList in the AhciCtrl.c

Function : BuildCommandList

File: AhciCtrl.c
Description:
Builds command list
Input:
IN  AHCI_RECOVERY_BLK_IO_DEV            *AhciRecInterface
IN  AHCI_COMMAND_LIST                   *CommandList
IN  UINT32                              CommandTableBaseAddr
Output:
EFI_STATUS
Modified:
Notes:
1. Update CommandList bits
2. Not all fields like Ahci_Cmd_A are updated.
3. Port number is set to 0xF (Control port) if PM Port number is 0xFF.
Referrals:


BuildPRDT in the AhciCtrl.c

Function : BuildPRDT

File: AhciCtrl.c
Description:
Build PRDT table
Input:
IN  AHCI_RECOVERY_BLK_IO_DEV            *AhciRecInterface
IN  COMMAND_STRUCTURE                    CommandStructure
IN  AHCI_COMMAND_LIST                    *CommandList
IN  AHCI_COMMAND_TABLE                   *Commandtable
Output:
EFI_STATUS
Modified:
Notes:
1. Build as many PRDT table entries based on ByteCount.
2. Set the I flag for the lasr PRDT table.
3. Update PRDT table lenght in CommandList
Referrals:


CheckDevicePresence in the AhciCtrl.c

Function : CheckDevicePresence

File: AhciCtrl.c
Description:
Check if any device is connected to the port
Input:
IN  EFI_PEI_SERVICES                     **PeiServices
IN  AHCI_RECOVERY_BLK_IO_DEV             *AhciRecInterface
IN  UINT8                                 Port
IN  UINT8                                 PMPort
Output:
EFI_STATUS
Modified:
Notes:
1. If Staggered spin-up is supported, power-up the device.
2. Call

 CheckValidDevice
 if success exit. Else generate Softreset.
Referrals:

 HandlePortComReset

 CheckValidDevice

 GeneratePortReset


CheckPortImplemented in the AhciCtrl.c

Function : CheckPortImplemented

File: AhciCtrl.c
Description:
Check if the port is implemented in the AHCI Controller
Input:
IN  AHCI_RECOVERY_BLK_IO_DEV        *AhciBusInterface
IN  UINT8                            Port
Output:
EFI_STATUS
Notes:
1. Check Port Implemented register whether the PORT is
implemented in the Controller or not.


CheckValidDevice in the AhciCtrl.c

Function : CheckValidDevice

File: AhciCtrl.c
Description:
Check for valid ATA/ATAPI/PMPORT signature
Input:
IN     AHCI_RECOVERY_BLK_IO_DEV            *AhciRecInterface
IN     UINT8                               Port
IN     UINT8                               PMPort
Output:
EFI_STATUS
Modified:
Notes:
1. Check if Link is active
2. Enable FIS and Command list run bits
3. Check for valid signature
Referrals:


CopyMemSmm in the AhciCtrl.c

Function : CopyMemSmm

File: AhciCtrl.c
Description:
Copy Length bytes from Source to Destination.
Input:
IN  VOID         *Destination
IN  VOID         *Source
IN  UINTN        Length
Output:
None
Modified:
Notes:

Referrals:


DetectAndConfigureDevice in the AhciCtrl.c

Function : DetectAndConfigureDevice

File: AhciCtrl.c
Description:
Detects and Configures Sata Device
Input:
IN      EFI_PEI_SERVICES                    **PeiServices
IN      AHCI_RECOVERY_BLK_IO_DEV            *AhciRecInterface
IN      UINT8                               Port
IN      UINT8                               PMPort
Output:
EFI_STATUS


DetectAtapiMedia in the AhciCtrl.c

Function : DetectAtapiMedia

File: AhciCtrl.c
Description:
Detects whether a Media is present in the ATAPI Removable
device or not.
Input:
IN   EFI_PEI_SERVICES                    **PeiServices
IN   AHCI_RECOVERY_BLK_IO_DEV            *AhciRecInterface
IN   UINTN                               DeviceIndex
Output:
EFI_STATUS
Modified:
Notes:
1. Issue Read Capacity command for CDROM or Read Format command for other
ATAPI devices.
2. If step 1  is successfull, update last LBA, Block Size, Read/Write
capable, Media ID.
Referrals:
AhciTestUnitReady,

 ExecutePacketCommand


ExecutePacketCommand in the AhciCtrl.c

Function : ExecutePacketCommand

File: AhciCtrl.c
Description:
Execute a Atapi Packet command
Input:
IN    AHCI_RECOVERY_BLK_IO_DEV               *AhciRecInterface
IN    COMMAND_STRUCTURE                      *CommandStructure
IN    BOOLEAN                                READWRITE
Output:
EFI_STATUS
Modified:
Notes:
1. Stop the Controller
2. Check if the device is ready to accept a Command.
3. Build Command list
4. Start the Controller.
5. Wait till command completes. Check for errors.
Referrals:

 StopController
,

 ReadytoAcceptCmd
,

 BuildCommandList
,

 BuildCommandFIS
,

 BuildAtapiCMD
,

 BuildPRDT
,

 StartController
,

 WaitforCommandComplete


ExecutePioDataCommand in the AhciCtrl.c

Function : ExecutePioDataCommand

File: AhciCtrl.c
Description:
Execute PIO Data In/Out command
Input:
IN      AHCI_RECOVERY_BLK_IO_DEV            *AhciRecInterface
IN      OUT COMMAND_STRUCTURE               *CommandStructure
IN      BOOLEAN                             READWRITE
Output:
EFI_STATUS, CommandStructure->ByteCount
Modified:
Notes:
1. Stop the Controller
2. Check if the device is ready to accept a Command.
3. Build Command list
4. Start the Controller.
5. Wait till command completes. Check for errors.
Referrals:

 StopController
,

 ReadytoAcceptCmd
,

 BuildCommandList
,

 BuildCommandFIS
,

 BuildAtapiCMD

 BuildPRDT
,

 StartController
,

 WaitforCommandComplete


FindFreeDevEntry in the AhciCtrl.c

Function : FindFreeDevEntry

File: AhciCtrl.c
Description:
Find the Free Entry on DeviceInfo Structure
Input:
IN AHCI_RECOVERY_BLK_IO_DEV             *AhciRecInterface
Output:
UINT8   - Free Entry Index


GeneratePortReset in the AhciCtrl.c

Function : GeneratePortReset

File: AhciCtrl.c
Description:
Issue a Port Reset
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN UINT8                               CurrentPort,
IN UINT8                               Speed,
IN UINT8                               PowerManagement
Output:
EFI_STATUS
Modified:
Notes:
1. Issue port reset by setting DET bit in SControl register
2. Call

 HandlePortComReset
 to check the status of the reset.
Referrals:

 ReadWritePMPort
,

 HandlePortComReset


GetIdentifyData in the AhciCtrl.c

Function : GetIdentifyData

File: AhciCtrl.c
Description:
Return Identify data from SATA device
Input:
   IN  EFI_PEI_SERVICES                     **PeiServices
   IN  AHCI_RECOVERY_BLK_IO_DEV             *AhciRecInterface
   IN  UINT8                                Port
   IN  UINT8                                PMPort
   IN  ATA_IDENTIFY_DATA                    *AtaIdentifyData
Output:

   EFI_STATUS
Modified:
Notes:
1. Build CommandStructure.
2. Issue

 ExecutePioDataCommand
Referrals:


HandleAtapiError in the AhciCtrl.c

Function : HandleAtapiError

File: AhciCtrl.c
Description:
Check for ATAPI Errors
Input:
IN  AHCI_RECOVERY_BLK_IO_DEV             *AhciRecInterface
Output:
EFI_STATUS
Modified:
Notes:
1. Execute ATAPI Request Sense command.
2. Check for Device getting ready, Media Change, No Media and other errors.
Update AtapiDevice->Atapi_Status
Referrals:

 ExecutePacketCommand


HandlePortComReset in the AhciCtrl.c

Function : HandlePortComReset

File: AhciCtrl.c
Description:
Check if COM Reset is successful or not
Input:
IN  AHCI_RECOVERY_BLK_IO_DEV                   *AhciRecInterface
IN  UINT8                                       Port
IN  UINT8                                       PMPort
Output:
EFI_STATUS
Modified:
Notes:
1. Check if Link is active. If not return error.
2. If Link is present, wait for PhyRdy Change bit to be set.
3. Clear SError register
4. Wait for D2H register FIS
5. Check the Status register for errors.
6. If COMRESET is success wait for sometime if the device is ATAPI or GEN1
Referrals:

 ReadSCRRegister
,

 WriteSCRRegister


ReadSCRRegister in the AhciCtrl.c

Function : ReadSCRRegister

File: AhciCtrl.c
Description:
Read from SCONTROL/Serror/SStatus register.
Input:
IN  AHCI_RECOVERY_BLK_IO_DEV            *AhciRecInterface
IN  UINT8                               Port
IN  UINT8                               PMPort
IN  UINT8                               Register (0 : SStatus
                                       1: SError 2: SControl)
Output:
UINT32
Modified:
Notes:
1. Check if the device is connected directly to the port
2. if yes, read to the AHCI Controller else write to the Port Multiplier register.
Referrals:


ReadytoAcceptCmd in the AhciCtrl.c

Function : ReadytoAcceptCmd

File: AhciCtrl.c
Description:
Check if the device is ready to accept cmd.
Input:
IN  AHCI_RECOVERY_BLK_IO_DEV               *SataDevInterface
Output:
EFI_STATUS
Modified:
Notes:
1. Check the device is ready to accept the command. BSY and DRQ
should be de-asserted.
2. If set, generate Port reset
3. In case Port Multiplier is connected to the port, enable all
the ports of the Port Multiplier.
Referrals:

 GeneratePortReset
,

 ReadWritePMPort


StartController in the AhciCtrl.c

Function : StartController

File: AhciCtrl.c
Description:
Starts SATA controller.
Input:
IN      AHCI_RECOVERY_BLK_IO_DEV                 *AhciRecInterface
IN      UINT32                                    CIBitMask
Output:
EFI_STATUS
Modified:
Notes:
1. Clear Status register
2. Enable FIS and CR running bit
3. Enable Start bit
4. Update CI bit mask
Referrals:


StopController in the AhciCtrl.c

Function : StopController

File: AhciCtrl.c
Description:
Stop FIS and CR
Input:
IN  AHCI_RECOVERY_BLK_IO_DEV            *AhciRecInterface
IN  BOOLEAN                              StartOrStop
Output:
EFI_STATUS
Modified:
Notes:
1. clear ST bit and wait till CR bits gets reset
2. if not generate Port reset
3. Clear FIS running bit.
4. Clear status register
Referrals:

 GeneratePortReset


WaitforCommandComplete in the AhciCtrl.c

Function : WaitforCommandComplete

File: AhciCtrl.c
Description:
Wait till cmd completes
Input:
IN  AHCI_RECOVERY_BLK_IO_DEV            *AhciRecInterface
IN  COMMAND_TYPE                        CommandType
IN  UINTN                               TimeOut
Output:
EFI_STATUS
Modified:
Notes:
1. Check for SError bits. If set return error.
2. For PIO IN/Out and Packet IN/OUT command wait till PIO Setup FIS is received
3. If D2H register FIS is received, exit the loop.
4. Check for SError and TFD bits.
Referrals:


WaitForMemClear in the AhciCtrl.c

Function : WaitForMemClear

File: AhciCtrl.c
Description:
Wait for memory to be set to the test value.
Input:
IN    UINT32  BaseAddr
 IN    UINT8   Port
 IN    UINT8   Register
 IN    UINT32  AndMask
 IN    UINT32  WaitTimeInMs
Output:
EFI_STATUS
Modified:

Notes:

Referrals:


WaitForMemSet in the AhciCtrl.c

Function : WaitForMemSet

File: AhciCtrl.c
Description:
Wait for memory to be set to the test value.
Input:
IN       UINT32      BaseAddr
IN       UINT8       Port
IN       UINT8       Register
IN       UINT32      AndMask
IN       UINT32      TestValue
IN       UINT32      WaitTimeInMs
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


WriteSCRRegister in the AhciCtrl.c

Function : WriteSCRRegister

File: AhciCtrl.c
Description:
Write to SCONTROL/Serror/SStatus register
Input:
 IN    AHCI_RECOVERY_BLK_IO_DEV       *AhciRecInterface
 IN    UINT8                           Port
 IN    UINT8                           PMPort
 IN    UINT8                           Register
 IN    UINT32                          Data32
Output:
EFI_STATUS
Modified:
Notes:
1. Check if the device is connected directly to the port
2. if yes, write to the AHCI Controller else write to the Port Multiplier register
Referrals:


ZeroMem in the AhciCtrl.c

Function : ZeroMem

File: AhciCtrl.c
Description:
Clear the Memory

Input    :   IN      VOID    *Buffer
IN      UINTN    Size

Output   :   None


AhciCtrl.h

Description:
Ahci Recovery function definition


AhciInt13Dxe.c

Description:
This file will register one CALLBACK function, AmiLegacyBootNotify(),
it will collect AHCI Int13 runtime data from gAhciI13Data and
send it to SMM for AHCI INT13 SMI handler.

The following functions are used in the file: AhciInt13Dxe.c.

Function | Description
AhciInt13DxeEntry | This is entry point function. It registers a call back function for Legacy boot event.
AmiLegacyBootNotify | This function will be called upon legacy boot event. It collects information about all AHCI devices present in the system and send it to SMM so that AHCI INT13 SMI handler can use it. Operation: 1. Locate EFI_LEGACY_BIOS_PROTOCOL and get All BBS entries and look for entry corresponding to a drive in AHCI mode 2. If a valid entry is found then it will use AHCI INT13 runtime data and AHCI bus interface data to fill data required by AHCI INT13 SMI handler. 3. This newly created data structure will be transfered to SMM using SmmCommunicationProtocol API.
InitializeAhciI13Data | It initializes AHCI INT13 runtime data pointer (gAhciI13Data).
IsSataDeviceInAhciMode | Check input BBS device is a SATA DEVICE in AHCI mode.
TransferAhciInt13SmmDataToSmm | It uses EFI_SMM_COMMUNICATION_PROTOCOL API to transfer data from Non-SMM mode to SMM mode.


AhciInt13DxeEntry in the AhciInt13Dxe.c

Function : AhciInt13DxeEntry

File: AhciInt13Dxe.c
Description:
This is entry point function. It registers a call back function
for Legacy boot event.
Input:
EFI_HANDLE - Standard EFI Image handle
 EFI_SYSTEM_TABLE* - Pointer to System Table
Output:
EFI_STATUS


AmiLegacyBootNotify in the AhciInt13Dxe.c

Function : AmiLegacyBootNotify

File: AhciInt13Dxe.c
Description:
This function will be called upon legacy boot event. It
collects information about all AHCI devices present in the system and
send it to SMM so that AHCI INT13 SMI handler can use it.
Operation:
1. Locate EFI_LEGACY_BIOS_PROTOCOL and get All BBS entries and look
for entry corresponding to a drive in AHCI mode
2. If a valid entry is found then it will use AHCI INT13 runtime
data and AHCI bus interface data to fill data required by AHCI
INT13 SMI handler.
3. This newly created data structure will be transfered to SMM using
SmmCommunicationProtocol API.
Input:
EFI_EVENT - Event
 VOID* - Pointer to Context
Output:
VOID


InitializeAhciI13Data in the AhciInt13Dxe.c

Function : InitializeAhciI13Data

File: AhciInt13Dxe.c
Description:
It initializes AHCI INT13 runtime data pointer (gAhciI13Data).
Input:
BBS_TABLE* - Pointer to an entry in BBS table
Output:
VOID


IsSataDeviceInAhciMode in the AhciInt13Dxe.c

Function : IsSataDeviceInAhciMode

File: AhciInt13Dxe.c
Description:
Check input BBS device is a SATA DEVICE in AHCI mode.
Input:
BBS_TABLE* - Pointer to an entry in BBS table
Output:
UINT8   TRUE  - It is a SATA device and in AHCI mode
         FALSE - It is not a SATA device or not in AHCI mode


TransferAhciInt13SmmDataToSmm in the AhciInt13Dxe.c

Function : TransferAhciInt13SmmDataToSmm

File: AhciInt13Dxe.c
Description:
It uses EFI_SMM_COMMUNICATION_PROTOCOL API to transfer data
from Non-SMM mode to SMM mode.
Input:
VOID* - Pointer to data to be transfered
 UINTN - size of the data
 EFI_GUID* - Pointer to GUID identifier for the data
Output:
EFI_STATUS


AhciInt13Dxe.dxs

Description:
Dependency expression for the AhciInt13Dxe component


AhciInt13Smm.c

Description:
This file contains code for SMI handler for AHCI INT13.

The following functions are used in the file: AhciInt13Smm.c.

Function | Description
AhciCommonSmmHandler | Common SMI handler for AHCI INT13 SMIs
AhciInt13SmiHandler | This is the SWSMI handler to service AHCI INT13 request. Operation: 1. Take INT13 parameters stored on real mode stack from CPU save state. 2. Call a sub-function to process INT13 request. 3. Update output parameters (IA registers) on real mode stack.
AhciInt13SmmEntry | Driver entry point function. It does following tasks: 1. Initializes global variables (gDriveInfoList, PciExpressBaseAddress etc.) 2. Register SMI handler to get information passed through SmmCommunicationProtocol API. 3. Register SW SMI handler to process AHCI INT13 requests. 4. Locate EFI_SMM_CPU_PROTOCOL for Read/Write from/to CPU save state
AhciInt13SmmEntryPoint | Entry point function for both DXE and SMM driver.
AhciMmioRead | Read from AHCI MMIO address
AhciMmioSmiHandler | SMI handler for the AHCI_MMIO_SWSMI SW SMI
AhciMmioSmmEntryPoint | Ahci MMIO access module entry Point
AhciMmioSmmInSmmFunction | Regsiter the AHCI_MMIO_SWSMI SMI
AhciMmioSmmSMIHandler | Smi handler for the AHCI_MMIO_SWSMI Sw Smi
AhciMmioWrite | Write to the AHCI MMIO Address
CheckErrorCode | It maps EFI_STATUS code to corresponding INT13 error code
GetAhciInt13SmmData | Saves AINT13 information passed from Non-SMM mode using EFI_SMM_COMMUNICATION_PROTOCOL API. This is required for below reason: 1)AhciSmmProtocol use port number, but Int13 service uses drive number. 2)AhciSmmProtocol use LBA addressing on HDD, but Int13 Read/Write function uses Cylinder, Header and Sector addressing on HDD.
GetDriveInfoByDriveNum | It returns the drive information corresponding to input drive number, if found.
Is48BitCommand | Check if input command is a LBA48 command
IsDmaCommand | Check if input command is a DMA command
ProcessInt13Function | Worker function to service AHCI INT13 request. Currently it supports Read/Write function only. Operation: 1. Parse information passed as IA registers to parameter required by AMI_AHCI_BUS_SMM_PROTOCOL APIs. 2. Call appropriate AMI_AHCI_BUS_SMM_PROTOCOL API.


AhciCommonSmmHandler in the AhciInt13Smm.c

Function : AhciCommonSmmHandler

File: AhciInt13Smm.c
Description:
Common SMI handler for AHCI INT13 SMIs
Input:
IN  EFI_HANDLE - EFI Handle
IN  VOID* - Pointer to the EFI_SMM_SW_REGISTER_CONTEXT
IN  VOID* - Pointer to Communication data
IN  UINTN* - Pointer to size of Communication data
Output:
EFI_STATUS
Built on 17:22:29 01/07/15


AhciInt13SmiHandler in the AhciInt13Smm.c

Function : AhciInt13SmiHandler

File: AhciInt13Smm.c
Description:
This is the SWSMI handler to service AHCI INT13 request.
Operation:
1. Take INT13 parameters stored on real mode stack from CPU save state.
2. Call a sub-function to process INT13 request.
3. Update output parameters (IA registers) on real mode stack.
Input:
UINTN - Index of CPU which triggered SW SMI
Output:
EFI_STATUS


AhciInt13SmmEntry in the AhciInt13Smm.c

Function : AhciInt13SmmEntry

File: AhciInt13Smm.c
Description:
Driver entry point function. It does following tasks:
1. Initializes global variables (gDriveInfoList, PciExpressBaseAddress etc.)
2. Register SMI handler to get information passed through SmmCommunicationProtocol API.
3. Register SW SMI handler to process AHCI INT13 requests.
4. Locate EFI_SMM_CPU_PROTOCOL for Read/Write from/to CPU save state
Input:
EFI_HANDLE - Standard EFI Image handle
 EFI_SYSTEM_TABLE* - Pointer to System Table
Output:
EFI_STATUS


AhciInt13SmmEntryPoint in the AhciInt13Smm.c

Function : AhciInt13SmmEntryPoint

File: AhciInt13Smm.c
Description:
Entry point function for both DXE and SMM driver.
Input:
EFI_HANDLE - Standard EFI Image handle
 EFI_SYSTEM_TABLE* - Pointer to System Table
Output:
EFI_STATUS


AhciMmioRead in the AhciInt13Smm.c

Function : AhciMmioRead

File: AhciInt13Smm.c
Description:
Read from AHCI MMIO address
Input:
IN  UINT32 - AHCI MMIO address
Output:
OUT UINT32 - Value read from AHCI MMIO address


AhciMmioSmiHandler in the AhciInt13Smm.c

Function : AhciMmioSmiHandler

File: AhciInt13Smm.c
Description:
SMI handler for the AHCI_MMIO_SWSMI SW SMI
Input:
IN  UINTN - Index of CPU which triggered SW SMI
IN  UINT32 - 1/2: Read or Write MMIO operation
Output:
EFI_STATUS - EFI_SUCCESS


AhciMmioSmmEntryPoint in the AhciInt13Smm.c

Function : AhciMmioSmmEntryPoint

File: AhciInt13Smm.c
Description:
Ahci MMIO access module entry Point
Input:
Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT
 EFI System Table - Pointer to System Table
Output:
EFI_STATUS OR EFI_NOT_FOUND


AhciMmioSmmInSmmFunction in the AhciInt13Smm.c

Function : AhciMmioSmmInSmmFunction

File: AhciInt13Smm.c
Description:
Regsiter the AHCI_MMIO_SWSMI SMI
Input:
Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT
 EFI System Table - Pointer to System Table
Output:
EFI_STATUS OR EFI_NOT_FOUND


AhciMmioSmmSMIHandler in the AhciInt13Smm.c

Function : AhciMmioSmmSMIHandler

File: AhciInt13Smm.c
Description:
Smi handler for the AHCI_MMIO_SWSMI Sw Smi
Input:
DispatchHandle  - EFI Handle
DispatchContext - Pointer to the EFI_SMM_SW_DISPATCH_CONTEXT
Output:


AhciMmioWrite in the AhciInt13Smm.c

Function : AhciMmioWrite

File: AhciInt13Smm.c
Description:
Write to the AHCI MMIO Address
Input:
IN  UINT32 - AHCI MMIO address
IN  UINT32 - Value to be written
Output:
EFI_STATUS - EFI_NOT_FOUND: Invalid address, EFI_SUCCESS: Success


CheckErrorCode in the AhciInt13Smm.c

Function : CheckErrorCode

File: AhciInt13Smm.c
Description:
It maps EFI_STATUS code to corresponding INT13 error code
Input:
EFI_STATUS - Status
Output:
UINT8 - INT13 error code


GetAhciInt13SmmData in the AhciInt13Smm.c

Function : GetAhciInt13SmmData

File: AhciInt13Smm.c
Description:
Saves AINT13 information passed from Non-SMM mode using
EFI_SMM_COMMUNICATION_PROTOCOL API. This is required for below reason:
1)AhciSmmProtocol use port number, but Int13 service uses drive number.
2)AhciSmmProtocol use LBA addressing on HDD, but Int13 Read/Write function
uses Cylinder, Header and Sector addressing on HDD.
Input:
IN  EFI_HANDLE - EFI Handle
IN  VOID* - Pointer to the EFI_SMM_SW_REGISTER_CONTEXT
IN  VOID* - Pointer to Communication data
IN  UINTN* - Pointer to size of Communication data
Output:
EFI_STATUS


GetDriveInfoByDriveNum in the AhciInt13Smm.c

Function : GetDriveInfoByDriveNum

File: AhciInt13Smm.c
Description:
It returns the drive information corresponding to input drive
number, if found.
Input:
IN      UINT8  - INT13 drive number
 IN  OUT VOID** - Pointer to SMM_AINT13_DRIVE_INFO variable
                  It will be filled with corresponding drive
                  information
Output:
EFI_STATUS
        EFI_SUCCESS     - DriveInfo is valid
        EFI_UNSUPPORTED - Can't find the corresponding data.


Is48BitCommand in the AhciInt13Smm.c

Function : Is48BitCommand

File: AhciInt13Smm.c
Description:
Check if input command is a LBA48 command
Input:
UINT8 - Command
Output:
BOOLEAN - TRUE  - LBA48 command
           FALSE - Not a LBA48 command


IsDmaCommand in the AhciInt13Smm.c

Function : IsDmaCommand

File: AhciInt13Smm.c
Description:
Check if input command is a DMA command
Input:
UINT8 - Command
Output:
BOOLEAN - TRUE  - DMA command
           FALSE - Not a DMA command


ProcessInt13Function in the AhciInt13Smm.c

Function : ProcessInt13Function

File: AhciInt13Smm.c
Description:
Worker function to service AHCI INT13 request. Currently it
supports Read/Write function only.
Operation:
1. Parse information passed as IA registers to parameter required
by AMI_AHCI_BUS_SMM_PROTOCOL APIs.
2. Call appropriate AMI_AHCI_BUS_SMM_PROTOCOL API.
Input:
EFI_IA32_REGISTER_SET* - Pointer of EFI_IA32_REGISTER_SET
Output:
EFI_STATUS
        EFI_SUCCESS     - Int13 request complete
        EFI_UNSUPPORTED - This Int13 request is unsupported


AhciInt13Smm.dxs

Description:
Dependency expression for the AhciInt13Smm component


AhciInt13Smm.h

Description:
This file contains the definitions of function prototype, constant and
data structure for AhciInt13Smm module.


AhciInt13Smm.mak

Description:
MAK file for the AhciInt13Smm component


AhciRecovery.c

Description:
Implements EFI_PEI_RECOVERY_BLOCK_IO_PPI for Ahci devices.

The following functions are used in the file: AhciRecovery.c.

Function | Description
Ahci_AtaGetBlockDeviceMediaInfo | GetBlockDeviceMediaInfo function of EFI_PEI_RECOVERY_BLOCK_IO_PPI.This returns the Block IO Media Information.
Ahci_AtaGetNumberOfBlockDevices | GetNumberOfBlockDevices function of EFI_PEI_RECOVERY_BLOCK_IO_PPI.This Returns the number of Block Devices present in the System.
Ahci_AtapiGetBlockDeviceMediaInfo | GetBlockDeviceMediaInfo function of EFI_PEI_RECOVERY_BLOCK_IO_PPI. Input : IN EFI_PEI_SERVICES **PeiServices IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This IN UINTN DeviceIndex Output : OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo
Ahci_AtapiGetNumberOfBlockDevices | GetNumberOfBlockDevices function of EFI_PEI_RECOVERY_BLOCK_IO_PPI. Input : IN EFI_PEI_SERVICES **PeiServices IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This Output : OUT UINTN *NumberBlockDevices
Ahci_AtapiReadBlocks | ReadBlocks function of EFI_PEI_RECOVERY_BLOCK_IO_PPI. Input : IN EFI_PEI_SERVICES **PeiServices IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This IN UINTN DeviceIndex IN EFI_PEI_LBA StartLba IN UINTN BufferSize Output : OUT VOID *Buffer
Ahci_AtaReadBlocks | ReadBlocks function of EFI_PEI_RECOVERY_BLOCK_IO_PPI. Input : IN EFI_PEI_SERVICES **PeiServices IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This IN UINTN DeviceIndex IN EFI_PEI_LBA StartLba IN UINTN BufferSize Output : OUT VOID *Buffer
AhciAtapiDetectMedia | Detects the ATAPI Media type. Input : IN EFI_PEI_SERVICES **PeiServices IN AHCI_RECOVERY_BLK_IO_DEV *AhciRecInterface IN UINTN DeviceIndex Output : None
AhciAtapiRecoveryPeimEntry | Installs EFI_PEI_RECOVERY_BLOCK_IO_PPI. Input : IN EFI_FFS_FILE_HEADER *FfsHeader IN EFI_PEI_SERVICES **PeiServices Output : EFI_SUCCESS -- EFI_PEI_RECOVERY_BLOCK_IO_PPI installed Successfully.
AhciAtaRecoveryPeimEntry | Installs EFI_PEI_RECOVERY_BLOCK_IO_PPI for AHCI devices.
AhciEnumerateDevices |
NotifyOnAhciRecoveryCapsuleLoaded | This routine resets the Ahci Controller on end of Pei when Ahci Recovery Capsule Loaded.


Ahci_AtaGetBlockDeviceMediaInfo in the AhciRecovery.c

Function : Ahci_AtaGetBlockDeviceMediaInfo

File: AhciRecovery.c
Description:
GetBlockDeviceMediaInfo function of
EFI_PEI_RECOVERY_BLOCK_IO_PPI.This returns the Block IO
Media Information.
Input:
IN      EFI_PEI_SERVICES                **PeiServices
IN      EFI_PEI_RECOVERY_BLOCK_IO_PPI   *This
IN      UINTN                           DeviceIndex
Output:
OUT     EFI_PEI_BLOCK_IO_MEDIA          *MediaInfo
Built on 17:22:29 01/07/15


Ahci_AtaGetNumberOfBlockDevices in the AhciRecovery.c

Function : Ahci_AtaGetNumberOfBlockDevices

File: AhciRecovery.c
Description:
GetNumberOfBlockDevices function of
EFI_PEI_RECOVERY_BLOCK_IO_PPI.This Returns the number of
Block Devices present in the System.
Input:
IN     EFI_PEI_SERVICES                **PeiServices
IN     EFI_PEI_RECOVERY_BLOCK_IO_PPI   *This
Output:
OUT    UINTN    *NumberBlockDevices
Built on 17:22:29 01/07/15


Ahci_AtapiGetBlockDeviceMediaInfo in the AhciRecovery.c

Function : Ahci_AtapiGetBlockDeviceMediaInfo

File: AhciRecovery.c
Description:
GetBlockDeviceMediaInfo function of
EFI_PEI_RECOVERY_BLOCK_IO_PPI.

Input    :   IN  EFI_PEI_SERVICES              **PeiServices
IN  EFI_PEI_RECOVERY_BLOCK_IO_PPI *This
IN  UINTN                         DeviceIndex

Output   :   OUT EFI_PEI_BLOCK_IO_MEDIA       *MediaInfo
Built on 17:22:29 01/07/15


Ahci_AtapiGetNumberOfBlockDevices in the AhciRecovery.c

Function : Ahci_AtapiGetNumberOfBlockDevices

File: AhciRecovery.c
Description:
GetNumberOfBlockDevices function of
EFI_PEI_RECOVERY_BLOCK_IO_PPI.

Input    :    IN     EFI_PEI_SERVICES                **PeiServices
IN     EFI_PEI_RECOVERY_BLOCK_IO_PPI   *This

Output   :    OUT    UINTN      *NumberBlockDevices
Built on 17:22:29 01/07/15


Ahci_AtapiReadBlocks in the AhciRecovery.c

Function : Ahci_AtapiReadBlocks

File: AhciRecovery.c
Description:
ReadBlocks function of EFI_PEI_RECOVERY_BLOCK_IO_PPI.

Input    :   IN  EFI_PEI_SERVICES               **PeiServices
IN  EFI_PEI_RECOVERY_BLOCK_IO_PPI  *This
IN  UINTN                          DeviceIndex
IN  EFI_PEI_LBA                    StartLba
IN  UINTN                          BufferSize

Output   :   OUT VOID                           *Buffer
Built on 17:22:29 01/07/15


Ahci_AtaReadBlocks in the AhciRecovery.c

Function : Ahci_AtaReadBlocks

File: AhciRecovery.c
Description:
ReadBlocks function of EFI_PEI_RECOVERY_BLOCK_IO_PPI.

Input   :   IN  EFI_PEI_SERVICES              **PeiServices
IN  EFI_PEI_RECOVERY_BLOCK_IO_PPI *This
IN  UINTN                         DeviceIndex
IN  EFI_PEI_LBA                   StartLba
IN  UINTN                         BufferSize

Output  :   OUT  VOID                          *Buffer
Built on 17:22:29 01/07/15


AhciAtapiDetectMedia in the AhciRecovery.c

Function : AhciAtapiDetectMedia

File: AhciRecovery.c
Description:
Detects the ATAPI Media type.

Input    :   IN     EFI_PEI_SERVICES              **PeiServices
IN     AHCI_RECOVERY_BLK_IO_DEV      *AhciRecInterface
IN     UINTN                          DeviceIndex

Output   :   None
Built on 17:22:29 01/07/15


AhciAtapiRecoveryPeimEntry in the AhciRecovery.c

Function : AhciAtapiRecoveryPeimEntry

File: AhciRecovery.c
Description:
Installs EFI_PEI_RECOVERY_BLOCK_IO_PPI.

Input   :    IN      EFI_FFS_FILE_HEADER     *FfsHeader
IN      EFI_PEI_SERVICES        **PeiServices

Output  :    EFI_SUCCESS -- EFI_PEI_RECOVERY_BLOCK_IO_PPI installed
              Successfully.
Built on 17:22:29 01/07/15


AhciAtaRecoveryPeimEntry in the AhciRecovery.c

Function : AhciAtaRecoveryPeimEntry

File: AhciRecovery.c
Description:
Installs EFI_PEI_RECOVERY_BLOCK_IO_PPI for AHCI devices.
Input:
IN      EFI_FFS_FILE_HEADER     *FfsHeader
IN      EFI_PEI_SERVICES        **PeiServices
Output:
EFI_STATUS -- EFI_PEI_RECOVERY_BLOCK_IO_PPI is Installed
             Successfully.
Built on 17:22:29 01/07/15


AhciEnumerateDevices in the AhciRecovery.c

Function : AhciEnumerateDevices

File: AhciRecovery.c


NotifyOnAhciRecoveryCapsuleLoaded in the AhciRecovery.c

Function : NotifyOnAhciRecoveryCapsuleLoaded

File: AhciRecovery.c
Description:
This routine resets the Ahci Controller on end of Pei when
Ahci Recovery Capsule Loaded.
Input:
IN   EFI_PEI_SERVICES          **PeiServices
IN   EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc
IN   VOID                      *InvokePpi

Output :     EFI_SUCCESS


AhciRecovery.h

Description:
Ahci Recovery function definition


AhciRecovery.mak

Description:
This make file builds Ahci Recovery LIB


AhciRecoveryAccess.c

Description:
Provides Index Data Port Access to AhciRecovery Driver

The following functions are used in the file: AhciRecoveryAccess.c.

Function | Description
ReadDataDword | Read the Dword Data using Index/Data access method
WriteDataByte | WriteRead the Dword Data using Index/Data access method
WriteDataDword | WriteRead the Dword Data using Index/Data access method


ReadDataDword in the AhciRecoveryAccess.c

Function : ReadDataDword

File: AhciRecoveryAccess.c
Description:
Read the Dword Data using Index/Data access method
Input:
BaseAddress - BaseAddress of AHCI Controller
Index       - Index address to read
Output:
Value Read


WriteDataByte in the AhciRecoveryAccess.c

Function : WriteDataByte

File: AhciRecoveryAccess.c
Description:
WriteRead the Dword Data using Index/Data access method
Input:
BaseAddress - BaseAddress of AHCI Controller
Index       - Index address to Write
Data        - Data to be written
Output:
Nothing


WriteDataDword in the AhciRecoveryAccess.c

Function : WriteDataDword

File: AhciRecoveryAccess.c
Description:
WriteRead the Dword Data using Index/Data access method
Input:
BaseAddress - BaseAddress of AHCI Controller
Index       - Index address to Write
Data        - Data to be written
Output:
Nothing


AhciSmm.c

Description:
AHCISmm funtion implementation.

The following functions are used in the file: AhciSmm.c.

Function | Description
AhciSmmDriverEntryPoint | AHCI Smm driver Entry Point
AhciSmmExecuteDmaDataCommand | Exectue the DMA data command
AhciSmmExecuteNonDataCommand | Exectue the Non Data command
AhciSmmExecutePacketCommand | Execute a Atapi Packet command
AhciSmmExecutePioDataCommand | Exectue the PIO data command
AhciSmmInitPortOnS3Resume | Initilize the Sata port on S3 resume
BuildAtapiCMD |
BuildCommandFIS | Build Command FIS
BuildCommandList | Builds command list
BuildPRDT | Build PRDT table
CopyMemSmm | Copy Length bytes from Source to Destination.
GeneratePortReset | Issue a Port Reset
HandleAtapiError | Check for ATAPI Errors
HandlePortComReset | Check if COM Reset is successful or not
InSmmFunction | This function is called from SMM during SMM registration.
ReadSCRRegister |
ReadWritePMPort | Read/Write routine to PM ports
ReadytoAcceptCmd | Check if the device is ready to accept cmd.
Stall | Stalls for the Required Amount of MicroSeconds
StartController |
StopController | Stop FIS and CR
WaitforCommandComplete | Wait till cmd completes
WaitForMemClear | Wait for memory to be set to the test value.
WaitForMemSet | Wait for memory to be set to the test value.
WaitforPMMemSet | Wait for memory to be set to the test value.
WriteSCRRegister | Write to SCONTROL/Serror/SStatus register
ZeromemorySmm | Clears the buffer


AhciSmmDriverEntryPoint in the AhciSmm.c

Function : AhciSmmDriverEntryPoint

File: AhciSmm.c
Description:
AHCI Smm driver Entry Point
Input:
EFI_HANDLE           ImageHandle,
EFI_SYSTEM_TABLE     *SystemTable
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


AhciSmmExecuteDmaDataCommand in the AhciSmm.c

Function : AhciSmmExecuteDmaDataCommand

File: AhciSmm.c
Description:
Exectue the DMA data command
Input:
IN AHCI_BUS_SMM_PROTOCOL               *SataDevInterface,
IN COMMAND_STRUCTURE                   CommandStructure,
UINT8                                   PortNumber,
UINT8                                   PMPortNumber,
DEVICE_TYPE                             DeviceType,
BOOLEAN                                 READWRITE
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


AhciSmmExecuteNonDataCommand in the AhciSmm.c

Function : AhciSmmExecuteNonDataCommand

File: AhciSmm.c
Description:
Exectue the Non Data command
Input:
IN AHCI_BUS_SMM_PROTOCOL               *SataDevInterface,
IN COMMAND_STRUCTURE                   CommandStructure,
UINT8                                   PortNumber,
UINT8                                   PMPortNumber,
DEVICE_TYPE                             DeviceType,
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


AhciSmmExecutePacketCommand in the AhciSmm.c

Function : AhciSmmExecutePacketCommand

File: AhciSmm.c
Description:
Execute a Atapi Packet command
Input:
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN COMMAND_STRUCTURE                   *CommandStructure
IN BOOLEAN                              READWRITE
UINT8                                   PortNumber,
UINT8                                   PMPortNumber,
DEVICE_TYPE                             DeviceType
Output:
EFI_STATUS
Modified:
Notes:
1. Stop the Controller
2. Check if the device is ready to accept a Command.
3. Build Command list
4. Start the Controller.
5. Wait till command completes. Check for errors.
Referrals:

 StopController
,

 ReadytoAcceptCmd
,

 BuildCommandList
,

 BuildCommandFIS
,

 BuildAtapiCMD

 BuildPRDT
,

 StartController
,

 WaitforCommandComplete


AhciSmmExecutePioDataCommand in the AhciSmm.c

Function : AhciSmmExecutePioDataCommand

File: AhciSmm.c
Description:
Exectue the PIO data command
Input:
IN AHCI_BUS_SMM_PROTOCOL               *SataDevInterface,
IN COMMAND_STRUCTURE                   CommandStructure,
UINT8                                   PortNumber,
UINT8                                   PMPortNumber,
DEVICE_TYPE                             DeviceType,
BOOLEAN                                 READWRITE
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


AhciSmmInitPortOnS3Resume in the AhciSmm.c

Function : AhciSmmInitPortOnS3Resume

File: AhciSmm.c
Description:
Initilize the Sata port on S3 resume
Input:
IN AHCI_BUS_SMM_PROTOCOL               *SataDevInterface,
UINT8                                   Port,
Output:
EFI_STATUS
Modified:
Notes:

Referrals:


BuildAtapiCMD in the AhciSmm.c

Function : BuildAtapiCMD

File: AhciSmm.c
Description:
Input:
IN SATA_DEVICE_INTERFACE                *SataDevInterface,
IN COMMAND_STRUCTURE                    CommandStructure
IN AHCI_COMMAND_LIST                    *CommandList,
IN AHCI_COMMAND_TABLE                   *Commandtable
Output:
EFI_STATUS
Modified:
Notes:
1. Copy Packet data to command table
2. Set Atapi bit in Command List
Referrals:


BuildCommandFIS in the AhciSmm.c

Function : BuildCommandFIS

File: AhciSmm.c
Description:
Build Command FIS
Input:
IN SATA_DEVICE_INTERFACE                *SataDevInterface,
IN COMMAND_STRUCTURE                    CommandStructure,
IN AHCI_COMMAND_LIST                    *CommandList,
IN AHCI_COMMAND_TABLE                   *Commandtable
Output:
EFI_STATUS
Modified:
Notes:
1. Update Command FIS data area.
2. Update the Command FIS lenght in Command List table
Referrals:


BuildCommandList in the AhciSmm.c

Function : BuildCommandList

File: AhciSmm.c
Description:
Builds command list
Input:
IN SATA_DEVICE_INTERFACE            *SataDevInterface,
IN AHCI_COMMAND_LIST                *CommandList,
IN UINT32                           CommandTableBaseAddr
Output:
EFI_STATUS
Modified:
Notes:
1. Update CommandList bits
2. Not all fields like Ahci_Cmd_A are updated.
3. Port number is set to 0xF (Control port) if PM Port number is 0xFF.
Referrals:


BuildPRDT in the AhciSmm.c

Function : BuildPRDT

File: AhciSmm.c
Description:
Build PRDT table
Input:
IN SATA_DEVICE_INTERFACE                *SataDevInterface,
IN COMMAND_STRUCTURE                    CommandStructure
IN AHCI_COMMAND_LIST                    *CommandList,
IN AHCI_COMMAND_TABLE                   *Commandtable
Output:
EFI_STATUS
Modified:
Notes:
1. Build as many PRDT table entries based on ByteCount.
2. Set the I flag for the lasr PRDT table.
3. Update PRDT table lenght in CommandList
Referrals:


CopyMemSmm in the AhciSmm.c

Function : CopyMemSmm

File: AhciSmm.c
Description:
Copy Length bytes from Source to Destination.
Input:
IN VOID         *Destination,
IN VOID         *Source,
IN UINTN        Length
Output:
None
Modified:
Notes:

Referrals:


GeneratePortReset in the AhciSmm.c

Function : GeneratePortReset

File: AhciSmm.c
Description:
Issue a Port Reset
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN UINT8                               CurrentPort,
IN UINT8                               Speed,
IN UINT8                               PowerManagement
Output:
EFI_STATUS
Modified:
Notes:
1. Issue port reset by setting DET bit in SControl register
2. Call

 HandlePortComReset
 to check the status of the reset.
Referrals:

 ReadWritePMPort
,

 HandlePortComReset


HandleAtapiError in the AhciSmm.c

Function : HandleAtapiError

File: AhciSmm.c
Description:
Check for ATAPI Errors
Input:
IN AHCI_BUS_SMM_PROTOCOL               *SataDevInterface,
Output:
EFI_STATUS
Modified:
Notes:
1. Execute ATAPI Request Sense command.
2. Check for Device getting ready, Media Change, No Media and other errors. Update AtapiDevice->Atapi_Status
Referrals:

 ExecutePacketCommand


HandlePortComReset in the AhciSmm.c

Function : HandlePortComReset

File: AhciSmm.c
Description:
Check if COM Reset is successful or not
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN UINT8                               Port,
IN UINT8                               PMPort,
Output:
EFI_STATUS
Modified:
Notes:
1. Check if Link is active. If not return error.
2. If Link is present, wait for PhyRdy Change bit to be set.
3. Clear SError register
4. Wait for D2H register FIS
5. Check the Status register for errors.
6. If COMRESET is success wait for sometime if the device is ATAPI or GEN1
Referrals:

 ReadSCRRegister
,

 WriteSCRRegister


InSmmFunction in the AhciSmm.c

Function : InSmmFunction

File: AhciSmm.c
Description:
This function is called from SMM during SMM registration.
Input:
IN EFI_HANDLE       ImageHandle
IN EFI_SYSTEM_TABLE *SystemTable
Output:
EFI_STATUS


ReadSCRRegister in the AhciSmm.c

Function : ReadSCRRegister

File: AhciSmm.c
Description:
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN UINT8                               Port,
IN UINT8                               PMPort,
IN UINT8                               Register (0 : SStatus 1: SError 2: SControl)
Output:
UINT32
Modified:
Notes:
1. Check if the device is connected directly to the port
2. if yes, read to the AHCI Controller else write to the Port Multiplier register.
Referrals:


ReadWritePMPort in the AhciSmm.c

Function : ReadWritePMPort

File: AhciSmm.c
Description:
Read/Write routine to PM ports
Input:
IN SATA_DEVICE_INTERFACE       *SataDevInterface,
IN UINT8                        Port,
IN UINT8                        RegNum,
IN OUT UINT32                   *Data
IN BOOLEAN                      READWRITE       // TRUE for Write
Output:
EFI_STATUS
Modified:
Notes:
1. Update Command Structure for READ/Write Port Multiplier command
2. Issue command
3. Check for errors.
4. Read the out data in case of READ.
Referrals:

 StopController
,

 ReadytoAcceptCmd
,

 BuildCommandList
,

 BuildCommandFIS
,

 BuildAtapiCMD

 BuildPRDT
,

 StartController
,

 WaitforCommandComplete


ReadytoAcceptCmd in the AhciSmm.c

Function : ReadytoAcceptCmd

File: AhciSmm.c
Description:
Check if the device is ready to accept cmd.
Input:
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
Output:
EFI_STATUS
Modified:
Notes:
1. Check the device is ready to accept the command. BSY and DRQ
should be de-asserted.
2. If set, generate Port reset
3. In case Port Multiplier is connected to the port, enable all
the ports of the Port Multiplier.
Referrals:

 GeneratePortReset
,

 ReadWritePMPort


Stall in the AhciSmm.c

Function : Stall

File: AhciSmm.c
Description:
Stalls for the Required Amount of MicroSeconds
Input:
UINTN   Usec    // Number of microseconds to delay
Output:
None
Modified:
Notes:

Referrals:


StartController in the AhciSmm.c

Function : StartController

File: AhciSmm.c
Description:
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN UINT32                              CIBitMask
Output:
EFI_STATUS
Modified:
Notes:
1. Clear Status register
2. Enable FIS and CR running bit
3. Enable Start bit
4. Update CI bit mask
Referrals:


StopController in the AhciSmm.c

Function : StopController

File: AhciSmm.c
Description:
Stop FIS and CR
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN SATA_DEVICE_INTERFACE               *SataDevInterface
Output:
EFI_STATUS
Modified:
Notes:
1. clear ST bit and wait till CR bits gets reset
2. if not generate Port reset
3. Clear FIS running bit.
4. Clear status register
Referrals:

 GeneratePortReset


WaitforCommandComplete in the AhciSmm.c

Function : WaitforCommandComplete

File: AhciSmm.c
Description:
Wait till cmd completes
Input:
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN COMMAND_TYPE                        CommandType,
IN UINTN                               TimeOut
Output:
EFI_STATUS
Modified:
Notes:
1. Check for SError bits. If set return error.
2. For PIO IN/Out and Packet IN/OUT command wait till PIO Setup FIS is received
3. If D2H register FIS is received, exit the loop.
4. Check for SError and TFD bits.
Referrals:


WaitForMemClear in the AhciSmm.c

Function : WaitForMemClear

File: AhciSmm.c
Description:
Wait for memory to be set to the test value.
Input:
MemTestAddr      - The memory address to test
MaskValue        - The mask value of memory
WaitTimeInMs     - The time out value for wait memory set
Output:
EFI_SUCCESS      - HBA reset successfully.
    EFI_DEVICE_ERROR - HBA failed to complete hardware reset.
Modified:

Notes:

Referrals:


WaitForMemSet in the AhciSmm.c

Function : WaitForMemSet

File: AhciSmm.c
Description:
Wait for memory to be set to the test value.
Input:
MemTestAddr      - The memory address to test
MaskValue        - The mask value of memory
TestValue        - The test value of memory
WaitTimeInMs     - The time out value for wait memory set
Output:
EFI_SUCCESS      - HBA reset successfully.
EFI_DEVICE_ERROR - HBA failed to complete hardware reset.
Modified:
Notes:

Referrals:


WaitforPMMemSet in the AhciSmm.c

Function : WaitforPMMemSet

File: AhciSmm.c
Description:
Wait for memory to be set to the test value.
Input:
SATA_DEVICE_INTERFACE   *SataDevInterface,
PMPort
Register
MaskValue        - The mask value of memory
TestValue        - The test value of memory
WaitTimeInMs     - The time out value for wait memory set
Output:
EFI_SUCCESS      - HBA reset successfully.
EFI_DEVICE_ERROR - HBA failed to complete hardware reset.
Modified:
Notes:

Referrals:


WriteSCRRegister in the AhciSmm.c

Function : WriteSCRRegister

File: AhciSmm.c
Description:
Write to SCONTROL/Serror/SStatus register
Input:
IN AHCI_BUS_PROTOCOL                   *AhciBusInterface,
IN SATA_DEVICE_INTERFACE               *SataDevInterface,
IN UINT8                               Port,
IN UINT8                               PMPort,
IN UINT8                               Register, (0 : SStatus 1: SError 2: SControl)
IN UINT32                              Data32
Output:
EFI_STATUS
Modified:
Notes:
1. Check if the device is connected directly to the port
2. if yes, write to the AHCI Controller else write to the Port Multiplier register
Referrals:


ZeromemorySmm in the AhciSmm.c

Function : ZeromemorySmm

File: AhciSmm.c
Description:
Clears the buffer
Input:
void    *Buffer,
UINTN   Size
Output:
None
Modified:
Notes:

Referrals:


AhciSmm.dxs

Description:
This file is the dependency file for the AhciSmm driver


AhciSmm.h

Description:
Smm function definition


AhciSrc.mak

Description:


AInt13.c

Description:
AHCI Int13 structures initialization routines

The following functions are used in the file: AInt13.c.

Function | Description
Ai13EntryPoint | Installs gAhciInt13Init protocol
CalcTranslatedCyl | Returns the CHS-translated number of cylinders
ConfigureHddParameter | This function fills the DEV_PARAM information for the drive.
CountDrives | This routine returns the number of connected AHCI drives as well as it fills the optional SATA_DEVICE_INTERFACE* buffer with the device information.
CreateAhciDriveString | This function generates the readable string with the name of device and the SATA port number this device is connected to.
CreateBbsEntry | This function creates BBS entry with the device data filled according to the actual device information.
GetNumberOfSectors | Returns the total number of sectors from IDENTIFY_DATA
InitAhciCd | This function initializes AHCI CD/DVDROM device information.
InitAhciDev | This function initializes AHCI device specific information.
InitAhciHddDev | This function initializes the AHCI HD drive specific information.
InitAhciInt13Support | LegacyAhci driver API function. It initializes drive infomation and places it in BBS table as well as in AHCI INT13 runtime area.
InitCspData | Initialization of chipset specific fields of AHCI runtime (INT 13) code.
InitDrivesInformation | Initialization of data structures and placement of runtime code of AHCI INT13
SetEbdaAddressForPort | This function will be called when Legacy boot Event Signled This function will set the EBDA address for PxCLB and PxFB
TranslateHdSec | This function returns the translated max #of heads (1-based), number of cylinders and sectors/track.
UpdateControllerInfoToLegacy | This function will check if the BusDevFunc is existing in the array, if it exist then it returns EFI_SUCCESS and if not then it will add BusDevFunc into the array and returns EFI_NOT_FOUND.


Ai13EntryPoint in the AInt13.c

Function : Ai13EntryPoint

File: AInt13.c
Description:
Installs gAhciInt13Init protocol
Input:
IN EFI_HANDLE        ImageHandle,
        IN EFI_SYSTEM_TABLE  *SystemTable
Output:
EFI_STATUS


CalcTranslatedCyl in the AInt13.c

Function : CalcTranslatedCyl

File: AInt13.c
Description:
Returns the CHS-translated number of cylinders


ConfigureHddParameter in the AInt13.c

Function : ConfigureHddParameter

File: AInt13.c
Description:
This function fills the DEV_PARAM information for the drive.


CountDrives in the AInt13.c

Function : CountDrives

File: AInt13.c
Description:
This routine returns the number of connected AHCI drives as well
as it fills the optional SATA_DEVICE_INTERFACE* buffer with the
device information.


CreateAhciDriveString in the AInt13.c

Function : CreateAhciDriveString

File: AInt13.c
Description:
This function generates the readable string with the name of
device and the SATA port number this device is connected to.


CreateBbsEntry in the AInt13.c

Function : CreateBbsEntry

File: AInt13.c
Description:
This function creates BBS entry with the device data filled
according to the actual device information.


GetNumberOfSectors in the AInt13.c

Function : GetNumberOfSectors

File: AInt13.c
Description:
Returns the total number of sectors from IDENTIFY_DATA
Input:
IdendifyData - ptr to the IDENTIFY_DATA array
Output:
Total0 - lower DWORD of the total number of blocks
Total1 - higher WORD of the total number of blocks


InitAhciCd in the AInt13.c

Function : InitAhciCd

File: AInt13.c
Description:
This function initializes AHCI CD/DVDROM device information.


InitAhciDev in the AInt13.c

Function : InitAhciDev

File: AInt13.c
Description:
This function initializes AHCI device specific information.


InitAhciHddDev in the AInt13.c

Function : InitAhciHddDev

File: AInt13.c
Description:
This function initializes the AHCI HD drive specific information.


InitAhciInt13Support in the AInt13.c

Function : InitAhciInt13Support

File: AInt13.c
Description:
LegacyAhci driver API function. It initializes drive infomation
and places it in BBS table as well as in AHCI INT13 runtime area.


InitCspData in the AInt13.c

Function : InitCspData

File: AInt13.c
Description:
Initialization of chipset specific fields of AHCI runtime
   (INT 13) code.
Input:
Seg16, Ofs16 - 16-bit address of chipset specific 16-bit code/data.
Output:
Status of operation


InitDrivesInformation in the AInt13.c

Function : InitDrivesInformation

File: AInt13.c
Description:
Initialization of data structures and placement of runtime
   code of AHCI INT13
Input:
Devices - pointer to the beginning of the instances of
             SATA_DEVICE_INTERFACE*
   DeviceCount - number of valid AHCI devices pointed by
             Devices parameter


SetEbdaAddressForPort in the AInt13.c

Function : SetEbdaAddressForPort

File: AInt13.c
Description:
This function will be called when Legacy boot Event Signled
   This function will set the EBDA address for PxCLB and PxFB
Input:
IN EFI_EVENT Event - signalled event
   IN VOID *Context - calling context
Output:
VOID


TranslateHdSec in the AInt13.c

Function : TranslateHdSec

File: AInt13.c
Description:
This function returns the translated max #of heads (1-based),
number of cylinders and sectors/track.
Input:
Heads   - Maximum head number (1-based)
Sectors - Sectors/track
Cyl     - Number of cylinders
TotalBlocks - Total number of sectors
Output:
Cyl - Translated number of cylinders
Heads - Translated max head number (1-based)
Sectors - Translated number of sectors/track
Notes:
- If total #of sectors < 1032192 (i.e. FC000 hex),
 translation is not needed.
- If total #of sectors <= 2064384 (i.e. 1F8000 hex),
 use 63 SPT and 32 HD for translation.
- If total #of sectors <= 4128768 (i.e. 3F0000 hex),
 use 63 SPT and 64 HD for translation.
- If total #of sectors <= 8257536 (i.e. 7E0000 hex),
 use 63 SPT and 128 HD for translation, else
 use 63 SPT and 255 HD for translation.
- In any case, check the parameters for maximum values allowed
 by BIOS and ATA specs (i.e. 1024 cyl, 16 heads, 63 sec/track)


UpdateControllerInfoToLegacy in the AInt13.c

Function : UpdateControllerInfoToLegacy

File: AInt13.c
Description:
This function will check if the BusDevFunc is existing in
the array, if it exist then it returns EFI_SUCCESS and if not then
it will add BusDevFunc into the array and returns EFI_NOT_FOUND.
Input:
Dev      - Structure pointing to SATA_DEVICE_INTERFACE
DevInfo - Stucture that maintatin device information
wBusDevFunc  - It contatin the BusDevFunc number for a device
Output:
EFI_NOT_FOUND - If wBusDevFunc is not present in the array.
               i.e a new controller is found
EFI_SUCCESS   - If wBusDevFunc is present in the array


AInt13.h

Description:
Definitions and structures for AHCI INT13


Functions in Alphabetical Order

In Alphabetical Order

The following topics provide a list in alphabetical order.
For a list by file name, see By File Name.

  • A
  • B
  • C
  • D
  • E
  • F
  • G
  • H
  • I
  • N
  • P
  • R
  • S
  • T
  • U
  • W
  • Z
Built on 17:22:29 01/07/15


Functions in Alphabetical Order

A

Function | Description
Ahci_AtaGetBlockDeviceMediaInfo | GetBlockDeviceMediaInfo function of EFI_PEI_RECOVERY_BLOCK_IO_PPI.This returns the Block IO Media Information.
Ahci_AtaGetNumberOfBlockDevices | GetNumberOfBlockDevices function of EFI_PEI_RECOVERY_BLOCK_IO_PPI.This Returns the number of Block Devices present in the System.
Ahci_AtapiGetBlockDeviceMediaInfo | GetBlockDeviceMediaInfo function of EFI_PEI_RECOVERY_BLOCK_IO_PPI. Input : IN EFI_PEI_SERVICES **PeiServices IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This IN UINTN DeviceIndex Output : OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo
Ahci_AtapiGetNumberOfBlockDevices | GetNumberOfBlockDevices function of EFI_PEI_RECOVERY_BLOCK_IO_PPI. Input : IN EFI_PEI_SERVICES **PeiServices IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This Output : OUT UINTN *NumberBlockDevices
Ahci_AtapiReadBlocks | ReadBlocks function of EFI_PEI_RECOVERY_BLOCK_IO_PPI. Input : IN EFI_PEI_SERVICES **PeiServices IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This IN UINTN DeviceIndex IN EFI_PEI_LBA StartLba IN UINTN BufferSize Output : OUT VOID *Buffer
Ahci_AtapiReadSectors | Issues Read command to ATAPI device.
Ahci_AtaReadBlocks | ReadBlocks function of EFI_PEI_RECOVERY_BLOCK_IO_PPI. Input : IN EFI_PEI_SERVICES **PeiServices IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This IN UINTN DeviceIndex IN EFI_PEI_LBA StartLba IN UINTN BufferSize Output : OUT VOID *Buffer
Ahci_ReadSectors | Issues Read Command to the ATA device
AhciAtapiDetectMedia | Detects the ATAPI Media type. Input : IN EFI_PEI_SERVICES **PeiServices IN AHCI_RECOVERY_BLK_IO_DEV *AhciRecInterface IN UINTN DeviceIndex Output : None
AhciAtapiRecoveryPeimEntry | Installs EFI_PEI_RECOVERY_BLOCK_IO_PPI. Input : IN EFI_FFS_FILE_HEADER *FfsHeader IN EFI_PEI_SERVICES **PeiServices Output : EFI_SUCCESS -- EFI_PEI_RECOVERY_BLOCK_IO_PPI installed Successfully.
AhciAtaRecoveryPeimEntry | Installs EFI_PEI_RECOVERY_BLOCK_IO_PPI for AHCI devices.
AhciBusEntryPoint | Installs gAhciBusDriverBinding protocol
AhciBusStart | Installs AHCI Block IO Protocol
AhciBusStop | Uninstall all devices installed in start procedure.
AhciBusSupported | Checks whether EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID is installed on the controller. If 'yes', return SUCCESS else ERROR
AhciCommonSmmHandler | Common SMI handler for AHCI INT13 SMIs
AhciDetectDevice | Detects a SATA device connected to given Port and PMPort
AhciDetectDevice | Detects a SATA device connected to given Port and PMPort
AhciEnumerateDevices |
AhciInitController | Initializes AHCI Controller
AhciInitController | Initializes AHCI Controller
AhciInt13DxeEntry | This is entry point function. It registers a call back function for Legacy boot event.
AhciInt13SmiHandler | This is the SWSMI handler to service AHCI INT13 request. Operation: 1. Take INT13 parameters stored on real mode stack from CPU save state. 2. Call a sub-function to process INT13 request. 3. Update output parameters (IA registers) on real mode stack.
AhciInt13SmmEntry | Driver entry point function. It does following tasks: 1. Initializes global variables (gDriveInfoList, PciExpressBaseAddress etc.) 2. Register SMI handler to get information passed through SmmCommunicationProtocol API. 3. Register SW SMI handler to process AHCI INT13 requests. 4. Locate EFI_SMM_CPU_PROTOCOL for Read/Write from/to CPU save state
AhciInt13SmmEntryPoint | Entry point function for both DXE and SMM driver.
AhciMmioRead | Read from AHCI MMIO address
AhciMmioSmiHandler | SMI handler for the AHCI_MMIO_SWSMI SW SMI
AhciMmioSmmEntryPoint | Ahci MMIO access module entry Point
AhciMmioSmmInSmmFunction | Regsiter the AHCI_MMIO_SWSMI SMI
AhciMmioSmmSMIHandler | Smi handler for the AHCI_MMIO_SWSMI Sw Smi
AhciMmioWrite | Write to the AHCI MMIO Address
AhciSmmDriverEntryPoint | AHCI Smm driver Entry Point
AhciSmmExecuteDmaDataCommand | Exectue the DMA data command
AhciSmmExecuteNonDataCommand | Exectue the Non Data command
AhciSmmExecutePacketCommand | Execute a Atapi Packet command
AhciSmmExecutePioDataCommand | Exectue the PIO data command
AhciSmmInitPortOnS3Resume | Initilize the Sata port on S3 resume
AhciTestUnitReady | Issues Start/Stop unit Command
Ai13EntryPoint | Installs gAhciInt13Init protocol
AmiLegacyBootNotify | This function will be called upon legacy boot event. It collects information about all AHCI devices present in the system and send it to SMM so that AHCI INT13 SMI handler can use it. Operation: 1. Locate EFI_LEGACY_BIOS_PROTOCOL and get All BBS entries and look for entry corresponding to a drive in AHCI mode 2. If a valid entry is found then it will use AHCI INT13 runtime data and AHCI bus interface data to fill data required by AHCI INT13 SMI handler. 3. This newly created data structure will be transfered to SMM using SmmCommunicationProtocol API.

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

B

Function | Description
BuildAtapiCMD | Build ATAPI CMD.
BuildAtapiCMD |
BuildAtapiCMD |
BuildCommandFIS | Build Command FIS
BuildCommandFIS | Build Command FIS
BuildCommandFIS | Build Command FIS
BuildCommandList | Builds command list
BuildCommandList | Builds command list
BuildCommandList | Builds command list
BuildPRDT | Build PRDT table
BuildPRDT | Build PRDT table
BuildPRDT | Build PRDT table

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

C

Function | Description
CalcTranslatedCyl | Returns the CHS-translated number of cylinders
Check48BitCommand | Checks if the command is for 48-bit LBA
CheckDevicePresence | Check if any device is connected to the port
CheckDevicePresence | Check if any device is connected to the port
CheckErrorCode | It maps EFI_STATUS code to corresponding INT13 error code
CheckPMDevicePresence | Checks for the presence device behind a Port Multiplier.
CheckPortImplemented | Check if the port is implemented in the AHCI Controller
CheckPortImplemented | Check if the port is implemented in the AHCI Controller
CheckValidDevice | Check for valid ATA/ATAPI/PMPORT signature
CheckValidDevice | Check for valid ATA/ATAPI/PMPORT signature
ConfigureController | Configure the AHCI Controller
ConfigureDevice | Configure the SATA device
ConfigureHddParameter | This function fills the DEV_PARAM information for the drive.
ConfigurePMPort | Configure Port Multiplier
ConfigurePowerUpInStandby | Configure PowerUpInStandby
ConfigureSataPort | Configure Sata Port settings
CopyMemSmm | Copy Length bytes from Source to Destination.
CopyMemSmm | Copy Length bytes from Source to Destination.
CountDrives | This routine returns the number of connected AHCI drives as well as it fills the optional SATA_DEVICE_INTERFACE* buffer with the device information.
CreateAhciDriveString | This function generates the readable string with the name of device and the SATA port number this device is connected to.
CreateBbsEntry | This function creates BBS entry with the device data filled according to the actual device information.
CreateSataDevicePath | Creates a SATA device devicepath and adds it to SataDevInterface

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

D

Function | Description
DetectAndConfigureDevice | Detects and Configures Sata Device
DetectAndConfigureDevice | Detects and Configures Sata Device
DetectAtapiMedia | Detects whether a Media is present in the ATAPI Removable device or not.
DetectAtapiMedia | Detects whether a Media is present in the ATAPI Removable device or not.
DiskInfoIdentify | Return Identify Data
DiskInfoInquiry | Return ATAPI Inquiry data
DiskInfoSenseData | Return InfoSenseData.
DiskInfoWhichIDE | Returns info about where the device is connected.
DMACapable | Check if DMA is supported

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

E

Function | Description
ExecuteDmaDataCommand |
ExecuteNonDataCommand | Issue a Non-Data command to the SATA Device
ExecutePacketCommand | Execute a Atapi Packet command
ExecutePacketCommand | Execute a Atapi Packet command
ExecutePioDataCommand | Execute PIO Data In/Out command
ExecutePioDataCommand | Ececute PIO Data In/Out command

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

F

Function | Description
FindFreeDevEntry | Find the Free Entry on DeviceInfo Structure

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

G

Function | Description
GeneratePortReset | Issue a Port Reset
GeneratePortReset | Issue a Port Reset
GeneratePortReset | Issue a Port Reset
GenerateSoftReset | Generate Soft Reset
GetAhciInt13SmmData | Saves AINT13 information passed from Non-SMM mode using EFI_SMM_COMMUNICATION_PROTOCOL API. This is required for below reason: 1)AhciSmmProtocol use port number, but Int13 service uses drive number. 2)AhciSmmProtocol use LBA addressing on HDD, but Int13 Read/Write function uses Cylinder, Header and Sector addressing on HDD.
GetDriveInfoByDriveNum | It returns the drive information corresponding to input drive number, if found.
GetEnumOddType | Get the Enum value for ODD type found on profile
GetIdentifyData | Return Identify data from SATA device
GetIdentifyData | Reaturn Identify data from SATA device
GetNumberOfSectors | Returns the total number of sectors from IDENTIFY_DATA
GetSataDevInterface |

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

H

Function | Description
HandleAtapiError | Check for ATAPI Errors
HandleAtapiError | Check for ATAPI Errors
HandleAtapiError | Check for ATAPI Errors
HandlePortComReset | Check if COM Reset is successful or not
HandlePortComReset | Check if COM Reset is successful or not
HandlePortComReset | Check if COM Reset is successful or not
HostReset |

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

I

Function | Description
InitAcousticSupport | Initialize Acoustic functionality
InitAhciCd | This function initializes AHCI CD/DVDROM device information.
InitAhciDev | This function initializes AHCI device specific information.
InitAhciHddDev | This function initializes the AHCI HD drive specific information.
InitAhciInt13Support | LegacyAhci driver API function. It initializes drive infomation and places it in BBS table as well as in AHCI INT13 runtime area.
InitCspData | Initialization of chipset specific fields of AHCI runtime (INT 13) code.
InitDrivesInformation | Initialization of data structures and placement of runtime code of AHCI INT13
InitializeAhciI13Data | It initializes AHCI INT13 runtime data pointer (gAhciI13Data).
InitializeDeviceSleep | Initialize Device Sleep in the device and controller
InitializeDipm | Initialize Dipm in the device and controller
InitMiscConfig | Initialize misc IDE configurations.
InitSataBlockIO | Initializes SATA Block IO interface
InitSataDiskInfo | Initializes SATA DiskInfo Interface
InSmmFunction | This function is called from SMM during SMM registration.
InstallAhciBusProtocol | Installs BUS Init Protocol on the IDE controller Handle
Is48BitCommand | Check if input command is a LBA48 command
IsDmaCommand | Check if input command is a DMA command
IsSataDeviceInAhciMode | Check input BBS device is a SATA DEVICE in AHCI mode.

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

N

Function | Description
NotifyOnAhciRecoveryCapsuleLoaded | This routine resets the Ahci Controller on end of Pei when Ahci Recovery Capsule Loaded.

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

P

Function | Description
ProcessInt13Function | Worker function to service AHCI INT13 request. Currently it supports Read/Write function only. Operation: 1. Parse information passed as IA registers to parameter required by AMI_AHCI_BUS_SMM_PROTOCOL APIs. 2. Call appropriate AMI_AHCI_BUS_SMM_PROTOCOL API.

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

R

Function | Description
ReadDataDword | Read the Dword Data using Index/Data access method
ReadSCRRegister | Read from SCONTROL/Serror/SStatus register.
ReadSCRRegister |
ReadSCRRegister |
ReadWritePMPort | Read/Write routine to PM ports
ReadWritePMPort | Read/Write routine to PM ports
ReadytoAcceptCmd | Check if the device is ready to accept cmd.
ReadytoAcceptCmd | Check if the device is ready to accept cmd.
ReadytoAcceptCmd | Check if the device is ready to accept cmd.
ReturnMSBset | Returns the MOST significant Bit set.

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

S

Function | Description
SataAtaBlkReadWrite | Read/Write to/from Sata ATA Device
SataAtapiBlkRead | Read from the Sata ATAPI Device
SataAtapiBlkReadWrite | Read/Write to/from Sata ATAPI Device
SataAtapiBlkWrite | Write to Sata ATAPI Device
SataAtapiInquiryData | Return ATAPI Inquiry data
SataBlkFlush | Flush the cache
SataBlkRead | Read from the Sata ATA Device
SataBlkWrite | Write to Sata ATA Device
SataCheckOddType | Return ODD type
SataGetOddLoadingType | Return ODD Loading type information
SataPioDataOut | Issues Read/Write Command with SubCommand feature and Reads/Writes data to the ATA device.
SataReadWriteBusMaster | Issues Read/Write Command and Read/Write the data from/to the ATA device using BusMaster
SataReadWritePio | Issues Read/Write Command and Read/Write the data from/to the ATA device
SataReset | Reset ATA device
SetEbdaAddressForPort | This function will be called when Legacy boot Event Signled This function will set the EBDA address for PxCLB and PxFB
Stall | Stalls for the Required Amount of MicroSeconds
StartController | Starts SATA controller.
StartController |
StartController |
StopController | Stop FIS and CR
StopController | Stop FIS and CR
StopController | Stop FIS and CR

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

T

Function | Description
TestUnitReady | Issues Start/Stop unit Command
TransferAhciInt13SmmDataToSmm | It uses EFI_SMM_COMMUNICATION_PROTOCOL API to transfer data from Non-SMM mode to SMM mode.
TranslateHdSec | This function returns the translated max #of heads (1-based), number of cylinders and sectors/track.

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

U

Function | Description
UpdateControllerInfoToLegacy | This function will check if the BusDevFunc is existing in the array, if it exist then it returns EFI_SUCCESS and if not then it will add BusDevFunc into the array and returns EFI_NOT_FOUND.

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

W

Function | Description
WaitforCommandComplete | Wait till cmd completes
WaitforCommandComplete | Wait till cmd completes
WaitforCommandComplete | Wait till cmd completes
WaitForMemClear | Wait for memory to be set to the test value.
WaitForMemClear | Wait for memory to be set to the test value.
WaitForMemClear | Wait for memory to be set to the test value.
WaitForMemSet | Wait for memory to be set to the test value.
WaitForMemSet | Wait for memory to be set to the test value.
WaitForMemSet | Wait for memory to be set to the test value.
WaitforPMMemSet | Wait for memory to be set to the test value.
WaitforPMMemSet | Wait for memory to be set to the test value.
WriteDataByte | WriteRead the Dword Data using Index/Data access method
WriteDataDword | WriteRead the Dword Data using Index/Data access method
WriteSCRRegister | Write to SCONTROL/Serror/SStatus register
WriteSCRRegister | Write to SCONTROL/Serror/SStatus register
WriteSCRRegister | Write to SCONTROL/Serror/SStatus register

Built on 17:22:29 01/07/15


Functions in Alphabetical Order

Z

Function | Description
ZeroMem | Clear the Memory Input : IN VOID *Buffer IN UINTN Size Output : None
ZeromemorySmm | Clears the buffer

Built on 17:22:29 01/07/15


General Information