Skip to content

Commit cf7d343

Browse files
authored
Add _flush() functions to LED drivers (qmk#22308)
1 parent 1e9b299 commit cf7d343

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+346
-319
lines changed

drivers/led/aw20216s.c

+7
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,10 @@ void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index) {
166166
}
167167
g_pwm_buffer_update_required[index] = false;
168168
}
169+
170+
void aw20216s_flush(void) {
171+
aw20216s_update_pwm_buffers(AW20216S_CS_PIN_1, 0);
172+
#if defined(AW20216S_CS_PIN_2)
173+
aw20216s_update_pwm_buffers(AW20216S_CS_PIN_2, 1);
174+
#endif
175+
}

drivers/led/aw20216s.h

+2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
6868
void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
6969
void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index);
7070

71+
void aw20216s_flush(void);
72+
7173
#define CS1_SW1 0x00
7274
#define CS2_SW1 0x01
7375
#define CS3_SW1 0x02

drivers/led/issi/is31fl3731-simple.c

+13
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,16 @@ void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) {
211211
g_led_control_registers_update_required[index] = false;
212212
}
213213
}
214+
215+
void is31fl3731_flush(void) {
216+
is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0);
217+
#if defined(IS31FL3731_I2C_ADDRESS_2)
218+
is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_2, 1);
219+
# if defined(IS31FL3731_I2C_ADDRESS_3)
220+
is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_3, 2);
221+
# if defined(IS31FL3731_I2C_ADDRESS_4)
222+
is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_4, 3);
223+
# endif
224+
# endif
225+
#endif
226+
}

drivers/led/issi/is31fl3731-simple.h

+2
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ void is31fl3731_set_led_control_register(uint8_t index, bool value);
8080
void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index);
8181
void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index);
8282

83+
void is31fl3731_flush(void);
84+
8385
#define C1_1 0x24
8486
#define C1_2 0x25
8587
#define C1_3 0x26

drivers/led/issi/is31fl3731.c

+13
Original file line numberDiff line numberDiff line change
@@ -223,3 +223,16 @@ void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) {
223223
}
224224
g_led_control_registers_update_required[index] = false;
225225
}
226+
227+
void is31fl3731_flush(void) {
228+
is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0);
229+
#if defined(IS31FL3731_I2C_ADDRESS_2)
230+
is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_2, 1);
231+
# if defined(IS31FL3731_I2C_ADDRESS_3)
232+
is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_3, 2);
233+
# if defined(IS31FL3731_I2C_ADDRESS_4)
234+
is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_4, 3);
235+
# endif
236+
# endif
237+
#endif
238+
}

drivers/led/issi/is31fl3731.h

+2
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bo
8181
void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index);
8282
void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index);
8383

84+
void is31fl3731_flush(void);
85+
8486
#define C1_1 0x24
8587
#define C1_2 0x25
8688
#define C1_3 0x26

drivers/led/issi/is31fl3733-simple.c

+13
Original file line numberDiff line numberDiff line change
@@ -233,3 +233,16 @@ void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) {
233233
g_led_control_registers_update_required[index] = false;
234234
}
235235
}
236+
237+
void is31fl3733_flush(void) {
238+
is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_1, 0);
239+
#if defined(IS31FL3733_I2C_ADDRESS_2)
240+
is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_2, 1);
241+
# if defined(IS31FL3733_I2C_ADDRESS_3)
242+
is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_3, 2);
243+
# if defined(IS31FL3733_I2C_ADDRESS_4)
244+
is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_4, 3);
245+
# endif
246+
# endif
247+
#endif
248+
}

drivers/led/issi/is31fl3733-simple.h

+2
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ void is31fl3733_set_led_control_register(uint8_t index, bool value);
9999
void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index);
100100
void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index);
101101

102+
void is31fl3733_flush(void);
103+
102104
#define IS31FL3733_PUR_0R 0x00 // No PUR resistor
103105
#define IS31FL3733_PUR_05KR 0x02 // 0.5k Ohm resistor in t_NOL
104106
#define IS31FL3733_PUR_3KR 0x03 // 3.0k Ohm resistor on all the time

