From 000c92f292800efb6b88ac12af1680ec29ba61c9 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Wed, 19 Mar 2025 04:43:07 +0100 Subject: 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 --- dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc | 34 ++++++++++++++----------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'dev/Kernel') 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(); -- cgit v1.2.3