Ver Fonte

Kernel: Add PCI::get_BAR convenience method

Based on pull #3236 by tomuta

Co-authored-by: Tom <tomut@yahoo.com>
Idan Horowitz há 4 anos atrás
pai
commit
40a1f89d67
2 ficheiros alterados com 22 adições e 0 exclusões
  1. 21 0
      Kernel/PCI/Access.cpp
  2. 1 0
      Kernel/PCI/Definitions.h

+ 21 - 0
Kernel/PCI/Access.cpp

@@ -252,6 +252,27 @@ u32 get_BAR5(Address address)
     return read32(address, PCI_BAR5);
 }
 
+u32 get_BAR(Address address, u8 bar)
+{
+    ASSERT(bar <= 5);
+    switch (bar) {
+    case 0:
+        return get_BAR0(address);
+    case 1:
+        return get_BAR1(address);
+    case 2:
+        return get_BAR2(address);
+    case 3:
+        return get_BAR3(address);
+    case 4:
+        return get_BAR4(address);
+    case 5:
+        return get_BAR5(address);
+    default:
+        ASSERT_NOT_REACHED();
+    }
+}
+
 u8 get_revision_id(Address address)
 {
     return read8(address, PCI_REVISION_ID);

+ 1 - 0
Kernel/PCI/Definitions.h

@@ -235,6 +235,7 @@ u32 get_BAR2(Address);
 u32 get_BAR3(Address);
 u32 get_BAR4(Address);
 u32 get_BAR5(Address);
+u32 get_BAR(Address address, u8 bar);
 u8 get_revision_id(Address);
 u8 get_programming_interface(Address);
 u8 get_subclass(Address);