Special detection for 0x48 address in Gigabyte RGB Fusion GPU controller

This commit is contained in:
Adam Honse
2020-11-26 15:55:32 -06:00
parent a414335334
commit b0f7ea5c8f

View File

@@ -42,33 +42,69 @@ bool TestForGigabyteRGBFusionGPUController(i2c_smbus_interface* bus, unsigned ch
bool pass = false;
int res;
//Write out 0xAB 0x00 0x00 0x00 sequence
res = bus->i2c_smbus_write_byte(address, 0xAB);
if (res >= 0)
switch(address)
{
bus->i2c_smbus_write_byte(address, 0x00);
bus->i2c_smbus_write_byte(address, 0x00);
bus->i2c_smbus_write_byte(address, 0x00);
case 0x47:
//Write out 0xAB 0x00 0x00 0x00 sequence
res = bus->i2c_smbus_write_byte(address, 0xAB);
pass = true;
if (res >= 0)
{
bus->i2c_smbus_write_byte(address, 0x00);
bus->i2c_smbus_write_byte(address, 0x00);
bus->i2c_smbus_write_byte(address, 0x00);
res = bus->i2c_smbus_read_byte(address);
pass = true;
if (res != 0xAB)
{
pass = false;
}
res = bus->i2c_smbus_read_byte(address);
res = bus->i2c_smbus_read_byte(address);
if (res != 0xAB)
{
pass = false;
}
if(res != 0x14)
{
pass = false;
}
res = bus->i2c_smbus_read_byte(address);
bus->i2c_smbus_read_byte(address);
bus->i2c_smbus_read_byte(address);
if(res != 0x14)
{
pass = false;
}
bus->i2c_smbus_read_byte(address);
bus->i2c_smbus_read_byte(address);
}
break;
case 0x48:
//Write out 0xCC 0x01 0x00 0x00 sequence
res = bus->i2c_smbus_write_byte(address, 0xCC);
if (res >= 0)
{
bus->i2c_smbus_write_byte(address, 0x01);
bus->i2c_smbus_write_byte(address, 0x00);
bus->i2c_smbus_write_byte(address, 0x00);
pass = true;
res = bus->i2c_smbus_read_byte(address);
if (res != 0xCC)
{
pass = false;
}
res = bus->i2c_smbus_read_byte(address);
if(res != 0x01)
{
pass = false;
}
bus->i2c_smbus_read_byte(address);
bus->i2c_smbus_read_byte(address);
}
break;
}
return(pass);