diff --git a/Controllers/PolychromeController/PolychromeController.cpp b/Controllers/PolychromeController/PolychromeController.cpp index 2306072f7..8a1c2a5c2 100644 --- a/Controllers/PolychromeController/PolychromeController.cpp +++ b/Controllers/PolychromeController/PolychromeController.cpp @@ -133,6 +133,13 @@ void PolychromeController::SetColorsAndSpeed(unsigned char led, unsigned char re switch(asrock_type) { case ASROCK_TYPE_ASRLED: + case ASROCK_TYPE_POLYCHROME_V1: + /*-----------------------------------------------------*\ + | Select LED | + \*-----------------------------------------------------*/ + bus->i2c_smbus_write_block_data(dev, POLYCHROME_REG_LED_SELECT, 1, select_led_pkt); + std::this_thread::sleep_for(1ms); + switch(active_mode) { /*-----------------------------------------------------*\ @@ -170,7 +177,6 @@ void PolychromeController::SetColorsAndSpeed(unsigned char led, unsigned char re std::this_thread::sleep_for(1ms); break; - case ASROCK_TYPE_POLYCHROME_V1: case ASROCK_TYPE_POLYCHROME_V2: /*-----------------------------------------------------*\ | Select LED | @@ -196,9 +202,19 @@ void PolychromeController::SetMode(unsigned char mode, unsigned char speed) switch(asrock_type) { case ASROCK_TYPE_ASRLED: + bus->i2c_smbus_write_block_data(dev, ASRLED_REG_MODE, 1, &active_mode); + std::this_thread::sleep_for(1ms); + break; + case ASROCK_TYPE_POLYCHROME_V1: bus->i2c_smbus_write_block_data(dev, ASRLED_REG_MODE, 1, &active_mode); std::this_thread::sleep_for(1ms); + + /*-----------------------------------------------------*\ + | Select a single LED | + \*-----------------------------------------------------*/ + bus->i2c_smbus_write_block_data(dev, POLYCHROME_REG_LED_COUNT, 0, led_count_pkt); + std::this_thread::sleep_for(1ms); break; case ASROCK_TYPE_POLYCHROME_V2: diff --git a/Controllers/PolychromeController/PolychromeController.h b/Controllers/PolychromeController/PolychromeController.h index 26ed5858e..67f53da7d 100644 --- a/Controllers/PolychromeController/PolychromeController.h +++ b/Controllers/PolychromeController/PolychromeController.h @@ -27,6 +27,7 @@ enum { ASRLED_REG_FIRMWARE_VER = 0x00, /* Firmware version Major.Minor */ ASRLED_REG_MODE = 0x30, /* Mode selection register */ + ASRLED_REG_LED_SELECT = 0x31, /* LED selection register */ }; #define ASRLED_NUM_MODES 8 /* Number of ASR LED modes */