From 6c9f2e94e7c3aba5b34ca9970fdfbf04ac0a3913 Mon Sep 17 00:00:00 2001 From: Marcus Overhagen Date: Fri, 14 Sep 2012 18:19:11 +0200 Subject: [PATCH] set GHC.AE before performing reset (should be done by BIOS already) --- src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp index 311825f88b..cf60573018 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp @@ -266,6 +266,10 @@ AHCIController::ResetController() uint32 saveCaps = fRegs->cap & (CAP_SMPS | CAP_SSS | CAP_SPM | CAP_EMS | CAP_SXS); uint32 savePI = fRegs->pi; + // AHCI 1.3: Software may perform an HBA reset prior to initializing the controller + // by setting GHC.AE to ‘1’ and then setting GHC.HR to ‘1’ if desired. + fRegs->ghc |= GHC_AE; + FlushPostedWrites(); fRegs->ghc |= GHC_HR; FlushPostedWrites(); if (wait_until_clear(&fRegs->ghc, GHC_HR, 1000000) < B_OK)