diff --git a/Controllers/AuraSMBusController/AuraSMBusControllerDetect.cpp b/Controllers/AuraSMBusController/AuraSMBusControllerDetect.cpp index 6eb9a733..2211bbe7 100644 --- a/Controllers/AuraSMBusController/AuraSMBusControllerDetect.cpp +++ b/Controllers/AuraSMBusController/AuraSMBusControllerDetect.cpp @@ -179,9 +179,7 @@ void DetectAuraSMBusControllers(std::vector &busses, std:: } // Add Aura-enabled motherboard controllers - if(busses[bus]->pci_vendor == AMD_VEN && - busses[bus]->pci_device == AMD_FCH_SMBUS_DEV && - busses[bus]->pci_subsystem_vendor == ASUS_SUB_VEN) + IF_MOBO_SMBUS(busses[bus]->pci_vendor, busses[bus]->pci_device) { for (unsigned int address_list_idx = 0; address_list_idx < AURA_MOBO_ADDRESS_COUNT; address_list_idx++) { diff --git a/Controllers/PolychromeController/PolychromeControllerDetect.cpp b/Controllers/PolychromeController/PolychromeControllerDetect.cpp index c24e7e98..0738a5ae 100644 --- a/Controllers/PolychromeController/PolychromeControllerDetect.cpp +++ b/Controllers/PolychromeController/PolychromeControllerDetect.cpp @@ -3,6 +3,7 @@ #include "RGBController.h" #include "RGBController_Polychrome.h" #include "i2c_smbus.h" +#include "pci_ids.h" #include #include #include @@ -50,19 +51,22 @@ void DetectPolychromeControllers(std::vector& busses, std: for (unsigned int bus = 0; bus < busses.size(); bus++) { - // Check for Polychrome controller at 0x6A - if (TestForPolychromeController(busses[bus], 0x6A)) + IF_MOBO_SMBUS(busses[bus]->pci_vendor, busses[bus]->pci_device) { - new_polychrome = new PolychromeController(busses[bus], 0x6A); + // Check for Polychrome controller at 0x6A + if (TestForPolychromeController(busses[bus], 0x6A)) + { + new_polychrome = new PolychromeController(busses[bus], 0x6A); - if(new_polychrome->GetASRockType() != ASROCK_TYPE_UNKNOWN) - { - new_controller = new RGBController_Polychrome(new_polychrome); - rgb_controllers.push_back(new_controller); - } - else - { - delete new_polychrome; + if(new_polychrome->GetASRockType() != ASROCK_TYPE_UNKNOWN) + { + new_controller = new RGBController_Polychrome(new_polychrome); + rgb_controllers.push_back(new_controller); + } + else + { + delete new_polychrome; + } } } } diff --git a/Controllers/RGBFusion2SMBusController/RGBFusion2SMBusControllerDetect.cpp b/Controllers/RGBFusion2SMBusController/RGBFusion2SMBusControllerDetect.cpp index e6124574..52a087ec 100644 --- a/Controllers/RGBFusion2SMBusController/RGBFusion2SMBusControllerDetect.cpp +++ b/Controllers/RGBFusion2SMBusController/RGBFusion2SMBusControllerDetect.cpp @@ -3,6 +3,7 @@ #include "RGBController.h" #include "RGBController_RGBFusion2SMBus.h" #include "i2c_smbus.h" +#include "pci_ids.h" #include #include #include @@ -87,17 +88,20 @@ void DetectRGBFusion2SMBusControllers(std::vector& busses, { for (unsigned int bus = 0; bus < busses.size(); bus++) { - // TODO - Is this necessary? Or an artifact of my own system? - // Skip dmcd devices - std::string device_name = std::string(busses[bus]->device_name); - if (device_name.find("dmdc") == std::string::npos) + IF_MOBO_SMBUS(busses[bus]->pci_vendor, busses[bus]->pci_device) { - // Check for RGB Fusion 2 controller at 0x68 - if (TestForRGBFusion2SMBusController(busses[bus], 0x68)) + // TODO - Is this necessary? Or an artifact of my own system? + // Skip dmcd devices + std::string device_name = std::string(busses[bus]->device_name); + if (device_name.find("dmdc") == std::string::npos) { - new_rgb_fusion = new RGBFusion2SMBusController(busses[bus], 0x68); - new_controller = new RGBController_RGBFusion2SMBus(new_rgb_fusion); - rgb_controllers.push_back(new_controller); + // Check for RGB Fusion 2 controller at 0x68 + if (TestForRGBFusion2SMBusController(busses[bus], 0x68)) + { + new_rgb_fusion = new RGBFusion2SMBusController(busses[bus], 0x68); + new_controller = new RGBController_RGBFusion2SMBus(new_rgb_fusion); + rgb_controllers.push_back(new_controller); + } } } } diff --git a/Controllers/RGBFusionController/RGBFusionControllerDetect.cpp b/Controllers/RGBFusionController/RGBFusionControllerDetect.cpp index 4c006566..9ec56a16 100644 --- a/Controllers/RGBFusionController/RGBFusionControllerDetect.cpp +++ b/Controllers/RGBFusionController/RGBFusionControllerDetect.cpp @@ -3,6 +3,7 @@ #include "RGBController.h" #include "RGBController_RGBFusion.h" #include "i2c_smbus.h" +#include "pci_ids.h" #include #include #include @@ -56,12 +57,15 @@ void DetectRGBFusionControllers(std::vector& busses, std:: for (unsigned int bus = 0; bus < busses.size(); bus++) { - // Check for RGB Fusion controller at 0x28 - if (TestForRGBFusionController(busses[bus], 0x28)) + IF_MOBO_SMBUS(busses[bus]->pci_vendor, busses[bus]->pci_device) { - new_rgb_fusion = new RGBFusionController(busses[bus], 0x28); - new_controller = new RGBController_RGBFusion(new_rgb_fusion); - rgb_controllers.push_back(new_controller); + // Check for RGB Fusion controller at 0x28 + if (TestForRGBFusionController(busses[bus], 0x28)) + { + new_rgb_fusion = new RGBFusionController(busses[bus], 0x28); + new_controller = new RGBController_RGBFusion(new_rgb_fusion); + rgb_controllers.push_back(new_controller); + } } } diff --git a/i2c_smbus/i2c_smbus_nct6775.cpp b/i2c_smbus/i2c_smbus_nct6775.cpp index 1ca8368a..0f4c6f06 100644 --- a/i2c_smbus/i2c_smbus_nct6775.cpp +++ b/i2c_smbus/i2c_smbus_nct6775.cpp @@ -206,7 +206,12 @@ void i2c_smbus_nct6775_detect(std::vector &busses) case SIO_NCT6793_ID: case SIO_NCT6796_ID: case SIO_NCT6798_ID: - bus = new i2c_smbus_nct6775(); + // Create new nct6775 bus and zero out the PCI ID information + bus = new i2c_smbus_nct6775(); + bus->pci_vendor = 0; + bus->pci_device = 0; + bus->pci_subsystem_vendor = 0; + bus->pci_subsystem_device = 0; // Set logical device register to get SMBus base address superio_outb(sioaddr, SIO_REG_LOGDEV, SIO_LOGDEV_SMBUS); diff --git a/pci_ids/pci_ids.h b/pci_ids/pci_ids.h index 98ff8375..6c0a2a27 100644 --- a/pci_ids/pci_ids.h +++ b/pci_ids/pci_ids.h @@ -75,3 +75,6 @@ \*---------------------------------------------------------*/ #define IF_DRAM_SMBUS(ven, dev) \ if((ven == AMD_VEN) || (ven == INTEL_VEN)) + +#define IF_MOBO_SMBUS(ven, dev) \ + if((ven == 0) || (ven == AMD_VEN) || (ven == INTEL_VEN))