[Bug] Fix IS31fl3741 driver to accept 1 or 2 addresses (#14451)
Co-authored-by: Joel Challis <git@zvecr.com>
This commit is contained in:
		
							parent
							
								
									7e36a81383
								
							
						
					
					
						commit
						169d5bd21d
					
				
					 4 changed files with 24 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -73,7 +73,7 @@ uint8_t g_twi_transfer_buffer[20] = {0xFF};
 | 
			
		|||
// buffers and the transfers in IS31FL3741_write_pwm_buffer() but it's
 | 
			
		||||
// probably not worth the extra complexity.
 | 
			
		||||
uint8_t g_pwm_buffer[DRIVER_COUNT][ISSI_MAX_LEDS];
 | 
			
		||||
bool    g_pwm_buffer_update_required                      = false;
 | 
			
		||||
bool    g_pwm_buffer_update_required[DRIVER_COUNT]        = {false};
 | 
			
		||||
bool    g_scaling_registers_update_required[DRIVER_COUNT] = {false};
 | 
			
		||||
 | 
			
		||||
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) {
 | 
			
		|||
    if (index >= 0 && index < DRIVER_LED_TOTAL) {
 | 
			
		||||
        is31_led led = g_is31_leds[index];
 | 
			
		||||
 | 
			
		||||
        g_pwm_buffer[led.driver][led.r] = red;
 | 
			
		||||
        g_pwm_buffer[led.driver][led.g] = green;
 | 
			
		||||
        g_pwm_buffer[led.driver][led.b] = blue;
 | 
			
		||||
        g_pwm_buffer_update_required    = true;
 | 
			
		||||
        g_pwm_buffer[led.driver][led.r]          = red;
 | 
			
		||||
        g_pwm_buffer[led.driver][led.g]          = green;
 | 
			
		||||
        g_pwm_buffer[led.driver][led.b]          = blue;
 | 
			
		||||
        g_pwm_buffer_update_required[led.driver] = true;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -206,12 +206,12 @@ void IS31FL3741_set_led_control_register(uint8_t index, bool red, bool green, bo
 | 
			
		|||
    g_scaling_registers_update_required[led.driver] = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void IS31FL3741_update_pwm_buffers(uint8_t addr1, uint8_t addr2) {
 | 
			
		||||
    if (g_pwm_buffer_update_required) {
 | 
			
		||||
        IS31FL3741_write_pwm_buffer(addr1, g_pwm_buffer[0]);
 | 
			
		||||
void IS31FL3741_update_pwm_buffers(uint8_t addr, uint8_t index) {
 | 
			
		||||
    if (g_pwm_buffer_update_required[index]) {
 | 
			
		||||
        IS31FL3741_write_pwm_buffer(addr, g_pwm_buffer[index]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    g_pwm_buffer_update_required = false;
 | 
			
		||||
    g_pwm_buffer_update_required[index] = false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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,
 | 
			
		|||
    g_pwm_buffer[pled->driver][pled->g] = green;
 | 
			
		||||
    g_pwm_buffer[pled->driver][pled->b] = blue;
 | 
			
		||||
 | 
			
		||||
    g_pwm_buffer_update_required = true;
 | 
			
		||||
    g_pwm_buffer_update_required[pled->driver] = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,8 +45,8 @@ void IS31FL3741_set_led_control_register(uint8_t index, bool red, bool green, bo
 | 
			
		|||
// (eg. from a timer interrupt).
 | 
			
		||||
// Call this while idle (in between matrix scans).
 | 
			
		||||
// If the buffer is dirty, it will update the driver with the buffer.
 | 
			
		||||
void IS31FL3741_update_pwm_buffers(uint8_t addr1, uint8_t addr2);
 | 
			
		||||
void IS31FL3741_update_led_control_registers(uint8_t addr1, uint8_t addr2);
 | 
			
		||||
void IS31FL3741_update_pwm_buffers(uint8_t addr, uint8_t index);
 | 
			
		||||
void IS31FL3741_update_led_control_registers(uint8_t addr, uint8_t index);
 | 
			
		||||
void IS31FL3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue);
 | 
			
		||||
 | 
			
		||||
void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue