~ruther/qmk_firmware

cf7d3435d7e2cfb8927a1c436320f67bc9914eeb — Ryan 1 year, 6 months ago 1e9b299
Add `_flush()` functions to LED drivers (#22308)

72 files changed, 346 insertions(+), 319 deletions(-)

M drivers/led/aw20216s.c
M drivers/led/aw20216s.h
M drivers/led/issi/is31fl3731-simple.c
M drivers/led/issi/is31fl3731-simple.h
M drivers/led/issi/is31fl3731.c
M drivers/led/issi/is31fl3731.h
M drivers/led/issi/is31fl3733-simple.c
M drivers/led/issi/is31fl3733-simple.h
M drivers/led/issi/is31fl3733.c
M drivers/led/issi/is31fl3733.h
M drivers/led/issi/is31fl3736-simple.c
M drivers/led/issi/is31fl3736-simple.h
M drivers/led/issi/is31fl3736.c
M drivers/led/issi/is31fl3736.h
M drivers/led/issi/is31fl3737-simple.c
M drivers/led/issi/is31fl3737-simple.h
M drivers/led/issi/is31fl3737.c
M drivers/led/issi/is31fl3737.h
M drivers/led/issi/is31fl3741-simple.c
M drivers/led/issi/is31fl3741-simple.h
M drivers/led/issi/is31fl3741.c
M drivers/led/issi/is31fl3741.h
M drivers/led/issi/is31flcommon.c
M drivers/led/issi/is31flcommon.h
M drivers/led/snled27351-simple.c
M drivers/led/snled27351-simple.h
M drivers/led/snled27351.c
M drivers/led/snled27351.h
M keyboards/aeboards/satellite/rev1/rev1.c
M keyboards/fallacy/indicators.c
M keyboards/hs60/v2/ansi/config.h
M keyboards/hs60/v2/hhkb/config.h
M keyboards/hs60/v2/iso/config.h
M keyboards/inland/v83p/config.h
M keyboards/inland/v83p/info.json
M keyboards/inland/v83p/v83p.c
M keyboards/input_club/k_type/is31fl3733-dual.c
M keyboards/input_club/k_type/is31fl3733-dual.h
M keyboards/input_club/k_type/k_type-rgbdriver.c
M keyboards/keebwerk/mega/ansi/config.h
M keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c
M keyboards/matrix/m20add/rgb_ring.c
M keyboards/monsgeek/m3/config.h
M keyboards/monsgeek/m3/info.json
M keyboards/monsgeek/m3/m3.c
M keyboards/neson_design/700e/700e.c
M keyboards/neson_design/n6/n6.c
M keyboards/novelkeys/nk65/config.h
M keyboards/novelkeys/nk87/config.h
M keyboards/spaceholdings/nebula12/config.h
M keyboards/spaceholdings/nebula68/config.h
M keyboards/tkc/portico/config.h
M keyboards/tkc/portico75/config.h
M keyboards/wilba_tech/rama_works_kara/config.h
M keyboards/wilba_tech/rama_works_koyu/config.h
M keyboards/wilba_tech/rama_works_m10_c/config.h
M keyboards/wilba_tech/rama_works_m50_a/config.h
M keyboards/wilba_tech/rama_works_m60_a/config.h
M keyboards/wilba_tech/rama_works_m65_b/config.h
M keyboards/wilba_tech/rama_works_m65_bx/config.h
M keyboards/wilba_tech/rama_works_u80_a/config.h
M keyboards/wilba_tech/wt60_b/config.h
M keyboards/wilba_tech/wt60_bx/config.h
M keyboards/wilba_tech/wt60_c/config.h
M keyboards/wilba_tech/wt_mono_backlight.c
M keyboards/wilba_tech/zeal60/config.h
M keyboards/wilba_tech/zeal65/config.h
M keyboards/xelus/dawn60/rev1/config.h
M keyboards/xelus/pachi/rgb/rev1/rev1.c
M keyboards/xelus/pachi/rgb/rev2/rev2.c
M quantum/led_matrix/led_matrix_drivers.c
M quantum/rgb_matrix/rgb_matrix_drivers.c
M drivers/led/aw20216s.c => drivers/led/aw20216s.c +7 -0
@@ 166,3 166,10 @@ void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index) {
    }
    g_pwm_buffer_update_required[index] = false;
}

void aw20216s_flush(void) {
    aw20216s_update_pwm_buffers(AW20216S_CS_PIN_1, 0);
#if defined(AW20216S_CS_PIN_2)
    aw20216s_update_pwm_buffers(AW20216S_CS_PIN_2, 1);
#endif
}

M drivers/led/aw20216s.h => drivers/led/aw20216s.h +2 -0
@@ 68,6 68,8 @@ void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index);

