From 5179b5881b2cc4e67eb17456e5eb0e915260e632 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 10 Jun 2023 12:01:06 -0400 Subject: [PATCH] Read PCI device header type --- src/hulk/pci.d | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/hulk/pci.d b/src/hulk/pci.d index ac58360..3ce4d1b 100644 --- a/src/hulk/pci.d +++ b/src/hulk/pci.d @@ -33,6 +33,7 @@ struct Pci ubyte subclass_id; ubyte if_id; bool multifunction; + ubyte header_type; void initialize(Address address, ushort vendor_id, ushort device_id) { @@ -46,11 +47,9 @@ struct Pci vendor_id, device_id, class_id, subclass_id, if_id, address.bus_nr, address.device_nr, address.function_nr); - if (address.function_nr == 0u) - { - uint reg3 = read_config_register(address, 3u); - multifunction = (reg3 & (1u << 23u)) != 0u; - } + uint reg3 = read_config_register(address, 3u); + header_type = (reg3 >> 16u) & 0x7Fu; + multifunction = (address.function_nr == 0u) && ((reg3 & (1u << 23u)) != 0u); } }