IS31FL3741 driver fixup (#10519)
* Fix issue with data transfer of CS1_SW7 to CS18_SW7. * Fix issue with handling of scaling register buffer's dirty flag. * Remove unused extern declaration. * Compaction of struct is31_led utilizing bit fields.
This commit is contained in:
		
							parent
							
								
									a0467fda38
								
							
						
					
					
						commit
						1fe7743af8
					
				| @ -97,14 +97,13 @@ bool IS31FL3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { | ||||
|     IS31FL3741_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM0); | ||||
| 
 | ||||
|     for (int i = 0; i < 342; i += 18) { | ||||
|         g_twi_transfer_buffer[0] = i % 180; | ||||
| 
 | ||||
|         if (i == 180) { | ||||
|             // unlock the command register and select PG2
 | ||||
|             IS31FL3741_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); | ||||
|             IS31FL3741_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM1); | ||||
|         } | ||||
| 
 | ||||
|         g_twi_transfer_buffer[0] = i % 180; | ||||
|         memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 18); | ||||
| 
 | ||||
| #if ISSI_PERSISTENCE > 0 | ||||
| @ -251,4 +250,6 @@ void IS31FL3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t | ||||
|     g_scaling_registers[pled->driver][pled->r] = red; | ||||
|     g_scaling_registers[pled->driver][pled->g] = green; | ||||
|     g_scaling_registers[pled->driver][pled->b] = blue; | ||||
| 
 | ||||
|     g_scaling_registers_update_required[pled->driver] = true; | ||||
| } | ||||
|  | ||||
| @ -23,14 +23,13 @@ | ||||
| #include <stdbool.h> | ||||
| 
 | ||||
| typedef struct is31_led { | ||||
|     uint8_t  driver : 2; | ||||
|     uint16_t r; | ||||
|     uint16_t g; | ||||
|     uint16_t b; | ||||
|     uint32_t driver : 2; | ||||
|     uint32_t r : 10; | ||||
|     uint32_t g : 10; | ||||
|     uint32_t b : 10; | ||||
| } __attribute__((packed)) is31_led; | ||||
| 
 | ||||
| extern const is31_led g_is31_leds[DRIVER_LED_TOTAL]; | ||||
| extern const is31_led g_is31_indicator_leds[DRIVER_INDICATOR_LED_TOTAL]; | ||||
| 
 | ||||
| void IS31FL3741_init(uint8_t addr); | ||||
| void IS31FL3741_write_register(uint8_t addr, uint8_t reg, uint8_t data); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user