@@ -93,12 +93,11 @@ unsigned short PolychromeController::ReadFirmwareVersion()
9393{
9494 // The firmware register holds two bytes, so the first read should return 2
9595 // If not, report invalid firmware revision FFFF
96- if (bus->i2c_smbus_read_byte_data (dev, ASROCK_REG_FIRMWARE_VER) == 0x02 )
96+ unsigned char asrock_version[2 ] = { 0x00 , 0x00 };
97+ if (bus->i2c_smbus_read_block_data (dev, ASROCK_REG_FIRMWARE_VER, asrock_version) == 0x02 )
9798 {
98- std::this_thread::sleep_for (1ms);
99- unsigned char major = bus->i2c_smbus_read_byte (dev);
100- std::this_thread::sleep_for (1ms);
101- unsigned char minor = bus->i2c_smbus_read_byte (dev);
99+ unsigned char major = asrock_version[0 ];
100+ unsigned char minor = asrock_version[1 ];
102101
103102 return ((major << 8 ) | minor);
104103 }
@@ -114,20 +113,15 @@ void PolychromeController::ReadLEDConfiguration()
114113 | The LED configuration register holds 6 bytes, so the first read should return 6 |
115114 | If not, set all zone sizes to zero |
116115 \*---------------------------------------------------------------------------------*/
117- if (bus->i2c_smbus_read_byte_data (dev, POLYCHROME_REG_LED_CONFIG) == 0x06 )
116+ unsigned char asrock_zone_count[6 ] = { 0x0 };
117+ if (bus->i2c_smbus_read_block_data (dev, POLYCHROME_REG_LED_CONFIG, asrock_zone_count) == 0x06 )
118118 {
119- std::this_thread::sleep_for (1ms);
120- zone_led_count[POLYCHROME_ZONE_1] = bus->i2c_smbus_read_byte (dev);
121- std::this_thread::sleep_for (1ms);
122- zone_led_count[POLYCHROME_ZONE_2] = bus->i2c_smbus_read_byte (dev);
123- std::this_thread::sleep_for (1ms);
124- zone_led_count[POLYCHROME_ZONE_3] = bus->i2c_smbus_read_byte (dev);
125- std::this_thread::sleep_for (1ms);
126- zone_led_count[POLYCHROME_ZONE_4] = bus->i2c_smbus_read_byte (dev);
127- std::this_thread::sleep_for (1ms);
128- zone_led_count[POLYCHROME_ZONE_5] = bus->i2c_smbus_read_byte (dev);
129- std::this_thread::sleep_for (1ms);
130- zone_led_count[POLYCHROME_ZONE_ADDRESSABLE] = bus->i2c_smbus_read_byte (dev);
119+ zone_led_count[POLYCHROME_ZONE_1] = asrock_zone_count[0 ];
120+ zone_led_count[POLYCHROME_ZONE_2] = asrock_zone_count[1 ];
121+ zone_led_count[POLYCHROME_ZONE_3] = asrock_zone_count[2 ];
122+ zone_led_count[POLYCHROME_ZONE_4] = asrock_zone_count[3 ];
123+ zone_led_count[POLYCHROME_ZONE_5] = asrock_zone_count[4 ];
124+ zone_led_count[POLYCHROME_ZONE_ADDRESSABLE] = asrock_zone_count[5 ];
131125 }
132126 else
133127 {
0 commit comments