summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel/src/DriveMgr.cc
diff options
context:
space:
mode:
authorAmlal <amlal.elmahrouss@icloud.com>2025-02-14 21:34:09 +0100
committerAmlal <amlal.elmahrouss@icloud.com>2025-02-14 21:34:09 +0100
commit0db25895168df6ebb9bd8781e3ffd83d3323b398 (patch)
tree4687d3756b875b512360b2f2a4788b73897a8c17 /dev/Kernel/src/DriveMgr.cc
parentcb1c2ac48b29309406580f506765585b13f59852 (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.cc20
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__)
}