summaryrefslogtreecommitdiff
path: root/quantum
diff options
context:
space:
mode:
authorRyan <fauxpark@gmail.com>2023-11-01 11:53:45 +1100
committerGitHub <noreply@github.com>2023-11-01 00:53:45 +0000
commitb52aca0af83fade24c56b4bb7369f18183123bd3 (patch)
tree9b553c4b771717cc334f3c8683052bc701472c4d /quantum
parenteac8e6788871a087eafdc5492eee425a7205d727 (diff)
Relocate LED driver init code (#22365)
Diffstat (limited to 'quantum')
-rw-r--r--quantum/led_matrix/led_matrix_drivers.c286
-rw-r--r--quantum/rgb_matrix/rgb_matrix_drivers.c297
2 files changed, 64 insertions, 519 deletions
diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c
index ab8da3353a..117bed9851 100644
--- a/quantum/led_matrix/led_matrix_drivers.c
+++ b/quantum/led_matrix/led_matrix_drivers.c
@@ -25,290 +25,68 @@
25 * in their own files. 25 * in their own files.
26 */ 26 */
27 27
28#if defined(LED_MATRIX_IS31FL3218) || defined(LED_MATRIX_IS31FL3731) || defined(LED_MATRIX_IS31FL3733) || defined(LED_MATRIX_IS31FL3736) || defined(LED_MATRIX_IS31FL3737) || defined(LED_MATRIX_IS31FL3741) || defined(IS31FLCOMMON) || defined(LED_MATRIX_SNLED27351) 28#if defined(LED_MATRIX_IS31FL3218)
29# include "i2c_master.h"
30
31static void init(void) {
32 i2c_init();
33
34# if defined(LED_MATRIX_IS31FL3218)
35 is31fl3218_init();
36
37# elif defined(LED_MATRIX_IS31FL3731)
38 is31fl3731_init(IS31FL3731_I2C_ADDRESS_1);
39# if defined(IS31FL3731_I2C_ADDRESS_2)
40 is31fl3731_init(IS31FL3731_I2C_ADDRESS_2);
41# if defined(IS31FL3731_I2C_ADDRESS_3)
42 is31fl3731_init(IS31FL3731_I2C_ADDRESS_3);
43# if defined(IS31FL3731_I2C_ADDRESS_4)
44 is31fl3731_init(IS31FL3731_I2C_ADDRESS_4);
45# endif
46# endif
47# endif
48
49# elif defined(LED_MATRIX_IS31FL3733)
50# if !defined(IS31FL3733_SYNC_1)
51# define IS31FL3733_SYNC_1 0
52# endif
53 is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1);
54# if defined(IS31FL3733_I2C_ADDRESS_2)
55# if !defined(IS31FL3733_SYNC_2)
56# define IS31FL3733_SYNC_2 0
57# endif
58 is31fl3733_init(IS31FL3733_I2C_ADDRESS_2, IS31FL3733_SYNC_2);
59# if defined(IS31FL3733_I2C_ADDRESS_3)
60# if !defined(IS31FL3733_SYNC_3)
61# define IS31FL3733_SYNC_3 0
62# endif
63 is31fl3733_init(IS31FL3733_I2C_ADDRESS_3, IS31FL3733_SYNC_3);
64# if defined(IS31FL3733_I2C_ADDRESS_4)
65# if !defined(IS31FL3733_SYNC_4)
66# define IS31FL3733_SYNC_4 0
67# endif
68 is31fl3733_init(IS31FL3733_I2C_ADDRESS_4, IS31FL3733_SYNC_4);
69# endif
70# endif
71# endif
72
73# elif defined(LED_MATRIX_IS31FL3736)
74 is31fl3736_init(IS31FL3736_I2C_ADDRESS_1);
75# if defined(IS31FL3736_I2C_ADDRESS_2)
76 is31fl3736_init(IS31FL3736_I2C_ADDRESS_2);
77# if defined(IS31FL3736_I2C_ADDRESS_3)
78 is31fl3736_init(IS31FL3736_I2C_ADDRESS_3);
79# if defined(IS31FL3736_I2C_ADDRESS_4)
80 is31fl3736_init(IS31FL3736_I2C_ADDRESS_4);
81# endif
82# endif
83# endif
84
85# elif defined(LED_MATRIX_IS31FL3737)
86 is31fl3737_init(IS31FL3737_I2C_ADDRESS_1);
87# if defined(IS31FL3737_I2C_ADDRESS_2)
88 is31fl3737_init(IS31FL3737_I2C_ADDRESS_2);
89# if defined(IS31FL3737_I2C_ADDRESS_3)
90 is31fl3737_init(IS31FL3737_I2C_ADDRESS_3);
91# if defined(IS31FL3737_I2C_ADDRESS_4)
92 is31fl3737_init(IS31FL3737_I2C_ADDRESS_4);
93# endif
94# endif
95# endif
96
97# elif defined(LED_MATRIX_IS31FL3741)
98 is31fl3741_init(IS31FL3741_I2C_ADDRESS_1);
99# if defined(IS31FL3741_I2C_ADDRESS_2)
100 is31fl3741_init(IS31FL3741_I2C_ADDRESS_2);
101# if defined(IS31FL3741_I2C_ADDRESS_3)
102 is31fl3741_init(IS31FL3741_I2C_ADDRESS_3);
103# if defined(IS31FL3741_I2C_ADDRESS_4)
104 is31fl3741_init(IS31FL3741_I2C_ADDRESS_4);
105# endif
106# endif
107# endif
108
109# elif defined(IS31FLCOMMON)
110 IS31FL_common_init(DRIVER_ADDR_1, ISSI_SSR_1);
111# if defined(LED_DRIVER_ADDR_2)
112 IS31FL_common_init(DRIVER_ADDR_2, ISSI_SSR_2);
113# if defined(LED_DRIVER_ADDR_3)
114 IS31FL_common_init(DRIVER_ADDR_3, ISSI_SSR_3);
115# if defined(LED_DRIVER_ADDR_4)
116 IS31FL_common_init(DRIVER_ADDR_4, ISSI_SSR_4);
117# endif
118# endif
119# endif
120# elif defined(LED_MATRIX_SNLED27351)
121# if defined(LED_DRIVER_SHUTDOWN_PIN)
122 setPinOutput(LED_DRIVER_SHUTDOWN_PIN);
123 writePinHigh(LED_DRIVER_SHUTDOWN_PIN);
124# endif
125
126 snled27351_init(SNLED27351_I2C_ADDRESS_1);
127# if defined(SNLED27351_I2C_ADDRESS_2)
128 snled27351_init(SNLED27351_I2C_ADDRESS_2);
129# if defined(SNLED27351_I2C_ADDRESS_3)
130 snled27351_init(SNLED27351_I2C_ADDRESS_3);
131# if defined(SNLED27351_I2C_ADDRESS_4)
132 snled27351_init(SNLED27351_I2C_ADDRESS_4);
133# endif
134# endif
135# endif
136# endif
137
138 for (int index = 0; index < LED_MATRIX_LED_COUNT; index++) {
139# if defined(LED_MATRIX_IS31FL3218)
140 is31fl3218_set_led_control_register(index, true);
141# elif defined(LED_MATRIX_IS31FL3731)
142 is31fl3731_set_led_control_register(index, true);
143# elif defined(LED_MATRIX_IS31FL3733)
144 is31fl3733_set_led_control_register(index, true);
145# elif defined(LED_MATRIX_IS31FL3736)
146 is31fl3736_set_led_control_register(index, true);
147# elif defined(LED_MATRIX_IS31FL3737)
148 is31fl3737_set_led_control_register(index, true);
149# elif defined(LED_MATRIX_IS31FL3741)
150 is31fl3741_set_led_control_register(index, true);
151# elif defined(IS31FLCOMMON)
152 IS31FL_simple_set_scaling_buffer(index, true);
153# elif defined(LED_MATRIX_SNLED27351)
154 snled27351_set_led_control_register(index, true);
155# endif
156 }
157
158// This actually updates the LED drivers
159# if defined(LED_MATRIX_IS31FL3218)
160 is31fl3218_update_led_control_registers();
161
162# elif defined(LED_MATRIX_IS31FL3731)
163 is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0);
164# if defined(IS31FL3731_I2C_ADDRESS_2)
165 is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1);
166# if defined(IS31FL3731_I2C_ADDRESS_3)
167 is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_3, 2);
168# if defined(IS31FL3731_I2C_ADDRESS_4)
169 is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_4, 3);
170# endif
171# endif
172# endif
173
174# elif defined(LED_MATRIX_IS31FL3733)
175 is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_1, 0);
176# if defined(IS31FL3733_I2C_ADDRESS_2)
177 is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_2, 1);
178# if defined(IS31FL3733_I2C_ADDRESS_3)
179 is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_3, 2);
180# if defined(IS31FL3733_I2C_ADDRESS_4)
181 is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_4, 3);
182# endif
183# endif
184# endif
185
186# elif defined(LED_MATRIX_IS31FL3736)
187 is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_1, 0);
188# if defined(IS31FL3736_I2C_ADDRESS_2)
189 is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_2, 1);
190# if defined(IS31FL3736_I2C_ADDRESS_3)
191 is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_3, 2);
192# if defined(IS31FL3736_I2C_ADDRESS_4)
193 is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_4, 3);
194# endif
195# endif
196# endif
197
198# elif defined(LED_MATRIX_IS31FL3737)
199 is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_1, 0);
200# if defined(IS31FL3737_I2C_ADDRESS_2)
201 is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_2, 1);
202# if defined(IS31FL3737_I2C_ADDRESS_3)
203 is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_3, 2);
204# if defined(IS31FL3737_I2C_ADDRESS_4)
205 is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_4, 3);
206# endif
207# endif
208# endif
209
210# elif defined(LED_MATRIX_IS31FL3741)
211 is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_1, 0);
212# if defined(IS31FL3741_I2C_ADDRESS_2)
213 is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_2, 1);
214# if defined(IS31FL3741_I2C_ADDRESS_3)
215 is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_3, 2);
216# if defined(IS31FL3741_I2C_ADDRESS_4)
217 is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_4, 3);
218# endif
219# endif
220# endif
221
222# elif defined(IS31FLCOMMON)
223# ifdef ISSI_MANUAL_SCALING
224 IS31FL_set_manual_scaling_buffer();
225# endif
226 IS31FL_common_update_scaling_register(DRIVER_ADDR_1, 0);
227# if defined(LED_DRIVER_ADDR_2)
228 IS31FL_common_update_scaling_register(DRIVER_ADDR_2, 1);
229# if defined(LED_DRIVER_ADDR_3)
230 IS31FL_common_update_scaling_register(DRIVER_ADDR_3, 2);
231# if defined(LED_DRIVER_ADDR_4)
232 IS31FL_common_update_scaling_register(DRIVER_ADDR_4, 3);
233# endif
234# endif
235# endif
236
237# elif defined(LED_MATRIX_SNLED27351)
238 snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_1, 0);
239# if defined(SNLED27351_I2C_ADDRESS_2)
240 snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_2, 1);
241# if defined(SNLED27351_I2C_ADDRESS_3)
242 snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_3, 2);
243# if defined(SNLED27351_I2C_ADDRESS_4)
244 snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_4, 3);
245# endif
246# endif
247# endif
248# endif
249}
250
251# if defined(LED_MATRIX_IS31FL3218)
252const led_matrix_driver_t led_matrix_driver = { 29const led_matrix_driver_t led_matrix_driver = {
253 .init = init, 30 .init = is31fl3218_init,
254 .flush = is31fl3218_update_pwm_buffers, 31 .flush = is31fl3218_update_pwm_buffers,
255 .set_value = is31fl3218_set_value, 32 .set_value = is31fl3218_set_value,
256 .set_value_all = is31fl3218_set_value_all, 33 .set_value_all = is31fl3218_set_value_all,
257}; 34};
258 35
259# elif defined(LED_MATRIX_IS31FL3731) 36#elif defined(LED_MATRIX_IS31FL3731)
260const led_matrix_driver_t led_matrix_driver = { 37const led_matrix_driver_t led_matrix_driver = {
261 .init = init, 38 .init = is31fl3731_init_drivers,
262 .flush = is31fl3731_flush, 39 .flush = is31fl3731_flush,
263 .set_value = is31fl3731_set_value, 40 .set_value = is31fl3731_set_value,
264 .set_value_all = is31fl3731_set_value_all, 41 .set_value_all = is31fl3731_set_value_all,
265}; 42};
266 43
267# elif defined(LED_MATRIX_IS31FL3733) 44#elif defined(LED_MATRIX_IS31FL3733)
268const led_matrix_driver_t led_matrix_driver = { 45const led_matrix_driver_t led_matrix_driver = {
269 .init = init, 46 .init = is31fl3733_init_drivers,
270 .flush = is31fl3733_flush, 47 .flush = is31fl3733_flush,
271 .set_value = is31fl3733_set_value, 48 .set_value = is31fl3733_set_value,
272 .set_value_all = is31fl3733_set_value_all, 49 .set_value_all = is31fl3733_set_value_all,
273}; 50};
274 51
275# elif defined(LED_MATRIX_IS31FL3736) 52#elif defined(LED_MATRIX_IS31FL3736)
276const led_matrix_driver_t led_matrix_driver = { 53const led_matrix_driver_t led_matrix_driver = {
277 .init = init, 54 .init = is31fl3736_init_drivers,
278 .flush = is31fl3736_flush, 55 .flush = is31fl3736_flush,
279 .set_value = is31fl3736_set_value, 56 .set_value = is31fl3736_set_value,
280 .set_value_all = is31fl3736_set_value_all, 57 .set_value_all = is31fl3736_set_value_all,
281}; 58};
282 59
283# elif defined(LED_MATRIX_IS31FL3737) 60#elif defined(LED_MATRIX_IS31FL3737)
284const led_matrix_driver_t led_matrix_driver = { 61const led_matrix_driver_t led_matrix_driver = {
285 .init = init, 62 .init = is31fl3737_init_drivers,
286 .flush = is31fl3737_flush, 63 .flush = is31fl3737_flush,
287 .set_value = is31fl3737_set_value, 64 .set_value = is31fl3737_set_value,
288 .set_value_all = is31fl3737_set_value_all, 65 .set_value_all = is31fl3737_set_value_all,
289}; 66};
290 67
291# elif defined(LED_MATRIX_IS31FL3741) 68#elif defined(LED_MATRIX_IS31FL3741)
292const led_matrix_driver_t led_matrix_driver = { 69const led_matrix_driver_t led_matrix_driver = {
293 .init = init, 70 .init = is31fl3741_init_drivers,
294 .flush = is31fl3741_flush, 71 .flush = is31fl3741_flush,
295 .set_value = is31fl3741_set_value, 72 .set_value = is31fl3741_set_value,
296 .set_value_all = is31fl3741_set_value_all, 73 .set_value_all = is31fl3741_set_value_all,
297}; 74};
298 75
299# elif defined(IS31FLCOMMON) 76#elif defined(IS31FLCOMMON)
300const led_matrix_driver_t led_matrix_driver = { 77const led_matrix_driver_t led_matrix_driver = {
301 .init = init, 78 .init = IS31FL_simple_init_drivers,
302 .flush = IS31FL_common_flush, 79 .flush = IS31FL_common_flush,
303 .set_value = IS31FL_simple_set_brightness, 80 .set_value = IS31FL_simple_set_brightness,
304 .set_value_all = IS31FL_simple_set_brigntness_all, 81 .set_value_all = IS31FL_simple_set_brigntness_all,
305}; 82};
306# elif defined(LED_MATRIX_SNLED27351) 83
84#elif defined(LED_MATRIX_SNLED27351)
307const led_matrix_driver_t led_matrix_driver = { 85const led_matrix_driver_t led_matrix_driver = {
308 .init = init, 86 .init = snled27351_init_drivers,
309 .flush = snled27351_flush, 87 .flush = snled27351_flush,
310 .set_value = snled27351_set_value, 88 .set_value = snled27351_set_value,
311 .set_value_all = snled27351_set_value_all, 89 .set_value_all = snled27351_set_value_all,
312}; 90};
313# endif 91
314#endif 92#endif
diff --git a/quantum/rgb_matrix/rgb_matrix_drivers.c b/quantum/rgb_matrix/rgb_matrix_drivers.c
index 0fe93ee077..0f979cb233 100644
--- a/quantum/rgb_matrix/rgb_matrix_drivers.c
+++ b/quantum/rgb_matrix/rgb_matrix_drivers.c
@@ -24,307 +24,73 @@
24 * be here if shared between boards. 24 * be here if shared between boards.
25 */ 25 */
26 26
27#if defined(RGB_MATRIX_IS31FL3218) || defined(RGB_MATRIX_IS31FL3731) || defined(RGB_MATRIX_IS31FL3733) || defined(RGB_MATRIX_IS31FL3736) || defined(RGB_MATRIX_IS31FL3737) || defined(RGB_MATRIX_IS31FL3741) || defined(IS31FLCOMMON) || defined(RGB_MATRIX_SNLED27351) 27#if defined(RGB_MATRIX_IS31FL3218)
28# include "i2c_master.h"
29
30static void init(void) {
31 i2c_init();
32
33# if defined(RGB_MATRIX_IS31FL3218)
34 is31fl3218_init();
35
36# elif defined(RGB_MATRIX_IS31FL3731)
37 is31fl3731_init(IS31FL3731_I2C_ADDRESS_1);
38# if defined(IS31FL3731_I2C_ADDRESS_2)
39 is31fl3731_init(IS31FL3731_I2C_ADDRESS_2);
40# if defined(IS31FL3731_I2C_ADDRESS_3)
41 is31fl3731_init(IS31FL3731_I2C_ADDRESS_3);
42# if defined(IS31FL3731_I2C_ADDRESS_4)
43 is31fl3731_init(IS31FL3731_I2C_ADDRESS_4);
44# endif
45# endif
46# endif
47
48# elif defined(RGB_MATRIX_IS31FL3733)
49# if !defined(IS31FL3733_SYNC_1)
50# define IS31FL3733_SYNC_1 0
51# endif
52 is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1);
53# if defined(IS31FL3733_I2C_ADDRESS_2)
54# if !defined(IS31FL3733_SYNC_2)
55# define IS31FL3733_SYNC_2 0
56# endif
57 is31fl3733_init(IS31FL3733_I2C_ADDRESS_2, IS31FL3733_SYNC_2);
58# if defined(IS31FL3733_I2C_ADDRESS_3)
59# if !defined(IS31FL3733_SYNC_3)
60# define IS31FL3733_SYNC_3 0
61# endif
62 is31fl3733_init(IS31FL3733_I2C_ADDRESS_3, IS31FL3733_SYNC_3);
63# if defined(IS31FL3733_I2C_ADDRESS_4)
64# if !defined(IS31FL3733_SYNC_4)
65# define IS31FL3733_SYNC_4 0
66# endif
67 is31fl3733_init(IS31FL3733_I2C_ADDRESS_4, IS31FL3733_SYNC_4);
68# endif
69# endif
70# endif
71
72# elif defined(RGB_MATRIX_IS31FL3736)
73 is31fl3736_init(IS31FL3736_I2C_ADDRESS_1);
74# if defined(IS31FL3736_I2C_ADDRESS_2)
75 is31fl3736_init(IS31FL3736_I2C_ADDRESS_2);
76# if defined(IS31FL3736_I2C_ADDRESS_3)
77 is31fl3736_init(IS31FL3736_I2C_ADDRESS_3);
78# if defined(IS31FL3736_I2C_ADDRESS_4)
79 is31fl3736_init(IS31FL3736_I2C_ADDRESS_4);
80# endif
81# endif
82# endif
83
84# elif defined(RGB_MATRIX_IS31FL3737)
85 is31fl3737_init(IS31FL3737_I2C_ADDRESS_1);
86# if defined(IS31FL3737_I2C_ADDRESS_2)
87 is31fl3737_init(IS31FL3737_I2C_ADDRESS_2);
88# if defined(IS31FL3737_I2C_ADDRESS_3)
89 is31fl3737_init(IS31FL3737_I2C_ADDRESS_3);
90# if defined(IS31FL3737_I2C_ADDRESS_4)
91 is31fl3737_init(IS31FL3737_I2C_ADDRESS_4);
92# endif
93# endif
94# endif
95
96# elif defined(RGB_MATRIX_IS31FL3741)
97 is31fl3741_init(IS31FL3741_I2C_ADDRESS_1);
98# if defined(IS31FL3741_I2C_ADDRESS_2)
99 is31fl3741_init(IS31FL3741_I2C_ADDRESS_2);
100# if defined(IS31FL3741_I2C_ADDRESS_3)
101 is31fl3741_init(IS31FL3741_I2C_ADDRESS_3);
102# if defined(IS31FL3741_I2C_ADDRESS_4)
103 is31fl3741_init(IS31FL3741_I2C_ADDRESS_4);
104# endif
105# endif
106# endif
107
108# elif defined(IS31FLCOMMON)
109 IS31FL_common_init(DRIVER_ADDR_1, ISSI_SSR_1);
110# if defined(DRIVER_ADDR_2)
111 IS31FL_common_init(DRIVER_ADDR_2, ISSI_SSR_2);
112# if defined(DRIVER_ADDR_3)
113 IS31FL_common_init(DRIVER_ADDR_3, ISSI_SSR_3);
114# if defined(DRIVER_ADDR_4)
115 IS31FL_common_init(DRIVER_ADDR_4, ISSI_SSR_4);
116# endif
117# endif
118# endif
119
120# elif defined(RGB_MATRIX_SNLED27351)
121 snled27351_init(SNLED27351_I2C_ADDRESS_1);
122# if defined(SNLED27351_I2C_ADDRESS_2)
123 snled27351_init(SNLED27351_I2C_ADDRESS_2);
124# if defined(SNLED27351_I2C_ADDRESS_3)
125 snled27351_init(SNLED27351_I2C_ADDRESS_3);
126# if defined(SNLED27351_I2C_ADDRESS_4)
127 snled27351_init(SNLED27351_I2C_ADDRESS_4);
128# endif
129# endif
130# endif
131# endif
132
133 for (int index = 0; index < RGB_MATRIX_LED_COUNT; index++) {
134 bool enabled = true;
135
136 // This only caches it for later
137# if defined(RGB_MATRIX_IS31FL3218)
138 is31fl3218_set_led_control_register(index, enabled, enabled, enabled);
139# elif defined(RGB_MATRIX_IS31FL3731)
140 is31fl3731_set_led_control_register(index, enabled, enabled, enabled);
141# elif defined(RGB_MATRIX_IS31FL3733)
142 is31fl3733_set_led_control_register(index, enabled, enabled, enabled);
143# elif defined(RGB_MATRIX_IS31FL3736)
144 is31fl3736_set_led_control_register(index, enabled, enabled, enabled);
145# elif defined(RGB_MATRIX_IS31FL3737)
146 is31fl3737_set_led_control_register(index, enabled, enabled, enabled);
147# elif defined(RGB_MATRIX_IS31FL3741)
148 is31fl3741_set_led_control_register(index, enabled, enabled, enabled);
149# elif defined(IS31FLCOMMON)
150 IS31FL_RGB_set_scaling_buffer(index, enabled, enabled, enabled);
151# elif defined(RGB_MATRIX_SNLED27351)
152 snled27351_set_led_control_register(index, enabled, enabled, enabled);
153# endif
154 }
155
156 // This actually updates the LED drivers
157# if defined(RGB_MATRIX_IS31FL3218)
158 is31fl3218_update_led_control_registers();
159
160# elif defined(RGB_MATRIX_IS31FL3731)
161 is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0);
162# if defined(IS31FL3731_I2C_ADDRESS_2)
163 is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1);
164# if defined(IS31FL3731_I2C_ADDRESS_3)
165 is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_3, 2);
166# if defined(IS31FL3731_I2C_ADDRESS_4)
167 is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_4, 3);
168# endif
169# endif
170# endif
171
172# elif defined(RGB_MATRIX_IS31FL3733)
173 is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_1, 0);
174# if defined(IS31FL3733_I2C_ADDRESS_2)
175 is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_2, 1);
176# if defined(IS31FL3733_I2C_ADDRESS_3)
177 is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_3, 2);
178# if defined(IS31FL3733_I2C_ADDRESS_4)
179 is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_4, 3);
180# endif
181# endif
182# endif
183
184# elif defined(RGB_MATRIX_IS31FL3736)
185 is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_1, 0);
186# if defined(IS31FL3736_I2C_ADDRESS_2)
187 is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_2, 1);
188# if defined(IS31FL3736_I2C_ADDRESS_3)
189 is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_3, 2);
190# if defined(IS31FL3736_I2C_ADDRESS_4)
191 is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_4, 3);
192# endif
193# endif
194# endif
195
196# elif defined(RGB_MATRIX_IS31FL3737)
197 is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_1, 0);
198# if defined(IS31FL3737_I2C_ADDRESS_2)
199 is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_2, 1);
200# if defined(IS31FL3737_I2C_ADDRESS_3)
201 is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_3, 2);
202# if defined(IS31FL3737_I2C_ADDRESS_4)
203 is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_4, 3);
204# endif
205# endif
206# endif
207
208# elif defined(RGB_MATRIX_IS31FL3741)
209 is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_1, 0);
210# if defined(IS31FL3741_I2C_ADDRESS_2)
211 is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_2, 1);
212# if defined(IS31FL3741_I2C_ADDRESS_3)
213 is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_3, 2);
214# if defined(IS31FL3741_I2C_ADDRESS_4)
215 is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_4, 3);
216# endif
217# endif
218# endif
219
220# elif defined(IS31FLCOMMON)
221# ifdef ISSI_MANUAL_SCALING
222 IS31FL_set_manual_scaling_buffer();
223# endif
224 IS31FL_common_update_scaling_register(DRIVER_ADDR_1, 0);
225# if defined(DRIVER_ADDR_2)
226 IS31FL_common_update_scaling_register(DRIVER_ADDR_2, 1);
227# if defined(DRIVER_ADDR_3)
228 IS31FL_common_update_scaling_register(DRIVER_ADDR_3, 2);
229# if defined(DRIVER_ADDR_4)
230 IS31FL_common_update_scaling_register(DRIVER_ADDR_4, 3);
231# endif
232# endif
233# endif
234
235# elif defined(RGB_MATRIX_SNLED27351)
236 snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_1, 0);
237# if defined(SNLED27351_I2C_ADDRESS_2)
238 snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_2, 1);
239# if defined(SNLED27351_I2C_ADDRESS_3)
240 snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_3, 2);
241# if defined(SNLED27351_I2C_ADDRESS_4)
242 snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_4, 3);
243# endif
244# endif
245# endif
246# endif
247}
248
249# if defined(RGB_MATRIX_IS31FL3218)
250const rgb_matrix_driver_t rgb_matrix_driver = { 28const rgb_matrix_driver_t rgb_matrix_driver = {
251 .init = init, 29 .init = is31fl3218_init,
252 .flush = is31fl3218_update_pwm_buffers, 30 .flush = is31fl3218_update_pwm_buffers,
253 .set_color = is31fl3218_set_color, 31 .set_color = is31fl3218_set_color,
254 .set_color_all = is31fl3218_set_color_all, 32 .set_color_all = is31fl3218_set_color_all,
255}; 33};
256 34
257# elif defined(RGB_MATRIX_IS31FL3731) 35#elif defined(RGB_MATRIX_IS31FL3731)
258const rgb_matrix_driver_t rgb_matrix_driver = { 36const rgb_matrix_driver_t rgb_matrix_driver = {
259 .init = init, 37 .init = is31fl3731_init_drivers,
260 .flush = is31fl3731_flush, 38 .flush = is31fl3731_flush,
261 .set_color = is31fl3731_set_color, 39 .set_color = is31fl3731_set_color,
262 .set_color_all = is31fl3731_set_color_all, 40 .set_color_all = is31fl3731_set_color_all,
263}; 41};
264 42
265# elif defined(RGB_MATRIX_IS31FL3733) 43#elif defined(RGB_MATRIX_IS31FL3733)
266const rgb_matrix_driver_t rgb_matrix_driver = { 44const rgb_matrix_driver_t rgb_matrix_driver = {
267 .init = init, 45 .init = is31fl3733_init_drivers,
268 .flush = is31fl3733_flush, 46 .flush = is31fl3733_flush,
269 .set_color = is31fl3733_set_color, 47 .set_color = is31fl3733_set_color,
270 .set_color_all = is31fl3733_set_color_all, 48 .set_color_all = is31fl3733_set_color_all,
271}; 49};
272 50
273# elif defined(RGB_MATRIX_IS31FL3736) 51#elif defined(RGB_MATRIX_IS31FL3736)
274const rgb_matrix_driver_t rgb_matrix_driver = { 52const rgb_matrix_driver_t rgb_matrix_driver = {
275 .init = init, 53 .init = is31fl3736_init_drivers,
276 .flush = is31fl3736_flush, 54 .flush = is31fl3736_flush,
277 .set_color = is31fl3736_set_color, 55 .set_color = is31fl3736_set_color,
278 .set_color_all = is31fl3736_set_color_all, 56 .set_color_all = is31fl3736_set_color_all,
279}; 57};
280 58
281# elif defined(RGB_MATRIX_IS31FL3737) 59#elif defined(RGB_MATRIX_IS31FL3737)
282const rgb_matrix_driver_t rgb_matrix_driver = { 60const rgb_matrix_driver_t rgb_matrix_driver = {
283 .init = init, 61 .init = is31fl3737_init_drivers,
284 .flush = is31fl3737_flush, 62 .flush = is31fl3737_flush,
285 .set_color = is31fl3737_set_color, 63 .set_color = is31fl3737_set_color,
286 .set_color_all = is31fl3737_set_color_all, 64 .set_color_all = is31fl3737_set_color_all,
287}; 65};
288 66
289# elif defined(RGB_MATRIX_IS31FL3741) 67#elif defined(RGB_MATRIX_IS31FL3741)
290const rgb_matrix_driver_t rgb_matrix_driver = { 68const rgb_matrix_driver_t rgb_matrix_driver = {
291 .init = init, 69 .init = is31fl3741_init_drivers,
292 .flush = is31fl3741_flush, 70 .flush = is31fl3741_flush,
293 .set_color = is31fl3741_set_color, 71 .set_color = is31fl3741_set_color,
294 .set_color_all = is31fl3741_set_color_all, 72 .set_color_all = is31fl3741_set_color_all,
295}; 73};
296 74
297# elif defined(IS31FLCOMMON) 75#elif defined(IS31FLCOMMON)
298const rgb_matrix_driver_t rgb_matrix_driver = { 76const rgb_matrix_driver_t rgb_matrix_driver = {
299 .init = init, 77 .init = IS31FL_RGB_init_drivers,
300 .flush = IS31FL_common_flush, 78 .flush = IS31FL_common_flush,
301 .set_color = IS31FL_RGB_set_color, 79 .set_color = IS31FL_RGB_set_color,
302 .set_color_all = IS31FL_RGB_set_color_all, 80 .set_color_all = IS31FL_RGB_set_color_all,
303}; 81};
304 82
305# elif defined(RGB_MATRIX_SNLED27351) 83#elif defined(RGB_MATRIX_SNLED27351)
306const rgb_matrix_driver_t rgb_matrix_driver = { 84const rgb_matrix_driver_t rgb_matrix_driver = {
307 .init = init, 85 .init = snled27351_init_drivers,
308 .flush = snled27351_flush, 86 .flush = snled27351_flush,
309 .set_color = snled27351_set_color, 87 .set_color = snled27351_set_color,
310 .set_color_all = snled27351_set_color_all, 88 .set_color_all = snled27351_set_color_all,
311}; 89};
312# endif
313 90
314#elif defined(RGB_MATRIX_AW20216S) 91#elif defined(RGB_MATRIX_AW20216S)
315# include "spi_master.h"
316
317static void init(void) {
318 spi_init();
319
320 aw20216s_init(AW20216S_CS_PIN_1, AW20216S_EN_PIN_1);
321# if defined(AW20216S_CS_PIN_2)
322 aw20216s_init(AW20216S_CS_PIN_2, AW20216S_EN_PIN_2);
323# endif
324}
325
326const rgb_matrix_driver_t rgb_matrix_driver = { 92const rgb_matrix_driver_t rgb_matrix_driver = {
327 .init = init, 93 .init = aw20216s_init_drivers,
328 .flush = aw20216s_flush, 94 .flush = aw20216s_flush,
329 .set_color = aw20216s_set_color, 95 .set_color = aw20216s_set_color,
330 .set_color_all = aw20216s_set_color_all, 96 .set_color_all = aw20216s_set_color_all,
@@ -391,4 +157,5 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
391 .set_color = setled, 157 .set_color = setled,
392 .set_color_all = setled_all, 158 .set_color_all = setled_all,
393}; 159};
160
394#endif 161#endif