libpayload/libpci: Introduce device class attribute in pci_dev
The device class is read at different places and it is read from the hardware directly. Therefore, and in preparation to CB:46416, introduce the device class attribute in the pci_dev struct. With this, there is only one interaction with the hardware and it's also more user friendly. Change-Id: I5d56be96f3f0da471246f031ea619e3df8e54cfb Signed-off-by: Felix Singer <felix.singer@secunet.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/46347 Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
d2ec82d137
commit
4c9622a7d0
|
@ -74,6 +74,7 @@ struct pci_dev {
|
||||||
u16 domain;
|
u16 domain;
|
||||||
u8 bus, dev, func;
|
u8 bus, dev, func;
|
||||||
u16 vendor_id, device_id;
|
u16 vendor_id, device_id;
|
||||||
|
u16 device_class;
|
||||||
struct pci_dev *next;
|
struct pci_dev *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -178,6 +178,7 @@ static struct pci_dev *pci_scan_single_bus(struct pci_dev *dev, uint8_t bus)
|
||||||
dev->func = func;
|
dev->func = func;
|
||||||
dev->vendor_id = val & 0xffff;
|
dev->vendor_id = val & 0xffff;
|
||||||
dev->device_id = (uint16_t)(val >> 16);
|
dev->device_id = (uint16_t)(val >> 16);
|
||||||
|
dev->device_class = pci_read_config16(PCI_DEV(bus, slot, func), PCI_CLASS_DEVICE);
|
||||||
dev->next = 0;
|
dev->next = 0;
|
||||||
|
|
||||||
hdr = pci_read_config8(PCI_DEV(bus, slot, func),
|
hdr = pci_read_config8(PCI_DEV(bus, slot, func),
|
||||||
|
|
Loading…
Reference in New Issue