From 2aacda32358bfda5fccbfb1e6f4f906c5efa702d Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 20 Sep 2023 16:33:54 +1000 Subject: Move `PACKED` define to util.h (#22074) --- quantum/led_matrix/led_matrix_types.h | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix_types.h b/quantum/led_matrix/led_matrix_types.h index 6709a558bb..5a516ceb10 100644 --- a/quantum/led_matrix/led_matrix_types.h +++ b/quantum/led_matrix/led_matrix_types.h @@ -18,16 +18,7 @@ #include #include - -#if defined(__GNUC__) -# define PACKED __attribute__((__packed__)) -#else -# define PACKED -#endif - -#if defined(_MSC_VER) -# pragma pack(push, 1) -#endif +#include "util.h" #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES) # define LED_MATRIX_KEYREACTIVE_ENABLED @@ -92,7 +83,3 @@ typedef union { } led_eeconfig_t; _Static_assert(sizeof(led_eeconfig_t) == sizeof(uint32_t), "LED Matrix EECONFIG out of spec."); - -#if defined(_MSC_VER) -# pragma pack(pop) -#endif -- cgit v1.2.3 From db68a95caea7ee65c6b91603ad6b11928a579953 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 21 Sep 2023 12:16:17 +1000 Subject: LED/RGB Matrix: prefix driver defines (#22088) --- quantum/led_matrix/led_matrix.h | 6 +++--- quantum/led_matrix/led_matrix_drivers.c | 26 +++++++++++++------------- 2 files changed, 16 insertions(+), 16 deletions(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h index c2533ca49c..d654fd5757 100644 --- a/quantum/led_matrix/led_matrix.h +++ b/quantum/led_matrix/led_matrix.h @@ -25,15 +25,15 @@ #include "led_matrix_types.h" #include "keyboard.h" -#ifdef IS31FL3731 +#ifdef LED_MATRIX_IS31FL3731 # include "is31fl3731-simple.h" #elif defined(IS31FLCOMMON) # include "is31flcommon.h" #endif -#ifdef IS31FL3733 +#ifdef LED_MATRIX_IS31FL3733 # include "is31fl3733-simple.h" #endif -#ifdef CKLED2001 +#ifdef LED_MATRIX_CKLED2001 # include "ckled2001-simple.h" #endif diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c index 13c8935d11..77c5aa3d0a 100644 --- a/quantum/led_matrix/led_matrix_drivers.c +++ b/quantum/led_matrix/led_matrix_drivers.c @@ -25,13 +25,13 @@ * in their own files. */ -#if defined(IS31FL3731) || defined(IS31FL3733) || defined(IS31FLCOMMON) || defined(CKLED2001) +#if defined(LED_MATRIX_IS31FL3731) || defined(LED_MATRIX_IS31FL3733) || defined(IS31FLCOMMON) || defined(LED_MATRIX_CKLED2001) # include "i2c_master.h" static void init(void) { i2c_init(); -# if defined(IS31FL3731) +# if defined(LED_MATRIX_IS31FL3731) is31fl3731_init(LED_DRIVER_ADDR_1); # if defined(LED_DRIVER_ADDR_2) is31fl3731_init(LED_DRIVER_ADDR_2); @@ -43,7 +43,7 @@ static void init(void) { # endif # endif -# elif defined(IS31FL3733) +# elif defined(LED_MATRIX_IS31FL3733) # if !defined(LED_DRIVER_SYNC_1) # define LED_DRIVER_SYNC_1 0 # endif @@ -78,7 +78,7 @@ static void init(void) { # endif # endif # endif -# elif defined(CKLED2001) +# elif defined(LED_MATRIX_CKLED2001) # if defined(LED_DRIVER_SHUTDOWN_PIN) setPinOutput(LED_DRIVER_SHUTDOWN_PIN); writePinHigh(LED_DRIVER_SHUTDOWN_PIN); @@ -97,19 +97,19 @@ static void init(void) { # endif for (int index = 0; index < LED_MATRIX_LED_COUNT; index++) { -# if defined(IS31FL3731) +# if defined(LED_MATRIX_IS31FL3731) is31fl3731_set_led_control_register(index, true); -# elif defined(IS31FL3733) +# elif defined(LED_MATRIX_IS31FL3733) is31fl3733_set_led_control_register(index, true); # elif defined(IS31FLCOMMON) IS31FL_simple_set_scaling_buffer(index, true); -# elif defined(CKLED2001) +# elif defined(LED_MATRIX_CKLED2001) ckled2001_set_led_control_register(index, true); # endif } // This actually updates the LED drivers -# if defined(IS31FL3731) +# if defined(LED_MATRIX_IS31FL3731) is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0); # if defined(LED_DRIVER_ADDR_2) is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_2, 1); @@ -121,7 +121,7 @@ static void init(void) { # endif # endif -# elif defined(IS31FL3733) +# elif defined(LED_MATRIX_IS31FL3733) is31fl3733_update_led_control_registers(LED_DRIVER_ADDR_1, 0); # if defined(LED_DRIVER_ADDR_2) is31fl3733_update_led_control_registers(LED_DRIVER_ADDR_2, 1); @@ -147,7 +147,7 @@ static void init(void) { # endif # endif # endif -# elif defined(CKLED2001) +# elif defined(LED_MATRIX_CKLED2001) ckled2001_update_led_control_registers(DRIVER_ADDR_1, 0); # if defined(DRIVER_ADDR_2) ckled2001_update_led_control_registers(DRIVER_ADDR_2, 1); @@ -161,7 +161,7 @@ static void init(void) { # endif } -# if defined(IS31FL3731) +# if defined(LED_MATRIX_IS31FL3731) static void flush(void) { is31fl3731_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); # if defined(LED_DRIVER_ADDR_2) @@ -182,7 +182,7 @@ const led_matrix_driver_t led_matrix_driver = { .set_value_all = is31fl3731_set_value_all, }; -# elif defined(IS31FL3733) +# elif defined(LED_MATRIX_IS31FL3733) static void flush(void) { is31fl3733_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); # if defined(LED_DRIVER_ADDR_2) @@ -223,7 +223,7 @@ const led_matrix_driver_t led_matrix_driver = { .set_value = IS31FL_simple_set_brightness, .set_value_all = IS31FL_simple_set_brigntness_all, }; -# elif defined(CKLED2001) +# elif defined(LED_MATRIX_CKLED2001) static void flush(void) { ckled2001_update_pwm_buffers(DRIVER_ADDR_1, 0); # if defined(DRIVER_ADDR_2) -- cgit v1.2.3 From 32de27bb20071e4e8614b0fd1f2d289e016ca5a1 Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 27 Sep 2023 10:18:07 +1000 Subject: is31fl3736: extract single-color API (#22133) --- quantum/led_matrix/led_matrix.h | 8 ++++-- quantum/led_matrix/led_matrix_drivers.c | 49 ++++++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 3 deletions(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h index d654fd5757..2b41f11bbf 100644 --- a/quantum/led_matrix/led_matrix.h +++ b/quantum/led_matrix/led_matrix.h @@ -27,12 +27,16 @@ #ifdef LED_MATRIX_IS31FL3731 # include "is31fl3731-simple.h" -#elif defined(IS31FLCOMMON) -# include "is31flcommon.h" #endif #ifdef LED_MATRIX_IS31FL3733 # include "is31fl3733-simple.h" #endif +#ifdef LED_MATRIX_IS31FL3736 +# include "is31fl3736-simple.h" +#endif +#if defined(IS31FLCOMMON) +# include "is31flcommon.h" +#endif #ifdef LED_MATRIX_CKLED2001 # include "ckled2001-simple.h" #endif diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c index 77c5aa3d0a..7ca0c7958f 100644 --- a/quantum/led_matrix/led_matrix_drivers.c +++ b/quantum/led_matrix/led_matrix_drivers.c @@ -25,7 +25,7 @@ * in their own files. */ -#if defined(LED_MATRIX_IS31FL3731) || defined(LED_MATRIX_IS31FL3733) || defined(IS31FLCOMMON) || defined(LED_MATRIX_CKLED2001) +#if defined(LED_MATRIX_IS31FL3731) || defined(LED_MATRIX_IS31FL3733) || defined(LED_MATRIX_IS31FL3736) || defined(IS31FLCOMMON) || defined(LED_MATRIX_CKLED2001) # include "i2c_master.h" static void init(void) { @@ -67,6 +67,18 @@ static void init(void) { # endif # endif +# elif defined(LED_MATRIX_IS31FL3736) + is31fl3736_init(LED_DRIVER_ADDR_1); +# if defined(LED_DRIVER_ADDR_2) + is31fl3736_init(LED_DRIVER_ADDR_2); +# if defined(LED_DRIVER_ADDR_3) + is31fl3736_init(LED_DRIVER_ADDR_3); +# if defined(LED_DRIVER_ADDR_4) + is31fl3736_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) @@ -101,6 +113,8 @@ static void init(void) { is31fl3731_set_led_control_register(index, true); # elif defined(LED_MATRIX_IS31FL3733) is31fl3733_set_led_control_register(index, true); +# elif defined(LED_MATRIX_IS31FL3736) + is31fl3736_set_led_control_register(index, true); # elif defined(IS31FLCOMMON) IS31FL_simple_set_scaling_buffer(index, true); # elif defined(LED_MATRIX_CKLED2001) @@ -133,6 +147,18 @@ static void init(void) { # endif # endif +# elif defined(LED_MATRIX_IS31FL3736) + is31fl3736_update_led_control_registers(LED_DRIVER_ADDR_1, 0); +# if defined(LED_DRIVER_ADDR_2) + is31fl3736_update_led_control_registers(LED_DRIVER_ADDR_2, 1); +# if defined(LED_DRIVER_ADDR_3) + is31fl3736_update_led_control_registers(LED_DRIVER_ADDR_3, 2); +# if defined(LED_DRIVER_ADDR_4) + is31fl3736_update_led_control_registers(LED_DRIVER_ADDR_4, 3); +# endif +# endif +# endif + # elif defined(IS31FLCOMMON) # ifdef ISSI_MANUAL_SCALING IS31FL_set_manual_scaling_buffer(); @@ -203,6 +229,27 @@ const led_matrix_driver_t led_matrix_driver = { .set_value_all = is31fl3733_set_value_all, }; +# elif defined(LED_MATRIX_IS31FL3736) +static void flush(void) { + is31fl3736_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); +# if defined(LED_DRIVER_ADDR_2) + is31fl3736_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); +# if defined(LED_DRIVER_ADDR_3) + is31fl3736_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); +# if defined(LED_DRIVER_ADDR_4) + is31fl3736_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 = is31fl3736_set_value, + .set_value_all = is31fl3736_set_value_all, +}; + # elif defined(IS31FLCOMMON) static void flush(void) { IS31FL_common_update_pwm_register(DRIVER_ADDR_1, 0); -- cgit v1.2.3 From 288c2313fe3b705a07166971210e91a33bb1add4 Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 27 Sep 2023 14:37:06 +1000 Subject: is31fl3218: Add LED Matrix support (#22126) Co-authored-by: Joel Challis --- quantum/led_matrix/led_matrix.h | 4 +++- quantum/led_matrix/led_matrix_drivers.c | 36 +++++++++++++++++++++++++-------- 2 files changed, 31 insertions(+), 9 deletions(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h index 2b41f11bbf..cdc90097bb 100644 --- a/quantum/led_matrix/led_matrix.h +++ b/quantum/led_matrix/led_matrix.h @@ -25,7 +25,9 @@ #include "led_matrix_types.h" #include "keyboard.h" -#ifdef LED_MATRIX_IS31FL3731 +#if defined(LED_MATRIX_IS31FL3218) +# include "is31fl3218-simple.h" +#elif defined(LED_MATRIX_IS31FL3731) # include "is31fl3731-simple.h" #endif #ifdef LED_MATRIX_IS31FL3733 diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c index 7ca0c7958f..27c53a223a 100644 --- a/quantum/led_matrix/led_matrix_drivers.c +++ b/quantum/led_matrix/led_matrix_drivers.c @@ -25,13 +25,16 @@ * in their own files. */ -#if 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(IS31FLCOMMON) || defined(LED_MATRIX_CKLED2001) # include "i2c_master.h" static void init(void) { i2c_init(); -# if defined(LED_MATRIX_IS31FL3731) +# if defined(LED_MATRIX_IS31FL3218) + is31fl3218_init(); + +# elif defined(LED_MATRIX_IS31FL3731) is31fl3731_init(LED_DRIVER_ADDR_1); # if defined(LED_DRIVER_ADDR_2) is31fl3731_init(LED_DRIVER_ADDR_2); @@ -109,7 +112,9 @@ static void init(void) { # endif for (int index = 0; index < LED_MATRIX_LED_COUNT; index++) { -# if defined(LED_MATRIX_IS31FL3731) +# if defined(LED_MATRIX_IS31FL3218) + is31fl3218_set_led_control_register(index, true); +# elif defined(LED_MATRIX_IS31FL3731) is31fl3731_set_led_control_register(index, true); # elif defined(LED_MATRIX_IS31FL3733) is31fl3733_set_led_control_register(index, true); @@ -123,7 +128,10 @@ static void init(void) { } // This actually updates the LED drivers -# if defined(LED_MATRIX_IS31FL3731) +# if defined(LED_MATRIX_IS31FL3218) + is31fl3218_update_led_control_registers(); + +# elif defined(LED_MATRIX_IS31FL3731) is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0); # if defined(LED_DRIVER_ADDR_2) is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_2, 1); @@ -187,7 +195,19 @@ static void init(void) { # endif } -# if defined(LED_MATRIX_IS31FL3731) +# if defined(LED_MATRIX_IS31FL3218) +static void flush(void) { + is31fl3218_update_pwm_buffers(); +} + +const led_matrix_driver_t led_matrix_driver = { + .init = init, + .flush = flush, + .set_value = is31fl3218_set_value, + .set_value_all = is31fl3218_set_value_all, +}; + +# elif defined(LED_MATRIX_IS31FL3731) static void flush(void) { is31fl3731_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); # if defined(LED_DRIVER_ADDR_2) @@ -202,9 +222,9 @@ static void flush(void) { } const led_matrix_driver_t led_matrix_driver = { - .init = init, - .flush = flush, - .set_value = is31fl3731_set_value, + .init = init, + .flush = flush, + .set_value = is31fl3731_set_value, .set_value_all = is31fl3731_set_value_all, }; -- cgit v1.2.3 From 346b06d391dbc760d753a5cffcbbcb58ecc9ce95 Mon Sep 17 00:00:00 2001 From: Less/Rikki <86894501+lesshonor@users.noreply.github.com> Date: Thu, 28 Sep 2023 06:51:18 -0400 Subject: refactor: move default RGB/LED matrix #defines (#21938) * refactor: move default RGB/LED matrix #defines Moving the fallback definitions of macros like LED_MATRIX_VAL_STEP and RGB_MATRIX_MAXIMUM_BRIGHTNESS to header files allows keyboards to leverage these defaults without requiring #ifdef guards (and often repeating said fallback definitions). * style: use if(n)def for consistency and remove redundant UINT8_MAX checks on maximum brightness Co-authored-by: Joel Challis * refactor: remove INDICATOR_MAX_BRIGHTNESS macro Co-authored-by: Joel Challis --------- Co-authored-by: Joel Challis --- quantum/led_matrix/led_matrix.c | 31 +------------------------------ quantum/led_matrix/led_matrix.h | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 30 deletions(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c index 1676a60aa3..a59d475521 100644 --- a/quantum/led_matrix/led_matrix.c +++ b/quantum/led_matrix/led_matrix.c @@ -58,35 +58,6 @@ const led_point_t k_led_matrix_center = LED_MATRIX_CENTER; // -----End led effect includes macros------- // ------------------------------------------ -#ifndef LED_MATRIX_TIMEOUT -# define LED_MATRIX_TIMEOUT 0 -#endif - -#if !defined(LED_MATRIX_MAXIMUM_BRIGHTNESS) || LED_MATRIX_MAXIMUM_BRIGHTNESS > UINT8_MAX -# undef LED_MATRIX_MAXIMUM_BRIGHTNESS -# define LED_MATRIX_MAXIMUM_BRIGHTNESS UINT8_MAX -#endif - -#if !defined(LED_MATRIX_VAL_STEP) -# define LED_MATRIX_VAL_STEP 8 -#endif - -#if !defined(LED_MATRIX_SPD_STEP) -# define LED_MATRIX_SPD_STEP 16 -#endif - -#if !defined(LED_MATRIX_DEFAULT_MODE) -# define LED_MATRIX_DEFAULT_MODE LED_MATRIX_SOLID -#endif - -#if !defined(LED_MATRIX_DEFAULT_VAL) -# define LED_MATRIX_DEFAULT_VAL LED_MATRIX_MAXIMUM_BRIGHTNESS -#endif - -#if !defined(LED_MATRIX_DEFAULT_SPD) -# define LED_MATRIX_DEFAULT_SPD UINT8_MAX / 2 -#endif - // globals led_eeconfig_t led_matrix_eeconfig; // TODO: would like to prefix this with g_ for global consistancy, do this in another pr uint32_t g_led_timer; @@ -632,7 +603,7 @@ void led_matrix_decrease_speed(void) { void led_matrix_set_flags_eeprom_helper(led_flags_t flags, bool write_to_eeprom) { led_matrix_eeconfig.flags = flags; eeconfig_flag_led_matrix(write_to_eeprom); - dprintf("led matrix set speed [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.flags); + dprintf("led matrix set flags [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.flags); } led_flags_t led_matrix_get_flags(void) { diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h index cdc90097bb..771afc47ec 100644 --- a/quantum/led_matrix/led_matrix.h +++ b/quantum/led_matrix/led_matrix.h @@ -43,6 +43,34 @@ # include "ckled2001-simple.h" #endif +#ifndef LED_MATRIX_TIMEOUT +# define LED_MATRIX_TIMEOUT 0 +#endif + +#ifndef LED_MATRIX_MAXIMUM_BRIGHTNESS +# define LED_MATRIX_MAXIMUM_BRIGHTNESS UINT8_MAX +#endif + +#ifndef LED_MATRIX_VAL_STEP +# define LED_MATRIX_VAL_STEP 8 +#endif + +#ifndef LED_MATRIX_SPD_STEP +# define LED_MATRIX_SPD_STEP 16 +#endif + +#ifndef LED_MATRIX_DEFAULT_MODE +# define LED_MATRIX_DEFAULT_MODE LED_MATRIX_SOLID +#endif + +#ifndef LED_MATRIX_DEFAULT_VAL +# define LED_MATRIX_DEFAULT_VAL LED_MATRIX_MAXIMUM_BRIGHTNESS +#endif + +#ifndef LED_MATRIX_DEFAULT_SPD +# define LED_MATRIX_DEFAULT_SPD UINT8_MAX / 2 +#endif + #ifndef LED_MATRIX_LED_FLUSH_LIMIT # define LED_MATRIX_LED_FLUSH_LIMIT 16 #endif -- cgit v1.2.3 From 6910ed2de5c8935712b646e1c2143c4e7e5f9bea Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 29 Sep 2023 18:31:21 +0100 Subject: Add _DEFAULT_ON lighting configuration options (#21865) --- quantum/led_matrix/led_matrix.c | 2 +- quantum/led_matrix/led_matrix.h | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c index a59d475521..c13ca94077 100644 --- a/quantum/led_matrix/led_matrix.c +++ b/quantum/led_matrix/led_matrix.c @@ -97,7 +97,7 @@ void eeconfig_update_led_matrix(void) { void eeconfig_update_led_matrix_default(void) { dprintf("eeconfig_update_led_matrix_default\n"); - led_matrix_eeconfig.enable = 1; + led_matrix_eeconfig.enable = LED_MATRIX_DEFAULT_ON; led_matrix_eeconfig.mode = LED_MATRIX_DEFAULT_MODE; led_matrix_eeconfig.val = LED_MATRIX_DEFAULT_VAL; led_matrix_eeconfig.speed = LED_MATRIX_DEFAULT_SPD; diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h index 771afc47ec..316585b1fe 100644 --- a/quantum/led_matrix/led_matrix.h +++ b/quantum/led_matrix/led_matrix.h @@ -59,6 +59,10 @@ # define LED_MATRIX_SPD_STEP 16 #endif +#ifndef LED_MATRIX_DEFAULT_ON +# define LED_MATRIX_DEFAULT_ON true +#endif + #ifndef LED_MATRIX_DEFAULT_MODE # define LED_MATRIX_DEFAULT_MODE LED_MATRIX_SOLID #endif -- cgit v1.2.3 From bd5860de4ed50ee306cee2ef54c7ff4f751a6168 Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 3 Oct 2023 01:09:20 +1100 Subject: is31fl3737/3741: add LED Matrix support (#22163) --- quantum/led_matrix/led_matrix.h | 6 +++ quantum/led_matrix/led_matrix_drivers.c | 96 ++++++++++++++++++++++++++++++++- 2 files changed, 101 insertions(+), 1 deletion(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h index 316585b1fe..47803d2423 100644 --- a/quantum/led_matrix/led_matrix.h +++ b/quantum/led_matrix/led_matrix.h @@ -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 diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c index 27c53a223a..771ce820af 100644 --- a/quantum/led_matrix/led_matrix_drivers.c +++ b/quantum/led_matrix/led_matrix_drivers.c @@ -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); -- cgit v1.2.3 From c0f16be50fec33cdb30386ac512efb900f3f7470 Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 4 Oct 2023 20:10:05 +1100 Subject: Rename CKLED2001 driver to SNLED27351 (#22071) --- quantum/led_matrix/led_matrix.h | 4 ++-- quantum/led_matrix/led_matrix_drivers.c | 40 ++++++++++++++++----------------- 2 files changed, 22 insertions(+), 22 deletions(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h index 47803d2423..77d4f558ac 100644 --- a/quantum/led_matrix/led_matrix.h +++ b/quantum/led_matrix/led_matrix.h @@ -45,8 +45,8 @@ #if defined(IS31FLCOMMON) # include "is31flcommon.h" #endif -#ifdef LED_MATRIX_CKLED2001 -# include "ckled2001-simple.h" +#ifdef LED_MATRIX_SNLED27351 +# include "snled27351-simple.h" #endif #ifndef LED_MATRIX_TIMEOUT diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c index 771ce820af..f52870aea5 100644 --- a/quantum/led_matrix/led_matrix_drivers.c +++ b/quantum/led_matrix/led_matrix_drivers.c @@ -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(LED_MATRIX_IS31FL3737) || defined(LED_MATRIX_IS31FL3741) || 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_SNLED27351) # include "i2c_master.h" static void init(void) { @@ -117,19 +117,19 @@ static void init(void) { # endif # endif # endif -# elif defined(LED_MATRIX_CKLED2001) +# elif defined(LED_MATRIX_SNLED27351) # if defined(LED_DRIVER_SHUTDOWN_PIN) setPinOutput(LED_DRIVER_SHUTDOWN_PIN); writePinHigh(LED_DRIVER_SHUTDOWN_PIN); # endif - ckled2001_init(DRIVER_ADDR_1); + snled27351_init(DRIVER_ADDR_1); # if defined(DRIVER_ADDR_2) - ckled2001_init(DRIVER_ADDR_2); + snled27351_init(DRIVER_ADDR_2); # if defined(DRIVER_ADDR_3) - ckled2001_init(DRIVER_ADDR_3); + snled27351_init(DRIVER_ADDR_3); # if defined(DRIVER_ADDR_4) - ckled2001_init(DRIVER_ADDR_4); + snled27351_init(DRIVER_ADDR_4); # endif # endif # endif @@ -150,8 +150,8 @@ static void init(void) { is31fl3741_set_led_control_register(index, true); # elif defined(IS31FLCOMMON) IS31FL_simple_set_scaling_buffer(index, true); -# elif defined(LED_MATRIX_CKLED2001) - ckled2001_set_led_control_register(index, true); +# elif defined(LED_MATRIX_SNLED27351) + snled27351_set_led_control_register(index, true); # endif } @@ -233,14 +233,14 @@ static void init(void) { # endif # endif # endif -# elif defined(LED_MATRIX_CKLED2001) - ckled2001_update_led_control_registers(DRIVER_ADDR_1, 0); +# elif defined(LED_MATRIX_SNLED27351) + snled27351_update_led_control_registers(DRIVER_ADDR_1, 0); # if defined(DRIVER_ADDR_2) - ckled2001_update_led_control_registers(DRIVER_ADDR_2, 1); + snled27351_update_led_control_registers(DRIVER_ADDR_2, 1); # if defined(DRIVER_ADDR_3) - ckled2001_update_led_control_registers(DRIVER_ADDR_3, 2); + snled27351_update_led_control_registers(DRIVER_ADDR_3, 2); # if defined(DRIVER_ADDR_4) - ckled2001_update_led_control_registers(DRIVER_ADDR_4, 3); + snled27351_update_led_control_registers(DRIVER_ADDR_4, 3); # endif # endif # endif @@ -384,15 +384,15 @@ const led_matrix_driver_t led_matrix_driver = { .set_value = IS31FL_simple_set_brightness, .set_value_all = IS31FL_simple_set_brigntness_all, }; -# elif defined(LED_MATRIX_CKLED2001) +# elif defined(LED_MATRIX_SNLED27351) static void flush(void) { - ckled2001_update_pwm_buffers(DRIVER_ADDR_1, 0); + snled27351_update_pwm_buffers(DRIVER_ADDR_1, 0); # if defined(DRIVER_ADDR_2) - ckled2001_update_pwm_buffers(DRIVER_ADDR_2, 1); + snled27351_update_pwm_buffers(DRIVER_ADDR_2, 1); # if defined(DRIVER_ADDR_3) - ckled2001_update_pwm_buffers(DRIVER_ADDR_3, 2); + snled27351_update_pwm_buffers(DRIVER_ADDR_3, 2); # if defined(DRIVER_ADDR_4) - ckled2001_update_pwm_buffers(DRIVER_ADDR_4, 3); + snled27351_update_pwm_buffers(DRIVER_ADDR_4, 3); # endif # endif # endif @@ -401,8 +401,8 @@ static void flush(void) { const led_matrix_driver_t led_matrix_driver = { .init = init, .flush = flush, - .set_value = ckled2001_set_value, - .set_value_all = ckled2001_set_value_all, + .set_value = snled27351_set_value, + .set_value_all = snled27351_set_value_all, }; # endif #endif -- cgit v1.2.3 From d56ee70c524b4fc4d1638e5e8c4bdeb89e752993 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 21 Oct 2023 21:41:59 +1000 Subject: Rename `DRIVER_ADDR_n` defines (#22200) Co-authored-by: Nick Brassel --- quantum/led_matrix/led_matrix_drivers.c | 269 ++++++++++++++++---------------- 1 file changed, 135 insertions(+), 134 deletions(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c index f52870aea5..42594d2e16 100644 --- a/quantum/led_matrix/led_matrix_drivers.c +++ b/quantum/led_matrix/led_matrix_drivers.c @@ -35,73 +35,73 @@ static void init(void) { is31fl3218_init(); # elif defined(LED_MATRIX_IS31FL3731) - is31fl3731_init(LED_DRIVER_ADDR_1); -# if defined(LED_DRIVER_ADDR_2) - is31fl3731_init(LED_DRIVER_ADDR_2); -# if defined(LED_DRIVER_ADDR_3) - is31fl3731_init(LED_DRIVER_ADDR_3); -# if defined(LED_DRIVER_ADDR_4) - is31fl3731_init(LED_DRIVER_ADDR_4); + is31fl3731_init(IS31FL3731_I2C_ADDRESS_1); +# if defined(IS31FL3731_I2C_ADDRESS_2) + is31fl3731_init(IS31FL3731_I2C_ADDRESS_2); +# if defined(IS31FL3731_I2C_ADDRESS_3) + is31fl3731_init(IS31FL3731_I2C_ADDRESS_3); +# if defined(IS31FL3731_I2C_ADDRESS_4) + is31fl3731_init(IS31FL3731_I2C_ADDRESS_4); # endif # endif # endif # elif defined(LED_MATRIX_IS31FL3733) -# if !defined(LED_DRIVER_SYNC_1) -# define LED_DRIVER_SYNC_1 0 +# if !defined(IS31FL3733_SYNC_1) +# define IS31FL3733_SYNC_1 0 # endif - is31fl3733_init(LED_DRIVER_ADDR_1, LED_DRIVER_SYNC_1); -# if defined(LED_DRIVER_ADDR_2) -# if !defined(LED_DRIVER_SYNC_2) -# define LED_DRIVER_SYNC_2 0 + is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1); +# if defined(IS31FL3733_I2C_ADDRESS_2) +# if !defined(IS31FL3733_SYNC_2) +# define IS31FL3733_SYNC_2 0 # endif - is31fl3733_init(LED_DRIVER_ADDR_2, LED_DRIVER_SYNC_2); -# if defined(LED_DRIVER_ADDR_3) -# if !defined(LED_DRIVER_SYNC_3) -# define LED_DRIVER_SYNC_3 0 + is31fl3733_init(IS31FL3733_I2C_ADDRESS_2, IS31FL3733_SYNC_2); +# if defined(IS31FL3733_I2C_ADDRESS_3) +# if !defined(IS31FL3733_SYNC_3) +# define IS31FL3733_SYNC_3 0 # endif - is31fl3733_init(LED_DRIVER_ADDR_3, LED_DRIVER_SYNC_3); -# if defined(LED_DRIVER_ADDR_4) -# if !defined(LED_DRIVER_SYNC_4) -# define LED_DRIVER_SYNC_4 0 + is31fl3733_init(IS31FL3733_I2C_ADDRESS_3, IS31FL3733_SYNC_3); +# if defined(IS31FL3733_I2C_ADDRESS_4) +# if !defined(IS31FL3733_SYNC_4) +# define IS31FL3733_SYNC_4 0 # endif - is31fl3733_init(LED_DRIVER_ADDR_4, LED_DRIVER_SYNC_4); + is31fl3733_init(IS31FL3733_I2C_ADDRESS_4, IS31FL3733_SYNC_4); # endif # endif # endif # elif defined(LED_MATRIX_IS31FL3736) - is31fl3736_init(LED_DRIVER_ADDR_1); -# if defined(LED_DRIVER_ADDR_2) - is31fl3736_init(LED_DRIVER_ADDR_2); -# if defined(LED_DRIVER_ADDR_3) - is31fl3736_init(LED_DRIVER_ADDR_3); -# if defined(LED_DRIVER_ADDR_4) - is31fl3736_init(LED_DRIVER_ADDR_4); + is31fl3736_init(IS31FL3736_I2C_ADDRESS_1); +# if defined(IS31FL3736_I2C_ADDRESS_2) + is31fl3736_init(IS31FL3736_I2C_ADDRESS_2); +# if defined(IS31FL3736_I2C_ADDRESS_3) + is31fl3736_init(IS31FL3736_I2C_ADDRESS_3); +# if defined(IS31FL3736_I2C_ADDRESS_4) + is31fl3736_init(IS31FL3736_I2C_ADDRESS_4); # endif # 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); + is31fl3737_init(IS31FL3737_I2C_ADDRESS_1); +# if defined(IS31FL3737_I2C_ADDRESS_2) + is31fl3737_init(IS31FL3737_I2C_ADDRESS_2); +# if defined(IS31FL3737_I2C_ADDRESS_3) + is31fl3737_init(IS31FL3737_I2C_ADDRESS_3); +# if defined(IS31FL3737_I2C_ADDRESS_4) + is31fl3737_init(IS31FL3737_I2C_ADDRESS_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); + is31fl3741_init(IS31FL3741_I2C_ADDRESS_1); +# if defined(IS31FL3741_I2C_ADDRESS_2) + is31fl3741_init(IS31FL3741_I2C_ADDRESS_2); +# if defined(IS31FL3741_I2C_ADDRESS_3) + is31fl3741_init(IS31FL3741_I2C_ADDRESS_3); +# if defined(IS31FL3741_I2C_ADDRESS_4) + is31fl3741_init(IS31FL3741_I2C_ADDRESS_4); # endif # endif # endif @@ -123,13 +123,13 @@ static void init(void) { writePinHigh(LED_DRIVER_SHUTDOWN_PIN); # endif - snled27351_init(DRIVER_ADDR_1); -# if defined(DRIVER_ADDR_2) - snled27351_init(DRIVER_ADDR_2); -# if defined(DRIVER_ADDR_3) - snled27351_init(DRIVER_ADDR_3); -# if defined(DRIVER_ADDR_4) - snled27351_init(DRIVER_ADDR_4); + snled27351_init(SNLED27351_I2C_ADDRESS_1); +# if defined(SNLED27351_I2C_ADDRESS_2) + snled27351_init(SNLED27351_I2C_ADDRESS_2); +# if defined(SNLED27351_I2C_ADDRESS_3) + snled27351_init(SNLED27351_I2C_ADDRESS_3); +# if defined(SNLED27351_I2C_ADDRESS_4) + snled27351_init(SNLED27351_I2C_ADDRESS_4); # endif # endif # endif @@ -160,61 +160,61 @@ static void init(void) { is31fl3218_update_led_control_registers(); # elif defined(LED_MATRIX_IS31FL3731) - is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0); -# if defined(LED_DRIVER_ADDR_2) - is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_2, 1); -# if defined(LED_DRIVER_ADDR_3) - is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_3, 2); -# if defined(LED_DRIVER_ADDR_4) - is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_4, 3); + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0); +# if defined(IS31FL3731_I2C_ADDRESS_2) + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1); +# if defined(IS31FL3731_I2C_ADDRESS_3) + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_3, 2); +# if defined(IS31FL3731_I2C_ADDRESS_4) + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_4, 3); # endif # endif # endif # elif defined(LED_MATRIX_IS31FL3733) - is31fl3733_update_led_control_registers(LED_DRIVER_ADDR_1, 0); -# if defined(LED_DRIVER_ADDR_2) - is31fl3733_update_led_control_registers(LED_DRIVER_ADDR_2, 1); -# if defined(LED_DRIVER_ADDR_3) - is31fl3733_update_led_control_registers(LED_DRIVER_ADDR_3, 2); -# if defined(LED_DRIVER_ADDR_4) - is31fl3733_update_led_control_registers(LED_DRIVER_ADDR_4, 3); + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_1, 0); +# if defined(IS31FL3733_I2C_ADDRESS_2) + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_2, 1); +# if defined(IS31FL3733_I2C_ADDRESS_3) + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_3, 2); +# if defined(IS31FL3733_I2C_ADDRESS_4) + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_4, 3); # endif # endif # endif # elif defined(LED_MATRIX_IS31FL3736) - is31fl3736_update_led_control_registers(LED_DRIVER_ADDR_1, 0); -# if defined(LED_DRIVER_ADDR_2) - is31fl3736_update_led_control_registers(LED_DRIVER_ADDR_2, 1); -# if defined(LED_DRIVER_ADDR_3) - is31fl3736_update_led_control_registers(LED_DRIVER_ADDR_3, 2); -# if defined(LED_DRIVER_ADDR_4) - is31fl3736_update_led_control_registers(LED_DRIVER_ADDR_4, 3); + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_1, 0); +# if defined(IS31FL3736_I2C_ADDRESS_2) + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_2, 1); +# if defined(IS31FL3736_I2C_ADDRESS_3) + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_3, 2); +# if defined(IS31FL3736_I2C_ADDRESS_4) + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_4, 3); # endif # 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); + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_1, 0); +# if defined(IS31FL3737_I2C_ADDRESS_2) + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_2, 1); +# if defined(IS31FL3737_I2C_ADDRESS_3) + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_3, 2); +# if defined(IS31FL3737_I2C_ADDRESS_4) + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_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); + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_1, 0); +# if defined(IS31FL3741_I2C_ADDRESS_2) + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_2, 1); +# if defined(IS31FL3741_I2C_ADDRESS_3) + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_3, 2); +# if defined(IS31FL3741_I2C_ADDRESS_4) + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_4, 3); # endif # endif # endif @@ -233,14 +233,15 @@ static void init(void) { # endif # endif # endif + # elif defined(LED_MATRIX_SNLED27351) - snled27351_update_led_control_registers(DRIVER_ADDR_1, 0); -# if defined(DRIVER_ADDR_2) - snled27351_update_led_control_registers(DRIVER_ADDR_2, 1); -# if defined(DRIVER_ADDR_3) - snled27351_update_led_control_registers(DRIVER_ADDR_3, 2); -# if defined(DRIVER_ADDR_4) - snled27351_update_led_control_registers(DRIVER_ADDR_4, 3); + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_1, 0); +# if defined(SNLED27351_I2C_ADDRESS_2) + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_2, 1); +# if defined(SNLED27351_I2C_ADDRESS_3) + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_3, 2); +# if defined(SNLED27351_I2C_ADDRESS_4) + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_4, 3); # endif # endif # endif @@ -261,13 +262,13 @@ const led_matrix_driver_t led_matrix_driver = { # elif defined(LED_MATRIX_IS31FL3731) static void flush(void) { - is31fl3731_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); -# if defined(LED_DRIVER_ADDR_2) - is31fl3731_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); -# if defined(LED_DRIVER_ADDR_3) - is31fl3731_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); -# if defined(LED_DRIVER_ADDR_4) - is31fl3731_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0); +# if defined(IS31FL3731_I2C_ADDRESS_2) + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_2, 1); +# if defined(IS31FL3731_I2C_ADDRESS_3) + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_3, 2); +# if defined(IS31FL3731_I2C_ADDRESS_4) + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_4, 3); # endif # endif # endif @@ -282,13 +283,13 @@ const led_matrix_driver_t led_matrix_driver = { # elif defined(LED_MATRIX_IS31FL3733) static void flush(void) { - is31fl3733_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); -# if defined(LED_DRIVER_ADDR_2) - is31fl3733_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); -# if defined(LED_DRIVER_ADDR_3) - is31fl3733_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); -# if defined(LED_DRIVER_ADDR_4) - is31fl3733_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_1, 0); +# if defined(IS31FL3733_I2C_ADDRESS_2) + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_2, 1); +# if defined(IS31FL3733_I2C_ADDRESS_3) + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_3, 2); +# if defined(IS31FL3733_I2C_ADDRESS_4) + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_4, 3); # endif # endif # endif @@ -303,13 +304,13 @@ const led_matrix_driver_t led_matrix_driver = { # elif defined(LED_MATRIX_IS31FL3736) static void flush(void) { - is31fl3736_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); -# if defined(LED_DRIVER_ADDR_2) - is31fl3736_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); -# if defined(LED_DRIVER_ADDR_3) - is31fl3736_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); -# if defined(LED_DRIVER_ADDR_4) - is31fl3736_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_1, 0); +# if defined(IS31FL3736_I2C_ADDRESS_2) + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_2, 1); +# if defined(IS31FL3736_I2C_ADDRESS_3) + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_3, 2); +# if defined(IS31FL3736_I2C_ADDRESS_4) + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_4, 3); # endif # endif # endif @@ -324,13 +325,13 @@ const led_matrix_driver_t led_matrix_driver = { # 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); + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_1, 0); +# if defined(IS31FL3737_I2C_ADDRESS_2) + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_2, 1); +# if defined(IS31FL3737_I2C_ADDRESS_3) + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_3, 2); +# if defined(IS31FL3737_I2C_ADDRESS_4) + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_4, 3); # endif # endif # endif @@ -345,13 +346,13 @@ const led_matrix_driver_t led_matrix_driver = { # 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); + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_1, 0); +# if defined(IS31FL3741_I2C_ADDRESS_2) + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_2, 1); +# if defined(IS31FL3741_I2C_ADDRESS_3) + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_3, 2); +# if defined(IS31FL3741_I2C_ADDRESS_4) + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_4, 3); # endif # endif # endif @@ -386,13 +387,13 @@ const led_matrix_driver_t led_matrix_driver = { }; # elif defined(LED_MATRIX_SNLED27351) static void flush(void) { - snled27351_update_pwm_buffers(DRIVER_ADDR_1, 0); -# if defined(DRIVER_ADDR_2) - snled27351_update_pwm_buffers(DRIVER_ADDR_2, 1); -# if defined(DRIVER_ADDR_3) - snled27351_update_pwm_buffers(DRIVER_ADDR_3, 2); -# if defined(DRIVER_ADDR_4) - snled27351_update_pwm_buffers(DRIVER_ADDR_4, 3); + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_1, 0); +# if defined(SNLED27351_I2C_ADDRESS_2) + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_2, 1); +# if defined(SNLED27351_I2C_ADDRESS_3) + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_3, 2); +# if defined(SNLED27351_I2C_ADDRESS_4) + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_4, 3); # endif # endif # endif -- cgit v1.2.3 From cf7d3435d7e2cfb8927a1c436320f67bc9914eeb Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 23 Oct 2023 03:32:27 +1000 Subject: Add `_flush()` functions to LED drivers (#22308) --- quantum/led_matrix/led_matrix_drivers.c | 111 +++----------------------------- 1 file changed, 8 insertions(+), 103 deletions(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c index 42594d2e16..ab8da3353a 100644 --- a/quantum/led_matrix/led_matrix_drivers.c +++ b/quantum/led_matrix/led_matrix_drivers.c @@ -249,159 +249,64 @@ static void init(void) { } # if defined(LED_MATRIX_IS31FL3218) -static void flush(void) { - is31fl3218_update_pwm_buffers(); -} - const led_matrix_driver_t led_matrix_driver = { .init = init, - .flush = flush, + .flush = is31fl3218_update_pwm_buffers, .set_value = is31fl3218_set_value, .set_value_all = is31fl3218_set_value_all, }; # elif defined(LED_MATRIX_IS31FL3731) -static void flush(void) { - is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0); -# if defined(IS31FL3731_I2C_ADDRESS_2) - is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_2, 1); -# if defined(IS31FL3731_I2C_ADDRESS_3) - is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_3, 2); -# if defined(IS31FL3731_I2C_ADDRESS_4) - is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_4, 3); -# endif -# endif -# endif -} - const led_matrix_driver_t led_matrix_driver = { .init = init, - .flush = flush, + .flush = is31fl3731_flush, .set_value = is31fl3731_set_value, .set_value_all = is31fl3731_set_value_all, }; # elif defined(LED_MATRIX_IS31FL3733) -static void flush(void) { - is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_1, 0); -# if defined(IS31FL3733_I2C_ADDRESS_2) - is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_2, 1); -# if defined(IS31FL3733_I2C_ADDRESS_3) - is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_3, 2); -# if defined(IS31FL3733_I2C_ADDRESS_4) - is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_4, 3); -# endif -# endif -# endif -} - const led_matrix_driver_t led_matrix_driver = { .init = init, - .flush = flush, + .flush = is31fl3733_flush, .set_value = is31fl3733_set_value, .set_value_all = is31fl3733_set_value_all, }; # elif defined(LED_MATRIX_IS31FL3736) -static void flush(void) { - is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_1, 0); -# if defined(IS31FL3736_I2C_ADDRESS_2) - is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_2, 1); -# if defined(IS31FL3736_I2C_ADDRESS_3) - is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_3, 2); -# if defined(IS31FL3736_I2C_ADDRESS_4) - is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_4, 3); -# endif -# endif -# endif -} - const led_matrix_driver_t led_matrix_driver = { .init = init, - .flush = flush, + .flush = is31fl3736_flush, .set_value = is31fl3736_set_value, .set_value_all = is31fl3736_set_value_all, }; # elif defined(LED_MATRIX_IS31FL3737) -static void flush(void) { - is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_1, 0); -# if defined(IS31FL3737_I2C_ADDRESS_2) - is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_2, 1); -# if defined(IS31FL3737_I2C_ADDRESS_3) - is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_3, 2); -# if defined(IS31FL3737_I2C_ADDRESS_4) - is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_4, 3); -# endif -# endif -# endif -} - const led_matrix_driver_t led_matrix_driver = { .init = init, - .flush = flush, + .flush = is31fl3737_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(IS31FL3741_I2C_ADDRESS_1, 0); -# if defined(IS31FL3741_I2C_ADDRESS_2) - is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_2, 1); -# if defined(IS31FL3741_I2C_ADDRESS_3) - is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_3, 2); -# if defined(IS31FL3741_I2C_ADDRESS_4) - is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_4, 3); -# endif -# endif -# endif -} - const led_matrix_driver_t led_matrix_driver = { .init = init, - .flush = flush, + .flush = is31fl3741_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); -# if defined(LED_DRIVER_ADDR_2) - IS31FL_common_update_pwm_register(DRIVER_ADDR_2, 1); -# if defined(LED_DRIVER_ADDR_3) - IS31FL_common_update_pwm_register(DRIVER_ADDR_3, 2); -# if defined(LED_DRIVER_ADDR_4) - IS31FL_common_update_pwm_register(DRIVER_ADDR_4, 3); -# endif -# endif -# endif -} - const led_matrix_driver_t led_matrix_driver = { .init = init, - .flush = flush, + .flush = IS31FL_common_flush, .set_value = IS31FL_simple_set_brightness, .set_value_all = IS31FL_simple_set_brigntness_all, }; # elif defined(LED_MATRIX_SNLED27351) -static void flush(void) { - snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_1, 0); -# if defined(SNLED27351_I2C_ADDRESS_2) - snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_2, 1); -# if defined(SNLED27351_I2C_ADDRESS_3) - snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_3, 2); -# if defined(SNLED27351_I2C_ADDRESS_4) - snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_4, 3); -# endif -# endif -# endif -} - const led_matrix_driver_t led_matrix_driver = { .init = init, - .flush = flush, + .flush = snled27351_flush, .set_value = snled27351_set_value, .set_value_all = snled27351_set_value_all, }; -- cgit v1.2.3 From 7e0147f8e6cebbf88a6f25c448cbd0246d3ab260 Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Tue, 24 Oct 2023 13:45:33 +0100 Subject: Fix compilation error when led/rgb process limit is zero. (#22328) Co-authored-by: Drashna Jaelre --- quantum/led_matrix/led_matrix.c | 5 ++--- quantum/led_matrix/led_matrix.h | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c index 4f22cd6da8..bbc94bca7a 100644 --- a/quantum/led_matrix/led_matrix.c +++ b/quantum/led_matrix/led_matrix.c @@ -342,9 +342,8 @@ void led_matrix_task(void) { case RENDERING: led_task_render(effect); if (effect) { - // Only run the basic indicators in the last render iteration (default there are 5 iterations) - if (led_effect_params.iter == LED_MATRIX_LED_PROCESS_MAX_ITERATIONS) { - led_matrix_indicators(); + if (led_task_state == FLUSHING) { + led_matrix_indicators(); // ensure we only draw basic indicators once rendering is finished } led_matrix_indicators_advanced(&led_effect_params); } diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h index 77d4f558ac..ab5ca32308 100644 --- a/quantum/led_matrix/led_matrix.h +++ b/quantum/led_matrix/led_matrix.h @@ -88,7 +88,6 @@ #ifndef LED_MATRIX_LED_PROCESS_LIMIT # define LED_MATRIX_LED_PROCESS_LIMIT ((LED_MATRIX_LED_COUNT + 4) / 5) #endif -#define LED_MATRIX_LED_PROCESS_MAX_ITERATIONS ((LED_MATRIX_LED_COUNT + LED_MATRIX_LED_PROCESS_LIMIT - 1) / LED_MATRIX_LED_PROCESS_LIMIT) #if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < LED_MATRIX_LED_COUNT # if defined(LED_MATRIX_SPLIT) -- cgit v1.2.3 From f2936581473a86c3b72bd744808d57c50ee9bb32 Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Wed, 25 Oct 2023 22:06:51 +0100 Subject: RGB/LED matrix use limits size optimisation (#22325) --- quantum/led_matrix/led_matrix.c | 39 ++++++++++++++++++++++++++++-------- quantum/led_matrix/led_matrix.h | 44 ++++++++++++++--------------------------- 2 files changed, 46 insertions(+), 37 deletions(-) (limited to 'quantum/led_matrix') diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c index bbc94bca7a..4d67a295df 100644 --- a/quantum/led_matrix/led_matrix.c +++ b/quantum/led_matrix/led_matrix.c @@ -375,14 +375,7 @@ void led_matrix_indicators_advanced(effect_params_t *params) { * and not sure which would be better. Otherwise, this should be called from * led_task_render, right before the iter++ line. */ -#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < LED_MATRIX_LED_COUNT - uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * (params->iter - 1); - uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; - if (max > LED_MATRIX_LED_COUNT) max = LED_MATRIX_LED_COUNT; -#else - uint8_t min = 0; - uint8_t max = LED_MATRIX_LED_COUNT; -#endif + LED_MATRIX_USE_LIMITS_ITER(min, max, params->iter - 1); led_matrix_indicators_advanced_kb(min, max); } @@ -394,6 +387,36 @@ __attribute__((weak)) bool led_matrix_indicators_advanced_user(uint8_t led_min, return true; } +struct led_matrix_limits_t led_matrix_get_limits(uint8_t iter) { + struct led_matrix_limits_t limits = {0}; +#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < LED_MATRIX_LED_COUNT +# if defined(LED_MATRIX_SPLIT) + limits.led_min_index = LED_MATRIX_LED_PROCESS_LIMIT * (iter); + limits.led_max_index = limits.led_min_index + LED_MATRIX_LED_PROCESS_LIMIT; + if (limits.led_max_index > LED_MATRIX_LED_COUNT) limits.led_max_index = LED_MATRIX_LED_COUNT; + uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; + if (is_keyboard_left() && (limits.led_max_index > k_led_matrix_split[0])) limits.led_max_index = k_led_matrix_split[0]; + if (!(is_keyboard_left()) && (limits.led_min_index < k_led_matrix_split[0])) limits.led_min_index = k_led_matrix_split[0]; +# else + limits.led_min_index = LED_MATRIX_LED_PROCESS_LIMIT * (iter); + limits.led_max_index = limits.led_min_index + LED_MATRIX_LED_PROCESS_LIMIT; + if (limits.led_max_index > LED_MATRIX_LED_COUNT) limits.led_max_index = LED_MATRIX_LED_COUNT; +# endif +#else +# if defined(LED_MATRIX_SPLIT) + limits.led_min_index = 0; + limits.led_max_index = LED_MATRIX_LED_COUNT; + const uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; + if (is_keyboard_left() && (limits.led_max_index > k_led_matrix_split[0])) limits.led_max_index = k_led_matrix_split[0]; + if (!(is_keyboard_left()) && (limits.led_min_index < k_led_matrix_split[0])) limits.led_min_index = k_led_matrix_split[0]; +# else + limits.led_min_index = 0; + limits.led_max_index = LED_MATRIX_LED_COUNT; +# endif +#endif + return limits; +} + void led_matrix_init(void) { led_matrix_driver.init(); diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h index ab5ca32308..c903a230f4 100644 --- a/quantum/led_matrix/led_matrix.h +++ b/quantum/led_matrix/led_matrix.h @@ -89,35 +89,21 @@ # define LED_MATRIX_LED_PROCESS_LIMIT ((LED_MATRIX_LED_COUNT + 4) / 5) #endif -#if defined(LED_MATRIX_LED_PROCESS_LIMIT) && LED_MATRIX_LED_PROCESS_LIMIT > 0 && LED_MATRIX_LED_PROCESS_LIMIT < LED_MATRIX_LED_COUNT -# if defined(LED_MATRIX_SPLIT) -# define LED_MATRIX_USE_LIMITS(min, max) \ - uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \ - uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \ - if (max > LED_MATRIX_LED_COUNT) max = LED_MATRIX_LED_COUNT; \ - uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; \ - if (is_keyboard_left() && (max > k_led_matrix_split[0])) max = k_led_matrix_split[0]; \ - if (!(is_keyboard_left()) && (min < k_led_matrix_split[0])) min = k_led_matrix_split[0]; -# else -# define LED_MATRIX_USE_LIMITS(min, max) \ - uint8_t min = LED_MATRIX_LED_PROCESS_LIMIT * params->iter; \ - uint8_t max = min + LED_MATRIX_LED_PROCESS_LIMIT; \ - if (max > LED_MATRIX_LED_COUNT) max = LED_MATRIX_LED_COUNT; -# endif -#else -# if defined(LED_MATRIX_SPLIT) -# define LED_MATRIX_USE_LIMITS(min, max) \ - uint8_t min = 0; \ - uint8_t max = LED_MATRIX_LED_COUNT; \ - const uint8_t k_led_matrix_split[2] = LED_MATRIX_SPLIT; \ - if (is_keyboard_left() && (max > k_led_matrix_split[0])) max = k_led_matrix_split[0]; \ - if (!(is_keyboard_left()) && (min < k_led_matrix_split[0])) min = k_led_matrix_split[0]; -# else -# define LED_MATRIX_USE_LIMITS(min, max) \ - uint8_t min = 0; \ - uint8_t max = LED_MATRIX_LED_COUNT; -# endif -#endif +struct led_matrix_limits_t { + uint8_t led_min_index; + uint8_t led_max_index; +}; + +struct led_matrix_limits_t led_matrix_get_limits(uint8_t iter); + +#define LED_MATRIX_USE_LIMITS_ITER(min, max, iter) \ + struct led_matrix_limits_t limits = led_matrix_get_limits(iter); \ + uint8_t min = limits.led_min_index; \ + uint8_t max = limits.led_max_index; \ + (void)min; \ + (void)max; + +#define LED_MATRIX_USE_LIMITS(min, max) LED_MATRIX_USE_LIMITS_ITER(min, max, params->iter) #define LED_MATRIX_TEST_LED_FLAGS() \ if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) continue -- cgit v1.2.3 From b52aca0af83fade24c56b4bb7369f18183123bd3 Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 1 Nov 2023 11:53:45 +1100 Subject: Relocate LED driver init code (#22365) --- quantum/led_matrix/led_matrix_drivers.c | 286 ++++---------------------------- 1 file changed, 32 insertions(+), 254 deletions(-) (limited to 'quantum/led_matrix') 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 @@ * in their own files. */ -#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) -# include "i2c_master.h" - -static void init(void) { - i2c_init(); - -# if defined(LED_MATRIX_IS31FL3218) - is31fl3218_init(); - -# elif defined(LED_MATRIX_IS31FL3731) - is31fl3731_init(IS31FL3731_I2C_ADDRESS_1); -# if defined(IS31FL3731_I2C_ADDRESS_2) - is31fl3731_init(IS31FL3731_I2C_ADDRESS_2); -# if defined(IS31FL3731_I2C_ADDRESS_3) - is31fl3731_init(IS31FL3731_I2C_ADDRESS_3); -# if defined(IS31FL3731_I2C_ADDRESS_4) - is31fl3731_init(IS31FL3731_I2C_ADDRESS_4); -# endif -# endif -# endif - -# elif defined(LED_MATRIX_IS31FL3733) -# if !defined(IS31FL3733_SYNC_1) -# define IS31FL3733_SYNC_1 0 -# endif - is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1); -# if defined(IS31FL3733_I2C_ADDRESS_2) -# if !defined(IS31FL3733_SYNC_2) -# define IS31FL3733_SYNC_2 0 -# endif - is31fl3733_init(IS31FL3733_I2C_ADDRESS_2, IS31FL3733_SYNC_2); -# if defined(IS31FL3733_I2C_ADDRESS_3) -# if !defined(IS31FL3733_SYNC_3) -# define IS31FL3733_SYNC_3 0 -# endif - is31fl3733_init(IS31FL3733_I2C_ADDRESS_3, IS31FL3733_SYNC_3); -# if defined(IS31FL3733_I2C_ADDRESS_4) -# if !defined(IS31FL3733_SYNC_4) -# define IS31FL3733_SYNC_4 0 -# endif - is31fl3733_init(IS31FL3733_I2C_ADDRESS_4, IS31FL3733_SYNC_4); -# endif -# endif -# endif - -# elif defined(LED_MATRIX_IS31FL3736) - is31fl3736_init(IS31FL3736_I2C_ADDRESS_1); -# if defined(IS31FL3736_I2C_ADDRESS_2) - is31fl3736_init(IS31FL3736_I2C_ADDRESS_2); -# if defined(IS31FL3736_I2C_ADDRESS_3) - is31fl3736_init(IS31FL3736_I2C_ADDRESS_3); -# if defined(IS31FL3736_I2C_ADDRESS_4) - is31fl3736_init(IS31FL3736_I2C_ADDRESS_4); -# endif -# endif -# endif - -# elif defined(LED_MATRIX_IS31FL3737) - is31fl3737_init(IS31FL3737_I2C_ADDRESS_1); -# if defined(IS31FL3737_I2C_ADDRESS_2) - is31fl3737_init(IS31FL3737_I2C_ADDRESS_2); -# if defined(IS31FL3737_I2C_ADDRESS_3) - is31fl3737_init(IS31FL3737_I2C_ADDRESS_3); -# if defined(IS31FL3737_I2C_ADDRESS_4) - is31fl3737_init(IS31FL3737_I2C_ADDRESS_4); -# endif -# endif -# endif - -# elif defined(LED_MATRIX_IS31FL3741) - is31fl3741_init(IS31FL3741_I2C_ADDRESS_1); -# if defined(IS31FL3741_I2C_ADDRESS_2) - is31fl3741_init(IS31FL3741_I2C_ADDRESS_2); -# if defined(IS31FL3741_I2C_ADDRESS_3) - is31fl3741_init(IS31FL3741_I2C_ADDRESS_3); -# if defined(IS31FL3741_I2C_ADDRESS_4) - is31fl3741_init(IS31FL3741_I2C_ADDRESS_4); -# endif -# endif -# endif - -# elif defined(IS31FLCOMMON) - IS31FL_common_init(DRIVER_ADDR_1, ISSI_SSR_1); -# if defined(LED_DRIVER_ADDR_2) - IS31FL_common_init(DRIVER_ADDR_2, ISSI_SSR_2); -# if defined(LED_DRIVER_ADDR_3) - IS31FL_common_init(DRIVER_ADDR_3, ISSI_SSR_3); -# if defined(LED_DRIVER_ADDR_4) - IS31FL_common_init(DRIVER_ADDR_4, ISSI_SSR_4); -# endif -# endif -# endif -# elif defined(LED_MATRIX_SNLED27351) -# if defined(LED_DRIVER_SHUTDOWN_PIN) - setPinOutput(LED_DRIVER_SHUTDOWN_PIN); - writePinHigh(LED_DRIVER_SHUTDOWN_PIN); -# endif - - snled27351_init(SNLED27351_I2C_ADDRESS_1); -# if defined(SNLED27351_I2C_ADDRESS_2) - snled27351_init(SNLED27351_I2C_ADDRESS_2); -# if defined(SNLED27351_I2C_ADDRESS_3) - snled27351_init(SNLED27351_I2C_ADDRESS_3); -# if defined(SNLED27351_I2C_ADDRESS_4) - snled27351_init(SNLED27351_I2C_ADDRESS_4); -# endif -# endif -# endif -# endif - - for (int index = 0; index < LED_MATRIX_LED_COUNT; index++) { -# if defined(LED_MATRIX_IS31FL3218) - is31fl3218_set_led_control_register(index, true); -# elif defined(LED_MATRIX_IS31FL3731) - is31fl3731_set_led_control_register(index, true); -# elif defined(LED_MATRIX_IS31FL3733) - 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_SNLED27351) - snled27351_set_led_control_register(index, true); -# endif - } - -// This actually updates the LED drivers -# if defined(LED_MATRIX_IS31FL3218) - is31fl3218_update_led_control_registers(); - -# elif defined(LED_MATRIX_IS31FL3731) - is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0); -# if defined(IS31FL3731_I2C_ADDRESS_2) - is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1); -# if defined(IS31FL3731_I2C_ADDRESS_3) - is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_3, 2); -# if defined(IS31FL3731_I2C_ADDRESS_4) - is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_4, 3); -# endif -# endif -# endif - -# elif defined(LED_MATRIX_IS31FL3733) - is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_1, 0); -# if defined(IS31FL3733_I2C_ADDRESS_2) - is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_2, 1); -# if defined(IS31FL3733_I2C_ADDRESS_3) - is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_3, 2); -# if defined(IS31FL3733_I2C_ADDRESS_4) - is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_4, 3); -# endif -# endif -# endif - -# elif defined(LED_MATRIX_IS31FL3736) - is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_1, 0); -# if defined(IS31FL3736_I2C_ADDRESS_2) - is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_2, 1); -# if defined(IS31FL3736_I2C_ADDRESS_3) - is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_3, 2); -# if defined(IS31FL3736_I2C_ADDRESS_4) - is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_4, 3); -# endif -# endif -# endif - -# elif defined(LED_MATRIX_IS31FL3737) - is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_1, 0); -# if defined(IS31FL3737_I2C_ADDRESS_2) - is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_2, 1); -# if defined(IS31FL3737_I2C_ADDRESS_3) - is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_3, 2); -# if defined(IS31FL3737_I2C_ADDRESS_4) - is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_4, 3); -# endif -# endif -# endif - -# elif defined(LED_MATRIX_IS31FL3741) - is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_1, 0); -# if defined(IS31FL3741_I2C_ADDRESS_2) - is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_2, 1); -# if defined(IS31FL3741_I2C_ADDRESS_3) - is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_3, 2); -# if defined(IS31FL3741_I2C_ADDRESS_4) - is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_4, 3); -# endif -# endif -# endif - -# elif defined(IS31FLCOMMON) -# ifdef ISSI_MANUAL_SCALING - IS31FL_set_manual_scaling_buffer(); -# endif - IS31FL_common_update_scaling_register(DRIVER_ADDR_1, 0); -# if defined(LED_DRIVER_ADDR_2) - IS31FL_common_update_scaling_register(DRIVER_ADDR_2, 1); -# if defined(LED_DRIVER_ADDR_3) - IS31FL_common_update_scaling_register(DRIVER_ADDR_3, 2); -# if defined(LED_DRIVER_ADDR_4) - IS31FL_common_update_scaling_register(DRIVER_ADDR_4, 3); -# endif -# endif -# endif - -# elif defined(LED_MATRIX_SNLED27351) - snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_1, 0); -# if defined(SNLED27351_I2C_ADDRESS_2) - snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_2, 1); -# if defined(SNLED27351_I2C_ADDRESS_3) - snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_3, 2); -# if defined(SNLED27351_I2C_ADDRESS_4) - snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_4, 3); -# endif -# endif -# endif -# endif -} - -# if defined(LED_MATRIX_IS31FL3218) +#if defined(LED_MATRIX_IS31FL3218) const led_matrix_driver_t led_matrix_driver = { - .init = init, + .init = is31fl3218_init, .flush = is31fl3218_update_pwm_buffers, .set_value = is31fl3218_set_value, .set_value_all = is31fl3218_set_value_all, }; -# elif defined(LED_MATRIX_IS31FL3731) +#elif defined(LED_MATRIX_IS31FL3731) const led_matrix_driver_t led_matrix_driver = { - .init = init, - .flush = is31fl3731_flush, - .set_value = is31fl3731_set_value, + .init = is31fl3731_init_drivers, + .flush = is31fl3731_flush, + .set_value = is31fl3731_set_value, .set_value_all = is31fl3731_set_value_all, }; -# elif defined(LED_MATRIX_IS31FL3733) +#elif defined(LED_MATRIX_IS31FL3733) const led_matrix_driver_t led_matrix_driver = { - .init = init, - .flush = is31fl3733_flush, - .set_value = is31fl3733_set_value, + .init = is31fl3733_init_drivers, + .flush = is31fl3733_flush, + .set_value = is31fl3733_set_value, .set_value_all = is31fl3733_set_value_all, }; -# elif defined(LED_MATRIX_IS31FL3736) +#elif defined(LED_MATRIX_IS31FL3736) const led_matrix_driver_t led_matrix_driver = { - .init = init, - .flush = is31fl3736_flush, - .set_value = is31fl3736_set_value, + .init = is31fl3736_init_drivers, + .flush = is31fl3736_flush, + .set_value = is31fl3736_set_value, .set_value_all = is31fl3736_set_value_all, }; -# elif defined(LED_MATRIX_IS31FL3737) +#elif defined(LED_MATRIX_IS31FL3737) const led_matrix_driver_t led_matrix_driver = { - .init = init, - .flush = is31fl3737_flush, - .set_value = is31fl3737_set_value, + .init = is31fl3737_init_drivers, + .flush = is31fl3737_flush, + .set_value = is31fl3737_set_value, .set_value_all = is31fl3737_set_value_all, }; -# elif defined(LED_MATRIX_IS31FL3741) +#elif defined(LED_MATRIX_IS31FL3741) const led_matrix_driver_t led_matrix_driver = { - .init = init, - .flush = is31fl3741_flush, - .set_value = is31fl3741_set_value, + .init = is31fl3741_init_drivers, + .flush = is31fl3741_flush, + .set_value = is31fl3741_set_value, .set_value_all = is31fl3741_set_value_all, }; -# elif defined(IS31FLCOMMON) +#elif defined(IS31FLCOMMON) const led_matrix_driver_t led_matrix_driver = { - .init = init, - .flush = IS31FL_common_flush, - .set_value = IS31FL_simple_set_brightness, + .init = IS31FL_simple_init_drivers, + .flush = IS31FL_common_flush, + .set_value = IS31FL_simple_set_brightness, .set_value_all = IS31FL_simple_set_brigntness_all, }; -# elif defined(LED_MATRIX_SNLED27351) + +#elif defined(LED_MATRIX_SNLED27351) const led_matrix_driver_t led_matrix_driver = { - .init = init, - .flush = snled27351_flush, - .set_value = snled27351_set_value, + .init = snled27351_init_drivers, + .flush = snled27351_flush, + .set_value = snled27351_set_value, .set_value_all = snled27351_set_value_all, }; -# endif + #endif -- cgit v1.2.3