Skip to content
Snippets Groups Projects
Commit 17ce08bc authored by Guy Zana's avatar Guy Zana
Browse files

Implemented pci bar size test

parent b3eb642f
No related branches found
No related tags found
No related merge requests found
...@@ -44,18 +44,32 @@ namespace pci { ...@@ -44,18 +44,32 @@ namespace pci {
void pci_bar::test_bar_size(void) void pci_bar::test_bar_size(void)
{ {
#if 0 u32 lo_orig = _dev->pci_readl(_pos);
u32 val = _dev->pci_readl(_pos);
// Size test // Size test
_dev->pci_writel(_pos, 0xFFFFFFFF); _dev->pci_writel(_pos, 0xFFFFFFFF);
u32 bits = _dev->pci_readl(_pos); u32 lo = _dev->pci_readl(_pos);
// Restore
_dev->pci_writel(_pos, lo_orig);
if (is_pio()) {
lo &= PCI_BAR_PIO_ADDR_MASK;
} else {
lo &= PCI_BAR_MEM_ADDR_LO_MASK;
}
// TODO: Implement u32 hi = 0xFFFFFFFF;
// Restore if (is_64()) {
_dev->pci_writel(_pos, val); u32 hi_orig = _dev->pci_readl(_pos+4);
#endif _dev->pci_writel(_pos+4, 0xFFFFFFFF);
hi = _dev->pci_readl(_pos+4);
// Restore
_dev->pci_writel(_pos+4, hi_orig);
}
u64 bits = (u64)hi << 32 | lo;
_addr_size = ~bits + 1;
} }
pci_function::pci_function(u8 bus, u8 device, u8 func) pci_function::pci_function(u8 bus, u8 device, u8 func)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment