diff options
| author | Donald Kjer <don.kjer@gmail.com> | 2021-05-21 21:42:39 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-21 21:42:39 -0700 |
| commit | 8e96c5a060896c4aa5ed181d9c86c4e66bb78cfc (patch) | |
| tree | 0c8b2755864b76654441258a2892a592db655a88 /quantum | |
| parent | 81821f0a1207ffa0b533a09e6ac34c068b23fe49 (diff) | |
| download | qmk_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.c | 22 | ||||
| -rw-r--r-- | quantum/rgb_matrix_drivers.c | 45 |
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) |
| 106 | static void flush(void) { | 135 | static 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 | ||
| 111 | const rgb_matrix_driver_t rgb_matrix_driver = { | 148 | const 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) |