void aw20216s_flush(void);

#define CS1_SW1 0x00
#define CS2_SW1 0x01
#define CS3_SW1 0x02

M drivers/led/issi/is31fl3731-simple.c => drivers/led/issi/is31fl3731-simple.c +13 -0
@@ 211,3 211,16 @@ void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) {
        g_led_control_registers_update_required[index] = false;
    }
}

void is31fl3731_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
}

M drivers/led/issi/is31fl3731-simple.h => drivers/led/issi/is31fl3731-simple.h +2 -0
@@ 80,6 80,8 @@ void is31fl3731_set_led_control_register(uint8_t index, bool value);
void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index);
void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index);

void is31fl3731_flush(void);

#define C1_1 0x24
#define C1_2 0x25
#define C1_3 0x26

M drivers/led/issi/is31fl3731.c => drivers/led/issi/is31fl3731.c +13 -0
@@ 223,3 223,16 @@ void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) {
    }
    g_led_control_registers_update_required[index] = false;
}

void is31fl3731_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
}

M drivers/led/issi/is31fl3731.h => drivers/led/issi/is31fl3731.h +2 -0
@@ 81,6 81,8 @@ void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index);
void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index);

void is31fl3731_flush(void);

#define C1_1 0x24
#define C1_2 0x25
#define C1_3 0x26

M drivers/led/issi/is31fl3733-simple.c => drivers/led/issi/is31fl3733-simple.c +13 -0
@@ 233,3 233,16 @@ void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) {
        g_led_control_registers_update_required[index] = false;
    }
}

void is31fl3733_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
}

M drivers/led/issi/is31fl3733-simple.h => drivers/led/issi/is31fl3733-simple.h +2 -0
@@ 99,6 99,8 @@ void is31fl3733_set_led_control_register(uint8_t index, bool value);
void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index);
void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index);

void is31fl3733_flush(void);

#define IS31FL3733_PUR_0R 0x00   // No PUR resistor
#define IS31FL3733_PUR_05KR 0x02 // 0.5k Ohm resistor in t_NOL
#define IS31FL3733_PUR_3KR 0x03  // 3.0k Ohm resistor on all the time

M drivers/led/issi/is31fl3733.c => drivers/led/issi/is31fl3733.c +13 -0
@@ 248,3 248,16 @@ void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) {
        g_led_control_registers_update_required[index] = false;
    }
}

void is31fl3733_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
}

M drivers/led/issi/is31fl3733.h => drivers/led/issi/is31fl3733.h +2 -0
@@ 124,6 124,8 @@ void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index);
void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index);

void is31fl3733_flush(void);

#define IS31FL3733_PUR_0R 0x00   // No PUR resistor
#define IS31FL3733_PUR_05KR 0x02 // 0.5k Ohm resistor in t_NOL
#define IS31FL3733_PUR_3KR 0x03  // 3.0k Ohm resistor on all the time

M drivers/led/issi/is31fl3736-simple.c => drivers/led/issi/is31fl3736-simple.c +13 -0
@@ 220,3 220,16 @@ void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) {
        g_led_control_registers_update_required[index] = false;
    }
}

void is31fl3736_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
}

M drivers/led/issi/is31fl3736-simple.h => drivers/led/issi/is31fl3736-simple.h +2 -0
@@ 94,6 94,8 @@ void is31fl3736_set_led_control_register(uint8_t index, bool value);
void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index);
void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index);

void is31fl3736_flush(void);

#define IS31FL3736_PUR_0R 0x00   // No PUR resistor
#define IS31FL3736_PUR_05KR 0x01 // 0.5k Ohm resistor
#define IS31FL3736_PUR_1KR 0x02  // 1.0k Ohm resistor

M drivers/led/issi/is31fl3736.c => drivers/led/issi/is31fl3736.c +13 -0
@@ 237,3 237,16 @@ void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) {
        g_led_control_registers_update_required[index] = false;
    }
}

void is31fl3736_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
}

M drivers/led/issi/is31fl3736.h => drivers/led/issi/is31fl3736.h +2 -0
@@ 108,6 108,8 @@ void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index);
void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index);

void is31fl3736_flush(void);

#define IS31FL3736_PUR_0R 0x00   // No PUR resistor
#define IS31FL3736_PUR_05KR 0x01 // 0.5k Ohm resistor
#define IS31FL3736_PUR_1KR 0x02  // 1.0k Ohm resistor

M drivers/led/issi/is31fl3737-simple.c => drivers/led/issi/is31fl3737-simple.c +13 -0
@@ 217,3 217,16 @@ void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) {
        g_led_control_registers_update_required[index] = false;
    }
}

