Kernel: ATABuses are but to compatibility mode if possible
I don't support native mode ata bus (irq sharing) so ata buses are but to compatibility mode if possible.
This commit is contained in:
parent
b767317a7a
commit
48980b56ab
|
@ -1,7 +1,9 @@
|
|||
#pragma once
|
||||
|
||||
#define ATA_PROGIF_PRIMARY_NATIVE (1 << 0)
|
||||
#define ATA_PROGIF_SECONDARY_NATIVE (1 << 2)
|
||||
#define ATA_PROGIF_PRIMARY_NATIVE (1 << 0)
|
||||
#define ATA_PROGIF_CAN_MODIFY_PRIMARY_NATIVE (1 << 1)
|
||||
#define ATA_PROGIF_SECONDARY_NATIVE (1 << 2)
|
||||
#define ATA_PROGIF_CAN_MODIFY_SECONDARY_NATIVE (1 << 3)
|
||||
|
||||
#define ATA_PORT_DATA 0x00
|
||||
#define ATA_PORT_ERROR 0x00
|
||||
|
|
|
@ -41,6 +41,20 @@ namespace Kernel
|
|||
|
||||
uint8_t prog_if = m_pci_device.read_byte(0x09);
|
||||
|
||||
if ((prog_if & ATA_PROGIF_CAN_MODIFY_PRIMARY_NATIVE) && (prog_if & ATA_PROGIF_PRIMARY_NATIVE))
|
||||
{
|
||||
prog_if &= ~ATA_PROGIF_PRIMARY_NATIVE;
|
||||
m_pci_device.write_byte(0x09, prog_if);
|
||||
dprintln("enabling compatibility mode for bus 1");
|
||||
}
|
||||
|
||||
if ((prog_if & ATA_PROGIF_CAN_MODIFY_SECONDARY_NATIVE) && (prog_if & ATA_PROGIF_SECONDARY_NATIVE))
|
||||
{
|
||||
prog_if &= ~ATA_PROGIF_SECONDARY_NATIVE;
|
||||
m_pci_device.write_byte(0x09, prog_if);
|
||||
dprintln("enabling compatibility mode for bus 2");
|
||||
}
|
||||
|
||||
if (!(prog_if & ATA_PROGIF_PRIMARY_NATIVE))
|
||||
{
|
||||
auto bus_or_error = ATABus::create(0x1F0, 0x3F6, 14);
|
||||
|
@ -54,7 +68,6 @@ namespace Kernel
|
|||
dprintln("unsupported IDE ATABus in native mode");
|
||||
}
|
||||
|
||||
// BUS 2
|
||||
if (!(prog_if & ATA_PROGIF_SECONDARY_NATIVE))
|
||||
{
|
||||
auto bus_or_error = ATABus::create(0x170, 0x376, 15);
|
||||
|
|
Loading…
Reference in New Issue