drivers/led/issi/is31fl3733.c

+13
Original file line numberDiff line numberDiff line change
@@ -248,3 +248,16 @@ void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) {
248248
g_led_control_registers_update_required[index] = false;
249249
}
250250
}
251+
252+
void is31fl3733_flush(void) {
253+
is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_1, 0);
254+
#if defined(IS31FL3733_I2C_ADDRESS_2)
255+
is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_2, 1);
256+
# if defined(IS31FL3733_I2C_ADDRESS_3)
257+
is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_3, 2);
258+
# if defined(IS31FL3733_I2C_ADDRESS_4)
259+
is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_4, 3);
260+
# endif
261+
# endif
262+
#endif
263+
}

drivers/led/issi/is31fl3733.h

+2
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bo
124124
void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index);
125125
void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index);
126126

127+
void is31fl3733_flush(void);
128+
127129
#define IS31FL3733_PUR_0R 0x00 // No PUR resistor
128130
#define IS31FL3733_PUR_05KR 0x02 // 0.5k Ohm resistor in t_NOL
129131
#define IS31FL3733_PUR_3KR 0x03 // 3.0k Ohm resistor on all the time

drivers/led/issi/is31fl3736-simple.c

+13
Original file line numberDiff line numberDiff line change
@@ -220,3 +220,16 @@ void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) {
220220
g_led_control_registers_update_required[index] = false;
221221
}
222222
}
223+
224+
void is31fl3736_flush(void) {
225+
is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_1, 0);
226+
#if defined(IS31FL3736_I2C_ADDRESS_2)
227+
is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_2, 1);
228+
# if defined(IS31FL3736_I2C_ADDRESS_3)
229+
is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_3, 2);
230+
# if defined(IS31FL3736_I2C_ADDRESS_4)
231+
is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_4, 3);
232+
# endif
233+
# endif
234+
#endif
235+
}

drivers/led/issi/is31fl3736-simple.h

+2
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ void is31fl3736_set_led_control_register(uint8_t index, bool value);
9494
void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index);
9595
void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index);
9696

97+
void is31fl3736_flush(void);
98+
9799
#define IS31FL3736_PUR_0R 0x00 // No PUR resistor
98100
#define IS31FL3736_PUR_05KR 0x01 // 0.5k Ohm resistor
99101
#define IS31FL3736_PUR_1KR 0x02 // 1.0k Ohm resistor

drivers/led/issi/is31fl3736.c

+13
Original file line numberDiff line numberDiff line change
@@ -237,3 +237,16 @@ void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) {
237237
g_led_control_registers_update_required[index] = false;
238238
}
239239
}
240+
241+
void is31fl3736_flush(void) {
242+
is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_1, 0);
243+
#if defined(IS31FL3736_I2C_ADDRESS_2)
244+
is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_2, 1);
245+
# if defined(IS31FL3736_I2C_ADDRESS_3)
246+
is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_3, 2);
247+
# if defined(IS31FL3736_I2C_ADDRESS_4)
248+
is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_4, 3);
249+
# endif
250+
# endif
251+
#endif
252+
}

drivers/led/issi/is31fl3736.h

+2
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bo
108108
void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index);
109109
void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index);
110110

111+
void is31fl3736_flush(void);
112+
111113
#define IS31FL3736_PUR_0R 0x00 // No PUR resistor
112114
#define IS31FL3736_PUR_05KR 0x01 // 0.5k Ohm resistor
113115
#define IS31FL3736_PUR_1KR 0x02 // 1.0k Ohm resistor

drivers/led/issi/is31fl3737-simple.c

+13
Original file line numberDiff line numberDiff line change
@@ -217,3 +217,16 @@ void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) {
217217
g_led_control_registers_update_required[index] = false;
218218
}
219219
}
220+
221+
void is31fl3737_flush(void) {
222+
is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_1, 0);
223+
#if defined(IS31FL3737_I2C_ADDRESS_2)
224+
is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_2, 1);
225+
# if defined(IS31FL3737_I2C_ADDRESS_3)
226+
is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_3, 2);
227+
# if defined(IS31FL3737_I2C_ADDRESS_4)
228+
is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_4, 3);
229+
# endif
230+
# endif
231+
#endif
232+
}

