Add PCI ID filtering to Gigabyte RGB Fusion GPU detection

This commit is contained in:
Adam Honse 2020-10-29 00:28:18 -05:00
parent 8fa14542ad
commit efb5975fcf
2 changed files with 38 additions and 5 deletions

View file

@ -3,10 +3,27 @@
#include "RGBController.h"
#include "RGBController_RGBFusionGPU.h"
#include "i2c_smbus.h"
#include "pci_ids.h"
#include <vector>
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int pci_vendor;
int pci_device;
int pci_subsystem_vendor;
int pci_subsystem_device;
const char * name;
} gpu_pci_device;
#define GPU_NUM_DEVICES (sizeof(device_list) / sizeof(device_list[ 0 ]))
static const gpu_pci_device device_list[] =
{
{ NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, GIGABYTE_SUB_VEN, GIGABYTE_GTX1080TI_XTREME_SUB_DEV, "Gigabyte GTX1080Ti Xtreme Edition" },
};
/******************************************************************************************\
* *
* TestForRGBFusionGPUController *
@ -72,12 +89,22 @@ void DetectRGBFusionGPUControllers(std::vector<i2c_smbus_interface*>& busses, st
for (unsigned int bus = 0; bus < busses.size(); bus++)
{
// Check for RGB Fusion controller at 0x47
if (TestForRGBFusionGPUController(busses[bus], 0x47))
for(unsigned int dev_idx = 0; dev_idx < GPU_NUM_DEVICES; dev_idx++)
{
new_rgb_fusion = new RGBFusionGPUController(busses[bus], 0x47);
new_controller = new RGBController_RGBFusionGPU(new_rgb_fusion);
rgb_controllers.push_back(new_controller);
if(busses[bus]->pci_vendor == device_list[dev_idx].pci_vendor &&
busses[bus]->pci_device == device_list[dev_idx].pci_device &&
busses[bus]->pci_subsystem_vendor == device_list[dev_idx].pci_subsystem_vendor &&
busses[bus]->pci_subsystem_device == device_list[dev_idx].pci_subsystem_device)
{
// Check for RGB Fusion controller at 0x47
if (TestForRGBFusionGPUController(busses[bus], 0x47))
{
new_rgb_fusion = new RGBFusionGPUController(busses[bus], 0x47);
new_controller = new RGBController_RGBFusionGPU(new_rgb_fusion);
new_controller->name = device_list[dev_idx].name;
rgb_controllers.push_back(new_controller);
}
}
}
}

View file

@ -25,6 +25,7 @@
| nVidia Device IDs |
\*-----------------------------------------------------*/
#define NVIDIA_GTX1070_DEV 0x1B81
#define NVIDIA_GTX1080TI_DEV 0x1B06
#define NVIDIA_GTX1660_DEV 0x2184
#define NVIDIA_RTX2060_TU104_DEV 0x1E89
#define NVIDIA_RTX2060_TU106_DEV 0x1F08
@ -54,6 +55,11 @@
#define EVGA_RTX2070_XC_OC_SUB_DEV 0x2173
#define EVGA_RTX2080_XC_GAMING_SUB_DEV 0x2182
/*-----------------------------------------------------*\
| Gigabyte (Aorus) Sub-Device IDs |
\*-----------------------------------------------------*/
#define GIGABYTE_GTX1080TI_XTREME_SUB_DEV 0x3762
/*-----------------------------------------------------*\
| MSI Sub-Device IDs |
\*-----------------------------------------------------*/