void is31fl3737_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
}

M drivers/led/issi/is31fl3737-simple.h => drivers/led/issi/is31fl3737-simple.h +2 -0
@@ 84,6 84,8 @@ void is31fl3737_set_led_control_register(uint8_t index, bool value);
void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index);
void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index);

void is31fl3737_flush(void);

#define IS31FL3737_PUR_0R 0x00   // No PUR resistor
#define IS31FL3737_PUR_05KR 0x01 // 0.5k Ohm resistor in t_NOL
#define IS31FL3737_PUR_1KR 0x02  // 1.0k Ohm resistor in t_NOL

M drivers/led/issi/is31fl3737.c => drivers/led/issi/is31fl3737.c +13 -0
@@ 233,3 233,16 @@ void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) {
        g_led_control_registers_update_required[index] = false;
    }
}

void is31fl3737_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
}

M drivers/led/issi/is31fl3737.h => drivers/led/issi/is31fl3737.h +2 -0
@@ 101,6 101,8 @@ void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index);
void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index);

void is31fl3737_flush(void);

#define IS31FL3737_PUR_0R 0x00   // No PUR resistor
#define IS31FL3737_PUR_05KR 0x01 // 0.5k Ohm resistor in t_NOL
#define IS31FL3737_PUR_1KR 0x02  // 1.0k Ohm resistor in t_NOL

M drivers/led/issi/is31fl3741-simple.c => drivers/led/issi/is31fl3741-simple.c +13 -0
@@ 251,3 251,16 @@ void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t valu

    g_scaling_registers_update_required[pled->driver] = true;
}

void is31fl3741_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
}

M drivers/led/issi/is31fl3741-simple.h => drivers/led/issi/is31fl3741-simple.h +2 -0
@@ 87,6 87,8 @@ void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t valu

void is31fl3741_set_pwm_buffer(const is31fl3741_led *pled, uint8_t value);

void is31fl3741_flush(void);

#define IS31FL3741_PUR_0R 0x00   // No PUR resistor
#define IS31FL3741_PUR_05KR 0x01 // 0.5k Ohm resistor
#define IS31FL3741_PUR_1KR 0x02  // 1.0k Ohm resistor

M drivers/led/issi/is31fl3741.c => drivers/led/issi/is31fl3741.c +13 -0
@@ 269,3 269,16 @@ void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t red,

    g_scaling_registers_update_required[pled->driver] = true;
}

void is31fl3741_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
}

M drivers/led/issi/is31fl3741.h => drivers/led/issi/is31fl3741.h +2 -0
@@ 104,6 104,8 @@ void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t red,

void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue);

void is31fl3741_flush(void);

#define IS31FL3741_PUR_0R 0x00   // No PUR resistor
#define IS31FL3741_PUR_05KR 0x01 // 0.5k Ohm resistor
#define IS31FL3741_PUR_1KR 0x02  // 1.0k Ohm resistor

M drivers/led/issi/is31flcommon.c => drivers/led/issi/is31flcommon.c +13 -0
@@ 174,6 174,19 @@ void IS31FL_common_update_scaling_register(uint8_t addr, uint8_t index) {
    }
}

void IS31FL_common_flush(void) {
    IS31FL_common_update_pwm_register(DRIVER_ADDR_1, 0);
#if defined(DRIVER_ADDR_2)
    IS31FL_common_update_pwm_register(DRIVER_ADDR_2, 1);
#    if defined(DRIVER_ADDR_3)
    IS31FL_common_update_pwm_register(DRIVER_ADDR_3, 2);
#        if defined(DRIVER_ADDR_4)
    IS31FL_common_update_pwm_register(DRIVER_ADDR_4, 3);
#        endif
#    endif
#endif
}

#ifdef RGB_MATRIX_ENABLE
// Colour is set by adjusting PWM register
void IS31FL_RGB_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {

M drivers/led/issi/is31flcommon.h => drivers/led/issi/is31flcommon.h +2 -0
@@ 67,6 67,8 @@ void IS31FL_common_init(uint8_t addr, uint8_t ssr);
void IS31FL_common_update_pwm_register(uint8_t addr, uint8_t index);
void IS31FL_common_update_scaling_register(uint8_t addr, uint8_t index);

void IS31FL_common_flush(void);

#ifdef RGB_MATRIX_ENABLE
// RGB Matrix Specific scripts
void IS31FL_RGB_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);

M drivers/led/snled27351-simple.c => drivers/led/snled27351-simple.c +13 -0
@@ 203,6 203,19 @@ void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) {
    g_led_control_registers_update_required[index] = false;
}

void snled27351_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
}

void snled27351_sw_return_normal(uint8_t addr) {
    // Select to function page
    snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE);

