Home | History | Annotate | Download | only in loader
      1 #ifndef _PCI_ID_DRIVER_MAP_H_
      2 #define _PCI_ID_DRIVER_MAP_H_
      3 
      4 #include <stddef.h>
      5 
      6 #ifndef ARRAY_SIZE
      7 #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
      8 #endif
      9 
     10 #ifndef __IS_LOADER
     11 #  error "Only include from loader.c"
     12 #endif
     13 
     14 static const int i915_chip_ids[] = {
     15 #define CHIPSET(chip, desc, name) chip,
     16 #include "pci_ids/i915_pci_ids.h"
     17 #undef CHIPSET
     18 };
     19 
     20 static const int i965_chip_ids[] = {
     21 #define CHIPSET(chip, family, name) chip,
     22 #include "pci_ids/i965_pci_ids.h"
     23 #undef CHIPSET
     24 };
     25 
     26 static const int r100_chip_ids[] = {
     27 #define CHIPSET(chip, name, family) chip,
     28 #include "pci_ids/radeon_pci_ids.h"
     29 #undef CHIPSET
     30 };
     31 
     32 static const int r200_chip_ids[] = {
     33 #define CHIPSET(chip, name, family) chip,
     34 #include "pci_ids/r200_pci_ids.h"
     35 #undef CHIPSET
     36 };
     37 
     38 static const int r300_chip_ids[] = {
     39 #define CHIPSET(chip, name, family) chip,
     40 #include "pci_ids/r300_pci_ids.h"
     41 #undef CHIPSET
     42 };
     43 
     44 static const int r600_chip_ids[] = {
     45 #define CHIPSET(chip, name, family) chip,
     46 #include "pci_ids/r600_pci_ids.h"
     47 #undef CHIPSET
     48 };
     49 
     50 static const int radeonsi_chip_ids[] = {
     51 #define CHIPSET(chip, name, family) chip,
     52 #include "pci_ids/radeonsi_pci_ids.h"
     53 #undef CHIPSET
     54 };
     55 
     56 static const int virtio_gpu_chip_ids[] = {
     57 #define CHIPSET(chip, name, family) chip,
     58 #include "pci_ids/virtio_gpu_pci_ids.h"
     59 #undef CHIPSET
     60 };
     61 
     62 static const int vmwgfx_chip_ids[] = {
     63 #define CHIPSET(chip, name, family) chip,
     64 #include "pci_ids/vmwgfx_pci_ids.h"
     65 #undef CHIPSET
     66 };
     67 
     68 int is_nouveau_vieux(int fd);
     69 
     70 static const struct {
     71    int vendor_id;
     72    const char *driver;
     73    const int *chip_ids;
     74    int num_chips_ids;
     75    int (*predicate)(int fd);
     76 } driver_map[] = {
     77    { 0x8086, "i915", i915_chip_ids, ARRAY_SIZE(i915_chip_ids) },
     78    { 0x8086, "i965", i965_chip_ids, ARRAY_SIZE(i965_chip_ids) },
     79    { 0x1002, "radeon", r100_chip_ids, ARRAY_SIZE(r100_chip_ids) },
     80    { 0x1002, "r200", r200_chip_ids, ARRAY_SIZE(r200_chip_ids) },
     81    { 0x1002, "r300", r300_chip_ids, ARRAY_SIZE(r300_chip_ids) },
     82    { 0x1002, "r600", r600_chip_ids, ARRAY_SIZE(r600_chip_ids) },
     83    { 0x1002, "radeonsi", radeonsi_chip_ids, ARRAY_SIZE(radeonsi_chip_ids) },
     84    { 0x10de, "nouveau_vieux", NULL, -1, is_nouveau_vieux },
     85    { 0x10de, "nouveau", NULL, -1, },
     86    { 0x1af4, "virtio_gpu", virtio_gpu_chip_ids, ARRAY_SIZE(virtio_gpu_chip_ids) },
     87    { 0x15ad, "vmwgfx", vmwgfx_chip_ids, ARRAY_SIZE(vmwgfx_chip_ids) },
     88    { 0x0000, NULL, NULL, 0 },
     89 };
     90 
     91 #endif /* _PCI_ID_DRIVER_MAP_H_ */
     92