diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-04-05 06:34:10 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-05 06:34:10 +0200 |
| commit | b18c5e09961d8bc0b2368176d9fb23789afebb87 (patch) | |
| tree | 0f29fbbe829f4d276b0bc3088138c81157fc4c73 /dev/kernel/HALKit/AMD64/Storage | |
| parent | f085fd23cd23edfac585d326786b9a42b04da344 (diff) | |
| parent | 9b7a2a6461a463b08a120c660fcc64b46b65d417 (diff) | |
Merge pull request #11 from amlel-el-mahrouss/dev
pr: a big commit regarding MBCI, AHCI, and others.
Diffstat (limited to 'dev/kernel/HALKit/AMD64/Storage')
| -rw-r--r-- | dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc index f74db6c0..8d053d8b 100644 --- a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc +++ b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc @@ -252,8 +252,11 @@ SizeT drv_get_size_ahci() } /// @brief Enable Host and probe using the IDENTIFY command. -STATIC Void ahci_enable_and_probe() +STATIC BOOL ahci_enable_and_probe() { + if (kSATAHba->Cap == 0x0) + return NO; + kSATAHba->Ports[kSATAIndex].Cmd &= ~kHBAPxCmdFre; kSATAHba->Ports[kSATAIndex].Cmd &= ~kHBAPxCmdST; @@ -324,6 +327,8 @@ STATIC Void ahci_enable_and_probe() } drv_compute_disk_ahci(); + + return YES; } /// @brief Initializes an AHCI disk. @@ -372,22 +377,24 @@ STATIC Bool drv_std_init_ahci(UInt16& pi, BOOL& atapi) kSATAIndex = ahci_index; kSATAHba = mem_ahci; - ahci_enable_and_probe(); + if (ahci_enable_and_probe()) + { + err_global_get() = kErrorSuccess; - err_global_get() = kErrorSuccess; - - return YES; + return YES; + } } else if (atapi && kSATAPISignature == mem_ahci->Ports[ahci_index].Sig) { kSATAIndex = ahci_index; kSATAHba = mem_ahci; - ahci_enable_and_probe(); - - err_global_get() = kErrorSuccess; + if (ahci_enable_and_probe()) + { + err_global_get() = kErrorSuccess; - return YES; + return YES; + } } ports_implemented >>= 1; |