M drivers/led/snled27351-simple.h => drivers/led/snled27351-simple.h +2 -0
@@ 82,6 82,8 @@ void snled27351_set_led_control_register(uint8_t index, bool value);
void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index);
void snled27351_update_led_control_registers(uint8_t addr, uint8_t index);

void snled27351_flush(void);

void snled27351_sw_return_normal(uint8_t addr);
void snled27351_sw_shutdown(uint8_t addr);


M drivers/led/snled27351.c => drivers/led/snled27351.c +13 -0
@@ 218,6 218,19 @@ void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) {
    g_led_control_registers_update_required[index] = false;
}

void snled27351_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
}

void snled27351_sw_return_normal(uint8_t addr) {
    // Select to function page
    snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE);

M drivers/led/snled27351.h => drivers/led/snled27351.h +2 -0
@@ 96,6 96,8 @@ void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bo
void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index);
void snled27351_update_led_control_registers(uint8_t addr, uint8_t index);

void snled27351_flush(void);

void snled27351_sw_return_normal(uint8_t addr);
void snled27351_sw_shutdown(uint8_t addr);


M keyboards/aeboards/satellite/rev1/rev1.c => keyboards/aeboards/satellite/rev1/rev1.c +6 -17
@@ 145,8 145,10 @@ led_config_t g_led_config = { {
// Custom Driver
static void init(void) {
    i2c_init();

    is31fl3731_init(IS31FL3731_I2C_ADDRESS_1);
    is31fl3731_init(IS31FL3731_I2C_ADDRESS_2);

    for (int index = 0; index < ISSI_DRIVER_TOTAL; index++) {
        bool enabled = !(   ( index == 18+5) || //B5
                            ( index == 36+17) || //C17


@@ 154,29 156,16 @@ static void init(void) {
                        );
        is31fl3731_set_led_control_register(index, enabled, enabled, enabled);
    }

    is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0);
    is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1);
}

static void flush(void) {
    is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0);
    is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_2, 1);
}

static void set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
    is31fl3731_set_color(index, red, green, blue);
}

static void set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
    is31fl3731_set_color_all( red, green, blue );
}


const rgb_matrix_driver_t rgb_matrix_driver = {
    .init = init,
    .flush = flush,
    .set_color = set_color,
    .set_color_all = set_color_all
    .flush = is31fl3731_flush,
    .set_color = is31fl3731_set_color,
    .set_color_all = is31fl3731_set_color_all
};

#endif

M keyboards/fallacy/indicators.c => keyboards/fallacy/indicators.c +1 -1
@@ 36,7 36,7 @@ void init_fallacy_leds(void) {
/* update the buffer
 */
void update_fallacy_leds(void) {
    is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0);    
    is31fl3731_flush();
}



M keyboards/hs60/v2/ansi/config.h => keyboards/hs60/v2/ansi/config.h +2 -1
@@ 53,7 53,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }

#define IS31FL3733_DRIVER_COUNT 2
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_DRIVER_COUNT 1
#define RGB_MATRIX_LED_COUNT 64

// These define which keys in the matrix are alphas/mods

M keyboards/hs60/v2/hhkb/config.h => keyboards/hs60/v2/hhkb/config.h +2 -1
@@ 53,7 53,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }

#define IS31FL3733_DRIVER_COUNT 2
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_DRIVER_COUNT 1
#define RGB_MATRIX_LED_COUNT 64

// These define which keys in the matrix are alphas/mods

M keyboards/hs60/v2/iso/config.h => keyboards/hs60/v2/iso/config.h +2 -1
@@ 50,7 50,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }

#define IS31FL3733_DRIVER_COUNT 2
#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_DRIVER_COUNT 1
#define RGB_MATRIX_LED_COUNT 64

// These define which keys in the matrix are alphas/mods

M keyboards/inland/v83p/config.h => keyboards/inland/v83p/config.h +3 -3
@@ 9,9 9,9 @@
    { C11 }

/* I2C Config for LED Driver */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110100
#define DRIVER_ADDR_2 0b1110111
#define SNLED27351_DRIVER_COUNT 2
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO
#define I2C1_SDA_PIN B7
#define I2C1_SCL_PIN B6
#define I2C1_SCL_PAL_MODE 4

M keyboards/inland/v83p/info.json => keyboards/inland/v83p/info.json +1 -1
@@ 33,7 33,7 @@
        ]
    },
    "rgb_matrix": {
        "driver": "ckled2001",
        "driver": "snled27351",
        "max_brightness": 180,
        "animations": {
            "solid_color": true,

M keyboards/inland/v83p/v83p.c => keyboards/inland/v83p/v83p.c +1 -1
@@ 5,7 5,7 @@
// clang-format off

#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
 *   driver
 *   |   R location

M keyboards/input_club/k_type/is31fl3733-dual.c => keyboards/input_club/k_type/is31fl3733-dual.c +7 -0
@@ 248,3 248,10 @@ void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) {
    }
    g_led_control_registers_update_required[index] = false;
}

