diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-19 04:43:07 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-19 04:43:07 +0100 |
| commit | 000c92f292800efb6b88ac12af1680ec29ba61c9 (patch) | |
| tree | b5014376f8935d47f12c6a8db008a5d7478ad988 /dev/Kernel/HALKit | |
| parent | caf91d403f827709235ef51cf84d1c5cd9b8e5ed (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/Kernel/HALKit')
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc | 34 |
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(); |
