From a213a0da8d35e78b33639e70ac60022bc1b89b00 Mon Sep 17 00:00:00 2001 From: GloooM Date: Thu, 23 Jan 2025 23:27:09 +0500 Subject: [PATCH 1/2] Handle UNSELECT_DRIVE_HIGH and SN32F2XX_PWM_OUTPUT_ACTIVE_HIGH --- drivers/led/sn32f2xx.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/led/sn32f2xx.c b/drivers/led/sn32f2xx.c index b58589d36b2c..925d3a89b3bd 100644 --- a/drivers/led/sn32f2xx.c +++ b/drivers/led/sn32f2xx.c @@ -440,7 +440,7 @@ static void shared_matrix_rgb_disable_output(void) { gpio_set_pin_input(led_col_pins[x]); # endif // DIODE_DIRECTION != SN32F2XX_PWM_DIRECTION // Unselect all columns before scanning the key matrix -# if (SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_RGB_OUTPUT_ACTIVE_LOW) +# if (SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_RGB_OUTPUT_ACTIVE_LOW || defined(MATRIX_UNSELECT_DRIVE_HIGH)) gpio_write_pin_high(led_col_pins[x]); # elif (SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_RGB_OUTPUT_ACTIVE_HIGH) gpio_write_pin_low(led_col_pins[x]); @@ -479,6 +479,13 @@ static void update_pwm_channels(PWMDriver *pwmp) { # endif // SHARED_MATRIX } + // Disable all RGB columns before turning on PWM in case matrix read unselect high +# if (SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_PWM_OUTPUT_ACTIVE_HIGH && defined(MATRIX_UNSELECT_DRIVE_HIGH)) + for (uint8_t x = 0; x < SN32F2XX_RGB_MATRIX_COLS; x++) { + gpio_write_pin_low(led_col_pins[x]); + } +# endif // SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_PWM_OUTPUT_ACTIVE_HIGH && defined(MATRIX_UNSELECT_DRIVE_HIGH) + bool enable_pwm_output = false; for (uint8_t current_key_row = 0; current_key_row < MATRIX_ROWS; current_key_row++) { uint8_t led_index = g_led_config.matrix_co[current_key_row][current_key_col]; From 331d71150024abb4daa343f6e9dffe454ca6115e Mon Sep 17 00:00:00 2001 From: GloooM Date: Fri, 24 Jan 2025 00:42:23 +0500 Subject: [PATCH 2/2] typo --- drivers/led/sn32f2xx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/led/sn32f2xx.c b/drivers/led/sn32f2xx.c index 925d3a89b3bd..59650fe808da 100644 --- a/drivers/led/sn32f2xx.c +++ b/drivers/led/sn32f2xx.c @@ -440,7 +440,7 @@ static void shared_matrix_rgb_disable_output(void) { gpio_set_pin_input(led_col_pins[x]); # endif // DIODE_DIRECTION != SN32F2XX_PWM_DIRECTION // Unselect all columns before scanning the key matrix -# if (SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_RGB_OUTPUT_ACTIVE_LOW || defined(MATRIX_UNSELECT_DRIVE_HIGH)) +# if (SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_RGB_OUTPUT_ACTIVE_LOW || defined(MATRIX_UNSELECT_DRIVE_HIGH)) gpio_write_pin_high(led_col_pins[x]); # elif (SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_RGB_OUTPUT_ACTIVE_HIGH) gpio_write_pin_low(led_col_pins[x]); @@ -480,11 +480,11 @@ static void update_pwm_channels(PWMDriver *pwmp) { } // Disable all RGB columns before turning on PWM in case matrix read unselect high -# if (SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_PWM_OUTPUT_ACTIVE_HIGH && defined(MATRIX_UNSELECT_DRIVE_HIGH)) +# if (SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_RGB_OUTPUT_ACTIVE_HIGH && defined(MATRIX_UNSELECT_DRIVE_HIGH)) for (uint8_t x = 0; x < SN32F2XX_RGB_MATRIX_COLS; x++) { gpio_write_pin_low(led_col_pins[x]); } -# endif // SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_PWM_OUTPUT_ACTIVE_HIGH && defined(MATRIX_UNSELECT_DRIVE_HIGH) +# endif // SN32F2XX_RGB_OUTPUT_ACTIVE_LEVEL == SN32F2XX_RGB_OUTPUT_ACTIVE_HIGH && defined(MATRIX_UNSELECT_DRIVE_HIGH) bool enable_pwm_output = false; for (uint8_t current_key_row = 0; current_key_row < MATRIX_ROWS; current_key_row++) {