From 3608cafc32932cc5fa8dcde4bc43ad7031984073 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Mal=C3=BD?= Date: Wed, 6 Aug 2025 23:19:28 +0200 Subject: [PATCH] Implement i2c bus check for PowerColor Red Devil GPUs --- .../PowerColorGPUControllerDetect.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Controllers/PowerColorGPUController/PowerColorGPUControllerDetect.cpp b/Controllers/PowerColorGPUController/PowerColorGPUControllerDetect.cpp index 74ee60ec7..b5cfaa9b9 100644 --- a/Controllers/PowerColorGPUController/PowerColorGPUControllerDetect.cpp +++ b/Controllers/PowerColorGPUController/PowerColorGPUControllerDetect.cpp @@ -11,6 +11,7 @@ #include "Detector.h" #include "pci_ids.h" +#include "i2c_amd_gpu.h" #include "PowerColorRedDevilV1Controller/RGBController_PowerColorRedDevilV1.h" #include "PowerColorRedDevilV1Controller/PowerColorRedDevilV1Controller.h" #include "PowerColorRedDevilV2Controller/RGBController_PowerColorRedDevilV2.h" @@ -27,6 +28,11 @@ static const unsigned char magic_v2[3] = {0x01, 0x32, 0x00}; void DetectPowerColorRedDevilGPUControllersV1(i2c_smbus_interface* bus, uint8_t i2c_addr, const std::string& name) { + if(!is_amd_gpu_i2c_bus(bus)) + { + return; + } + unsigned char data[3]; int ret = bus->i2c_smbus_read_i2c_block_data(i2c_addr, RED_DEVIL_V1_REG_MAGIC, 3, data); if(ret == 3 && memcmp(data, magic_v1, 3) == 0) @@ -41,6 +47,11 @@ void DetectPowerColorRedDevilGPUControllersV1(i2c_smbus_interface* bus, uint8_t void DetectPowerColorRedDevilGPUControllersV2(i2c_smbus_interface* bus, uint8_t i2c_addr, const std::string& name) { + if(!is_amd_gpu_i2c_bus(bus)) + { + return; + } + unsigned char data[3]; int ret = bus->i2c_smbus_read_i2c_block_data(i2c_addr, RED_DEVIL_V2_READ_REG_MAGIC, 3, data); if(ret == 3 && memcmp(data, magic_v2, 3) == 0) @@ -58,4 +69,4 @@ REGISTER_I2C_PCI_DETECTOR("PowerColor Red Devil RX6750XT", DetectPowerC REGISTER_I2C_PCI_DETECTOR("PowerColor Red Devil RX6800XT", DetectPowerColorRedDevilGPUControllersV1, AMD_GPU_VEN, AMD_NAVI21_DEV1, POWERCOLOR_SUB_VEN, POWERCOLOR_RED_DEVIL_RX6800XT_SUB_DEV, 0x22); REGISTER_I2C_PCI_DETECTOR("PowerColor Red Devil RX6900XT Ultimate", DetectPowerColorRedDevilGPUControllersV1, AMD_GPU_VEN, AMD_NAVI21_DEV2, POWERCOLOR_SUB_VEN, POWERCOLOR_RED_DEVIL_RX6900XT_ULTIMATE_SUB_DEV, 0x22); -REGISTER_I2C_PCI_DETECTOR("PowerColor Red Devil RX9070XT", DetectPowerColorRedDevilGPUControllersV2, AMD_GPU_VEN, AMD_NAVI48_DEV, POWERCOLOR_SUB_VEN, POWERCOLOR_RED_DEVIL_RX9070XT_SUB_DEV, 0x22); \ No newline at end of file +REGISTER_I2C_PCI_DETECTOR("PowerColor Red Devil RX9070XT", DetectPowerColorRedDevilGPUControllersV2, AMD_GPU_VEN, AMD_NAVI48_DEV, POWERCOLOR_SUB_VEN, POWERCOLOR_RED_DEVIL_RX9070XT_SUB_DEV, 0x22);