From 8d722116c290ffd9efb7bc3b11d8946c1c7bb68f Mon Sep 17 00:00:00 2001 From: Marcus Overhagen Date: Sat, 10 Nov 2007 16:25:49 +0000 Subject: [PATCH] Enable SATA ports 5 and 6 on Intel ICH8 and ICH9 based systems, and possibly enable ports 7 and 8 in the future. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22869 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/busses/scsi/ahci/ahci_controller.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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 599e809672..3fc4aeb694 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp @@ -251,9 +251,13 @@ AHCIController::ResetController() if (fPCIVendorID == PCI_VENDOR_INTEL) { // Intel PCS—Port Control and Status - // In AHCI enabled systems, bits[3:0] must always be set - gPCI->write_pci_config(fPCIDevice, 0x92, 2, - 0xf | gPCI->read_pci_config(fPCIDevice, 0x92, 2)); + // SATA port enable bits must be set + int portCount = 1 + ((fRegs->cap >> CAP_NP_SHIFT) & CAP_NP_MASK); + if (portCount > 8) + panic("Intel AHCI: too many SATA ports! Please report at http://dev.haiku-os.org"); + uint16 pcs = gPCI->read_pci_config(fPCIDevice, 0x92, 2); + pcs |= (0xff >> (8 - portCount)); + gPCI->write_pci_config(fPCIDevice, 0x92, 2, pcs); } return B_OK; }