diff options
| author | Drashna Jaelre <drashna@live.com> | 2021-09-15 10:07:08 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-15 10:07:08 -0700 |
| commit | 169d5bd21d9381843914b4c23cbca1b447e905c6 (patch) | |
| tree | 4609eacc9383b3dbce347005a0bd6974f6f46cfe /drivers | |
| parent | 7e36a8138379cab2d27a9db407850b67e46e0d0b (diff) | |
| download | qmk_firmware-169d5bd21d9381843914b4c23cbca1b447e905c6.tar.gz qmk_firmware-169d5bd21d9381843914b4c23cbca1b447e905c6.zip | |
[Bug] Fix IS31fl3741 driver to accept 1 or 2 addresses (#14451)
Co-authored-by: Joel Challis <git@zvecr.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/led/issi/is31fl3741.c | 20 | ||||
| -rw-r--r-- | drivers/led/issi/is31fl3741.h | 4 |
2 files changed, 12 insertions, 12 deletions
diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c index 1b533c9b6..24a273514 100644 --- a/drivers/led/issi/is31fl3741.c +++ b/drivers/led/issi/is31fl3741.c | |||
| @@ -73,7 +73,7 @@ uint8_t g_twi_transfer_buffer[20] = {0xFF}; | |||
| 73 | // buffers and the transfers in IS31FL3741_write_pwm_buffer() but it's | 73 | // buffers and the transfers in IS31FL3741_write_pwm_buffer() but it's |
| 74 | // probably not worth the extra complexity. | 74 | // probably not worth the extra complexity. |
| 75 | uint8_t g_pwm_buffer[DRIVER_COUNT][ISSI_MAX_LEDS]; | 75 | uint8_t g_pwm_buffer[DRIVER_COUNT][ISSI_MAX_LEDS]; |
| 76 | bool g_pwm_buffer_update_required = false; | 76 | bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false}; |
| 77 | bool g_scaling_registers_update_required[DRIVER_COUNT] = {false}; | 77 | bool g_scaling_registers_update_required[DRIVER_COUNT] = {false}; |
| 78 | 78 | ||
| 79 | uint8_t g_scaling_registers[DRIVER_COUNT][ISSI_MAX_LEDS]; | 79 | uint8_t g_scaling_registers[DRIVER_COUNT][ISSI_MAX_LEDS]; |
| @@ -169,10 +169,10 @@ void IS31FL3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { | |||
| 169 | if (index >= 0 && index < DRIVER_LED_TOTAL) { | 169 | if (index >= 0 && index < DRIVER_LED_TOTAL) { |
| 170 | is31_led led = g_is31_leds[index]; | 170 | is31_led led = g_is31_leds[index]; |
| 171 | 171 | ||
| 172 | g_pwm_buffer[led.driver][led.r] = red; | 172 | g_pwm_buffer[led.driver][led.r] = red; |
| 173 | g_pwm_buffer[led.driver][led.g] = green; | 173 | g_pwm_buffer[led.driver][led.g] = green; |
| 174 | g_pwm_buffer[led.driver][led.b] = blue; | 174 | g_pwm_buffer[led.driver][led.b] = blue; |
| 175 | g_pwm_buffer_update_required = true; | 175 | g_pwm_buffer_update_required[led.driver] = true; |
| 176 | } | 176 | } |
| 177 | } | 177 | } |
| 178 | 178 | ||
| @@ -206,12 +206,12 @@ void IS31FL3741_set_led_control_register(uint8_t index, bool red, bool green, bo | |||
| 206 | g_scaling_registers_update_required[led.driver] = true; | 206 | g_scaling_registers_update_required[led.driver] = true; |
| 207 | } | 207 | } |
| 208 | 208 | ||
| 209 | void IS31FL3741_update_pwm_buffers(uint8_t addr1, uint8_t addr2) { | 209 | void IS31FL3741_update_pwm_buffers(uint8_t addr, uint8_t index) { |
| 210 | if (g_pwm_buffer_update_required) { | 210 | if (g_pwm_buffer_update_required[index]) { |
| 211 | IS31FL3741_write_pwm_buffer(addr1, g_pwm_buffer[0]); | 211 | IS31FL3741_write_pwm_buffer(addr, g_pwm_buffer[index]); |
| 212 | } | 212 | } |
| 213 | 213 | ||
| 214 | g_pwm_buffer_update_required = false; | 214 | g_pwm_buffer_update_required[index] = false; |
| 215 | } | 215 | } |
| 216 | 216 | ||
| 217 | void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue) { | 217 | void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue) { |
| @@ -219,7 +219,7 @@ void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, | |||
| 219 | g_pwm_buffer[pled->driver][pled->g] = green; | 219 | g_pwm_buffer[pled->driver][pled->g] = green; |
| 220 | g_pwm_buffer[pled->driver][pled->b] = blue; | 220 | g_pwm_buffer[pled->driver][pled->b] = blue; |
| 221 | 221 | ||
| 222 | g_pwm_buffer_update_required = true; | 222 | g_pwm_buffer_update_required[pled->driver] = true; |
| 223 | } | 223 | } |
| 224 | 224 | ||
| 225 | void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index) { | 225 | void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index) { |
diff --git a/drivers/led/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h index cea6761ca..163a03523 100644 --- a/drivers/led/issi/is31fl3741.h +++ b/drivers/led/issi/is31fl3741.h | |||
| @@ -45,8 +45,8 @@ void IS31FL3741_set_led_control_register(uint8_t index, bool red, bool green, bo | |||
| 45 | // (eg. from a timer interrupt). | 45 | // (eg. from a timer interrupt). |
| 46 | // Call this while idle (in between matrix scans). | 46 | // Call this while idle (in between matrix scans). |
| 47 | // If the buffer is dirty, it will update the driver with the buffer. | 47 | // If the buffer is dirty, it will update the driver with the buffer. |
| 48 | void IS31FL3741_update_pwm_buffers(uint8_t addr1, uint8_t addr2); | 48 | void IS31FL3741_update_pwm_buffers(uint8_t addr, uint8_t index); |
| 49 | void IS31FL3741_update_led_control_registers(uint8_t addr1, uint8_t addr2); | 49 | void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index); |
| 50 | void IS31FL3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue); | 50 | void IS31FL3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue); |
| 51 | 51 | ||
| 52 | void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue); | 52 | void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue); |
