Dump xHCI extended capabilities
This commit is contained in:
parent
14bb3adf37
commit
4814b51daf
@ -177,6 +177,47 @@ struct XHCI
|
||||
m_port_registers = cast(PortRegisters *)(cast(void *)m_operational_registers + 0x400);
|
||||
m_runtime_registers = cast(RuntimeRegisters *)(base_address + m_capability_registers.rts_offset);
|
||||
m_doorbell_registers = cast(DoorbellRegister *)(base_address + m_capability_registers.doorbell_offset);
|
||||
dump_extended_capabilities();
|
||||
}
|
||||
|
||||
private void dump_extended_capabilities()
|
||||
{
|
||||
size_t ext_cap_off = (m_capability_registers.hcc_params1 >> 16u);
|
||||
if (ext_cap_off != 0u)
|
||||
{
|
||||
Klog.writefln("Extended capabilities:");
|
||||
uint * extended_capabilities = cast(uint *)m_capability_registers + ext_cap_off;
|
||||
for (;;)
|
||||
{
|
||||
uint ec0 = extended_capabilities[0];
|
||||
size_t next_offset = (ec0 >> 8u) & 0xFFu;
|
||||
size_t len = next_offset;
|
||||
if (len < 1u)
|
||||
{
|
||||
len = 1u;
|
||||
}
|
||||
ubyte type = ec0 & 0xFFu;
|
||||
if (type == 2u)
|
||||
{
|
||||
len = 4u;
|
||||
}
|
||||
for (size_t i = 0u; i < len; i++)
|
||||
{
|
||||
uint ecv = extended_capabilities[i];
|
||||
Klog.writef(" %02X %02X %02X %02X",
|
||||
ecv & 0xFFu,
|
||||
(ecv >> 8u) & 0xFFu,
|
||||
(ecv >> 16u) & 0xFFu,
|
||||
(ecv >> 24u) & 0xFFu);
|
||||
}
|
||||
Klog.writef("\n");
|
||||
if (next_offset == 0u)
|
||||
{
|
||||
break;
|
||||
}
|
||||
extended_capabilities += next_offset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void build(Pci.Device * pci_device)
|
||||
|
Loading…
x
Reference in New Issue
Block a user