diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-20 15:24:53 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-20 15:24:53 +0100 |
| commit | b3795cedd8f6409f52157f34e9acc8af9143e320 (patch) | |
| tree | 8d5492572b90f6122f75f5f9365d58007a244e6b /dev/Kernel | |
| parent | d1b7d34c43ec463815c448e7677fc64ec936504a (diff) | |
AHCI-Generic.cc: Disk Driver builtin improvements.
- Poll for CR in ahci_enable_and_probe.
- Init NeFS, not an AHCI device for portability.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel')
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalKernelMain.cc | 2 | ||||
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc index 0e2247ad..e87e6fb1 100644 --- a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc +++ b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc @@ -94,7 +94,7 @@ EXTERN_C void hal_init_platform( EXTERN_C NeOS::Void hal_real_init(NeOS::Void) noexcept { - auto dev = NeOS::sk_init_ahci_device(NO); + NeOS::NeFS::fs_init_nefs(); NeOS::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); diff --git a/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc b/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc index 51db8054..ae0ae239 100644 --- a/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc +++ b/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc @@ -73,7 +73,7 @@ STATIC Void drv_compute_disk_ahci() noexcept { kSATASectorCount = 0UL; - const UInt16 kSzIdent = 512; + const UInt16 kSzIdent = kib_cast(1); UInt8 identify_data[kSzIdent] = {0}; @@ -205,6 +205,7 @@ SizeT drv_get_size_ahci() return drv_get_sector_count() * kAHCISectorSize; } +/// @brief Enable Host and probe using the IDENTIFY command. STATIC Void ahci_enable_and_probe() { if (kSATAHba->Bohc & kHBABohcBiosOwned) @@ -213,9 +214,16 @@ STATIC Void ahci_enable_and_probe() while (kSATAHba->Bohc & kHBABohcBiosOwned) { + ; } } + // Poll until ready. + while (kSATAHba->Ports[kSATAIndex].Cmd & kHBAPxCmdCR) + { + ; + } + kSATAHba->Ports[kSATAIndex].Cmd |= kHBAPxCmdFre; kSATAHba->Ports[kSATAIndex].Cmd |= kHBAPxCmdST; |
