diff options
| author | Amlal <amlal.elmahrouss@icloud.com> | 2025-02-17 08:52:03 +0100 |
|---|---|---|
| committer | Amlal <amlal.elmahrouss@icloud.com> | 2025-02-17 08:52:03 +0100 |
| commit | 8abfbf50f6f0cca4184cfb602a68027f99d500ca (patch) | |
| tree | 61337db2be7ca95c3e5e894fcb478fbf5c7f38c8 /dev/Kernel/HALKit/AMD64/Storage/SATA.cc | |
| parent | 5e6b090e8caafe81d58b92198579fd006fb7b6a3 (diff) | |
Storage: Improve PIO and SATA drivers.
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/HALKit/AMD64/Storage/SATA.cc')
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/Storage/SATA.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/dev/Kernel/HALKit/AMD64/Storage/SATA.cc b/dev/Kernel/HALKit/AMD64/Storage/SATA.cc index 70fd5cb4..f0d99d31 100644 --- a/dev/Kernel/HALKit/AMD64/Storage/SATA.cc +++ b/dev/Kernel/HALKit/AMD64/Storage/SATA.cc @@ -65,14 +65,14 @@ static Kernel::Void drvi_calculate_disk_geometry() noexcept Kernel::UInt8* identify_data = new Kernel::UInt8[512]; - drvi_std_input_output<NO, YES, YES>(0, identify_data, 0, 512); + drvi_std_input_output<NO, NO, YES>(0, identify_data, 0, 512); kCurrentDiskSectorCount = (identify_data[61] << 16) | identify_data[60]; for (Kernel::Int32 i = 0; i < 20; i++) { kCurrentDiskModel[i * 2] = identify_data[27 + i] >> 8; - kCurrentDiskModel[i * 2 + 1] = identify_data[27 + i] & 0xFF; + kCurrentDiskModel[i * 2 + 1] = identify_data[27 + i + 1] & 0xFF; } kCurrentDiskModel[40] = '\0'; @@ -208,7 +208,7 @@ static Kernel::Void drvi_std_input_output(Kernel::UInt64 lba, Kernel::UInt8* buf command_table->Prdt[0].Dbau = (((Kernel::UInt64)phys_dma_buf >> 32)); command_table->Prdt[0].Dba = ((Kernel::UInt32)(Kernel::UInt64)phys_dma_buf); command_table->Prdt[0].Dbc = ((size_buffer)-1); - command_table->Prdt[0].Ie = 0; + command_table->Prdt[0].Ie = 1; FisRegH2D* h2d_fis = (FisRegH2D*)((Kernel::UInt64)&command_table->Cfis); @@ -236,7 +236,7 @@ static Kernel::Void drvi_std_input_output(Kernel::UInt64 lba, Kernel::UInt8* buf if (kSATA->Is & kHBAErrTaskFile) Kernel::ke_panic(RUNTIME_CHECK_BAD_BEHAVIOR, "AHCI Read disk failure, faulty component."); - kSATA->Ports[kSATAPortIdx].Ie = 0; + kSATA->Ports[kSATAPortIdx].Ie = 1; kSATA->Ports[kSATAPortIdx].Cmd = kHBAPxCmdFR | kHBAPxCmdST; kSATA->Ports[kSATAPortIdx].Ci = (1 << slot); |
