diff options
author | Felix Singer <felix.singer@secunet.com> | 2020-10-13 18:00:24 +0200 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2020-10-17 16:33:55 +0000 |
commit | 4c9622a7d033e92a214a8534012ff40e2f4bb6e4 (patch) | |
tree | f60eaad3c749026b6a7f0aa981515e742a20d4fd /payloads | |
parent | d2ec82d137448dc9b851d2d60b715fabdc6e78ec (diff) | |
download | coreboot-4c9622a7d033e92a214a8534012ff40e2f4bb6e4.tar.xz |
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>
Diffstat (limited to 'payloads')
-rw-r--r-- | payloads/libpayload/include/pci/pci.h | 1 | ||||
-rw-r--r-- | payloads/libpayload/libpci/libpci.c | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/payloads/libpayload/include/pci/pci.h b/payloads/libpayload/include/pci/pci.h index 8c11d6b33f..7ec9491d95 100644 --- a/payloads/libpayload/include/pci/pci.h +++ b/payloads/libpayload/include/pci/pci.h @@ -74,6 +74,7 @@ struct pci_dev { u16 domain; u8 bus, dev, func; u16 vendor_id, device_id; + u16 device_class; struct pci_dev *next; }; diff --git a/payloads/libpayload/libpci/libpci.c b/payloads/libpayload/libpci/libpci.c index 3e3513ccb0..200ae18435 100644 --- a/payloads/libpayload/libpci/libpci.c +++ b/payloads/libpayload/libpci/libpci.c @@ -178,6 +178,7 @@ static struct pci_dev *pci_scan_single_bus(struct pci_dev *dev, uint8_t bus) dev->func = func; dev->vendor_id = val & 0xffff; dev->device_id = (uint16_t)(val >> 16); + dev->device_class = pci_read_config16(PCI_DEV(bus, slot, func), PCI_CLASS_DEVICE); dev->next = 0; hdr = pci_read_config8(PCI_DEV(bus, slot, func), |