X-Git-Url: http://git.onelab.eu/?p=pypcilib.git;a=blobdiff_plain;f=pypciscan.c;h=24b81a990b67a686ab3c40d0ebea93cee5b49bc5;hp=f56eb7ca5c1a0b6ec5bc8cbde5978cce19711c23;hb=27022167d4e352c059d4045d65c9809ce25977f0;hpb=c4fb57d29a40bb15a56cc09e423c5f785a5b63ce diff --git a/pypciscan.c b/pypciscan.c index f56eb7c..24b81a9 100644 --- a/pypciscan.c +++ b/pypciscan.c @@ -60,16 +60,18 @@ static PyObject *get_devices(PyObject *self, PyObject *args) for (dev = pacc->devices; dev; dev = dev->next) { u16 subvendor = -1, subdevice = -1; PyObject *value; + u8 progif = 0; pci_fill_info(dev, PCI_FILL_IDENT | PCI_FILL_CLASS); if (dev->hdrtype == PCI_HEADER_TYPE_NORMAL) { subvendor = pci_read_word(dev, PCI_SUBSYSTEM_VENDOR_ID); subdevice = pci_read_word(dev, PCI_SUBSYSTEM_ID); } + progif = pci_read_byte(dev, PCI_CLASS_PROG); snprintf(buf, sizeof(buf), "%04x:%02x:%02x.%02x", dev->domain, dev->bus, dev->dev, dev->func); value = Py_BuildValue("iiiii", dev->vendor_id, dev->device_id, - subvendor, subdevice, dev->device_class); + subvendor, subdevice, dev->device_class << 8 | progif); if (!value) return NULL; if (PyDict_SetItemString(ret, buf, value) == -1)