diff --git a/Controllers/MSIGPUController/MSIGPUv2ControllerDetect.cpp b/Controllers/MSIGPUController/MSIGPUv2ControllerDetect.cpp index faf7bcc2..491bfd2b 100644 --- a/Controllers/MSIGPUController/MSIGPUv2ControllerDetect.cpp +++ b/Controllers/MSIGPUController/MSIGPUv2ControllerDetect.cpp @@ -8,7 +8,6 @@ #include "Detector.h" #include "LogManager.h" #include "i2c_smbus.h" -#include "pci_ids.h" #include "RGBController_MSIGPUv2.h" #include "MSIGPUv2Controller.h" @@ -28,8 +27,9 @@ void DetectMSIGPUv2Controllers(i2c_smbus_interface* bus, uint8_t i2c_addr, const return; } + int msi_gpu_id = bus->pci_subsystem_device | bus->pci_device << 16; MSIGPUv2Controller* controller = new MSIGPUv2Controller(bus, i2c_addr); - RGBController_MSIGPUv2* rgb_controller = new RGBController_MSIGPUv2(controller); + RGBController_MSIGPUv2* rgb_controller = new RGBController_MSIGPUv2(controller, msi_gpu_id); rgb_controller->name = name; ResourceManager::get()->RegisterRGBController(rgb_controller); LOG_TRACE("MSI GPU Controler using ITE9 chip"); @@ -37,16 +37,17 @@ void DetectMSIGPUv2Controllers(i2c_smbus_interface* bus, uint8_t i2c_addr, const } /* DetectMSIGPUv2Controllers() */ -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060 8GB Gaming X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060_DEV, MSI_SUB_VEN, MSI_RTX4060_GAMING_X_8G_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060Ti 8GB Gaming X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060TI_DEV, MSI_SUB_VEN, MSI_RTX4060TI_GAMING_X_8G_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060Ti 16GB Gaming X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060TI_16G_DEV, MSI_SUB_VEN, MSI_RTX4060TI_GAMING_X_16G_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 12GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070_DEV, MSI_SUB_VEN, MSI_RTX4070_GAMING_X_TRIO_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070Ti 12GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070Ti 12GB Gaming X Trio White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_WHITE_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070Ti 12GB Suprim X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_SUPRIM_X_TRIO_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 16GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_GAMING_X_TRIO_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 16GB Suprim X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_SUPRIM_X_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_GAMING_X_TRIO_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_GAMING_X_SLIM_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Suprim Liquid X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_SUPRIM_LIQUID_X_SUB_DEV, 0x68); -REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Suprim X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_SUPRIM_X_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060 8GB Gaming X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060_DEV, MSI_SUB_VEN, MSI_RTX4060_GAMING_X_8G_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060Ti 8GB Gaming X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060TI_DEV, MSI_SUB_VEN, MSI_RTX4060TI_GAMING_X_8G_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4060Ti 16GB Gaming X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4060TI_16G_DEV, MSI_SUB_VEN, MSI_RTX4060TI_GAMING_X_16G_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070 12GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070_DEV, MSI_SUB_VEN, MSI_RTX4070_GAMING_X_TRIO_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070Ti 12GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070Ti 12GB Gaming X Trio White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_WHITE_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070Ti 12GB Suprim X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_SUPRIM_X_TRIO_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070Ti Super 16GB Gaming X Trio White", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_WHITE_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 16GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_GAMING_X_TRIO_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 16GB Suprim X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_SUPRIM_X_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_GAMING_X_TRIO_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Gaming X Slim", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_GAMING_X_SLIM_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Suprim Liquid X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_SUPRIM_LIQUID_X_SUB_DEV, 0x68); +REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Suprim X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_SUPRIM_X_SUB_DEV, 0x68); diff --git a/Controllers/MSIGPUController/RGBController_MSIGPUv2.cpp b/Controllers/MSIGPUController/RGBController_MSIGPUv2.cpp index ca7c71c5..d303a9a4 100644 --- a/Controllers/MSIGPUController/RGBController_MSIGPUv2.cpp +++ b/Controllers/MSIGPUController/RGBController_MSIGPUv2.cpp @@ -22,7 +22,7 @@ static const unsigned char speed_values[3] = { 0x04, 0x02, 0x01 }; @comment \*-------------------------------------------------------------------*/ -RGBController_MSIGPUv2::RGBController_MSIGPUv2(MSIGPUv2Controller * msi_gpu_ptr) +RGBController_MSIGPUv2::RGBController_MSIGPUv2(MSIGPUv2Controller * msi_gpu_ptr, int msi_gpu_id) { msi_gpu = msi_gpu_ptr; @@ -161,31 +161,38 @@ RGBController_MSIGPUv2::RGBController_MSIGPUv2(MSIGPUv2Controller * msi_gpu_ptr) Meteor.color_mode = MODE_COLORS_PER_LED; modes.push_back(Meteor); - mode Stack; - Stack.name = "Stack"; - Stack.value = MSI_GPU_V2_MODE_STACK; - Stack.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Stack.speed_min = MSI_GPU_V2_SPEED_MIN; - Stack.speed = MSI_GPU_V2_SPEED_MID; - Stack.speed_max = MSI_GPU_V2_SPEED_MAX; - Stack.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN; - Stack.brightness = MSI_GPU_V2_BRIGHTNESS_MAX; - Stack.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX; - Stack.color_mode = MODE_COLORS_PER_LED; - modes.push_back(Stack); + switch(msi_gpu_id) + { + case MSI_RTX4070TI_GAMING_X_TRIO_WHITE_SUB_DEV | NVIDIA_RTX4070TIS_DEV << 16: + break; - mode Rhythm; - Rhythm.name = "Rhythm"; - Rhythm.value = MSI_GPU_V2_MODE_RHYTHM; - Rhythm.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; - Rhythm.speed_min = MSI_GPU_V2_SPEED_MIN; - Rhythm.speed = MSI_GPU_V2_SPEED_MID; - Rhythm.speed_max = MSI_GPU_V2_SPEED_MAX; - Rhythm.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN; - Rhythm.brightness = MSI_GPU_V2_BRIGHTNESS_MAX; - Rhythm.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX; - Rhythm.color_mode = MODE_COLORS_PER_LED; - modes.push_back(Rhythm); + default: + mode Stack; + Stack.name = "Stack"; + Stack.value = MSI_GPU_V2_MODE_STACK; + Stack.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Stack.speed_min = MSI_GPU_V2_SPEED_MIN; + Stack.speed = MSI_GPU_V2_SPEED_MID; + Stack.speed_max = MSI_GPU_V2_SPEED_MAX; + Stack.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN; + Stack.brightness = MSI_GPU_V2_BRIGHTNESS_MAX; + Stack.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX; + Stack.color_mode = MODE_COLORS_PER_LED; + modes.push_back(Stack); + + mode Rhythm; + Rhythm.name = "Rhythm"; + Rhythm.value = MSI_GPU_V2_MODE_RHYTHM; + Rhythm.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_MANUAL_SAVE; + Rhythm.speed_min = MSI_GPU_V2_SPEED_MIN; + Rhythm.speed = MSI_GPU_V2_SPEED_MID; + Rhythm.speed_max = MSI_GPU_V2_SPEED_MAX; + Rhythm.brightness_min = MSI_GPU_V2_BRIGHTNESS_MIN; + Rhythm.brightness = MSI_GPU_V2_BRIGHTNESS_MAX; + Rhythm.brightness_max = MSI_GPU_V2_BRIGHTNESS_MAX; + Rhythm.color_mode = MODE_COLORS_PER_LED; + modes.push_back(Rhythm); + } mode Flowing; Flowing.name = "Flowing"; diff --git a/Controllers/MSIGPUController/RGBController_MSIGPUv2.h b/Controllers/MSIGPUController/RGBController_MSIGPUv2.h index 988dc310..f17e8d6c 100644 --- a/Controllers/MSIGPUController/RGBController_MSIGPUv2.h +++ b/Controllers/MSIGPUController/RGBController_MSIGPUv2.h @@ -8,13 +8,14 @@ #pragma once +#include "pci_ids.h" #include "RGBController.h" #include "MSIGPUv2Controller.h" class RGBController_MSIGPUv2 : public RGBController { public: - RGBController_MSIGPUv2(MSIGPUv2Controller* msi_gpu_ptr); + RGBController_MSIGPUv2(MSIGPUv2Controller* msi_gpu_ptr, int msi_gpu_id); ~RGBController_MSIGPUv2(); void SetupZones();