drivers/led/issi/is31fl3737-simple.h

+2
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ void is31fl3737_set_led_control_register(uint8_t index, bool value);
8484
void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index);
8585
void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index);
8686

87+
void is31fl3737_flush(void);
88+
8789
#define IS31FL3737_PUR_0R 0x00 // No PUR resistor
8890
#define IS31FL3737_PUR_05KR 0x01 // 0.5k Ohm resistor in t_NOL
8991
#define IS31FL3737_PUR_1KR 0x02 // 1.0k Ohm resistor in t_NOL

drivers/led/issi/is31fl3737.c

+13
Original file line numberDiff line numberDiff line change
@@ -233,3 +233,16 @@ void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) {
233233
g_led_control_registers_update_required[index] = false;
234234
}
235235
}
236+
237+
void is31fl3737_flush(void) {
238+
is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_1, 0);
239+
#if defined(IS31FL3737_I2C_ADDRESS_2)
240+
is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_2, 1);
241+
# if defined(IS31FL3737_I2C_ADDRESS_3)
242+
is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_3, 2);
243+
# if defined(IS31FL3737_I2C_ADDRESS_4)
244+
is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_4, 3);
245+
# endif
246+
# endif
247+
#endif
248+
}

drivers/led/issi/is31fl3737.h

+2
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bo
101101
void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index);
102102
void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index);
103103

104+
void is31fl3737_flush(void);
105+
104106
#define IS31FL3737_PUR_0R 0x00 // No PUR resistor
105107
#define IS31FL3737_PUR_05KR 0x01 // 0.5k Ohm resistor in t_NOL
106108
#define IS31FL3737_PUR_1KR 0x02 // 1.0k Ohm resistor in t_NOL

drivers/led/issi/is31fl3741-simple.c

+13
Original file line numberDiff line numberDiff line change
@@ -251,3 +251,16 @@ void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t valu
251251

252252
g_scaling_registers_update_required[pled->driver] = true;
253253
}
254+
255+
void is31fl3741_flush(void) {
256+
is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_1, 0);
257+
#if defined(IS31FL3741_I2C_ADDRESS_2)
258+
is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_2, 1);
259+
# if defined(IS31FL3741_I2C_ADDRESS_3)
260+
is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_3, 2);
261+
# if defined(IS31FL3741_I2C_ADDRESS_4)
262+
is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_4, 3);
263+
# endif
264+
# endif
265+
#endif
266+
}

drivers/led/issi/is31fl3741-simple.h

+2
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t valu
8787

8888
void is31fl3741_set_pwm_buffer(const is31fl3741_led *pled, uint8_t value);
8989

90+
void is31fl3741_flush(void);
91+
9092
#define IS31FL3741_PUR_0R 0x00 // No PUR resistor
9193
#define IS31FL3741_PUR_05KR 0x01 // 0.5k Ohm resistor
9294
#define IS31FL3741_PUR_1KR 0x02 // 1.0k Ohm resistor

drivers/led/issi/is31fl3741.c

+13
Original file line numberDiff line numberDiff line change
@@ -269,3 +269,16 @@ void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t red,
269269

270270
g_scaling_registers_update_required[pled->driver] = true;
271271
}
272+
273+
void is31fl3741_flush(void) {
274+
is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_1, 0);
275+
#if defined(IS31FL3741_I2C_ADDRESS_2)
276+
is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_2, 1);
277+
# if defined(IS31FL3741_I2C_ADDRESS_3)
278+
is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_3, 2);
279+
# if defined(IS31FL3741_I2C_ADDRESS_4)
280+
is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_4, 3);
281+
# endif
282+
# endif
283+
#endif
284+
}

drivers/led/issi/is31fl3741.h

+2
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t red,
104104

105105
void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue);
106106

