~ruther/qmk_firmware

a9f1105f98ecca299d401f81cd5cc1699683e2ce — Ryan 1 year, 3 months ago 0b7df03
LED drivers: add support for shutdown pin (#23058)

* LED drivers: add support for shutdown pin

* Update candidate boards
63 files changed, 164 insertions(+), 159 deletions(-)

M drivers/led/issi/is31fl3218-mono.c
M drivers/led/issi/is31fl3218.c
M drivers/led/issi/is31fl3731-mono.c
M drivers/led/issi/is31fl3731.c
M drivers/led/issi/is31fl3733-mono.c
M drivers/led/issi/is31fl3733.c
M drivers/led/issi/is31fl3736-mono.c
M drivers/led/issi/is31fl3736.c
M drivers/led/issi/is31fl3737-mono.c
M drivers/led/issi/is31fl3737.c
M drivers/led/issi/is31fl3741-mono.c
M drivers/led/issi/is31fl3741.c
M drivers/led/issi/is31fl3742a-mono.c
M drivers/led/issi/is31fl3742a.c
M drivers/led/issi/is31fl3743a-mono.c
M drivers/led/issi/is31fl3743a.c
M drivers/led/issi/is31fl3745-mono.c
M drivers/led/issi/is31fl3745.c
M drivers/led/issi/is31fl3746a-mono.c
M drivers/led/issi/is31fl3746a.c
M drivers/led/snled27351-mono.c
M drivers/led/snled27351.c
M keyboards/exclusive/e6_rgb/config.h
M keyboards/exclusive/e6_rgb/e6_rgb.c
M keyboards/input_club/ergodox_infinity/config.h
M keyboards/input_club/ergodox_infinity/ergodox_infinity.c
M keyboards/input_club/k_type/config.h
M keyboards/input_club/k_type/is31fl3733-dual.c
M keyboards/input_club/k_type/k_type.c
M keyboards/input_club/whitefox/config.h
M keyboards/input_club/whitefox/whitefox.c
M keyboards/melgeek/mach80/config.h
M keyboards/melgeek/mach80/rev1/rev1.c
M keyboards/melgeek/mach80/rev2/rev2.c
M keyboards/melgeek/mj61/config.h
M keyboards/melgeek/mj61/rev1/rev1.c
M keyboards/melgeek/mj61/rev2/rev2.c
M keyboards/melgeek/mj63/config.h
M keyboards/melgeek/mj63/rev1/rev1.c
M keyboards/melgeek/mj63/rev2/rev2.c
M keyboards/melgeek/mj64/config.h
M keyboards/melgeek/mj64/rev1/rev1.c
M keyboards/melgeek/mj64/rev2/rev2.c
M keyboards/melgeek/mj64/rev3/rev3.c
M keyboards/melgeek/mj65/config.h
M keyboards/melgeek/mj65/rev3/rev3.c
M keyboards/melgeek/mojo68/config.h
M keyboards/melgeek/mojo68/rev1/rev1.c
M keyboards/melgeek/mojo75/config.h
M keyboards/melgeek/mojo75/rev1/rev1.c
M keyboards/melgeek/tegic/config.h
M keyboards/melgeek/tegic/rev1/rev1.c
M keyboards/opendeck/32/rev1/config.h
M keyboards/opendeck/32/rev1/rev1.c
M keyboards/opendeck/32/rev1/rev1.h
M keyboards/skyloong/gk61/pro/config.h
M keyboards/skyloong/gk61/pro/pro.c
M keyboards/skyloong/gk61/pro_48/config.h
M keyboards/skyloong/gk61/pro_48/pro_48.c
M keyboards/skyloong/gk61/v1/config.h
M keyboards/skyloong/gk61/v1/v1.c
M keyboards/teleport/native/config.h
M keyboards/teleport/native/native.c
M drivers/led/issi/is31fl3218-mono.c => drivers/led/issi/is31fl3218-mono.c +6 -0
@@ 16,6 16,7 @@

#include "is31fl3218-mono.h"
#include "i2c_master.h"
#include "gpio.h"

#define IS31FL3218_PWM_REGISTER_COUNT 18
#define IS31FL3218_LED_CONTROL_REGISTER_COUNT 3


@@ 66,6 67,11 @@ void is31fl3218_write_pwm_buffer(void) {
void is31fl3218_init(void) {
    i2c_init();

#if defined(IS31FL3218_SDB_PIN)
    setPinOutput(IS31FL3218_SDB_PIN);
    writePinHigh(IS31FL3218_SDB_PIN);
#endif

    // In case we ever want to reinitialize (?)
    is31fl3218_write_register(IS31FL3218_REG_RESET, 0x00);


M drivers/led/issi/is31fl3218.c => drivers/led/issi/is31fl3218.c +6 -0
@@ 16,6 16,7 @@

#include "is31fl3218.h"
#include "i2c_master.h"
#include "gpio.h"

#define IS31FL3218_PWM_REGISTER_COUNT 18
#define IS31FL3218_LED_CONTROL_REGISTER_COUNT 3


@@ 66,6 67,11 @@ void is31fl3218_write_pwm_buffer(void) {
void is31fl3218_init(void) {
    i2c_init();

#if defined(IS31FL3218_SDB_PIN)
    setPinOutput(IS31FL3218_SDB_PIN);
    writePinHigh(IS31FL3218_SDB_PIN);
#endif

    // In case we ever want to reinitialize (?)
    is31fl3218_write_register(IS31FL3218_REG_RESET, 0x00);


M drivers/led/issi/is31fl3731-mono.c => drivers/led/issi/is31fl3731-mono.c +6 -0
@@ 19,6 19,7 @@

#include "is31fl3731-mono.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3731_PWM_REGISTER_COUNT 144


@@ 97,6 98,11 @@ void is31fl3731_write_pwm_buffer(uint8_t index) {
void is31fl3731_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3731_SDB_PIN)
    setPinOutput(IS31FL3731_SDB_PIN);
    writePinHigh(IS31FL3731_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3731_DRIVER_COUNT; i++) {
        is31fl3731_init(i);
    }

M drivers/led/issi/is31fl3731.c => drivers/led/issi/is31fl3731.c +6 -0
@@ 18,6 18,7 @@

#include "is31fl3731.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3731_PWM_REGISTER_COUNT 144


@@ 96,6 97,11 @@ void is31fl3731_write_pwm_buffer(uint8_t index) {
void is31fl3731_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3731_SDB_PIN)
    setPinOutput(IS31FL3731_SDB_PIN);
    writePinHigh(IS31FL3731_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3731_DRIVER_COUNT; i++) {
        is31fl3731_init(i);
    }

M drivers/led/issi/is31fl3733-mono.c => drivers/led/issi/is31fl3733-mono.c +6 -0
@@ 20,6 20,7 @@

#include "is31fl3733-mono.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3733_PWM_REGISTER_COUNT 192


@@ 142,6 143,11 @@ void is31fl3733_write_pwm_buffer(uint8_t index) {
void is31fl3733_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3733_SDB_PIN)
    setPinOutput(IS31FL3733_SDB_PIN);
    writePinHigh(IS31FL3733_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3733_DRIVER_COUNT; i++) {
        is31fl3733_init(i);
    }

M drivers/led/issi/is31fl3733.c => drivers/led/issi/is31fl3733.c +6 -0
@@ 19,6 19,7 @@

#include "is31fl3733.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3733_PWM_REGISTER_COUNT 192


@@ 141,6 142,11 @@ void is31fl3733_write_pwm_buffer(uint8_t index) {
void is31fl3733_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3733_SDB_PIN)
    setPinOutput(IS31FL3733_SDB_PIN);
    writePinHigh(IS31FL3733_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3733_DRIVER_COUNT; i++) {
        is31fl3733_init(i);
    }

M drivers/led/issi/is31fl3736-mono.c => drivers/led/issi/is31fl3736-mono.c +6 -0
@@ 17,6 17,7 @@

#include "is31fl3736-mono.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3736_PWM_REGISTER_COUNT 192 // actually 96


@@ 113,6 114,11 @@ void is31fl3736_write_pwm_buffer(uint8_t index) {
void is31fl3736_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3736_SDB_PIN)
    setPinOutput(IS31FL3736_SDB_PIN);
    writePinHigh(IS31FL3736_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3736_DRIVER_COUNT; i++) {
        is31fl3736_init(i);
    }

M drivers/led/issi/is31fl3736.c => drivers/led/issi/is31fl3736.c +6 -0
@@ 17,6 17,7 @@

#include "is31fl3736.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3736_PWM_REGISTER_COUNT 192 // actually 96


@@ 113,6 114,11 @@ void is31fl3736_write_pwm_buffer(uint8_t index) {
void is31fl3736_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3736_SDB_PIN)
    setPinOutput(IS31FL3736_SDB_PIN);
    writePinHigh(IS31FL3736_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3736_DRIVER_COUNT; i++) {
        is31fl3736_init(i);
    }

M drivers/led/issi/is31fl3737-mono.c => drivers/led/issi/is31fl3737-mono.c +6 -0
@@ 19,6 19,7 @@

#include "is31fl3737-mono.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3737_PWM_REGISTER_COUNT 192 // actually 144


@@ 115,6 116,11 @@ void is31fl3737_write_pwm_buffer(uint8_t index) {
void is31fl3737_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3737_SDB_PIN)
    setPinOutput(IS31FL3737_SDB_PIN);
    writePinHigh(IS31FL3737_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3737_DRIVER_COUNT; i++) {
        is31fl3737_init(i);
    }

M drivers/led/issi/is31fl3737.c => drivers/led/issi/is31fl3737.c +6 -0
@@ 19,6 19,7 @@

#include "is31fl3737.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3737_PWM_REGISTER_COUNT 192 // actually 144


@@ 115,6 116,11 @@ void is31fl3737_write_pwm_buffer(uint8_t index) {
void is31fl3737_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3737_SDB_PIN)
    setPinOutput(IS31FL3737_SDB_PIN);
    writePinHigh(IS31FL3737_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3737_DRIVER_COUNT; i++) {
        is31fl3737_init(i);
    }

M drivers/led/issi/is31fl3741-mono.c => drivers/led/issi/is31fl3741-mono.c +6 -0
@@ 19,6 19,7 @@

#include "is31fl3741-mono.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3741_PWM_0_REGISTER_COUNT 180


@@ 141,6 142,11 @@ void is31fl3741_write_pwm_buffer(uint8_t index) {
void is31fl3741_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3741_SDB_PIN)
    setPinOutput(IS31FL3741_SDB_PIN);
    writePinHigh(IS31FL3741_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3741_DRIVER_COUNT; i++) {
        is31fl3741_init(i);
    }

M drivers/led/issi/is31fl3741.c => drivers/led/issi/is31fl3741.c +6 -0
@@ 19,6 19,7 @@

#include "is31fl3741.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3741_PWM_0_REGISTER_COUNT 180


@@ 141,6 142,11 @@ void is31fl3741_write_pwm_buffer(uint8_t index) {
void is31fl3741_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3741_SDB_PIN)
    setPinOutput(IS31FL3741_SDB_PIN);
    writePinHigh(IS31FL3741_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3741_DRIVER_COUNT; i++) {
        is31fl3741_init(i);
    }

M drivers/led/issi/is31fl3742a-mono.c => drivers/led/issi/is31fl3742a-mono.c +6 -0
@@ 20,6 20,7 @@

#include "is31fl3742a-mono.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3742A_PWM_REGISTER_COUNT 180


@@ 114,6 115,11 @@ void is31fl3742a_write_pwm_buffer(uint8_t index) {
void is31fl3742a_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3742A_SDB_PIN)
    setPinOutput(IS31FL3742A_SDB_PIN);
    writePinHigh(IS31FL3742A_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3742A_DRIVER_COUNT; i++) {
        is31fl3742a_init(i);
    }

M drivers/led/issi/is31fl3742a.c => drivers/led/issi/is31fl3742a.c +6 -0
@@ 20,6 20,7 @@

#include "is31fl3742a.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3742A_PWM_REGISTER_COUNT 180


@@ 114,6 115,11 @@ void is31fl3742a_write_pwm_buffer(uint8_t index) {
void is31fl3742a_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3742A_SDB_PIN)
    setPinOutput(IS31FL3742A_SDB_PIN);
    writePinHigh(IS31FL3742A_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3742A_DRIVER_COUNT; i++) {
        is31fl3742a_init(i);
    }

M drivers/led/issi/is31fl3743a-mono.c => drivers/led/issi/is31fl3743a-mono.c +6 -0
@@ 20,6 20,7 @@

#include "is31fl3743a-mono.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3743A_PWM_REGISTER_COUNT 198


@@ 136,6 137,11 @@ void is31fl3743a_write_pwm_buffer(uint8_t index) {
void is31fl3743a_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3743A_SDB_PIN)
    setPinOutput(IS31FL3743A_SDB_PIN);
    writePinHigh(IS31FL3743A_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3743A_DRIVER_COUNT; i++) {
        is31fl3743a_init(i);
    }

M drivers/led/issi/is31fl3743a.c => drivers/led/issi/is31fl3743a.c +6 -0
@@ 20,6 20,7 @@

#include "is31fl3743a.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3743A_PWM_REGISTER_COUNT 198


@@ 136,6 137,11 @@ void is31fl3743a_write_pwm_buffer(uint8_t index) {
void is31fl3743a_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3743A_SDB_PIN)
    setPinOutput(IS31FL3743A_SDB_PIN);
    writePinHigh(IS31FL3743A_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3743A_DRIVER_COUNT; i++) {
        is31fl3743a_init(i);
    }

M drivers/led/issi/is31fl3745-mono.c => drivers/led/issi/is31fl3745-mono.c +6 -0
@@ 20,6 20,7 @@

#include "is31fl3745-mono.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3745_PWM_REGISTER_COUNT 144


@@ 136,6 137,11 @@ void is31fl3745_write_pwm_buffer(uint8_t index) {
void is31fl3745_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3745_SDB_PIN)
    setPinOutput(IS31FL3745_SDB_PIN);
    writePinHigh(IS31FL3745_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3745_DRIVER_COUNT; i++) {
        is31fl3745_init(i);
    }

M drivers/led/issi/is31fl3745.c => drivers/led/issi/is31fl3745.c +6 -0
@@ 20,6 20,7 @@

#include "is31fl3745.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3745_PWM_REGISTER_COUNT 144


@@ 136,6 137,11 @@ void is31fl3745_write_pwm_buffer(uint8_t index) {
void is31fl3745_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3745_SDB_PIN)
    setPinOutput(IS31FL3745_SDB_PIN);
    writePinHigh(IS31FL3745_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3745_DRIVER_COUNT; i++) {
        is31fl3745_init(i);
    }

M drivers/led/issi/is31fl3746a-mono.c => drivers/led/issi/is31fl3746a-mono.c +6 -0
@@ 20,6 20,7 @@

#include "is31fl3746a-mono.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3746A_PWM_REGISTER_COUNT 72


@@ 114,6 115,11 @@ void is31fl3746a_write_pwm_buffer(uint8_t index) {
void is31fl3746a_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3746A_SDB_PIN)
    setPinOutput(IS31FL3746A_SDB_PIN);
    writePinHigh(IS31FL3746A_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3746A_DRIVER_COUNT; i++) {
        is31fl3746a_init(i);
    }

M drivers/led/issi/is31fl3746a.c => drivers/led/issi/is31fl3746a.c +6 -0
@@ 20,6 20,7 @@

#include "is31fl3746a.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3746A_PWM_REGISTER_COUNT 72


@@ 114,6 115,11 @@ void is31fl3746a_write_pwm_buffer(uint8_t index) {
void is31fl3746a_init_drivers(void) {
    i2c_init();

#if defined(IS31FL3746A_SDB_PIN)
    setPinOutput(IS31FL3746A_SDB_PIN);
    writePinHigh(IS31FL3746A_SDB_PIN);
#endif

    for (uint8_t i = 0; i < IS31FL3746A_DRIVER_COUNT; i++) {
        is31fl3746a_init(i);
    }

M drivers/led/snled27351-mono.c => drivers/led/snled27351-mono.c +6 -0
@@ 16,6 16,7 @@

#include "snled27351-mono.h"
#include "i2c_master.h"
#include "gpio.h"

#define SNLED27351_PWM_REGISTER_COUNT 192
#define SNLED27351_LED_CONTROL_REGISTER_COUNT 24


@@ 103,6 104,11 @@ void snled27351_write_pwm_buffer(uint8_t index) {
void snled27351_init_drivers(void) {
    i2c_init();

#if defined(SNLED27351_SDB_PIN)
    setPinOutput(SNLED27351_SDB_PIN);
    writePinHigh(SNLED27351_SDB_PIN);
#endif

    for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++) {
        snled27351_init(i);
    }

M drivers/led/snled27351.c => drivers/led/snled27351.c +6 -0
@@ 16,6 16,7 @@

#include "snled27351.h"
#include "i2c_master.h"
#include "gpio.h"

#define SNLED27351_PWM_REGISTER_COUNT 192
#define SNLED27351_LED_CONTROL_REGISTER_COUNT 24


@@ 103,6 104,11 @@ void snled27351_write_pwm_buffer(uint8_t index) {
void snled27351_init_drivers(void) {
    i2c_init();

#if defined(SNLED27351_SDB_PIN)
    setPinOutput(SNLED27351_SDB_PIN);
    writePinHigh(SNLED27351_SDB_PIN);
#endif

    for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++) {
        snled27351_init(i);
    }

M keyboards/exclusive/e6_rgb/config.h => keyboards/exclusive/e6_rgb/config.h +1 -0
@@ 5,3 5,4 @@
#pragma once

#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_SDB_PIN D5

M keyboards/exclusive/e6_rgb/e6_rgb.c => keyboards/exclusive/e6_rgb/e6_rgb.c +0 -6
@@ 1,12 1,6 @@
#include "quantum.h"

#ifdef RGB_MATRIX_ENABLE
void matrix_init_kb(void) {
  setPinOutput(D5);
  writePinHigh(D5);
  matrix_init_user();
}

const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
/* Refer to IS31 manual for these locations
 *   driver

M keyboards/input_club/ergodox_infinity/config.h => keyboards/input_club/ergodox_infinity/config.h +1 -0
@@ 44,6 44,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

/* LED matrix driver */
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_SDB_PIN B16

/* i2c (for LED matrix) */
#define I2C1_CLOCK_SPEED 400000

M keyboards/input_club/ergodox_infinity/ergodox_infinity.c => keyboards/input_club/ergodox_infinity/ergodox_infinity.c +0 -5
@@ 95,11 95,6 @@ __attribute__ ((weak)) void matrix_scan_user(void) {}


void keyboard_pre_init_kb(void) {
#ifdef LED_MATRIX_ENABLE
    // Turn on LED controller
    setPinOutput(B16);
    writePinHigh(B16);
#endif
    // The backlight always has to be initialized, otherwise it will stay lit
    lcd_backlight_hal_init();
#ifdef ST7565_ENABLE

M keyboards/input_club/k_type/config.h => keyboards/input_club/k_type/config.h +1 -0
@@ 50,3 50,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_SDB_PIN B16

M keyboards/input_club/k_type/is31fl3733-dual.c => keyboards/input_club/k_type/is31fl3733-dual.c +6 -0
@@ 18,6 18,7 @@

#include "is31fl3733-dual.h"
#include "i2c_master.h"
#include "gpio.h"
#include "wait.h"

#define IS31FL3733_PWM_REGISTER_COUNT 192


@@ 126,6 127,11 @@ void is31fl3733_write_pwm_buffer(uint8_t bus, uint8_t index) {
}

void is31fl3733_init_drivers(void) {
#if defined(IS31FL3733_SDB_PIN)
    setPinOutput(IS31FL3733_SDB_PIN);
    writePinHigh(IS31FL3733_SDB_PIN);
#endif

    i2c_init(&I2CD1, I2C1_SCL_PIN, I2C1_SDA_PIN);

    is31fl3733_init(0, 0);

M keyboards/input_club/k_type/k_type.c => keyboards/input_club/k_type/k_type.c +0 -8
@@ 201,14 201,6 @@ led_config_t g_led_config = {
    }
};

void keyboard_pre_init_kb(void) {
    // Turn on LED controller
    setPinOutput(B16);
    writePinHigh(B16);

    keyboard_pre_init_user();
}

void matrix_init_kb(void) {
    // put your keyboard start-up code here
    // runs once when the firmware starts up

M keyboards/input_club/whitefox/config.h => keyboards/input_club/whitefox/config.h +1 -0
@@ 22,6 22,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

/* LED matrix driver */
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_SDB_PIN B16

/* i2c (for LED matrix) */
#define I2C1_CLOCK_SPEED 400000

M keyboards/input_club/whitefox/whitefox.c => keyboards/input_club/whitefox/whitefox.c +0 -9
@@ 65,15 65,6 @@ led_config_t g_led_config = {
};
#endif

void keyboard_pre_init_kb(void) {
#ifdef LED_MATRIX_ENABLE
    // Turn on LED controller
    setPinOutput(B16);
    writePinHigh(B16);
#endif
    keyboard_pre_init_user();
}

void matrix_init_kb(void) {
    // put your keyboard start-up code here
    // runs once when the firmware starts up

M keyboards/melgeek/mach80/config.h => keyboards/melgeek/mach80/config.h +1 -0
@@ 17,3 17,4 @@
#pragma once

#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
#define IS31FL3741_SDB_PIN B7

M keyboards/melgeek/mach80/rev1/rev1.c => keyboards/melgeek/mach80/rev1/rev1.c +0 -7
@@ 183,11 183,4 @@ void matrix_init_kb(void) {

    matrix_init_user();
}


void keyboard_pre_init_kb(void) {
    setPinOutput(B7);
    writePinHigh(B7);
    keyboard_pre_init_user();
}
#endif

M keyboards/melgeek/mach80/rev2/rev2.c => keyboards/melgeek/mach80/rev2/rev2.c +0 -7
@@ 181,11 181,4 @@ void matrix_init_kb(void) {

    matrix_init_user();
}


void keyboard_pre_init_kb(void) {
    setPinOutput(B7);
    writePinHigh(B7);
    keyboard_pre_init_user();
}
#endif

M keyboards/melgeek/mj61/config.h => keyboards/melgeek/mj61/config.h +1 -0
@@ 17,3 17,4 @@
#pragma once

#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
#define IS31FL3741_SDB_PIN A2

M keyboards/melgeek/mj61/rev1/rev1.c => keyboards/melgeek/mj61/rev1/rev1.c +0 -6
@@ 116,9 116,3 @@ void suspend_wakeup_init_kb(void) {
    suspend_wakeup_init_user();
}
#endif

void keyboard_pre_init_kb(void) {
    setPinOutput(A2);
    writePinHigh(A2);
    keyboard_pre_init_user();
}

M keyboards/melgeek/mj61/rev2/rev2.c => keyboards/melgeek/mj61/rev2/rev2.c +0 -6
@@ 126,9 126,3 @@ void suspend_wakeup_init_kb(void) {
    suspend_wakeup_init_user();
}
#endif

void keyboard_pre_init_kb(void) {
    setPinOutput(A2);
    writePinHigh(A2);
    keyboard_pre_init_user();
}

M keyboards/melgeek/mj63/config.h => keyboards/melgeek/mj63/config.h +1 -0
@@ 17,3 17,4 @@
#pragma once

#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
#define IS31FL3741_SDB_PIN A2

M keyboards/melgeek/mj63/rev1/rev1.c => keyboards/melgeek/mj63/rev1/rev1.c +0 -8
@@ 119,12 119,4 @@ void suspend_wakeup_init_kb(void) {
    rgb_matrix_set_suspend_state(false);
    suspend_wakeup_init_user();
}

void keyboard_pre_init_kb(void) {
    setPinOutput(A2);
    writePinHigh(A2);
    keyboard_pre_init_user();
}

#endif


M keyboards/melgeek/mj63/rev2/rev2.c => keyboards/melgeek/mj63/rev2/rev2.c +0 -6
@@ 126,9 126,3 @@ void suspend_wakeup_init_kb(void) {
    suspend_wakeup_init_user();
}
#endif

void keyboard_pre_init_kb(void) {
    setPinOutput(A2);
    writePinHigh(A2);
    keyboard_pre_init_user();
}

M keyboards/melgeek/mj64/config.h => keyboards/melgeek/mj64/config.h +1 -0
@@ 17,3 17,4 @@
#pragma once

#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
#define IS31FL3741_SDB_PIN A2

M keyboards/melgeek/mj64/rev1/rev1.c => keyboards/melgeek/mj64/rev1/rev1.c +0 -7
@@ 116,11 116,4 @@ void suspend_wakeup_init_kb(void) {
    rgb_matrix_set_suspend_state(false);
    suspend_wakeup_init_user();
}

void keyboard_pre_init_kb(void) {
    setPinOutput(A2);
    writePinHigh(A2);
    keyboard_pre_init_user();
}

#endif

M keyboards/melgeek/mj64/rev2/rev2.c => keyboards/melgeek/mj64/rev2/rev2.c +0 -8
@@ 119,12 119,4 @@ void suspend_wakeup_init_kb(void) {
    rgb_matrix_set_suspend_state(false);
    suspend_wakeup_init_user();
}

void keyboard_pre_init_kb(void) {
    setPinOutput(A2);
    writePinHigh(A2);
    keyboard_pre_init_user();
}

#endif


M keyboards/melgeek/mj64/rev3/rev3.c => keyboards/melgeek/mj64/rev3/rev3.c +0 -6
@@ 126,9 126,3 @@ void suspend_wakeup_init_kb(void) {
    suspend_wakeup_init_user();
}
#endif

void keyboard_pre_init_kb(void) {
    setPinOutput(A2);
    writePinHigh(A2);
    keyboard_pre_init_user();
}

M keyboards/melgeek/mj65/config.h => keyboards/melgeek/mj65/config.h +1 -0
@@ 17,3 17,4 @@
#pragma once

#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
#define IS31FL3741_SDB_PIN A2

M keyboards/melgeek/mj65/rev3/rev3.c => keyboards/melgeek/mj65/rev3/rev3.c +0 -6
@@ 131,9 131,3 @@ void suspend_wakeup_init_kb(void) {
}

#endif 

void keyboard_pre_init_kb(void) {
    setPinOutput(A2);
    writePinHigh(A2);
    keyboard_pre_init_user();
}

M keyboards/melgeek/mojo68/config.h => keyboards/melgeek/mojo68/config.h +1 -0
@@ 17,3 17,4 @@
#pragma once

#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
#define IS31FL3741_SDB_PIN B7

M keyboards/melgeek/mojo68/rev1/rev1.c => keyboards/melgeek/mojo68/rev1/rev1.c +0 -7
@@ 151,11 151,4 @@ void matrix_init_kb(void) {

    matrix_init_user();
}


void keyboard_pre_init_kb(void) {
    setPinOutput(B7);
    writePinHigh(B7);
    keyboard_pre_init_user();
}
#endif

M keyboards/melgeek/mojo75/config.h => keyboards/melgeek/mojo75/config.h +1 -0
@@ 17,3 17,4 @@
#pragma once

#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
#define IS31FL3741_SDB_PIN A2

M keyboards/melgeek/mojo75/rev1/rev1.c => keyboards/melgeek/mojo75/rev1/rev1.c +0 -8
@@ 149,12 149,4 @@ void suspend_wakeup_init_kb(void) {
    rgb_matrix_set_suspend_state(false);
    suspend_wakeup_init_user();
}

void keyboard_pre_init_kb(void) {
    setPinOutput(A2);
    writePinHigh(A2);
    keyboard_pre_init_user();
}

#endif


M keyboards/melgeek/tegic/config.h => keyboards/melgeek/tegic/config.h +1 -0
@@ 17,3 17,4 @@
#pragma once

#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND
#define IS31FL3741_SDB_PIN B7

M keyboards/melgeek/tegic/rev1/rev1.c => keyboards/melgeek/tegic/rev1/rev1.c +0 -10
@@ 142,14 142,4 @@ led_config_t g_led_config = {
		   4,         4,         4,        4,        4,        4,        4,         4,         4,         4,         4,         4,      
	}
};




#endif

void keyboard_pre_init_kb(void) {
    setPinOutput(B7);
    writePinHigh(B7);
    keyboard_pre_init_user();
}

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

#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_SDB_PIN D2
#define IS31FL3731_IRQ_PIN D3

#define RGB_MATRIX_DISABLE_KEYCODES


M keyboards/opendeck/32/rev1/rev1.c => keyboards/opendeck/32/rev1/rev1.c +1 -5
@@ 93,13 93,9 @@ void keyboard_pre_init_kb(void) {
    setPinOutput(POWER_LED_PIN);
    writePinLow(POWER_LED_PIN);

    // Enable RGB driver IC
    setPinOutput(RGB_DISABLE_N_PIN);
    writePinHigh(RGB_DISABLE_N_PIN);

    // We don't use this feature of the IS31FL3731 but it is electrically connected
    // Make sure not to drive it
    setPinInput(RGB_IRQ_N_PIN);
    setPinInput(IS31FL3731_IRQ_PIN);

    keyboard_pre_init_user();
}

M keyboards/opendeck/32/rev1/rev1.h => keyboards/opendeck/32/rev1/rev1.h +0 -2
@@ 19,8 19,6 @@
#include "quantum.h"

#define POWER_LED_PIN F1
#define RGB_DISABLE_N_PIN D2
#define RGB_IRQ_N_PIN D3

// If you want something similar to what Taran from LMG does in https://github.com/TaranVH/2nd-keyboard
// you can create a "wrapper key" by uncommenting the row below and chosing your wrapper keycode.

M keyboards/skyloong/gk61/pro/config.h => keyboards/skyloong/gk61/pro/config.h +1 -1
@@ 4,9 4,9 @@
#pragma once

#define IS31FL3743A_I2C_ADDRESS_1 IS31FL3743A_I2C_ADDRESS_GND_GND
#define IS31FL3743A_SDB_PIN C1

#define CAPS_LOCK_INDEX 28
#define WIN_MOD_INDEX 16
#define MAC_MOD_INDEX 17
#define WIN_LOCK_INDEX 54
#define SDB C1 //RGB matrix Power control PIN

M keyboards/skyloong/gk61/pro/pro.c => keyboards/skyloong/gk61/pro/pro.c +2 -6
@@ 213,14 213,14 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {

void suspend_power_down_kb() {
#    ifdef RGB_MATRIX_ENABLE
    writePinLow(SDB);
    writePinLow(IS31FL3743A_SDB_PIN);
#    endif
     suspend_power_down_user();
}

void suspend_wakeup_init_kb() {
#    ifdef RGB_MATRIX_ENABLE
    writePinHigh(SDB);
    writePinHigh(IS31FL3743A_SDB_PIN);
#    endif
     suspend_wakeup_init_user();
}


@@ 228,8 228,4 @@ void suspend_wakeup_init_kb() {
void board_init(void) {
    // JTAG-DP Disabled and SW-DP Disabled
    AFIO->MAPR = (AFIO->MAPR & ~AFIO_MAPR_SWJ_CFG_Msk) | AFIO_MAPR_SWJ_CFG_DISABLE;
#    ifdef RGB_MATRIX_ENABLE
    setPinOutput(SDB);
    writePinHigh(SDB);
#   endif
}

M keyboards/skyloong/gk61/pro_48/config.h => keyboards/skyloong/gk61/pro_48/config.h +1 -1
@@ 4,10 4,10 @@
#pragma once

#define IS31FL3743A_I2C_ADDRESS_1 IS31FL3743A_I2C_ADDRESS_GND_GND
#define IS31FL3743A_SDB_PIN A4

#define CAPS_LOCK_INDEX 28
#define WIN_MOD_INDEX 16
#define MAC_MOD_INDEX 17
#define SDB A4

#define g_suspend_state rgb_matrix_get_suspend_state()

M keyboards/skyloong/gk61/pro_48/pro_48.c => keyboards/skyloong/gk61/pro_48/pro_48.c +2 -6
@@ 149,12 149,12 @@ bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {


void suspend_power_down_kb(void) {
    writePinLow(SDB);
    writePinLow(IS31FL3743A_SDB_PIN);
    suspend_power_down_user();
}

void suspend_wakeup_init_kb(void) {
    writePinHigh(SDB);
    writePinHigh(IS31FL3743A_SDB_PIN);
    suspend_wakeup_init_user();
}
#endif


@@ 220,8 220,4 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
void board_init(void) {
    // JTAG-DP Disabled and SW-DP Disabled
    AFIO->MAPR = (AFIO->MAPR & ~AFIO_MAPR_SWJ_CFG_Msk) | AFIO_MAPR_SWJ_CFG_DISABLE;
#    ifdef RGB_MATRIX_ENABLE
    setPinOutput(SDB);
    writePinHigh(SDB);
#   endif
}

M keyboards/skyloong/gk61/v1/config.h => keyboards/skyloong/gk61/v1/config.h +1 -2
@@ 16,5 16,4 @@
#pragma once

#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND

#define SDB C1
#define SNLED27351_SDB_PIN C1

M keyboards/skyloong/gk61/v1/v1.c => keyboards/skyloong/gk61/v1/v1.c +3 -8
@@ 102,18 102,13 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
#endif // RGB_MATRIX_ENABLE

void suspend_power_down_kb() {
    writePinLow(SDB);
    writePinLow(SNLED27351_SDB_PIN);

    suspend_power_down_user();
}

void suspend_wakeup_init_kb() {
    writePinHigh(SDB);
    
    suspend_wakeup_init_user();
}
    writePinHigh(SNLED27351_SDB_PIN);

void board_init(void) {
    setPinOutput(SDB);
    writePinHigh(SDB);
    suspend_wakeup_init_user();
}

M keyboards/teleport/native/config.h => keyboards/teleport/native/config.h +1 -0
@@ 26,6 26,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND
#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_VCC
#define IS31FL3733_SDB_PIN B9

#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CUSTOM_SINGLE_COLOR_RAINDROPS


M keyboards/teleport/native/native.c => keyboards/teleport/native/native.c +0 -8
@@ 16,14 16,6 @@

#include "quantum.h"

/* This board has !SDB of the is31 wired to D2. Set high to enable */
void keyboard_post_init_kb(void) {
    setPinOutput(B9);
    writePinHigh(B9);
    
    keyboard_post_init_user();
}

#ifdef RGB_MATRIX_ENABLE
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
    /* Refer to IS31 manual for these locations

Do not follow this link