summaryrefslogtreecommitdiff
path: root/quantum/led_matrix
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/led_matrix
parenteac8e6788871a087eafdc5492eee425a7205d727 (diff)
Relocate LED driver init code (#22365)
Diffstat (limited to 'quantum/led_matrix')
-rw-r--r--quantum/led_matrix/led_matrix_drivers.c286
1 files changed, 32 insertions, 254 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