aboutsummaryrefslogtreecommitdiff
path: root/quantum
diff options
context:
space:
mode:
authorDonald Kjer <don.kjer@gmail.com>2021-05-21 21:42:39 -0700
committerGitHub <noreply@github.com>2021-05-21 21:42:39 -0700
commit8e96c5a060896c4aa5ed181d9c86c4e66bb78cfc (patch)
tree0c8b2755864b76654441258a2892a592db655a88 /quantum
parent81821f0a1207ffa0b533a09e6ac34c068b23fe49 (diff)
downloadqmk_firmware-8e96c5a060896c4aa5ed181d9c86c4e66bb78cfc.tar.gz
qmk_firmware-8e96c5a060896c4aa5ed181d9c86c4e66bb78cfc.zip
Add support for up to 4 IS31FL3733 drivers (#12342)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Diffstat (limited to 'quantum')
-rw-r--r--quantum/led_matrix_drivers.c22
-rw-r--r--quantum/rgb_matrix_drivers.c45
2 files changed, 58 insertions, 9 deletions
diff --git a/quantum/led_matrix_drivers.c b/quantum/led_matrix_drivers.c
index 370c5e685..f3d4bc896 100644
--- a/quantum/led_matrix_drivers.c
+++ b/quantum/led_matrix_drivers.c
@@ -46,16 +46,28 @@ static void init(void) {
46# endif 46# endif
47# else 47# else
48# ifdef LED_DRIVER_ADDR_1 48# ifdef LED_DRIVER_ADDR_1
49 IS31FL3733_init(LED_DRIVER_ADDR_1, 0); 49# ifndef LED_DRIVER_SYNC_1
50# define LED_DRIVER_SYNC_1 0
51# endif
52 IS31FL3733_init(LED_DRIVER_ADDR_1, LED_DRIVER_SYNC_1);
50# endif 53# endif
51# ifdef LED_DRIVER_ADDR_2 54# ifdef LED_DRIVER_ADDR_2
52 IS31FL3733_init(LED_DRIVER_ADDR_2, 0); 55# ifndef LED_DRIVER_SYNC_2
56# define LED_DRIVER_SYNC_2 0
57# endif
58 IS31FL3733_init(LED_DRIVER_ADDR_2, LED_DRIVER_SYNC_2);
53# endif 59# endif
54# ifdef LED_DRIVER_ADDR_3 60# ifdef LED_DRIVER_ADDR_3
55 IS31FL3733_init(LED_DRIVER_ADDR_3, 0); 61# ifndef LED_DRIVER_SYNC_3
62# define LED_DRIVER_SYNC_3 0
63# endif
64 IS31FL3733_init(LED_DRIVER_ADDR_3, LED_DRIVER_SYNC_3);
56# endif 65# endif
57# ifdef LED_DRIVER_ADDR_4 66# ifdef LED_DRIVER_ADDR_4
58 IS31FL3733_init(LED_DRIVER_ADDR_4, 0); 67# ifndef LED_DRIVER_SYNC_4
68# define LED_DRIVER_SYNC_4 0
69# endif
70 IS31FL3733_init(LED_DRIVER_ADDR_4, LED_DRIVER_SYNC_4);
59# endif 71# endif
60# endif 72# endif
61 73
@@ -133,7 +145,7 @@ const led_matrix_driver_t led_matrix_driver = {
133 .set_value = IS31FL3731_set_value, 145 .set_value = IS31FL3731_set_value,
134 .set_value_all = IS31FL3731_set_value_all, 146 .set_value_all = IS31FL3731_set_value_all,
135# else 147# else
136 .set_value = IS31FL3733_set_value, 148 .set_value = IS31FL3733_set_value,
137 .set_value_all = IS31FL3733_set_value_all, 149 .set_value_all = IS31FL3733_set_value_all,
138# endif 150# endif
139}; 151};
diff --git a/quantum/rgb_matrix_drivers.c b/quantum/rgb_matrix_drivers.c
index 2978e7bed..a4db86d19 100644
--- a/quantum/rgb_matrix_drivers.c
+++ b/quantum/rgb_matrix_drivers.c
@@ -41,7 +41,28 @@ static void init(void) {
41 IS31FL3731_init(DRIVER_ADDR_4); 41 IS31FL3731_init(DRIVER_ADDR_4);
42# endif 42# endif
43# elif defined(IS31FL3733) 43# elif defined(IS31FL3733)
44 IS31FL3733_init(DRIVER_ADDR_1, 0); 44# ifndef DRIVER_SYNC_1
45# define DRIVER_SYNC_1 0
46# endif
47 IS31FL3733_init(DRIVER_ADDR_1, DRIVER_SYNC_1);
48# if defined DRIVER_ADDR_2 && (DRIVER_ADDR_1 != DRIVER_ADDR_2)
49# ifndef DRIVER_SYNC_2
50# define DRIVER_SYNC_2 0
51# endif
52 IS31FL3733_init(DRIVER_ADDR_2, DRIVER_SYNC_2);
53# endif
54# ifdef DRIVER_ADDR_3
55# ifndef DRIVER_SYNC_3
56# define DRIVER_SYNC_3 0
57# endif
58 IS31FL3733_init(DRIVER_ADDR_3, DRIVER_SYNC_3);
59# endif
60# ifdef DRIVER_ADDR_4
61# ifndef DRIVER_SYNC_4
62# define DRIVER_SYNC_4 0
63# endif
64 IS31FL3733_init(DRIVER_ADDR_4, DRIVER_SYNC_4);
65# endif
45# elif defined(IS31FL3737) 66# elif defined(IS31FL3737)
46 IS31FL3737_init(DRIVER_ADDR_1); 67 IS31FL3737_init(DRIVER_ADDR_1);
47# else 68# else
@@ -74,7 +95,15 @@ static void init(void) {
74# endif 95# endif
75# elif defined(IS31FL3733) 96# elif defined(IS31FL3733)
76 IS31FL3733_update_led_control_registers(DRIVER_ADDR_1, 0); 97 IS31FL3733_update_led_control_registers(DRIVER_ADDR_1, 0);
98# ifdef DRIVER_ADDR_2
77 IS31FL3733_update_led_control_registers(DRIVER_ADDR_2, 1); 99 IS31FL3733_update_led_control_registers(DRIVER_ADDR_2, 1);
100# endif
101# ifdef DRIVER_ADDR_3
102 IS31FL3733_update_led_control_registers(DRIVER_ADDR_3, 2);
103# endif
104# ifdef DRIVER_ADDR_4
105 IS31FL3733_update_led_control_registers(DRIVER_ADDR_4, 3);
106# endif
78# elif defined(IS31FL3737) 107# elif defined(IS31FL3737)
79 IS31FL3737_update_led_control_registers(DRIVER_ADDR_1, DRIVER_ADDR_2); 108 IS31FL3737_update_led_control_registers(DRIVER_ADDR_1, DRIVER_ADDR_2);
80# else 109# else
@@ -105,13 +134,21 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
105# elif defined(IS31FL3733) 134# elif defined(IS31FL3733)
106static void flush(void) { 135static void flush(void) {
107 IS31FL3733_update_pwm_buffers(DRIVER_ADDR_1, 0); 136 IS31FL3733_update_pwm_buffers(DRIVER_ADDR_1, 0);
137# ifdef DRIVER_ADDR_2
108 IS31FL3733_update_pwm_buffers(DRIVER_ADDR_2, 1); 138 IS31FL3733_update_pwm_buffers(DRIVER_ADDR_2, 1);
139# endif
140# ifdef DRIVER_ADDR_3
141 IS31FL3733_update_pwm_buffers(DRIVER_ADDR_3, 2);
142# endif
143# ifdef DRIVER_ADDR_4
144 IS31FL3733_update_pwm_buffers(DRIVER_ADDR_4, 3);
145# endif
109} 146}
110 147
111const rgb_matrix_driver_t rgb_matrix_driver = { 148const rgb_matrix_driver_t rgb_matrix_driver = {
112 .init = init, 149 .init = init,
113 .flush = flush, 150 .flush = flush,
114 .set_color = IS31FL3733_set_color, 151 .set_color = IS31FL3733_set_color,
115 .set_color_all = IS31FL3733_set_color_all, 152 .set_color_all = IS31FL3733_set_color_all,
116}; 153};
117# elif defined(IS31FL3737) 154# elif defined(IS31FL3737)