summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-03-19 04:43:07 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-03-19 04:43:07 +0100
commit000c92f292800efb6b88ac12af1680ec29ba61c9 (patch)
treeb5014376f8935d47f12c6a8db008a5d7478ad988 /dev
parentcaf91d403f827709235ef51cf84d1c5cd9b8e5ed (diff)
ADD: AHCI+Generic.cc: ahci_enable_and_probe has been added to apply the
DRY principle on drv_std_init_ahci. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev')
-rw-r--r--dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc34
1 files changed, 19 insertions, 15 deletions
diff --git a/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc b/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
index f29a48c2..ffc5cfea 100644
--- a/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
+++ b/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc
@@ -205,6 +205,23 @@ SizeT drv_get_size_ahci()
return drv_get_sector_count() * kAHCISectorSize;
}
+STATIC Void ahci_enable_and_probe()
+{
+ if (kSATAHba->Bohc & kHBABohcBiosOwned)
+ {
+ kSATAHba->Bohc |= kHBABohcOSOwned;
+
+ while (kSATAHba->Bohc & kHBABohcBiosOwned)
+ {
+ }
+ }
+
+ kSATAHba->Ports[kSATAIndex].Cmd |= kHBAPxCmdFre;
+ kSATAHba->Ports[kSATAIndex].Cmd |= kHBAPxCmdST;
+
+ drv_compute_disk_ahci();
+}
+
/// @brief Initializes an AHCI disk.
/// @param pi the amount of ports that have been detected.
/// @return if the disk was successfully initialized or not.
@@ -253,19 +270,7 @@ STATIC Bool drv_std_init_ahci(UInt16& pi, BOOL atapi)
kSATAIndex = ahci_index;
kSATAHba = mem_ahci;
- if (kSATAHba->Bohc & kHBABohcBiosOwned)
- {
- kSATAHba->Bohc |= kHBABohcOSOwned;
-
- while (kSATAHba->Bohc & kHBABohcBiosOwned)
- {
- }
- }
-
- kSATAHba->Ports[kSATAIndex].Cmd |= kHBAPxCmdFre;
- kSATAHba->Ports[kSATAIndex].Cmd |= kHBAPxCmdST;
-
- drv_compute_disk_ahci();
+ ahci_enable_and_probe();
break;
}
@@ -276,8 +281,7 @@ STATIC Bool drv_std_init_ahci(UInt16& pi, BOOL atapi)
kSATAIndex = ahci_index;
kSATAHba = mem_ahci;
- kSATAHba->Ports[kSATAIndex].Cmd |= kHBAPxCmdFre;
- kSATAHba->Ports[kSATAIndex].Cmd |= kHBAPxCmdST;
+ ahci_enable_and_probe();
drv_compute_disk_ahci();