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_port_registers = cast(PortRegisters *)(cast(void *)m_operational_registers + 0x400);
|
||||||
m_runtime_registers = cast(RuntimeRegisters *)(base_address + m_capability_registers.rts_offset);
|
m_runtime_registers = cast(RuntimeRegisters *)(base_address + m_capability_registers.rts_offset);
|
||||||
m_doorbell_registers = cast(DoorbellRegister *)(base_address + m_capability_registers.doorbell_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)
|
static void build(Pci.Device * pci_device)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user