void is31fl3733_flush(void) {
    is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_1, 0);
#    ifdef USE_I2C2
    is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_2, 1);
#    endif
}

M keyboards/input_club/k_type/is31fl3733-dual.h => keyboards/input_club/k_type/is31fl3733-dual.h +2 -0
@@ 64,6 64,8 @@ void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bo
void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index); // index is the driver index
void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index);

void is31fl3733_flush(void);

#define IS31FL3733_PUR_0R 0x00   // No PUR resistor
#define IS31FL3733_PUR_05KR 0x02 // 0.5k Ohm resistor in t_NOL
#define IS31FL3733_PUR_3KR 0x03  // 3.0k Ohm resistor on all the time

M keyboards/input_club/k_type/k_type-rgbdriver.c => keyboards/input_club/k_type/k_type-rgbdriver.c +1 -8
@@ 38,16 38,9 @@ static void init(void) {
#    endif
}

static void flush(void) {
    is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_1, 0);
#    ifdef USE_I2C2
    is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_2, 1);
#    endif
}

const rgb_matrix_driver_t rgb_matrix_driver = {
    .init = init,
    .flush = flush,
    .flush = is31fl3733_flush,
    .set_color = is31fl3733_set_color,
    .set_color_all = is31fl3733_set_color_all,
};

M keyboards/keebwerk/mega/ansi/config.h => keyboards/keebwerk/mega/ansi/config.h +2 -0
@@ 50,6 50,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }

#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_SDA
#define IS31FL3733_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 128


M keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c => keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c +46 -46
@@ 14,7 14,7 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#include QMK_KEYBOARD_H
#include "drivers/issi/is31fl3733.h"
#include "drivers/led/issi/is31fl3733.h"


