diff options
| author | Amlal <amlal.elmahrouss@icloud.com> | 2025-02-14 21:34:09 +0100 |
|---|---|---|
| committer | Amlal <amlal.elmahrouss@icloud.com> | 2025-02-14 21:34:09 +0100 |
| commit | 0db25895168df6ebb9bd8781e3ffd83d3323b398 (patch) | |
| tree | 4687d3756b875b512360b2f2a4788b73897a8c17 /dev/Kernel/src/DriveMgr.cc | |
| parent | cb1c2ac48b29309406580f506765585b13f59852 (diff) | |
A set of patches and necessary changes given to the OS.
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/src/DriveMgr.cc')
| -rw-r--r-- | dev/Kernel/src/DriveMgr.cc | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/dev/Kernel/src/DriveMgr.cc b/dev/Kernel/src/DriveMgr.cc index bc3caeac..4240f158 100644 --- a/dev/Kernel/src/DriveMgr.cc +++ b/dev/Kernel/src/DriveMgr.cc @@ -24,6 +24,10 @@ namespace Kernel STATIC UInt8 kATAMaster = 0U; #endif +#if defined(__AHCI__) + STATIC UInt16 kAHCIPortsImplemented = 0UL; +#endif + /// @brief reads from an ATA drive. /// @param pckt Packet structure (fPacketContent must be non null) /// @return @@ -42,7 +46,10 @@ namespace Kernel Void io_drv_output(DriveTrait::DrivePacket pckt) { if (pckt.fPacketReadOnly) + { + pckt.fPacketGood = NO; return; + } #ifdef __AHCI__ drv_std_write(pckt.fPacketLba, (Char*)pckt.fPacketContent, kAHCISectorSize, pckt.fPacketSize); @@ -59,10 +66,8 @@ namespace Kernel #if defined(__ATA_PIO__) || defined(__ATA_DMA__) kATAMaster = 0; kATAIO = 0; -#endif -#if defined(__ATA_PIO__) || defined(__ATA_DMA__) - kATAMaster = true; + kATAMaster = YES; kATAIO = ATA_PRIMARY_IO; if (drv_std_init(kATAIO, kATAMaster, kATAIO, kATAMaster)) @@ -71,22 +76,25 @@ namespace Kernel return; } - kATAMaster = false; + kATAMaster = NO; kATAIO = ATA_SECONDARY_IO; if (!drv_std_init(kATAIO, kATAMaster, kATAIO, kATAMaster)) { + pckt.fPacketGood = YES; return; } pckt.fPacketGood = YES; #elif defined(__AHCI__) - UInt16 pi = 0; + kAHCIPortsImplemented = 0; - if (!drv_std_init(pi)) + if (!drv_std_init(kAHCIPortsImplemented)) { return; } + + pckt.fPacketGood = YES; #endif // if defined(__ATA_PIO__) || defined (__ATA_DMA__) } |