107+
void is31fl3741_flush(void);
108+
107109
#define IS31FL3741_PUR_0R 0x00 // No PUR resistor
108110
#define IS31FL3741_PUR_05KR 0x01 // 0.5k Ohm resistor
109111
#define IS31FL3741_PUR_1KR 0x02 // 1.0k Ohm resistor

drivers/led/issi/is31flcommon.c

+13
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,19 @@ void IS31FL_common_update_scaling_register(uint8_t addr, uint8_t index) {
174174
}
175175
}
176176

177+
void IS31FL_common_flush(void) {
178+
IS31FL_common_update_pwm_register(DRIVER_ADDR_1, 0);
179+
#if defined(DRIVER_ADDR_2)
180+
IS31FL_common_update_pwm_register(DRIVER_ADDR_2, 1);
181+
# if defined(DRIVER_ADDR_3)
182+
IS31FL_common_update_pwm_register(DRIVER_ADDR_3, 2);
183+
# if defined(DRIVER_ADDR_4)
184+
IS31FL_common_update_pwm_register(DRIVER_ADDR_4, 3);
185+
# endif
186+
# endif
187+
#endif
188+
}
189+
177190
#ifdef RGB_MATRIX_ENABLE
178191
// Colour is set by adjusting PWM register
179192
void IS31FL_RGB_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {

drivers/led/issi/is31flcommon.h

+2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ void IS31FL_common_init(uint8_t addr, uint8_t ssr);
6767
void IS31FL_common_update_pwm_register(uint8_t addr, uint8_t index);
6868
void IS31FL_common_update_scaling_register(uint8_t addr, uint8_t index);
6969

70+
void IS31FL_common_flush(void);
71+
7072
#ifdef RGB_MATRIX_ENABLE
7173
// RGB Matrix Specific scripts
7274
void IS31FL_RGB_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);

drivers/led/snled27351-simple.c

+13
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,19 @@ void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) {
203203
g_led_control_registers_update_required[index] = false;
204204
}
205205

206+
void snled27351_flush(void) {
207+
snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_1, 0);
208+
#if defined(SNLED27351_I2C_ADDRESS_2)
209+
snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_2, 1);
210+
# if defined(SNLED27351_I2C_ADDRESS_3)
211+
snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_3, 2);
212+
# if defined(SNLED27351_I2C_ADDRESS_4)
213+
snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_4, 3);
214+
# endif
215+
# endif
216+
#endif
217+
}
218+
206219
void snled27351_sw_return_normal(uint8_t addr) {
207220
// Select to function page
208221
snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE);

drivers/led/snled27351-simple.h

+2
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ void snled27351_set_led_control_register(uint8_t index, bool value);
8282
void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index);
8383
void snled27351_update_led_control_registers(uint8_t addr, uint8_t index);
8484

85+
void snled27351_flush(void);
86+
8587
void snled27351_sw_return_normal(uint8_t addr);
8688
void snled27351_sw_shutdown(uint8_t addr);
8789

drivers/led/snled27351.c

+13
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,19 @@ void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) {
218218
g_led_control_registers_update_required[index] = false;
219219
}
220220

221+
void snled27351_flush(void) {
222+
snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_1, 0);
223+
#if defined(SNLED27351_I2C_ADDRESS_2)
224+
snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_2, 1);
225+
# if defined(SNLED27351_I2C_ADDRESS_3)
226+
snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_3, 2);
227+
# if defined(SNLED27351_I2C_ADDRESS_4)
228+
snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_4, 3);
229+
# endif
230+
# endif
231+
#endif
232+
}
233+
221234
void snled27351_sw_return_normal(uint8_t addr) {
222235
// Select to function page
223236
snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE);

drivers/led/snled27351.h

+2
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bo
9696
void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index);
9797
void snled27351_update_led_control_registers(uint8_t addr, uint8_t index);
9898

99+
void snled27351_flush(void);
100+
99101
void snled27351_sw_return_normal(uint8_t addr);
100102
void snled27351_sw_shutdown(uint8_t addr);
101103

0 commit comments

Comments
 (0)