const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {


@@ 50,9 50,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

static uint16_t ledTimer;

uint8_t R = 0;  /* First led*/
uint8_t G = 0;  /* Second led*/
uint8_t B = 0;  /* Third led*/
uint8_t r = 0;  /* First led*/
uint8_t g = 0;  /* Second led*/
uint8_t b = 0;  /* Third led*/

/* Boot animation parameters */



@@ 74,44 74,44 @@ bool bootAnimation(void){
    if (bootFirst>0 || bootSec>0){    
        if(bootFirst!=0){
            if (timer_elapsed(ledTimer) > 150){
                G = 255;
                R = 0;
                B = 0;
                is31fl3733_set_color( 6+64-1, R, G, B );
                g = 255;
                r = 0;
                b = 0;
                is31fl3733_set_color( 6+64-1, r, g, b );
            }
            if (timer_elapsed(ledTimer) > 300){
                G = 255;
                R = 255;
                B = 0;
                is31fl3733_set_color( 6+64-1, R, G, B );
                g = 255;
                r = 255;
                b = 0;
                is31fl3733_set_color( 6+64-1, r, g, b );
            }
            if (timer_elapsed(ledTimer) > 400){
                G = 255;
                R = 255;
                B = 255;
                is31fl3733_set_color( 6+64-1, R, G, B );
                g = 255;
                r = 255;
                b = 255;
                is31fl3733_set_color( 6+64-1, r, g, b );
            }
            if (timer_elapsed(ledTimer) > 500){
                G = 0;
                R = 0;
                B = 0;
                is31fl3733_set_color( 6+64-1, R, G, B );
                g = 0;
                r = 0;
                b = 0;
                is31fl3733_set_color( 6+64-1, r, g, b );
                ledTimer = timer_read();
                bootFirst--;
            }
        }
        if (bootFirst==0 && bootSec!=0){
            if (timer_elapsed(ledTimer) > 200) {
                G = 255;
                R = 255;
                B = 255;
                is31fl3733_set_color( 6+64-1, R, G, B );
                g = 255;
                r = 255;
                b = 255;
                is31fl3733_set_color( 6+64-1, r, g, b );
            }
            if (timer_elapsed(ledTimer) > 400){
                G = 0;
                R = 0;
                B = 0;
                is31fl3733_set_color( 6+64-1, R, G, B );
                g = 0;
                r = 0;
                b = 0;
                is31fl3733_set_color( 6+64-1, r, g, b );
                ledTimer = timer_read();
                bootSec--;
            }


@@ 125,29 125,29 @@ bool bootAnimation(void){
void breathing(void) {
    if(timer_elapsed(ledTimer)<travelTime){
        time = timer_elapsed(ledTimer);
        if((time - previousTime) > fadeTime && R<maxBrightness){
            G+=fadeStep;
            R+=fadeStep;
            B+=fadeStep;
            is31fl3733_set_color( 6+64-1, R, G, B );
        if((time - previousTime) > fadeTime && r<maxBrightness){
            g+=fadeStep;
            r+=fadeStep;
            b+=fadeStep;
            is31fl3733_set_color( 6+64-1, r, g, b );
            previousTime = time;
        }
    }
    else if(timer_elapsed(ledTimer)<(travelTime *  2)){
        time = timer_elapsed(ledTimer);
        if((time - previousTime) > fadeTime && R>minBrightness){
            G-=fadeStep;
            R-=fadeStep;
            B-=fadeStep;
            is31fl3733_set_color( 6+64-1, R, G, B );
        if((time - previousTime) > fadeTime && r>minBrightness){
            g-=fadeStep;
            r-=fadeStep;
            b-=fadeStep;
            is31fl3733_set_color( 6+64-1, r, g, b );
            previousTime = time;
        } 
    }
    else {
        R=0;
        G=0;
        B=0;
        is31fl3733_set_color( 6+64-1, R, G, B );
        r=0;
        g=0;
        b=0;
        is31fl3733_set_color( 6+64-1, r, g, b );
        previousTime = 0;
        time = 0;
        ledTimer=timer_read();


@@ 166,10 166,10 @@ void matrix_scan_user(void){
            prevCapsState = capsState; 
        } 
        else if(!capsState && capsState != prevCapsState){ 
            G = 0;
            R = 0;
            B = 0;
            is31fl3733_set_color( 6+64-1, R, G, B );
            g = 0;
            r = 0;
            b = 0;
            is31fl3733_set_color( 6+64-1, r, g, b );
            prevCapsState = capsState; 
        }
    }

M keyboards/matrix/m20add/rgb_ring.c => keyboards/matrix/m20add/rgb_ring.c +1 -1
@@ 396,7 396,7 @@ void rgb_ring_task(void)
            break;
    };

    is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0);
    is31fl3731_flush();
}

bool process_record_kb(uint16_t keycode, keyrecord_t *record)

M keyboards/monsgeek/m3/config.h => keyboards/monsgeek/m3/config.h +3 -3
@@ 36,9 36,9 @@
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)

/* I2C Config for LED Driver */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110100
#define DRIVER_ADDR_2 0b1110111
#define SNLED27351_DRIVER_COUNT 2
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */


M keyboards/monsgeek/m3/info.json => keyboards/monsgeek/m3/info.json +1 -1
@@ 31,7 31,7 @@
        "caps_lock": "A15"
    }, 
    "rgb_matrix": {
        "driver": "ckled2001",
        "driver": "snled27351",
        "max_brightness": 160,
        "animations": {
            "breathing": true,

M keyboards/monsgeek/m3/m3.c => keyboards/monsgeek/m3/m3.c +1 -1
@@ 17,7 17,7 @@
#include "quantum.h"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
 *   driver
 *   |  R location

M keyboards/neson_design/700e/700e.c => keyboards/neson_design/700e/700e.c +1 -4
@@ 341,10 341,7 @@ void housekeeping_task_kb(void)
        }
    }

    is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0);
#ifdef IS31FL3731_I2C_ADDRESS_2
    is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_2, 1);
#endif
    is31fl3731_flush();

    housekeeping_task_user();
}

M keyboards/neson_design/n6/n6.c => keyboards/neson_design/n6/n6.c +1 -4
@@ 343,10 343,7 @@ void housekeeping_task_kb(void)
        }
    }

    is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0);
#ifdef IS31FL3731_I2C_ADDRESS_2
    is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_2, 1);
#endif
    is31fl3731_flush();

    housekeeping_task_user();
}

M keyboards/novelkeys/nk65/config.h => keyboards/novelkeys/nk65/config.h +2 -0
@@ 50,6 50,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }

#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_SDA
#define IS31FL3733_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 128


M keyboards/novelkeys/nk87/config.h => keyboards/novelkeys/nk87/config.h +2 -0
@@ 50,6 50,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }

#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_SDA
#define IS31FL3733_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 128


M keyboards/spaceholdings/nebula12/config.h => keyboards/spaceholdings/nebula12/config.h +1 -0
@@ 73,6 73,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }

#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_DRIVER_COUNT 1
#define RGB_MATRIX_LED_COUNT 16


M keyboards/spaceholdings/nebula68/config.h => keyboards/spaceholdings/nebula68/config.h +2 -0
@@ 56,6 56,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }

