mirror of
https://github.com/qmk/qmk_firmware.git
synced 2026-10-06 09:00:40 +08:00
is31fl3737/3741: add LED Matrix support (#22163)
This commit is contained in:
@@ -354,8 +354,7 @@ LED_MATRIX_DRIVER := aw20216s
|
||||
endif
|
||||
|
||||
LED_MATRIX_ENABLE ?= no
|
||||
VALID_LED_MATRIX_TYPES := is31fl3218 is31fl3731 is31fl3733 is31fl3736 is31fl3742a is31fl3743a is31fl3745 is31fl3746a ckled2001 custom
|
||||
# TODO: is31fl3737 is31fl3741
|
||||
VALID_LED_MATRIX_TYPES := is31fl3218 is31fl3731 is31fl3733 is31fl3736 is31fl3737 is31fl3741 is31fl3742a is31fl3743a is31fl3745 is31fl3746a ckled2001 custom
|
||||
|
||||
ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
|
||||
ifeq ($(filter $(LED_MATRIX_DRIVER),$(VALID_LED_MATRIX_TYPES)),)
|
||||
@@ -405,6 +404,20 @@ endif
|
||||
QUANTUM_LIB_SRC += i2c_master.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3737)
|
||||
OPT_DEFS += -DHAL_USE_I2C=TRUE
|
||||
COMMON_VPATH += $(DRIVER_PATH)/led/issi
|
||||
SRC += is31fl3737-simple.c
|
||||
QUANTUM_LIB_SRC += i2c_master.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3741)
|
||||
OPT_DEFS += -DHAL_USE_I2C=TRUE
|
||||
COMMON_VPATH += $(DRIVER_PATH)/led/issi
|
||||
SRC += is31fl3741-simple.c
|
||||
QUANTUM_LIB_SRC += i2c_master.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3742a)
|
||||
OPT_DEFS += -DIS31FLCOMMON -DHAL_USE_I2C=TRUE
|
||||
COMMON_VPATH += $(DRIVER_PATH)/led/issi
|
||||
|
||||
@@ -329,7 +329,7 @@ Configures the [LED Matrix](feature_led_matrix.md) feature.
|
||||
* The centroid (geometric center) of the LEDs. Used for certain effects.
|
||||
* Default: `[112, 32]`
|
||||
* `driver` (Required)
|
||||
* The driver to use. Must be one of `ckled2001`, `custom`, `is31fl3218`, `is31fl3731`, `is31fl3733`, `is31fl3736`, `is31fl3742a`, `is31fl3743a`, `is31fl3745`, `is31fl3746a`.
|
||||
* The driver to use. Must be one of `ckled2001`, `custom`, `is31fl3218`, `is31fl3731`, `is31fl3733`, `is31fl3736`, `is31fl3737`, `is31fl3741`, `is31fl3742a`, `is31fl3743a`, `is31fl3745`, `is31fl3746a`.
|
||||
* `layout` (Required)
|
||||
* List of LED configuration dictionaries. Each dictionary contains:
|
||||
* `flags` (Required)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -36,6 +36,12 @@
|
||||
#ifdef LED_MATRIX_IS31FL3736
|
||||
# include "is31fl3736-simple.h"
|
||||
#endif
|
||||
#ifdef LED_MATRIX_IS31FL3737
|
||||
# include "is31fl3737-simple.h"
|
||||
#endif
|
||||
#ifdef LED_MATRIX_IS31FL3741
|
||||
# include "is31fl3741-simple.h"
|
||||
#endif
|
||||
#if defined(IS31FLCOMMON)
|
||||
# include "is31flcommon.h"
|
||||
#endif
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
* in their own files.
|
||||
*/
|
||||
|
||||
#if defined(LED_MATRIX_IS31FL3218) || defined(LED_MATRIX_IS31FL3731) || defined(LED_MATRIX_IS31FL3733) || defined(LED_MATRIX_IS31FL3736) || defined(IS31FLCOMMON) || defined(LED_MATRIX_CKLED2001)
|
||||
#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_CKLED2001)
|
||||
# include "i2c_master.h"
|
||||
|
||||
static void init(void) {
|
||||
@@ -82,6 +82,30 @@ static void init(void) {
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(LED_MATRIX_IS31FL3737)
|
||||
is31fl3737_init(LED_DRIVER_ADDR_1);
|
||||
# if defined(LED_DRIVER_ADDR_2)
|
||||
is31fl3737_init(LED_DRIVER_ADDR_2);
|
||||
# if defined(LED_DRIVER_ADDR_3)
|
||||
is31fl3737_init(LED_DRIVER_ADDR_3);
|
||||
# if defined(LED_DRIVER_ADDR_4)
|
||||
is31fl3737_init(LED_DRIVER_ADDR_4);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(LED_MATRIX_IS31FL3741)
|
||||
is31fl3741_init(LED_DRIVER_ADDR_1);
|
||||
# if defined(LED_DRIVER_ADDR_2)
|
||||
is31fl3741_init(LED_DRIVER_ADDR_2);
|
||||
# if defined(LED_DRIVER_ADDR_3)
|
||||
is31fl3741_init(LED_DRIVER_ADDR_3);
|
||||
# if defined(LED_DRIVER_ADDR_4)
|
||||
is31fl3741_init(LED_DRIVER_ADDR_4);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(IS31FLCOMMON)
|
||||
IS31FL_common_init(DRIVER_ADDR_1, ISSI_SSR_1);
|
||||
# if defined(LED_DRIVER_ADDR_2)
|
||||
@@ -120,6 +144,10 @@ static void init(void) {
|
||||
is31fl3733_set_led_control_register(index, true);
|
||||
# elif defined(LED_MATRIX_IS31FL3736)
|
||||
is31fl3736_set_led_control_register(index, true);
|
||||
# elif defined(LED_MATRIX_IS31FL3737)
|
||||
is31fl3737_set_led_control_register(index, true);
|
||||
# elif defined(LED_MATRIX_IS31FL3741)
|
||||
is31fl3741_set_led_control_register(index, true);
|
||||
# elif defined(IS31FLCOMMON)
|
||||
IS31FL_simple_set_scaling_buffer(index, true);
|
||||
# elif defined(LED_MATRIX_CKLED2001)
|
||||
@@ -167,6 +195,30 @@ static void init(void) {
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(LED_MATRIX_IS31FL3737)
|
||||
is31fl3737_update_led_control_registers(LED_DRIVER_ADDR_1, 0);
|
||||
# if defined(LED_DRIVER_ADDR_2)
|
||||
is31fl3737_update_led_control_registers(LED_DRIVER_ADDR_2, 1);
|
||||
# if defined(LED_DRIVER_ADDR_3)
|
||||
is31fl3737_update_led_control_registers(LED_DRIVER_ADDR_3, 2);
|
||||
# if defined(LED_DRIVER_ADDR_4)
|
||||
is31fl3737_update_led_control_registers(LED_DRIVER_ADDR_4, 3);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(LED_MATRIX_IS31FL3741)
|
||||
is31fl3741_update_led_control_registers(LED_DRIVER_ADDR_1, 0);
|
||||
# if defined(LED_DRIVER_ADDR_2)
|
||||
is31fl3741_update_led_control_registers(LED_DRIVER_ADDR_2, 1);
|
||||
# if defined(LED_DRIVER_ADDR_3)
|
||||
is31fl3741_update_led_control_registers(LED_DRIVER_ADDR_3, 2);
|
||||
# if defined(LED_DRIVER_ADDR_4)
|
||||
is31fl3741_update_led_control_registers(LED_DRIVER_ADDR_4, 3);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# elif defined(IS31FLCOMMON)
|
||||
# ifdef ISSI_MANUAL_SCALING
|
||||
IS31FL_set_manual_scaling_buffer();
|
||||
@@ -270,6 +322,48 @@ const led_matrix_driver_t led_matrix_driver = {
|
||||
.set_value_all = is31fl3736_set_value_all,
|
||||
};
|
||||
|
||||
# elif defined(LED_MATRIX_IS31FL3737)
|
||||
static void flush(void) {
|
||||
is31fl3737_update_pwm_buffers(LED_DRIVER_ADDR_1, 0);
|
||||
# if defined(LED_DRIVER_ADDR_2)
|
||||
is31fl3737_update_pwm_buffers(LED_DRIVER_ADDR_2, 1);
|
||||
# if defined(LED_DRIVER_ADDR_3)
|
||||
is31fl3737_update_pwm_buffers(LED_DRIVER_ADDR_3, 2);
|
||||
# if defined(LED_DRIVER_ADDR_4)
|
||||
is31fl3737_update_pwm_buffers(LED_DRIVER_ADDR_4, 3);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
}
|
||||
|
||||
const led_matrix_driver_t led_matrix_driver = {
|
||||
.init = init,
|
||||
.flush = flush,
|
||||
.set_value = is31fl3737_set_value,
|
||||
.set_value_all = is31fl3737_set_value_all,
|
||||
};
|
||||
|
||||
# elif defined(LED_MATRIX_IS31FL3741)
|
||||
static void flush(void) {
|
||||
is31fl3741_update_pwm_buffers(LED_DRIVER_ADDR_1, 0);
|
||||
# if defined(LED_DRIVER_ADDR_2)
|
||||
is31fl3741_update_pwm_buffers(LED_DRIVER_ADDR_2, 1);
|
||||
# if defined(LED_DRIVER_ADDR_3)
|
||||
is31fl3741_update_pwm_buffers(LED_DRIVER_ADDR_3, 2);
|
||||
# if defined(LED_DRIVER_ADDR_4)
|
||||
is31fl3741_update_pwm_buffers(LED_DRIVER_ADDR_4, 3);
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
}
|
||||
|
||||
const led_matrix_driver_t led_matrix_driver = {
|
||||
.init = init,
|
||||
.flush = flush,
|
||||
.set_value = is31fl3741_set_value,
|
||||
.set_value_all = is31fl3741_set_value_all,
|
||||
};
|
||||
|
||||
# elif defined(IS31FLCOMMON)
|
||||
static void flush(void) {
|
||||
IS31FL_common_update_pwm_register(DRIVER_ADDR_1, 0);
|
||||
|
||||
Reference in New Issue
Block a user