1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 19:37:35 +00:00

Kernel/PCI: Add helpers to enable IO and memory accesses

This commit is contained in:
Liav A 2021-04-16 17:19:29 +03:00 committed by Andreas Kling
parent a2a7986527
commit ecf897f7c4
2 changed files with 22 additions and 0 deletions

View file

@ -187,6 +187,24 @@ ID get_id(Address address)
return { read16(address, PCI_VENDOR_ID), read16(address, PCI_DEVICE_ID) }; 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) void enable_interrupt_line(Address address)
{ {
write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) & ~(1 << 10)); write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) & ~(1 << 10));

View file

@ -227,6 +227,10 @@ Optional<u8> get_capabilities_pointer(Address);
Vector<Capability> get_capabilities(Address); Vector<Capability> get_capabilities(Address);
void enable_bus_mastering(Address); void enable_bus_mastering(Address);
void disable_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); PhysicalID get_physical_id(Address address);
class Access; class Access;