#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_SDA
#define IS31FL3733_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 128


M keyboards/tkc/portico/config.h => keyboards/tkc/portico/config.h +2 -0
@@ 48,6 48,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

#else
// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 67


M keyboards/tkc/portico75/config.h => keyboards/tkc/portico75/config.h +1 -0
@@ 79,6 79,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#    define DRIVER_INDICATOR_LED_TOTAL 0
#else
// WT_RGB IS31FL3741 driver code
#    define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
#    define IS31FL3741_DRIVER_COUNT 1
#    define RGB_MATRIX_LED_COUNT 98


M keyboards/wilba_tech/rama_works_kara/config.h => keyboards/wilba_tech/rama_works_kara/config.h +2 -0
@@ 16,6 16,8 @@
#pragma once

// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 72


M keyboards/wilba_tech/rama_works_koyu/config.h => keyboards/wilba_tech/rama_works_koyu/config.h +2 -0
@@ 16,6 16,8 @@
#pragma once

// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 72


M keyboards/wilba_tech/rama_works_m10_c/config.h => keyboards/wilba_tech/rama_works_m10_c/config.h +1 -0
@@ 21,6 21,7 @@
#define LOCKING_RESYNC_ENABLE

// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_DRIVER_COUNT 1
#define RGB_MATRIX_LED_COUNT 12


M keyboards/wilba_tech/rama_works_m50_a/config.h => keyboards/wilba_tech/rama_works_m50_a/config.h +2 -0
@@ 21,6 21,8 @@
#define LOCKING_RESYNC_ENABLE

// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 72


M keyboards/wilba_tech/rama_works_m60_a/config.h => keyboards/wilba_tech/rama_works_m60_a/config.h +2 -0
@@ 16,6 16,8 @@
#pragma once

// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 72


M keyboards/wilba_tech/rama_works_m65_b/config.h => keyboards/wilba_tech/rama_works_m65_b/config.h +2 -0
@@ 21,6 21,8 @@
#define LOCKING_RESYNC_ENABLE

// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 72


M keyboards/wilba_tech/rama_works_m65_bx/config.h => keyboards/wilba_tech/rama_works_m65_bx/config.h +2 -0
@@ 21,6 21,8 @@
#define LOCKING_RESYNC_ENABLE

// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 72


M keyboards/wilba_tech/rama_works_u80_a/config.h => keyboards/wilba_tech/rama_works_u80_a/config.h +3 -0
@@ 38,6 38,9 @@
//#define NO_ACTION_ONESHOT

// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_I2C_ADDRESS_3 IS31FL3731_I2C_ADDRESS_SCL
#define IS31FL3731_DRIVER_COUNT 3
#define RGB_MATRIX_LED_COUNT 108


M keyboards/wilba_tech/wt60_b/config.h => keyboards/wilba_tech/wt60_b/config.h +2 -0
@@ 23,6 23,8 @@


// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 72


M keyboards/wilba_tech/wt60_bx/config.h => keyboards/wilba_tech/wt60_bx/config.h +2 -0
@@ 23,6 23,8 @@


// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 72


M keyboards/wilba_tech/wt60_c/config.h => keyboards/wilba_tech/wt60_c/config.h +2 -0
@@ 23,6 23,8 @@


// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 72


M keyboards/wilba_tech/wt_mono_backlight.c => keyboards/wilba_tech/wt_mono_backlight.c +1 -1
@@ 469,7 469,7 @@ void backlight_config_save(void)

void backlight_update_pwm_buffers(void)
{
    is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_1, 0);
    is31fl3736_flush();
}

bool process_record_backlight(uint16_t keycode, keyrecord_t *record)

M keyboards/wilba_tech/zeal60/config.h => keyboards/wilba_tech/zeal60/config.h +2 -0
@@ 16,6 16,8 @@
#pragma once

// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 72


M keyboards/wilba_tech/zeal65/config.h => keyboards/wilba_tech/zeal65/config.h +2 -0
@@ 16,6 16,8 @@
#pragma once

// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 72


M keyboards/xelus/dawn60/rev1/config.h => keyboards/xelus/dawn60/rev1/config.h +2 -0
@@ 16,6 16,8 @@
#pragma once

// IS31FL3731 driver
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_DRIVER_COUNT 2
#define RGB_MATRIX_LED_COUNT 64


M keyboards/xelus/pachi/rgb/rev1/rev1.c => keyboards/xelus/pachi/rgb/rev1/rev1.c +1 -5
@@ 226,13 226,9 @@ static void init(void) {
    is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_1, 0);
}

static void flush(void) {
    is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_1, 0);
}

