Skip to content

Commit ecf897f

Browse files
supercomputer7awesomekling
authored andcommitted
Kernel/PCI: Add helpers to enable IO and memory accesses
1 parent a2a7986 commit ecf897f

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

Kernel/PCI/Access.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,24 @@ ID get_id(Address address)
187187
return { read16(address, PCI_VENDOR_ID), read16(address, PCI_DEVICE_ID) };
188188
}
189189

190+
void enable_io_space(Address address)
191+
{
192+
write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) | (1 << 0));
193+
}
194+
void disable_io_space(Address address)
195+
{
196+
write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) & ~(1 << 0));
197+
}
198+
199+
void enable_memory_space(Address address)
200+
{
201+
write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) | (1 << 1));
202+
}
203+
void disable_memory_space(Address address)
204+
{
205+
write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) & ~(1 << 1));
206+
}
207+
190208
void enable_interrupt_line(Address address)
191209
{
192210
write16(address, PCI_COMMAND, read16(address, PCI_COMMAND) & ~(1 << 10));

Kernel/PCI/Definitions.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,10 @@ Optional<u8> get_capabilities_pointer(Address);
227227
Vector<Capability> get_capabilities(Address);
228228
void enable_bus_mastering(Address);
229229
void disable_bus_mastering(Address);
230+
void enable_io_space(Address);
231+
void disable_io_space(Address);
232+
void enable_memory_space(Address);
233+
void disable_memory_space(Address);
230234
PhysicalID get_physical_id(Address address);
231235

232236
class Access;

0 commit comments

Comments
 (0)