{\r
UINT64 Delay;\r
UINT32 Value;\r
- UINT32 Capability;\r
\r
//\r
- // Collect AHCI controller information\r
- //\r
- Capability = AhciReadReg (PciIo, EFI_AHCI_CAPABILITY_OFFSET);\r
- \r
- //\r
- // Enable AE before accessing any AHCI registers if Supports AHCI Mode Only is not set\r
+ // Make sure that GHC.AE bit is set before accessing any AHCI registers.\r
//\r
- if ((Capability & EFI_AHCI_CAP_SAM) == 0) {\r
+ Value = AhciReadReg(PciIo, EFI_AHCI_GHC_OFFSET);\r
+\r
+ if ((Value & EFI_AHCI_GHC_ENABLE) == 0) {\r
AhciOrReg (PciIo, EFI_AHCI_GHC_OFFSET, EFI_AHCI_GHC_ENABLE);\r
}\r
\r
EFI_ATA_COLLECTIVE_MODE *SupportedModes;\r
EFI_ATA_TRANSFER_MODE TransferMode;\r
UINT32 PhyDetectDelay;\r
+ UINT32 Value;\r
\r
if (Instance == NULL) {\r
return EFI_INVALID_PARAMETER;\r
// Collect AHCI controller information\r
//\r
Capability = AhciReadReg (PciIo, EFI_AHCI_CAPABILITY_OFFSET);\r
- \r
+\r
//\r
- // Enable AE before accessing any AHCI registers if Supports AHCI Mode Only is not set\r
+ // Make sure that GHC.AE bit is set before accessing any AHCI registers.\r
//\r
- if ((Capability & EFI_AHCI_CAP_SAM) == 0) {\r
+ Value = AhciReadReg(PciIo, EFI_AHCI_GHC_OFFSET);\r
+\r
+ if ((Value & EFI_AHCI_GHC_ENABLE) == 0) {\r
AhciOrReg (PciIo, EFI_AHCI_GHC_OFFSET, EFI_AHCI_GHC_ENABLE);\r
}\r
\r