const rgb_matrix_driver_t rgb_matrix_driver = {
    .init = init,
    .flush = flush,
    .flush = is31fl3741_flush,
    .set_color = is31fl3741_set_color,
    .set_color_all = is31fl3741_set_color_all
};

M keyboards/xelus/pachi/rgb/rev2/rev2.c => keyboards/xelus/pachi/rgb/rev2/rev2.c +1 -5
@@ 232,13 232,9 @@ static void init(void) {
    is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_1, 0);
}

static void flush(void) {
    is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_1, 0);
}

const rgb_matrix_driver_t rgb_matrix_driver = {
    .init = init,
    .flush = flush,
    .flush = is31fl3741_flush,
    .set_color = is31fl3741_set_color,
    .set_color_all = is31fl3741_set_color_all
};

M quantum/led_matrix/led_matrix_drivers.c => quantum/led_matrix/led_matrix_drivers.c +8 -103
@@ 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,
};

M quantum/rgb_matrix/rgb_matrix_drivers.c => quantum/rgb_matrix/rgb_matrix_drivers.c +9 -111
@@ 247,160 247,65 @@ static void init(void) {
}

#    if defined(RGB_MATRIX_IS31FL3218)
static void flush(void) {
    is31fl3218_update_pwm_buffers();
}

const rgb_matrix_driver_t rgb_matrix_driver = {
    .init          = init,
    .flush         = flush,
    .flush         = is31fl3218_update_pwm_buffers,
    .set_color     = is31fl3218_set_color,
    .set_color_all = is31fl3218_set_color_all,
};

#    elif defined(RGB_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 rgb_matrix_driver_t rgb_matrix_driver = {
    .init = init,
    .flush = flush,
    .flush = is31fl3731_flush,
    .set_color = is31fl3731_set_color,
    .set_color_all = is31fl3731_set_color_all,
};

#    elif defined(RGB_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 rgb_matrix_driver_t rgb_matrix_driver = {
    .init = init,
    .flush = flush,
    .flush = is31fl3733_flush,
    .set_color = is31fl3733_set_color,
    .set_color_all = is31fl3733_set_color_all,
};

#    elif defined(RGB_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 rgb_matrix_driver_t rgb_matrix_driver = {
    .init = init,
    .flush = flush,
    .flush = is31fl3736_flush,
    .set_color = is31fl3736_set_color,
    .set_color_all = is31fl3736_set_color_all,
};

#    elif defined(RGB_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 rgb_matrix_driver_t rgb_matrix_driver = {
    .init = init,
    .flush = flush,
    .flush = is31fl3737_flush,
    .set_color = is31fl3737_set_color,
    .set_color_all = is31fl3737_set_color_all,
};

#    elif defined(RGB_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 rgb_matrix_driver_t rgb_matrix_driver = {
    .init = init,
    .flush = flush,
    .flush = is31fl3741_flush,
    .set_color = is31fl3741_set_color,
    .set_color_all = is31fl3741_set_color_all,
};

#    elif defined(IS31FLCOMMON)
static void flush(void) {
    IS31FL_common_update_pwm_register(DRIVER_ADDR_1, 0);
#        if defined(DRIVER_ADDR_2)
    IS31FL_common_update_pwm_register(DRIVER_ADDR_2, 1);
#            if defined(DRIVER_ADDR_3)
    IS31FL_common_update_pwm_register(DRIVER_ADDR_3, 2);
#                if defined(DRIVER_ADDR_4)
    IS31FL_common_update_pwm_register(DRIVER_ADDR_4, 3);
#                endif
#            endif
#        endif
}

const rgb_matrix_driver_t rgb_matrix_driver = {
    .init = init,
    .flush = flush,
    .flush = IS31FL_common_flush,
    .set_color = IS31FL_RGB_set_color,
    .set_color_all = IS31FL_RGB_set_color_all,
};

#    elif defined(RGB_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 rgb_matrix_driver_t rgb_matrix_driver = {
    .init = init,
    .flush = flush,
    .flush = snled27351_flush,
    .set_color = snled27351_set_color,
    .set_color_all = snled27351_set_color_all,
};


@@ 418,16 323,9 @@ static void init(void) {
#    endif
}

static void flush(void) {
    aw20216s_update_pwm_buffers(AW20216S_CS_PIN_1, 0);
#    if defined(AW20216S_CS_PIN_2)
    aw20216s_update_pwm_buffers(AW20216S_CS_PIN_2, 1);
#    endif
}

const rgb_matrix_driver_t rgb_matrix_driver = {
    .init          = init,
    .flush         = flush,
    .flush         = aw20216s_flush,
    .set_color     = aw20216s_set_color,
    .set_color_all = aw20216s_set_color_all,
};

Do not follow this link