From c57d58d49b94d4696182b1622776651eac90c6d8 Mon Sep 17 00:00:00 2001 From: RedBlackAka Date: Mon, 17 Feb 2025 15:46:33 +0000 Subject: [PATCH] Miscellaneous cleanups --- .gitlab/issue_templates/New Device.md | 4 +- .../ColorfulGPUControllerDetect.cpp | 16 ++++---- .../ENESMBusControllerDetect.cpp | 2 +- .../EVGAGP102GPUControllerDetect.cpp | 8 ++-- .../GainwardGPUControllerDetect.cpp | 2 +- .../GalaxGPUControllerDetect.cpp | 2 +- .../GigabyteRGBFusionGPUControllerDetect.cpp | 2 +- .../LogitechControllerDetect.cpp | 3 +- ...minationControllerDetect_Windows_Linux.cpp | 6 +-- .../RGBController_NvidiaESA.cpp | 2 +- .../SonyGamepadControllerDetect.cpp | 8 ++-- i2c_smbus/i2c_smbus_linux.cpp | 2 +- i2c_smbus/i2c_smbus_nvapi.cpp | 4 +- i2c_smbus/i2c_smbus_nvapi.h | 2 +- pci_ids/pci_ids.h | 38 +++++++++--------- scripts/banner.bmp | Bin 85896 -> 85894 bytes 16 files changed, 50 insertions(+), 51 deletions(-) diff --git a/.gitlab/issue_templates/New Device.md b/.gitlab/issue_templates/New Device.md index a8d78925..8bd84ff2 100644 --- a/.gitlab/issue_templates/New Device.md +++ b/.gitlab/issue_templates/New Device.md @@ -23,9 +23,9 @@ Please add a link to the manufacturer's product page beneath this line ~"DeviceType::IDK" ~"DeviceType::USB" ~"DeviceType::GPU::AMD" -~"DeviceType::GPU::NVidia" +~"DeviceType::GPU::Nvidia" ~"DeviceType::SMBus" -~"DeviceType::WMI" +~"DeviceType::WMI" diff --git a/Controllers/ColorfulGPUController/ColorfulGPUControllerDetect.cpp b/Controllers/ColorfulGPUController/ColorfulGPUControllerDetect.cpp index 3f45f3f8..ecad91ea 100644 --- a/Controllers/ColorfulGPUController/ColorfulGPUControllerDetect.cpp +++ b/Controllers/ColorfulGPUController/ColorfulGPUControllerDetect.cpp @@ -51,21 +51,21 @@ REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ultra W OC 12G L-V", Detec REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ultra W OC 12G L-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060_ULTRAW_OC_12G_2, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ti Ultra W OC LHR-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060_ULTRAW_OC_12G_2, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ADVANCED_OCV, 0x61); -REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060_TI_ADVANCED_OC, 0x61); +REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060TI_ADVANCED_OC, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ADVANCED_OCV, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ADVANCED_OCV2, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ultra W OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ULTRAW_OC, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ultra W OC LHR", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ULTRAW_OC, 0x61); -REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ti Ultra W OC LHR", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_TI_ULTRAW_OC, 0x61); -REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_TI_ADVANCED_OCV2, 0x61); +REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ti Ultra W OC LHR", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070TI_ULTRAW_OC, 0x61); +REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070TI_ADVANCED_OCV2, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3080 Advanced OC 10G-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3080_ADVANCED_OC_10G, 0x61); -REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3080 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3080_TI_ADVANCED_OCV2, 0x61); +REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3080 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3080TI_ADVANCED_OCV2, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3080 Ultra W OC 10G LHR-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3080_ULTRAW_OC_10G, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3080 Ultra W OC 10G LHR-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3080_ULTRAW_OC_10G_2, 0x61); -REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070_TI_ADVANCED_OCV, 0x61); -REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Ti SUPER Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_AD102_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070_TI_SUPER_ADVANCED_OCV2, 0x61); -REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Ti SUPER Ultra W 16GB", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070_TI_SUPER_ULTRA_W_16GB, 0x61); -REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 SUPER Ultra W OC 12GB", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070_SUPER_ULTRA_W_OC_12GB, 0x61); +REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070TI_ADVANCED_OCV, 0x61); +REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Ti SUPER Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_AD102_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070TI_SUPER_ADVANCED_OCV2, 0x61); +REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Ti SUPER Ultra W", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TIS_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070TI_SUPER_ULTRA_W, 0x61); +REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 SUPER Ultra W OC", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070_SUPER_ULTRA_W_OC, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 Vulcan OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070_VULCAN_OCV, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4070 SUPER Ultra W OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070S_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4070S_ULTRAW_OCV, 0x61); REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4080 Ultra W OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4080_ULTRAW_OCV, 0x61); diff --git a/Controllers/ENESMBusController/ENESMBusControllerDetect.cpp b/Controllers/ENESMBusController/ENESMBusControllerDetect.cpp index 7c4291fb..a4037e86 100644 --- a/Controllers/ENESMBusController/ENESMBusControllerDetect.cpp +++ b/Controllers/ENESMBusController/ENESMBusControllerDetect.cpp @@ -356,7 +356,7 @@ REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti OC", REGISTER_I2C_PCI_DETECTOR("ASUS KO GeForce RTX 3060 Ti Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, ASUS_SUB_VEN, ASUS_KO_RTX3060TI_O8G_GAMING, 0x67); REGISTER_I2C_PCI_DETECTOR("ASUS KO GeForce RTX 3060 Ti Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, ASUS_SUB_VEN, ASUS_KO_RTX3060TI_08G_GAMING_2, 0x67); REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti Gaming OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3060TI_O8G_OC, 0x67); -REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 3060 Ti OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_3060TI_O8G_OC, 0x67); +REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 3060 Ti OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_3060TI_O8G_OC, 0x67); REGISTER_I2C_PCI_DETECTOR("ASUS TUF GeForce RTX 3060 Ti OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3060TI_O8G_OC_V2, 0x67); REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 3060 Ti V2 OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_3060TI_O8G_V2_GAMING, 0x67); REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX GeForce RTX 3070 OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_3070_OC, 0x67); diff --git a/Controllers/EVGAGP102GPUController/EVGAGP102GPUControllerDetect.cpp b/Controllers/EVGAGP102GPUController/EVGAGP102GPUControllerDetect.cpp index 17a77106..710ca081 100644 --- a/Controllers/EVGAGP102GPUController/EVGAGP102GPUControllerDetect.cpp +++ b/Controllers/EVGAGP102GPUController/EVGAGP102GPUControllerDetect.cpp @@ -34,10 +34,10 @@ static const gpu_pci_device device_list[] = { NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_SUB_DEV, "EVGA GeForce GTX 1080 FTW2 Gaming" }, { NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_11G_SUB_DEV, "EVGA GeForce GTX 1080 FTW2 11G" }, { NVIDIA_VEN, NVIDIA_GTX1080_DEV, EVGA_SUB_VEN, EVGA_GTX1080_FTW2_DT_SUB_DEV, "EVGA GeForce GTX 1080 FTW2 DT" }, - { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_SC2_GAMING_SUB_DEV, "EVGA GeForce GTX 1080 Ti SC2 Gaming" }, - { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_SUB_DEV, "EVGA GeForce GTX 1080 Ti FTW3" }, - { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_HYBRID_SUB_DEV, "EVGA GeForce GTX 1080 Ti FTW3 Hybrid" }, - { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_KINGPIN_SUB_DEV, "EVGA GeForce GTX 1080 Ti K|NGP|N" }, + { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_SC2_GAMING_SUB_DEV, "EVGA GeForce GTX 1080 Ti SC2 Gaming" }, + { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_SUB_DEV, "EVGA GeForce GTX 1080 Ti FTW3" }, + { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_FTW3_HYBRID_SUB_DEV, "EVGA GeForce GTX 1080 Ti FTW3 Hybrid" }, + { NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, EVGA_SUB_VEN, EVGA_GTX1080TI_KINGPIN_SUB_DEV, "EVGA GeForce GTX 1080 Ti K|NGP|N" }, }; /******************************************************************************************\ * * diff --git a/Controllers/GainwardGPUController/GainwardGPUControllerDetect.cpp b/Controllers/GainwardGPUController/GainwardGPUControllerDetect.cpp index 509864d9..a49da401 100644 --- a/Controllers/GainwardGPUController/GainwardGPUControllerDetect.cpp +++ b/Controllers/GainwardGPUController/GainwardGPUControllerDetect.cpp @@ -102,7 +102,7 @@ void DetectGainwardGPUControllers(i2c_smbus_interface* bus, uint8_t i2c_addr, co } /* DetectGainwardGPUControllers() */ REGISTER_I2C_PCI_DETECTOR("Gainward GeForce GTX 1080 Phoenix", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, GAINWARD_SUB_VEN, GAINWARD_GTX_1080_PHOENIX, 0x08); -REGISTER_I2C_PCI_DETECTOR("Gainward GeForce GTX 1080 Ti Phoenix", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, GAINWARD_SUB_VEN, GAINWARD_GTX_1080_TI_PHOENIX, 0x08); +REGISTER_I2C_PCI_DETECTOR("Gainward GeForce GTX 1080 Ti Phoenix", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, GAINWARD_SUB_VEN, GAINWARD_GTX_1080TI_PHOENIX, 0x08); REGISTER_I2C_PCI_DETECTOR("Gainward GeForce GTX 1660 SUPER Ghost", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, 0x49); REGISTER_I2C_PCI_DETECTOR("Gainward GeForce RTX 2070 SUPER Phantom", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, GAINWARD_SUB_VEN, NVIDIA_RTX2070S_OC_DEV, 0x49); REGISTER_I2C_PCI_DETECTOR("Gainward GeForce RTX 2080 Phoenix GS", DetectGainwardGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_DEV, GAINWARD_SUB_VEN, NVIDIA_RTX2080_A_DEV, 0x49); diff --git a/Controllers/GalaxGPUController/GalaxGPUControllerDetect.cpp b/Controllers/GalaxGPUController/GalaxGPUControllerDetect.cpp index cfc9a276..a25eb5ec 100644 --- a/Controllers/GalaxGPUController/GalaxGPUControllerDetect.cpp +++ b/Controllers/GalaxGPUController/GalaxGPUControllerDetect.cpp @@ -65,4 +65,4 @@ REGISTER_I2C_PCI_DETECTOR("KFA2 GeForce RTX 2070 OC", Dete REGISTER_I2C_PCI_DETECTOR("GALAX GeForce RTX 2070 SUPER EX Gamer Black", DetectGalaxGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, NVIDIA_SUB_VEN, GALAX_RTX_2070S_EX_GAMER_BLACK_SUB_DEV, 0x23); REGISTER_I2C_PCI_DETECTOR("KFA2 GeForce RTX 2080 EX OC", DetectGalaxGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_DEV, NVIDIA_SUB_VEN, KFA2_RTX_2080_EX_OC_SUB_DEV, 0x23); REGISTER_I2C_PCI_DETECTOR("KFA2 GeForce RTX 2080 SUPER EX OC", DetectGalaxGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, NVIDIA_SUB_VEN, KFA2_RTX_2080_SUPER_EX_OC_SUB_DEV, 0x23); -REGISTER_I2C_PCI_DETECTOR("KFA2 GeForce RTX 2080 Ti EX OC", DetectGalaxGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_DEV, NVIDIA_SUB_VEN, KFA2_RTX_2080_TI_EX_OC_SUB_DEV, 0x23); +REGISTER_I2C_PCI_DETECTOR("KFA2 GeForce RTX 2080 Ti EX OC", DetectGalaxGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_DEV, NVIDIA_SUB_VEN, KFA2_RTX_2080TI_EX_OC_SUB_DEV, 0x23); diff --git a/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUControllerDetect.cpp b/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUControllerDetect.cpp index 7792ae80..cdbb4494 100644 --- a/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUControllerDetect.cpp +++ b/Controllers/GigabyteRGBFusionGPUController/GigabyteRGBFusionGPUControllerDetect.cpp @@ -149,7 +149,7 @@ REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2070 SUPER Gaming OC 3X", REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2070 SUPER Gaming OC 3X White", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2070S_GAMING_OC_3X_WHITE_SUB_DEV, 0x47); REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2080 Gaming OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2080_GAMING_OC_SUB_DEV, 0x47); REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2080 Gaming OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2080_A_GAMING_OC_SUB_DEV, 0x47); -REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2080 Ti GAMING OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2080_TI_GAMING_OC_SUB_DEV, 0x47); +REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2080 Ti GAMING OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2080TI_GAMING_OC_SUB_DEV, 0x47); REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 2080 SUPER Gaming OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX2080S_GAMING_OC_SUB_DEV, 0x47); REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 3050 Gaming OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX3050_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3050_GAMING_OC_8GB_SUB_DEV, 0x62); REGISTER_I2C_PCI_DETECTOR("Gigabyte GeForce RTX 3060 EAGLE OC", DetectGigabyteRGBFusionGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3060_EAGLE_OC_12GB_SUB_DEV, 0x63); diff --git a/Controllers/LogitechController/LogitechControllerDetect.cpp b/Controllers/LogitechController/LogitechControllerDetect.cpp index ea8687ba..08472a72 100644 --- a/Controllers/LogitechController/LogitechControllerDetect.cpp +++ b/Controllers/LogitechController/LogitechControllerDetect.cpp @@ -681,7 +681,7 @@ REGISTER_HID_DETECTOR_IPU("Logitech G203 Lightsync", Dete REGISTER_HID_DETECTOR_IP ("Logitech G303 Daedalus Apex", DetectLogitechMouseG303, LOGITECH_VID, LOGITECH_G303_PID, 1, 0xFF00); REGISTER_HID_DETECTOR_IP ("Logitech G403 HERO", DetectLogitechMouseG403, LOGITECH_VID, LOGITECH_G403_HERO_PID, 1, 0xFF00); REGISTER_HID_DETECTOR_IP ("Logitech G Pro Gaming Mouse", DetectLogitechMouseGPRO, LOGITECH_VID, LOGITECH_G_PRO_PID, 1, 0xFF00); -REGISTER_HID_DETECTOR_IP ("Logitech G Pro HERO Gaming Mouse", DetectLogitechMouseGPRO, LOGITECH_VID, LOGITECH_G_PRO_HERO_PID, 1, 0xFF00); +REGISTER_HID_DETECTOR_IP ("Logitech G Pro HERO Gaming Mouse", DetectLogitechMouseGPRO, LOGITECH_VID, LOGITECH_G_PRO_HERO_PID, 1, 0xFF00); /*-------------------------------------------------------------------------------------------------------------------------------------------------*\ | Speakers | \*-------------------------------------------------------------------------------------------------------------------------------------------------*/ @@ -913,7 +913,6 @@ REGISTER_HID_DETECTOR_IPU("Logitech Powerplay Mat", \*-------------------------------------------------------------------------------------------------------------------------------------------------*/ REGISTER_HID_DETECTOR_IPU("Logitech G502 Proteus Spectrum Gaming Mouse", DetectLogitechWired, LOGITECH_VID, LOGITECH_G502_PROTEUS_SPECTRUM_PID, 1, 0xFF00, 2); REGISTER_HID_DETECTOR_IPU("Logitech G502 HERO Gaming Mouse", DetectLogitechWired, LOGITECH_VID, LOGITECH_G502_HERO_PID, 1, 0xFF00, 2); - REGISTER_HID_DETECTOR_IPU("Logitech G403 Prodigy Gaming Mouse", DetectLogitechWired, LOGITECH_VID, LOGITECH_G403_PID, 1, 0xFF00, 2); REGISTER_HID_DETECTOR_IPU("Logitech G403 Wireless Gaming Mouse (wired)", DetectLogitechWired, LOGITECH_VID, LOGITECH_G403_LIGHTSPEED_PID, 1, 0xFF00, 2); REGISTER_HID_DETECTOR_IPU("Logitech G502 Wireless Gaming Mouse (wired)", DetectLogitechWired, LOGITECH_VID, LOGITECH_G502_LIGHTSPEED_PID, 1, 0xFF00, 2); diff --git a/Controllers/NVIDIAIlluminationController/NVIDIAIlluminationControllerDetect_Windows_Linux.cpp b/Controllers/NVIDIAIlluminationController/NVIDIAIlluminationControllerDetect_Windows_Linux.cpp index 1c713b56..0294177a 100644 --- a/Controllers/NVIDIAIlluminationController/NVIDIAIlluminationControllerDetect_Windows_Linux.cpp +++ b/Controllers/NVIDIAIlluminationController/NVIDIAIlluminationControllerDetect_Windows_Linux.cpp @@ -54,7 +54,7 @@ static const nv_gpu_pci_device device_list[] = {NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "Palit GeForce RTX 3060 LHR" }, {NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, PNY_SUB_VEN, PNY_RTX_3060_XLR8_REVEL_EPIC_X_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "PNY GeForce RTX 3060 XLR8 REVEL EPIC-X" }, {NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, PNY_SUB_VEN, PNY_RTX_3060_XLR8_REVEL_EPIC_X_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "PNY GeForce RTX 3060 XLR8 REVEL EPIC-X" }, - {NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "Palit GeForce RTX 3060 LHR (GA104)" }, + {NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "Palit GeForce RTX 3060 LHR" }, {NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, PNY_SUB_VEN, PNY_RTX_3060TI_XLR8_REVEL_EPIC_X_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "PNY GeForce RTX 3060 Ti XLR8 REVEL EPIC-X" }, {NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, NVIDIA_VEN, PNY_RTX_3060TI_XLR8_REVEL_EPIC_X_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "PNY GeForce RTX 3060 Ti XLR8 REVEL EPIC-X" }, {NVIDIA_VEN, NVIDIA_RTX3060TI_V1_LHR_DEV, NVIDIA_VEN, NVIDIA_RTX3060TI_V1_LHR_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "NVIDIA GeForce RTX 3060 Ti V1 LHR" }, @@ -106,7 +106,7 @@ void DetectNVIDIAIllumGPUs() pci_subsystem_vendor == device_list[dev_idx].pci_subsystem_vendor && pci_subsystem_device == device_list[dev_idx].pci_subsystem_device) { - LOG_DEBUG("[%s] NVidia NvAPI Illumination GPU found", device_list[dev_idx].name); + LOG_DEBUG("[%s] Nvidia NvAPI Illumination GPU found", device_list[dev_idx].name); switch(device_list[dev_idx].gpu_rgb_version) { case NVIDIA_ILLUMINATION_V1: @@ -126,4 +126,4 @@ void DetectNVIDIAIllumGPUs() } } -REGISTER_DETECTOR("NVidia NvAPI Illumination", DetectNVIDIAIllumGPUs); +REGISTER_DETECTOR("Nvidia NvAPI Illumination", DetectNVIDIAIllumGPUs); diff --git a/Controllers/NvidiaESAController/RGBController_NvidiaESA.cpp b/Controllers/NvidiaESAController/RGBController_NvidiaESA.cpp index b4ad441e..3e15e205 100644 --- a/Controllers/NvidiaESAController/RGBController_NvidiaESA.cpp +++ b/Controllers/NvidiaESAController/RGBController_NvidiaESA.cpp @@ -14,7 +14,7 @@ #include "RGBController_NvidiaESA.h" /**------------------------------------------------------------------*\ - @name NVidia ESA + @name Nvidia ESA @category Case @type USB @save :x: diff --git a/Controllers/SonyGamepadController/SonyGamepadControllerDetect.cpp b/Controllers/SonyGamepadController/SonyGamepadControllerDetect.cpp index 892d95a4..d9f0bbf5 100644 --- a/Controllers/SonyGamepadController/SonyGamepadControllerDetect.cpp +++ b/Controllers/SonyGamepadController/SonyGamepadControllerDetect.cpp @@ -48,7 +48,7 @@ void DetectSonyDualSenseControllers(hid_device_info* info, const std::string&) } } -REGISTER_HID_DETECTOR("Sony PlayStation DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_V1_PID); -REGISTER_HID_DETECTOR("Sony PlayStation DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_V2_PID); -REGISTER_HID_DETECTOR("Sony PlayStation DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_RECEIVER_PID); -REGISTER_HID_DETECTOR("Sony PlayStation DualSense", DetectSonyDualSenseControllers, SONY_VID, SONY_DUALSENSE_PID); +REGISTER_HID_DETECTOR("Sony DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_V1_PID); +REGISTER_HID_DETECTOR("Sony DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_V2_PID); +REGISTER_HID_DETECTOR("Sony DualShock 4", DetectSonyDS4Controllers, SONY_VID, SONY_DS4_RECEIVER_PID); +REGISTER_HID_DETECTOR("Sony DualSense", DetectSonyDualSenseControllers, SONY_VID, SONY_DUALSENSE_PID); diff --git a/i2c_smbus/i2c_smbus_linux.cpp b/i2c_smbus/i2c_smbus_linux.cpp index 5afe958e..1f0e57ab 100644 --- a/i2c_smbus/i2c_smbus_linux.cpp +++ b/i2c_smbus/i2c_smbus_linux.cpp @@ -126,7 +126,7 @@ bool i2c_smbus_linux_detect() pci_subsystem_device = 0; port_id = 0; - // Get port ID for NVidia GPUs + // Get port ID for Nvidia GPUs sscanf(device_string, "NVIDIA i2c adapter %hu at", &port_id); // Get device path diff --git a/i2c_smbus/i2c_smbus_nvapi.cpp b/i2c_smbus/i2c_smbus_nvapi.cpp index b62c3f93..2bf5f9bd 100644 --- a/i2c_smbus/i2c_smbus_nvapi.cpp +++ b/i2c_smbus/i2c_smbus_nvapi.cpp @@ -1,7 +1,7 @@ /*---------------------------------------------------------*\ | i2c_smbus_nvapi.cpp | | | -| NVidia NvAPI I2C driver | +| Nvidia NvAPI I2C driver | | | | Adam Honse (CalcProgrammer1) 21 Feb 2020 | | | @@ -182,7 +182,7 @@ bool i2c_smbus_nvapi_detect() { i2c_smbus_nvapi * nvapi_bus = new i2c_smbus_nvapi(gpu_handles[gpu_idx]); - snprintf(nvapi_bus->device_name, 512, "NVidia NvAPI I2C on GPU %d", gpu_idx); + snprintf(nvapi_bus->device_name, 512, "Nvidia NvAPI I2C on GPU %d", gpu_idx); res = NvAPI_GPU_GetPCIIdentifiers(gpu_handles[gpu_idx], &device_id, &sub_system_id, &revision_id, &ext_device_id); diff --git a/i2c_smbus/i2c_smbus_nvapi.h b/i2c_smbus/i2c_smbus_nvapi.h index 698e2362..09d2be2c 100644 --- a/i2c_smbus/i2c_smbus_nvapi.h +++ b/i2c_smbus/i2c_smbus_nvapi.h @@ -1,7 +1,7 @@ /*---------------------------------------------------------*\ | i2c_smbus_nvapi.h | | | -| NVidia NvAPI I2C driver | +| Nvidia NvAPI I2C driver | | | | Adam Honse (CalcProgrammer1) 21 Feb 2020 | | | diff --git a/pci_ids/pci_ids.h b/pci_ids/pci_ids.h index eda82960..98e7aa87 100644 --- a/pci_ids/pci_ids.h +++ b/pci_ids/pci_ids.h @@ -226,7 +226,7 @@ #define ASUS_KO_RTX3060TI_O8G_V2_GAMING 0x883E #define ASUS_TUF_RTX_3060TI_O8G 0x88AC #define ASUS_TUF_RTX_3060TI_O8G_OC 0x87C6 -#define ASUS_ROG_STRIX_3060TI_O8G_OC 0x87BA +#define ASUS_ROG_STRIX_RTX_3060TI_O8G_OC 0x87BA #define ASUS_ROG_STRIX_RTX_3060TI_O8G_V2_GAMING 0x8834 #define ASUS_TUF_RTX_3060TI_O8G_OC_V2 0x8827 #define ASUS_ROG_STRIX_RTX_3070_OC 0x87B8 @@ -305,21 +305,21 @@ #define ASUS_TUF_RTX_4080_16G_GAMING_2 0x88CB #define ASUS_TUF_RTX_4080_O16G_GAMING 0x88CA #define ASUS_TUF_RTX_4080_O16G_OC_GAMING 0x88A1 -#define ASUS_TUF_RTX_4080S_16G_GAMING 0x8963 -#define ASUS_TUF_RTX_4080S_O16G_OC_GAMING 0x8962 -#define ASUS_TUF_RTX_4090_O24G_OC_GAMING 0x889A -#define ASUS_TUF_RTX_4090_O24G_GAMING 0x889B -#define ASUS_TUF_RTX_4090_O24G_GAMING_2 0x88E2 -#define ASUS_TUF_RTX_4090_O24G_GAMING_3 0x88E3 -#define ASUS_TUF_RTX_4090_O24G_OG_OC_GAMING 0x88E6 #define ASUS_ROG_STRIX_RTX_4080_16G_GAMING 0x88C0 #define ASUS_ROG_STRIX_RTX_4080_16G_GAMING_WHITE 0x88C9 #define ASUS_ROG_STRIX_RTX_4080_O16G_GAMING_WHITE 0x88C8 #define ASUS_ROG_STRIX_RTX_4080_O16G_GAMING 0x88BF #define ASUS_ROG_STRIX_RTX_4080_O16G_GAMING_2 0x889F +#define ASUS_TUF_RTX_4080S_16G_GAMING 0x8963 +#define ASUS_TUF_RTX_4080S_O16G_OC_GAMING 0x8962 #define ASUS_ROG_STRIX_RTX_4080S_016G_GAMING 0x8964 #define ASUS_ROG_STRIX_RTX_4080S_16G_GAMING_WHITE 0x8969 #define ASUS_ROG_STRIX_RTX_4080S_016G_GAMING_WHITE 0x8968 +#define ASUS_TUF_RTX_4090_O24G_OC_GAMING 0x889A +#define ASUS_TUF_RTX_4090_O24G_GAMING 0x889B +#define ASUS_TUF_RTX_4090_O24G_GAMING_2 0x88E2 +#define ASUS_TUF_RTX_4090_O24G_GAMING_3 0x88E3 +#define ASUS_TUF_RTX_4090_O24G_OG_OC_GAMING 0x88E6 #define ASUS_ROG_STRIX_LC_RTX_4090_O24G_GAMING 0x88E8 #define ASUS_ROG_STRIX_RTX_4090_24G_GAMING 0x889D #define ASUS_ROG_STRIX_RTX_4090_O24G_GAMING 0x889C @@ -379,22 +379,22 @@ #define COLORFUL_IGAME_RTX_3060_ADVANCED_OC_12G_LV 0x140A #define COLORFUL_IGAME_RTX_3060_ULTRAW_OC_12G 0x150A #define COLORFUL_IGAME_RTX_3060_ULTRAW_OC_12G_2 0x1501 -#define COLORFUL_IGAME_RTX_3060_TI_ADVANCED_OC 0x1401 +#define COLORFUL_IGAME_RTX_3060TI_ADVANCED_OC 0x1401 #define COLORFUL_IGAME_RTX_3070_ADVANCED_OCV 0x140A #define COLORFUL_IGAME_RTX_3070_ADVANCED_OCV2 0x1401 #define COLORFUL_IGAME_RTX_3070_ULTRAW_OC 0x150A -#define COLORFUL_IGAME_RTX_3070_TI_ULTRAW_OC 0x1581 -#define COLORFUL_IGAME_RTX_3070_TI_ADVANCED_OCV2 0x1400 +#define COLORFUL_IGAME_RTX_3070TI_ULTRAW_OC 0x1581 +#define COLORFUL_IGAME_RTX_3070TI_ADVANCED_OCV2 0x1400 #define COLORFUL_IGAME_RTX_3080_ADVANCED_OC_10G 0x1401 -#define COLORFUL_IGAME_RTX_3080_TI_ADVANCED_OCV2 0x1401 +#define COLORFUL_IGAME_RTX_3080TI_ADVANCED_OCV2 0x1401 #define COLORFUL_IGAME_RTX_3080_ULTRAW_OC_10G 0x1501 #define COLORFUL_IGAME_RTX_3080_ULTRAW_OC_10G_2 0x150A #define COLORFUL_IGAME_RTX_4070_VULCAN_OCV 0x1200 -#define COLORFUL_IGAME_RTX_4070_SUPER_ULTRA_W_OC_12GB 0x1500 +#define COLORFUL_IGAME_RTX_4070_SUPER_ULTRA_W_OC 0x1500 #define COLORFUL_IGAME_RTX_4070S_ULTRAW_OCV 0x1500 -#define COLORFUL_IGAME_RTX_4070_TI_ADVANCED_OCV 0x1400 -#define COLORFUL_IGAME_RTX_4070_TI_SUPER_ADVANCED_OCV2 0x1400 -#define COLORFUL_IGAME_RTX_4070_TI_SUPER_ULTRA_W_16GB 0x1500 +#define COLORFUL_IGAME_RTX_4070TI_ADVANCED_OCV 0x1400 +#define COLORFUL_IGAME_RTX_4070TI_SUPER_ADVANCED_OCV2 0x1400 +#define COLORFUL_IGAME_RTX_4070TI_SUPER_ULTRA_W 0x1500 #define COLORFUL_IGAME_RTX_4080_ULTRAW_OCV 0x1500 #define COLORFUL_IGAME_RTX_4080_ULTRAW_OCV2 0x1501 #define COLORFUL_IGAME_RTX_4090_ADVANCED_OCV 0x1400 @@ -504,7 +504,7 @@ | Gainward Sub-Device IDs | \*-----------------------------------------------------*/ #define GAINWARD_GTX_1080_PHOENIX 0x1B80 -#define GAINWARD_GTX_1080_TI_PHOENIX 0x1B06 +#define GAINWARD_GTX_1080TI_PHOENIX 0x1B06 #define GAINWARD_RTX3050_SUB_DEV 0x2507 #define GAINWARD_RTX_3070_PHANTOM 0xF279 #define GAINWARD_RTX_4070_GHOST_SUB_DEV 0xF303 @@ -517,7 +517,7 @@ #define GALAX_RTX_2070S_EX_GAMER_BLACK_SUB_DEV 0x139F #define KFA2_RTX_2080_EX_OC_SUB_DEV 0x12B0 #define KFA2_RTX_2080_SUPER_EX_OC_SUB_DEV 0x13A1 -#define KFA2_RTX_2080_TI_EX_OC_SUB_DEV 0x1323 +#define KFA2_RTX_2080TI_EX_OC_SUB_DEV 0x1323 /*-----------------------------------------------------*\ | Gigabyte (Aorus) Sub-Device IDs | @@ -569,7 +569,7 @@ #define GIGABYTE_RTX2070S_GAMING_OC_3X_SUB_DEV 0x4008 #define GIGABYTE_RTX2070S_GAMING_OC_3X_WHITE_SUB_DEV 0x400D #define GIGABYTE_RTX2080_A_GAMING_OC_SUB_DEV 0x37A7 -#define GIGABYTE_RTX2080_TI_GAMING_OC_SUB_DEV 0x37A9 +#define GIGABYTE_RTX2080TI_GAMING_OC_SUB_DEV 0x37A9 #define GIGABYTE_RTX2080_GAMING_OC_SUB_DEV 0x37D6 #define GIGABYTE_AORUS_RTX2080_SUB_DEV_H 0x37B2 #define GIGABYTE_AORUS_RTX2080_SUB_DEV_P 0x37B3 diff --git a/scripts/banner.bmp b/scripts/banner.bmp index 654eb347c904f4e738679761add4e5a7569a6403..a46a9e5a18035cf9e8d4289d721cf4d642c247e6 100644 GIT binary patch literal 85894 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