@@ -63,6 +63,8 @@ void DetectHyperXDRAMControllers(std::vector<i2c_smbus_interface*> &busses, std:
6363 for (unsigned int bus = 0 ; bus < busses.size (); bus++)
6464 {
6565 unsigned char slots_valid = 0x00 ;
66+ bool fury_detected = false ;
67+ bool pred_detected = false ;
6668
6769 IF_DRAM_SMBUS (busses[bus]->pci_vendor , busses[bus]->pci_device )
6870 {
@@ -82,6 +84,15 @@ void DetectHyperXDRAMControllers(std::vector<i2c_smbus_interface*> &busses, std:
8284 &&(busses[bus]->i2c_smbus_read_byte_data (slot_addr, 0x41 ) == 0x98 ))
8385 {
8486 slots_valid |= (1 << (slot_addr - 0x50 ));
87+
88+ if (busses[bus]->i2c_smbus_read_byte_data (slot_addr, 0x67 ) == 0x01 )
89+ {
90+ fury_detected = true ;
91+ }
92+ else
93+ {
94+ pred_detected = true ;
95+ }
8596 }
8697
8798 std::this_thread::sleep_for (1ms);
@@ -91,6 +102,16 @@ void DetectHyperXDRAMControllers(std::vector<i2c_smbus_interface*> &busses, std:
91102 {
92103 new_hyperx = new HyperXDRAMController (busses[bus], 0x27 , slots_valid);
93104 new_controller = new RGBController_HyperXDRAM (new_hyperx);
105+
106+ if (fury_detected && !pred_detected)
107+ {
108+ new_controller->name = " HyperX Fury RGB" ;
109+ }
110+ else if (!fury_detected && pred_detected)
111+ {
112+ new_controller->name = " HyperX Predator RGB" ;
113+ }
114+
94115 rgb_controllers.push_back (new_controller);
95116 }
96117 }
0 commit comments