|
17 | 17 | #include "i2c_smbus.h"
|
18 | 18 | #include "pci_ids.h"
|
19 | 19 |
|
20 |
| -typedef struct |
21 |
| -{ |
22 |
| - int pci_vendor; |
23 |
| - int pci_device; |
24 |
| - int pci_subsystem_vendor; |
25 |
| - int pci_subsystem_device; |
26 |
| - const char * name; |
27 |
| -} gpu_pci_device; |
28 |
| - |
29 |
| -#define GPU_NUM_DEVICES (sizeof(device_list) / sizeof(device_list[ 0 ])) |
30 |
| - |
31 |
| -static const gpu_pci_device device_list[] = |
32 |
| -{ |
33 |
| - { NVIDIA_VEN, NVIDIA_GTX1070_DEV, EVGA_SUB_VEN, EVGA_GTX1070_FTW2_SUB_DEV, "EVGA GeForce GTX 1070 FTW2 Gaming" }, |
34 |
| - { NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_SUB_DEV, "EVGA GeForce GTX 1080 FTW2 Gaming" }, |
35 |
| - { NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_11G_SUB_DEV, "EVGA GeForce GTX 1080 FTW2 11G" }, |
36 |
| - { NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_DT_SUB_DEV, "EVGA GeForce GTX 1080 FTW2 DT" }, |
37 |
| - { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_SC2_GAMING_SUB_DEV, "EVGA GeForce GTX 1080 Ti SC2 Gaming" }, |
38 |
| - { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_SUB_DEV, "EVGA GeForce GTX 1080 Ti FTW3" }, |
39 |
| - { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_HYBRID_SUB_DEV, "EVGA GeForce GTX 1080 Ti FTW3 Hybrid" }, |
40 |
| - { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_KINGPIN_SUB_DEV, "EVGA GeForce GTX 1080 Ti K|NGP|N" }, |
41 |
| -}; |
42 | 20 | /******************************************************************************************\
|
43 | 21 | * *
|
44 | 22 | * DetectEVGAGP102GPUControllers *
|
45 | 23 | * *
|
46 | 24 | * Detect EVGA GP102 GPU controllers on the enumerated I2C busses at address 0x49. *
|
47 | 25 | * *
|
48 | 26 | * bus - pointer to i2c_smbus_interface where EVGA GPU device is connected *
|
49 |
| -* dev - I2C address of EVGA GPU device * |
| 27 | +* address - unused, the address comes from the GPU zone info table * |
| 28 | +* name - name string of detected PCI device * |
50 | 29 | * *
|
51 | 30 | \******************************************************************************************/
|
52 | 31 |
|
53 |
| -void DetectEVGAGP102GPUControllers(std::vector<i2c_smbus_interface*>& busses) |
| 32 | +void DetectEVGAGP102GPUControllers(i2c_smbus_interface* bus, uint8_t /*address*/, const std::string& name) |
54 | 33 | {
|
55 |
| - for (unsigned int bus = 0; bus < busses.size(); bus++) |
| 34 | + if(bus->port_id == 1) |
56 | 35 | {
|
57 |
| - for(unsigned int dev_idx = 0; dev_idx < GPU_NUM_DEVICES; dev_idx++) |
| 36 | + RGBController_EVGAGP102* new_rgbcontroller; |
| 37 | + std::vector<EVGAGP102Controller*> controllers; |
| 38 | + |
| 39 | + for(unsigned int i = 0; i < sizeof(gpuzoneinfos) / sizeof(zoneinfo); i++) |
58 | 40 | {
|
59 |
| - if (busses[bus]->port_id != 1) |
| 41 | + EVGAGP102Controller* controller = new EVGAGP102Controller(bus, gpuzoneinfos[i], name); |
| 42 | + |
| 43 | + if(controller->IsValid()) |
60 | 44 | {
|
61 |
| - break; |
| 45 | + controllers.push_back(controller); |
62 | 46 | }
|
63 |
| - |
64 |
| - if(busses[bus]->pci_vendor == device_list[dev_idx].pci_vendor && |
65 |
| - busses[bus]->pci_device == device_list[dev_idx].pci_device && |
66 |
| - busses[bus]->pci_subsystem_vendor == device_list[dev_idx].pci_subsystem_vendor && |
67 |
| - busses[bus]->pci_subsystem_device == device_list[dev_idx].pci_subsystem_device) |
| 47 | + else |
68 | 48 | {
|
69 |
| - LOG_DEBUG(GPU_DETECT_MESSAGE, EVGA_GP102_CONTROLLER_NAME, bus, device_list[dev_idx].pci_device, device_list[dev_idx].pci_subsystem_device, device_list[dev_idx].name ); |
70 |
| - RGBController_EVGAGP102* new_rgbcontroller; |
71 |
| - std::vector<EVGAGP102Controller*> controllers; |
72 |
| - |
73 |
| - for(unsigned int i = 0; i < sizeof(gpuzoneinfos) / sizeof(zoneinfo); i++) |
74 |
| - { |
75 |
| - EVGAGP102Controller* contr = new EVGAGP102Controller(busses[bus], gpuzoneinfos[i]); |
76 |
| - if (contr->IsValid()) |
77 |
| - { |
78 |
| - controllers.push_back(contr); |
79 |
| - } |
80 |
| - else |
81 |
| - { |
82 |
| - delete contr; |
83 |
| - } |
84 |
| - } |
85 |
| - if(controllers.size() != 0) |
86 |
| - { |
87 |
| - new_rgbcontroller = new RGBController_EVGAGP102(controllers); |
88 |
| - new_rgbcontroller->name = device_list[dev_idx].name; |
89 |
| - ResourceManager::get()->RegisterRGBController(new_rgbcontroller); |
90 |
| - } |
| 49 | + delete controller; |
91 | 50 | }
|
92 | 51 | }
|
| 52 | + |
| 53 | + if(controllers.size() != 0) |
| 54 | + { |
| 55 | + new_rgbcontroller = new RGBController_EVGAGP102(controllers); |
| 56 | + |
| 57 | + ResourceManager::get()->RegisterRGBController(new_rgbcontroller); |
| 58 | + } |
93 | 59 | }
|
94 | 60 | } /* DetectEVGAGP102GPUControllers() */
|
95 | 61 |
|
96 |
| -REGISTER_I2C_DETECTOR("EVGA GP102 GPU", DetectEVGAGP102GPUControllers); |
| 62 | +/*---------------------------------------------------------*\ |
| 63 | +| The I2C address is provided by the GPU Zone Info table, | |
| 64 | +| as these GPUs have multiple I2C devices per card. | |
| 65 | +\*---------------------------------------------------------*/ |
| 66 | +REGISTER_I2C_PCI_DETECTOR( "EVGA GeForce GTX 1070 FTW2 Gaming", DetectEVGAGP102GPUControllers, NVIDIA_VEN, NVIDIA_GTX1070_DEV, EVGA_SUB_VEN, EVGA_GTX1070_FTW2_SUB_DEV, 0x00 ); |
| 67 | +REGISTER_I2C_PCI_DETECTOR( "EVGA GeForce GTX 1080 FTW2 Gaming", DetectEVGAGP102GPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_SUB_DEV, 0x00 ); |
| 68 | +REGISTER_I2C_PCI_DETECTOR( "EVGA GeForce GTX 1080 FTW2 11G", DetectEVGAGP102GPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_11G_SUB_DEV, 0x00 ); |
| 69 | +REGISTER_I2C_PCI_DETECTOR( "EVGA GeForce GTX 1080 FTW2 DT", DetectEVGAGP102GPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_DT_SUB_DEV, 0x00 ); |
| 70 | +REGISTER_I2C_PCI_DETECTOR( "EVGA GeForce GTX 1080 Ti SC2 Gaming", DetectEVGAGP102GPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_SC2_GAMING_SUB_DEV, 0x00 ); |
| 71 | +REGISTER_I2C_PCI_DETECTOR( "EVGA GeForce GTX 1080 Ti FTW3", DetectEVGAGP102GPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_SUB_DEV, 0x00 ); |
| 72 | +REGISTER_I2C_PCI_DETECTOR( "EVGA GeForce GTX 1080 Ti FTW3 Hybrid", DetectEVGAGP102GPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_HYBRID_SUB_DEV, 0x00 ); |
| 73 | +REGISTER_I2C_PCI_DETECTOR( "EVGA GeForce GTX 1080 Ti K|NGP|N", DetectEVGAGP102GPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_KINGPIN_SUB_DEV, 0x00 ); |
0 commit comments