diff options
Diffstat (limited to 'quantum/led_matrix/led_matrix_drivers.c')
-rw-r--r-- | quantum/led_matrix/led_matrix_drivers.c | 133 |
1 files changed, 64 insertions, 69 deletions
diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c index 1d46b2c50..2157619a0 100644 --- a/quantum/led_matrix/led_matrix_drivers.c +++ b/quantum/led_matrix/led_matrix_drivers.c | |||
@@ -26,128 +26,123 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | #if defined(IS31FL3731) || defined(IS31FL3733) | 28 | #if defined(IS31FL3731) || defined(IS31FL3733) |
29 | |||
30 | # include "i2c_master.h" | 29 | # include "i2c_master.h" |
31 | 30 | ||
32 | static void init(void) { | 31 | static void init(void) { |
33 | i2c_init(); | 32 | i2c_init(); |
34 | # ifdef IS31FL3731 | 33 | |
35 | # ifdef LED_DRIVER_ADDR_1 | 34 | # if defined(IS31FL3731) |
36 | IS31FL3731_init(LED_DRIVER_ADDR_1); | 35 | IS31FL3731_init(LED_DRIVER_ADDR_1); |
37 | # endif | 36 | # if defined(LED_DRIVER_ADDR_2) |
38 | # ifdef LED_DRIVER_ADDR_2 | ||
39 | IS31FL3731_init(LED_DRIVER_ADDR_2); | 37 | IS31FL3731_init(LED_DRIVER_ADDR_2); |
40 | # endif | 38 | # if defined(LED_DRIVER_ADDR_3) |
41 | # ifdef LED_DRIVER_ADDR_3 | ||
42 | IS31FL3731_init(LED_DRIVER_ADDR_3); | 39 | IS31FL3731_init(LED_DRIVER_ADDR_3); |
43 | # endif | 40 | # if defined(LED_DRIVER_ADDR_4) |
44 | # ifdef LED_DRIVER_ADDR_4 | ||
45 | IS31FL3731_init(LED_DRIVER_ADDR_4); | 41 | IS31FL3731_init(LED_DRIVER_ADDR_4); |
46 | # endif | 42 | # endif |
47 | # else | ||
48 | # ifdef LED_DRIVER_ADDR_1 | ||
49 | # ifndef LED_DRIVER_SYNC_1 | ||
50 | # define LED_DRIVER_SYNC_1 0 | ||
51 | # endif | 43 | # endif |
52 | IS31FL3733_init(LED_DRIVER_ADDR_1, LED_DRIVER_SYNC_1); | ||
53 | # endif | 44 | # endif |
54 | # ifdef LED_DRIVER_ADDR_2 | 45 | |
55 | # ifndef LED_DRIVER_SYNC_2 | 46 | # elif defined(IS31FL3733) |
47 | # if !defined(LED_DRIVER_SYNC_1) | ||
48 | # define LED_DRIVER_SYNC_1 0 | ||
49 | # endif | ||
50 | IS31FL3733_init(LED_DRIVER_ADDR_1, LED_DRIVER_SYNC_1); | ||
51 | # if defined(LED_DRIVER_ADDR_2) | ||
52 | # if !defined(LED_DRIVER_SYNC_2) | ||
56 | # define LED_DRIVER_SYNC_2 0 | 53 | # define LED_DRIVER_SYNC_2 0 |
57 | # endif | 54 | # endif |
58 | IS31FL3733_init(LED_DRIVER_ADDR_2, LED_DRIVER_SYNC_2); | 55 | IS31FL3733_init(LED_DRIVER_ADDR_2, LED_DRIVER_SYNC_2); |
59 | # endif | 56 | # if defined(LED_DRIVER_ADDR_3) |
60 | # ifdef LED_DRIVER_ADDR_3 | 57 | # if !defined(LED_DRIVER_SYNC_3) |
61 | # ifndef LED_DRIVER_SYNC_3 | 58 | # define LED_DRIVER_SYNC_3 0 |
62 | # define LED_DRIVER_SYNC_3 0 | 59 | # endif |
63 | # endif | ||
64 | IS31FL3733_init(LED_DRIVER_ADDR_3, LED_DRIVER_SYNC_3); | 60 | IS31FL3733_init(LED_DRIVER_ADDR_3, LED_DRIVER_SYNC_3); |
65 | # endif | 61 | # if defined(LED_DRIVER_ADDR_4) |
66 | # ifdef LED_DRIVER_ADDR_4 | 62 | # if !defined(LED_DRIVER_SYNC_4) |
67 | # ifndef LED_DRIVER_SYNC_4 | 63 | # define LED_DRIVER_SYNC_4 0 |
68 | # define LED_DRIVER_SYNC_4 0 | 64 | # endif |
69 | # endif | ||
70 | IS31FL3733_init(LED_DRIVER_ADDR_4, LED_DRIVER_SYNC_4); | 65 | IS31FL3733_init(LED_DRIVER_ADDR_4, LED_DRIVER_SYNC_4); |
66 | # endif | ||
67 | # endif | ||
71 | # endif | 68 | # endif |
72 | # endif | 69 | # endif |
73 | 70 | ||
74 | for (int index = 0; index < DRIVER_LED_TOTAL; index++) { | 71 | for (int index = 0; index < DRIVER_LED_TOTAL; index++) { |
75 | # ifdef IS31FL3731 | 72 | # if defined(IS31FL3731) |
76 | IS31FL3731_set_led_control_register(index, true); | 73 | IS31FL3731_set_led_control_register(index, true); |
77 | # else | 74 | # elif defined(IS31FL3733) |
78 | IS31FL3733_set_led_control_register(index, true); | 75 | IS31FL3733_set_led_control_register(index, true); |
79 | # endif | 76 | # endif |
80 | } | 77 | } |
78 | |||
81 | // This actually updates the LED drivers | 79 | // This actually updates the LED drivers |
82 | # ifdef IS31FL3731 | 80 | # if defined(IS31FL3731) |
83 | # ifdef LED_DRIVER_ADDR_1 | ||
84 | IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0); | 81 | IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0); |
85 | # endif | 82 | # if defined(LED_DRIVER_ADDR_2) |
86 | # ifdef LED_DRIVER_ADDR_2 | ||
87 | IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_2, 1); | 83 | IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_2, 1); |
88 | # endif | 84 | # if defined(LED_DRIVER_ADDR_3) |
89 | # ifdef LED_DRIVER_ADDR_3 | ||
90 | IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_3, 2); | 85 | IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_3, 2); |
91 | # endif | 86 | # if defined(LED_DRIVER_ADDR_4) |
92 | # ifdef LED_DRIVER_ADDR_4 | ||
93 | IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_4, 3); | 87 | IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_4, 3); |
88 | # endif | ||
89 | # endif | ||
94 | # endif | 90 | # endif |
95 | # else | 91 | |
96 | # ifdef LED_DRIVER_ADDR_1 | 92 | # elif defined(IS31FL3733) |
97 | IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_1, 0); | 93 | IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_1, 0); |
98 | # endif | 94 | # if defined(LED_DRIVER_ADDR_2) |
99 | # ifdef LED_DRIVER_ADDR_2 | ||
100 | IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_2, 1); | 95 | IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_2, 1); |
101 | # endif | 96 | # if defined(LED_DRIVER_ADDR_3) |
102 | # ifdef LED_DRIVER_ADDR_3 | ||
103 | IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_3, 2); | 97 | IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_3, 2); |
104 | # endif | 98 | # if defined(LED_DRIVER_ADDR_4) |
105 | # ifdef LED_DRIVER_ADDR_4 | ||
106 | IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_4, 3); | 99 | IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_4, 3); |
100 | # endif | ||
101 | # endif | ||
107 | # endif | 102 | # endif |
108 | # endif | 103 | # endif |
109 | } | 104 | } |
110 | 105 | ||
106 | # if defined(IS31FL3731) | ||
111 | static void flush(void) { | 107 | static void flush(void) { |
112 | # ifdef IS31FL3731 | ||
113 | # ifdef LED_DRIVER_ADDR_1 | ||
114 | IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); | 108 | IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); |
115 | # endif | 109 | # if defined(LED_DRIVER_ADDR_2) |
116 | # ifdef LED_DRIVER_ADDR_2 | ||
117 | IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); | 110 | IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); |
118 | # endif | 111 | # if defined(LED_DRIVER_ADDR_3) |
119 | # ifdef LED_DRIVER_ADDR_3 | ||
120 | IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); | 112 | IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); |
121 | # endif | 113 | # if defined(LED_DRIVER_ADDR_4) |
122 | # ifdef LED_DRIVER_ADDR_4 | ||
123 | IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); | 114 | IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); |
115 | # endif | ||
116 | # endif | ||
124 | # endif | 117 | # endif |
125 | # else | 118 | } |
126 | # ifdef LED_DRIVER_ADDR_1 | 119 | |
120 | const led_matrix_driver_t led_matrix_driver = { | ||
121 | .init = init, | ||
122 | .flush = flush, | ||
123 | .set_value = IS31FL3731_set_value, | ||
124 | .set_value_all = IS31FL3731_set_value_all, | ||
125 | }; | ||
126 | |||
127 | # elif defined(IS31FL3733) | ||
128 | static void flush(void) { | ||
127 | IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); | 129 | IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); |
128 | # endif | 130 | # if defined(LED_DRIVER_ADDR_2) |
129 | # ifdef LED_DRIVER_ADDR_2 | ||
130 | IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); | 131 | IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); |
131 | # endif | 132 | # if defined(LED_DRIVER_ADDR_3) |
132 | # ifdef LED_DRIVER_ADDR_3 | ||
133 | IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); | 133 | IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); |
134 | # endif | 134 | # if defined(LED_DRIVER_ADDR_4) |
135 | # ifdef LED_DRIVER_ADDR_4 | ||
136 | IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); | 135 | IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); |
136 | # endif | ||
137 | # endif | ||
137 | # endif | 138 | # endif |
138 | # endif | ||
139 | } | 139 | } |
140 | 140 | ||
141 | const led_matrix_driver_t led_matrix_driver = { | 141 | const led_matrix_driver_t led_matrix_driver = { |
142 | .init = init, | 142 | .init = init, |
143 | .flush = flush, | 143 | .flush = flush, |
144 | # ifdef IS31FL3731 | ||
145 | .set_value = IS31FL3731_set_value, | ||
146 | .set_value_all = IS31FL3731_set_value_all, | ||
147 | # else | ||
148 | .set_value = IS31FL3733_set_value, | 144 | .set_value = IS31FL3733_set_value, |
149 | .set_value_all = IS31FL3733_set_value_all, | 145 | .set_value_all = IS31FL3733_set_value_all, |
150 | # endif | ||
151 | }; | 146 | }; |
152 | 147 | # endif | |
153 | #endif | 148 | #endif |