diff --git a/Kernel/PCI/Access.cpp b/Kernel/PCI/Access.cpp index 3be0c716d2..85c3f42abc 100644 --- a/Kernel/PCI/Access.cpp +++ b/Kernel/PCI/Access.cpp @@ -187,6 +187,24 @@ ID get_id(Address address) return { read16(address, PCI_VENDOR_ID), read16(address, PCI_DEVICE_ID) }; } +void enable_io_space(Address address) +{ + write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) | (1 << 0)); +} +void disable_io_space(Address address) +{ + write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) & ~(1 << 0)); +} + +void enable_memory_space(Address address) +{ + write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) | (1 << 1)); +} +void disable_memory_space(Address address) +{ + write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) & ~(1 << 1)); +} + void enable_interrupt_line(Address address) { write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) & ~(1 << 10)); diff --git a/Kernel/PCI/Definitions.h b/Kernel/PCI/Definitions.h index c1c9b1ceaf..0be1437abc 100644 --- a/Kernel/PCI/Definitions.h +++ b/Kernel/PCI/Definitions.h @@ -227,6 +227,10 @@ Optional get_capabilities_pointer(Address); Vector get_capabilities(Address); void enable_bus_mastering(Address); void disable_bus_mastering(Address); +void enable_io_space(Address); +void disable_io_space(Address); +void enable_memory_space(Address); +void disable_memory_space(Address); PhysicalID get_physical_id(Address address); class Access;