diff --git a/src/add-ons/kernel/busses/scsi/ahci/ahci.c b/src/add-ons/kernel/busses/scsi/ahci/ahci.c index b66056e55c..199a8ef2e4 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/ahci.c +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci.c @@ -148,6 +148,10 @@ ahci_register_device(device_node_handle parent) if (status < B_OK) return status; + // HACK! this device manager stuff just sucks! + extern pci_device pd; + pd = *pciDevice; + // TODO: register SIM for every controller we find! return register_sim(node); } 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 c6b1ad5a86..22694348f7 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp @@ -9,28 +9,31 @@ #define TRACE(a...) dprintf("\33[34mahci:\33[30m " a) #define FLOW(a...) dprintf("ahci: " a) +// HACK! this device manager stuff just sucks! +pci_device pd; -AHCIController::AHCIController(device_node_handle node, pci_device_module_info *pci, scsi_for_sim_interface * scsi) +AHCIController::AHCIController(device_node_handle node, pci_device_module_info *pci, scsi_for_sim_interface *scsi) : fNode(node) , fPCI(pci) , fSCSI(scsi) + , fPCIDevice(0) , fDevicePresentMask(0) { + // HACK! this device manager stuff just sucks! + fPCIDevice = pd; fDevicePresentMask = (1 << 7) | (1 << 19); -#if 0 uchar cap_ofs; - status_t res = fPCI->find_pci_capability(device, PCI_cap_id_sata, &cap_ofs); + status_t res = fPCI->find_pci_capability(fPCIDevice, PCI_cap_id_sata, &cap_ofs); if (res == B_OK) { uint32 satacr0; uint32 satacr1; TRACE("PCI SATA capability found at offset 0x%x\n", cap_ofs); - satacr0 = pci->read_pci_config(device, cap_ofs, 4); - satacr1 = pci->read_pci_config(device, cap_ofs + 4, 4); - TRACE("satacr0 = 0x%08x, satacr1 = 0x%08x\n", satacr0, satacr1); + satacr0 = fPCI->read_pci_config(fPCIDevice, cap_ofs, 4); + satacr1 = fPCI->read_pci_config(fPCIDevice, cap_ofs + 4, 4); + TRACE("satacr0 = 0x%08lx, satacr1 = 0x%08lx\n", satacr0, satacr1); } -#endif } diff --git a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.h b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.h index 4403b197af..0b461399cc 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.h +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.h @@ -28,7 +28,8 @@ private: private: device_node_handle fNode; pci_device_module_info * fPCI; - scsi_for_sim_interface * fSCSI; + scsi_for_sim_interface * fSCSI; + pci_device fPCIDevice; uint32 fDevicePresentMask; };