#include #include #include #include #include #include struct pci_matchid { pci_vendor_id_t pm_vid; pci_product_id_t pm_pid; }; #include "amdgpu_devlist.h" #include "i915_devlist.h" #include "radeon_devlist.h" #define nitems(_a) (sizeof((_a)) / sizeof((_a)[0])) const char * pci_findvendor(pci_vendor_id_t vendor) { const struct pci_known_vendor *kdp; kdp = pci_known_vendors; while (kdp->vendorname != NULL) { /* all have vendor name */ if (kdp->vendor == vendor) break; kdp++; } return (kdp->vendorname); } const char * pci_findproduct(pci_vendor_id_t vendor, pci_product_id_t product) { const struct pci_known_product *pkp; pkp = pci_known_products; while (pkp->productname != NULL) { /* all have product name */ if (pkp->vendor == vendor && pkp->product == product) break; pkp++; } return (pkp->productname); } void print_devices(char driver[], const struct pci_matchid devices[], int items) { int i; const char *v, *p; for (i = 0; i < items; i++) { v = pci_findvendor(devices[i].pm_vid); p = pci_findproduct(devices[i].pm_vid, devices[i].pm_pid); /* printf("%04x:%04x ", devices[i].pm_vid, devices[i].pm_pid); */ if ( v && p ) printf("%s \"%s %s\"\n", driver, v ? v : "", p ? p : ""); } } int main(void) { printf("%s\n", "acx"); printf("%s\n", "amdgpu"); print_devices("amdgpu", amdgpu_devices, nitems(amdgpu_devices)); printf("%s\n", "athn"); printf("%s\n", "bwfm"); printf("%s\n", "bwi"); printf("%s\n", "intel"); printf("%s\n", "intel ^cpu0: Intel"); printf("%s\n", "inteldrm"); print_devices("inteldrm", i915_devices, nitems(i915_devices)); printf("%s\n", "ipw"); printf("%s\n", "iwi"); printf("%s\n", "iwm"); printf("%s\n", "iwn"); printf("%s\n", "iwx"); printf("%s\n", "malo"); printf("%s\n", "ogx"); printf("%s\n", "otus"); printf("%s\n", "pgt"); printf("%s\n", "radeondrm"); print_devices("radeondrm", radeon_devices, nitems(radeon_devices)); printf("%s\n", "rsu"); printf("%s\n", "rtwn"); printf("%s\n", "uath"); printf("%s\n", "upgt"); printf("%s\n", "urtwn"); printf("%s\n", "uvideo"); printf("%s\n", "vmm"); printf("%s\n", "wpi"); return 0; }