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) --- drivers/led/snled27351-simple.h | 376 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 376 insertions(+) create mode 100644 drivers/led/snled27351-simple.h (limited to 'drivers/led/snled27351-simple.h') diff --git a/drivers/led/snled27351-simple.h b/drivers/led/snled27351-simple.h new file mode 100644 index 0000000000..ff71b44b91 --- /dev/null +++ b/drivers/led/snled27351-simple.h @@ -0,0 +1,376 @@ +/* Copyright 2021 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include +#include "progmem.h" + +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef DRIVER_COUNT +# define SNLED27351_DRIVER_COUNT DRIVER_COUNT +#endif +#ifdef CKLED2001_TIMEOUT +# define SNLED27351_I2C_TIMEOUT CKLED2001_TIMEOUT +#endif +#ifdef CKLED2001_PERSISTENCE +# define SNLED27351_I2C_PERSISTENCE CKLED2001_PERSISTENCE +#endif +#ifdef PHASE_CHANNEL +# define SNLED27351_PHASE_CHANNEL PHASE_CHANNEL +#endif +#ifdef CKLED2001_CURRENT_TUNE +# define SNLED27351_CURRENT_TUNE CKLED2001_CURRENT_TUNE +#endif + +#define MSKPHASE_12CHANNEL SNLED27351_MSKPHASE_12CHANNEL +#define MSKPHASE_11CHANNEL SNLED27351_MSKPHASE_11CHANNEL +#define MSKPHASE_10CHANNEL SNLED27351_MSKPHASE_10CHANNEL +#define MSKPHASE_9CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define MSKPHASE_8CHANNEL SNLED27351_MSKPHASE_8CHANNEL +#define MSKPHASE_7CHANNEL SNLED27351_MSKPHASE_7CHANNEL +#define MSKPHASE_6CHANNEL SNLED27351_MSKPHASE_6CHANNEL +#define MSKPHASE_5CHANNEL SNLED27351_MSKPHASE_5CHANNEL +#define MSKPHASE_4CHANNEL SNLED27351_MSKPHASE_4CHANNEL +#define MSKPHASE_3CHANNEL SNLED27351_MSKPHASE_3CHANNEL +#define MSKPHASE_2CHANNEL SNLED27351_MSKPHASE_2CHANNEL +#define MSKPHASE_1CHANNEL SNLED27351_MSKPHASE_1CHANNEL + +#define ckled2001_led snled27351_led_t +#define g_ckled2001_leds g_snled27351_leds +// ======== + +#define SNLED27351_I2C_ADDRESS_GND 0x74 +#define SNLED27351_I2C_ADDRESS_SCL 0x75 +#define SNLED27351_I2C_ADDRESS_SDA 0x76 +#define SNLED27351_I2C_ADDRESS_VDDIO 0x77 + +typedef struct snled27351_led_t { + uint8_t driver : 2; + uint8_t v; +} __attribute__((packed)) snled27351_led_t; + +extern const snled27351_led_t PROGMEM g_snled27351_leds[LED_MATRIX_LED_COUNT]; + +void snled27351_init(uint8_t addr); +bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data); +bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); + +void snled27351_set_value(int index, uint8_t value); +void snled27351_set_value_all(uint8_t value); + +void snled27351_set_led_control_register(uint8_t index, bool value); + +// This should not be called from an interrupt +// (eg. from a timer interrupt). +// Call this while idle (in between matrix scans). +// If the buffer is dirty, it will update the driver with the buffer. +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_sw_return_normal(uint8_t addr); +void snled27351_sw_shutdown(uint8_t addr); + +// Registers Page Define +#define SNLED27351_REG_CONFIGURE_CMD_PAGE 0xFD +#define SNLED27351_LED_CONTROL_PAGE 0x00 +#define SNLED27351_LED_PWM_PAGE 0x01 +#define SNLED27351_FUNCTION_PAGE 0x03 +#define SNLED27351_CURRENT_TUNE_PAGE 0x04 + +// Function Register: address 0x00 +#define SNLED27351_REG_CONFIGURATION 0x00 +#define SNLED27351_MSKSW_SHUT_DOWN_MODE (0x0 << 0) +#define SNLED27351_MSKSW_NORMAL_MODE (0x1 << 0) + +#define SNLED27351_REG_DRIVER_ID 0x11 +#define SNLED27351_DRIVER_ID 0x8A + +#define SNLED27351_REG_PDU 0x13 +#define SNLED27351_MSKSET_CA_CB_CHANNEL 0xAA +#define SNLED27351_MSKCLR_CA_CB_CHANNEL 0x00 + +#define SNLED27351_REG_SCAN_PHASE 0x14 +#define SNLED27351_MSKPHASE_12CHANNEL 0x00 +#define SNLED27351_MSKPHASE_11CHANNEL 0x01 +#define SNLED27351_MSKPHASE_10CHANNEL 0x02 +#define SNLED27351_MSKPHASE_9CHANNEL 0x03 +#define SNLED27351_MSKPHASE_8CHANNEL 0x04 +#define SNLED27351_MSKPHASE_7CHANNEL 0x05 +#define SNLED27351_MSKPHASE_6CHANNEL 0x06 +#define SNLED27351_MSKPHASE_5CHANNEL 0x07 +#define SNLED27351_MSKPHASE_4CHANNEL 0x08 +#define SNLED27351_MSKPHASE_3CHANNEL 0x09 +#define SNLED27351_MSKPHASE_2CHANNEL 0x0A +#define SNLED27351_MSKPHASE_1CHANNEL 0x0B + +#define SNLED27351_REG_SLEW_RATE_CONTROL_MODE1 0x15 +#define SNLED27351_MSKPWM_DELAY_PHASE_ENABLE 0x04 +#define SNLED27351_MSKPWM_DELAY_PHASE_DISABLE 0x00 + +#define SNLED27351_REG_SLEW_RATE_CONTROL_MODE2 0x16 +#define SNLED27351_MSKDRIVING_SINKING_CHANNEL_SLEWRATE_ENABLE 0xC0 +#define SNLED27351_MSKDRIVING_SINKING_CHANNEL_SLEWRATE_DISABLE 0x00 + +#define SNLED27351_REG_OPEN_SHORT_ENABLE 0x17 +#define SNLED27351_MSKOPEN_DETECTION_ENABLE (0x01 << 7) +#define SNLED27351_MSKOPEN_DETECTION_DISABLE (0x00) + +#define SNLED27351_MSKSHORT_DETECTION_ENABLE (0x01 << 6) +#define SNLED27351_MSKSHORT_DETECTION_DISABLE (0x00) + +#define SNLED27351_REG_OPEN_SHORT_DUTY 0x18 +#define SNLED27351_REG_OPEN_SHORT_FLAG 0x19 + +#define SNLED27351_MSKOPEN_DETECTION_INTERRUPT_ENABLE (0x01 << 7) +#define SNLED27351_MSKOPEN_DETECTION_INTERRUPT_DISABLE (0x00) + +#define SNLED27351_MSKSHORT_DETECTION_INTERRUPT_ENABLE (0x01 << 6) +#define SNLED27351_MSKSHORT_DETECTION_INTERRUPT_DISABLE (0x00) + +#define SNLED27351_REG_SOFTWARE_SLEEP 0x1A +#define SNLED27351_MSKSLEEP_ENABLE 0x02 +#define SNLED27351_MSKSLEEP_DISABLE 0x00 + +// LED Control Registers +#define SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR 0x0 +#define SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR 0x17 +#define SNLED27351_LED_CONTROL_ON_OFF_LENGTH ((SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR - SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR 0x18 +#define SNLED27351_LED_CONTROL_OPEN_LAST_ADDR 0x2F +#define SNLED27351_LED_CONTROL_OPEN_LENGTH ((SNLED27351_LED_CONTROL_OPEN_LAST_ADDR - SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR 0x30 +#define SNLED27351_LED_CONTROL_SHORT_LAST_ADDR 0x47 +#define SNLED27351_LED_CONTROL_SHORT_LENGTH ((SNLED27351_LED_CONTROL_SHORT_LAST_ADDR - SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_PAGE_LENGTH 0x48 + +// LED Control Registers +#define SNLED27351_LED_PWM_FIRST_ADDR 0x00 +#define SNLED27351_LED_PWM_LAST_ADDR 0xBF +#define SNLED27351_LED_PWM_LENGTH 0xC0 + +// Current Tune Registers +#define SNLED27351_LED_CURRENT_TUNE_FIRST_ADDR 0x00 +#define SNLED27351_LED_CURRENT_TUNE_LAST_ADDR 0x0B +#define SNLED27351_LED_CURRENT_TUNE_LENGTH 0x0C + +#define A_1 0x00 +#define A_2 0x01 +#define A_3 0x02 +#define A_4 0x03 +#define A_5 0x04 +#define A_6 0x05 +#define A_7 0x06 +#define A_8 0x07 +#define A_9 0x08 +#define A_10 0x09 +#define A_11 0x0A +#define A_12 0x0B +#define A_13 0x0C +#define A_14 0x0D +#define A_15 0x0E +#define A_16 0x0F + +#define B_1 0x10 +#define B_2 0x11 +#define B_3 0x12 +#define B_4 0x13 +#define B_5 0x14 +#define B_6 0x15 +#define B_7 0x16 +#define B_8 0x17 +#define B_9 0x18 +#define B_10 0x19 +#define B_11 0x1A +#define B_12 0x1B +#define B_13 0x1C +#define B_14 0x1D +#define B_15 0x1E +#define B_16 0x1F + +#define C_1 0x20 +#define C_2 0x21 +#define C_3 0x22 +#define C_4 0x23 +#define C_5 0x24 +#define C_6 0x25 +#define C_7 0x26 +#define C_8 0x27 +#define C_9 0x28 +#define C_10 0x29 +#define C_11 0x2A +#define C_12 0x2B +#define C_13 0x2C +#define C_14 0x2D +#define C_15 0x2E +#define C_16 0x2F + +#define D_1 0x30 +#define D_2 0x31 +#define D_3 0x32 +#define D_4 0x33 +#define D_5 0x34 +#define D_6 0x35 +#define D_7 0x36 +#define D_8 0x37 +#define D_9 0x38 +#define D_10 0x39 +#define D_11 0x3A +#define D_12 0x3B +#define D_13 0x3C +#define D_14 0x3D +#define D_15 0x3E +#define D_16 0x3F + +#define E_1 0x40 +#define E_2 0x41 +#define E_3 0x42 +#define E_4 0x43 +#define E_5 0x44 +#define E_6 0x45 +#define E_7 0x46 +#define E_8 0x47 +#define E_9 0x48 +#define E_10 0x49 +#define E_11 0x4A +#define E_12 0x4B +#define E_13 0x4C +#define E_14 0x4D +#define E_15 0x4E +#define E_16 0x4F + +#define F_1 0x50 +#define F_2 0x51 +#define F_3 0x52 +#define F_4 0x53 +#define F_5 0x54 +#define F_6 0x55 +#define F_7 0x56 +#define F_8 0x57 +#define F_9 0x58 +#define F_10 0x59 +#define F_11 0x5A +#define F_12 0x5B +#define F_13 0x5C +#define F_14 0x5D +#define F_15 0x5E +#define F_16 0x5F + +#define G_1 0x60 +#define G_2 0x61 +#define G_3 0x62 +#define G_4 0x63 +#define G_5 0x64 +#define G_6 0x65 +#define G_7 0x66 +#define G_8 0x67 +#define G_9 0x68 +#define G_10 0x69 +#define G_11 0x6A +#define G_12 0x6B +#define G_13 0x6C +#define G_14 0x6D +#define G_15 0x6E +#define G_16 0x6F + +#define H_1 0x70 +#define H_2 0x71 +#define H_3 0x72 +#define H_4 0x73 +#define H_5 0x74 +#define H_6 0x75 +#define H_7 0x76 +#define H_8 0x77 +#define H_9 0x78 +#define H_10 0x79 +#define H_11 0x7A +#define H_12 0x7B +#define H_13 0x7C +#define H_14 0x7D +#define H_15 0x7E +#define H_16 0x7F + +#define I_1 0x80 +#define I_2 0x81 +#define I_3 0x82 +#define I_4 0x83 +#define I_5 0x84 +#define I_6 0x85 +#define I_7 0x86 +#define I_8 0x87 +#define I_9 0x88 +#define I_10 0x89 +#define I_11 0x8A +#define I_12 0x8B +#define I_13 0x8C +#define I_14 0x8D +#define I_15 0x8E +#define I_16 0x8F + +#define J_1 0x90 +#define J_2 0x91 +#define J_3 0x92 +#define J_4 0x93 +#define J_5 0x94 +#define J_6 0x95 +#define J_7 0x96 +#define J_8 0x97 +#define J_9 0x98 +#define J_10 0x99 +#define J_11 0x9A +#define J_12 0x9B +#define J_13 0x9C +#define J_14 0x9D +#define J_15 0x9E +#define J_16 0x9F + +#define K_1 0xA0 +#define K_2 0xA1 +#define K_3 0xA2 +#define K_4 0xA3 +#define K_5 0xA4 +#define K_6 0xA5 +#define K_7 0xA6 +#define K_8 0xA7 +#define K_9 0xA8 +#define K_10 0xA9 +#define K_11 0xAA +#define K_12 0xAB +#define K_13 0xAC +#define K_14 0xAD +#define K_15 0xAE +#define K_16 0xAF + +#define L_1 0xB0 +#define L_2 0xB1 +#define L_3 0xB2 +#define L_4 0xB3 +#define L_5 0xB4 +#define L_6 0xB5 +#define L_7 0xB6 +#define L_8 0xB7 +#define L_9 0xB8 +#define L_10 0xB9 +#define L_11 0xBA +#define L_12 0xBB +#define L_13 0xBC +#define L_14 0xBD +#define L_15 0xBE +#define L_16 0xBF -- 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) --- drivers/led/aw20216s.c | 7 ++ drivers/led/aw20216s.h | 2 + drivers/led/issi/is31fl3731-simple.c | 13 +++ drivers/led/issi/is31fl3731-simple.h | 2 + drivers/led/issi/is31fl3731.c | 13 +++ drivers/led/issi/is31fl3731.h | 2 + drivers/led/issi/is31fl3733-simple.c | 13 +++ drivers/led/issi/is31fl3733-simple.h | 2 + drivers/led/issi/is31fl3733.c | 13 +++ drivers/led/issi/is31fl3733.h | 2 + drivers/led/issi/is31fl3736-simple.c | 13 +++ drivers/led/issi/is31fl3736-simple.h | 2 + drivers/led/issi/is31fl3736.c | 13 +++ drivers/led/issi/is31fl3736.h | 2 + drivers/led/issi/is31fl3737-simple.c | 13 +++ drivers/led/issi/is31fl3737-simple.h | 2 + drivers/led/issi/is31fl3737.c | 13 +++ drivers/led/issi/is31fl3737.h | 2 + drivers/led/issi/is31fl3741-simple.c | 13 +++ drivers/led/issi/is31fl3741-simple.h | 2 + drivers/led/issi/is31fl3741.c | 13 +++ drivers/led/issi/is31fl3741.h | 2 + drivers/led/issi/is31flcommon.c | 13 +++ drivers/led/issi/is31flcommon.h | 2 + drivers/led/snled27351-simple.c | 13 +++ drivers/led/snled27351-simple.h | 2 + drivers/led/snled27351.c | 13 +++ drivers/led/snled27351.h | 2 + keyboards/aeboards/satellite/rev1/rev1.c | 23 ++-- keyboards/fallacy/indicators.c | 2 +- keyboards/hs60/v2/ansi/config.h | 3 +- keyboards/hs60/v2/hhkb/config.h | 3 +- keyboards/hs60/v2/iso/config.h | 3 +- keyboards/inland/v83p/config.h | 6 +- keyboards/inland/v83p/info.json | 2 +- keyboards/inland/v83p/v83p.c | 2 +- keyboards/input_club/k_type/is31fl3733-dual.c | 7 ++ keyboards/input_club/k_type/is31fl3733-dual.h | 2 + keyboards/input_club/k_type/k_type-rgbdriver.c | 9 +- keyboards/keebwerk/mega/ansi/config.h | 2 + .../mega/ansi/keymaps/jesusvallejo/keymap.c | 92 ++++++++-------- keyboards/matrix/m20add/rgb_ring.c | 2 +- keyboards/monsgeek/m3/config.h | 6 +- keyboards/monsgeek/m3/info.json | 2 +- keyboards/monsgeek/m3/m3.c | 2 +- keyboards/neson_design/700e/700e.c | 5 +- keyboards/neson_design/n6/n6.c | 5 +- keyboards/novelkeys/nk65/config.h | 2 + keyboards/novelkeys/nk87/config.h | 2 + keyboards/spaceholdings/nebula12/config.h | 1 + keyboards/spaceholdings/nebula68/config.h | 2 + keyboards/tkc/portico/config.h | 2 + keyboards/tkc/portico75/config.h | 1 + keyboards/wilba_tech/rama_works_kara/config.h | 2 + keyboards/wilba_tech/rama_works_koyu/config.h | 2 + keyboards/wilba_tech/rama_works_m10_c/config.h | 1 + keyboards/wilba_tech/rama_works_m50_a/config.h | 2 + keyboards/wilba_tech/rama_works_m60_a/config.h | 2 + keyboards/wilba_tech/rama_works_m65_b/config.h | 2 + keyboards/wilba_tech/rama_works_m65_bx/config.h | 2 + keyboards/wilba_tech/rama_works_u80_a/config.h | 3 + keyboards/wilba_tech/wt60_b/config.h | 2 + keyboards/wilba_tech/wt60_bx/config.h | 2 + keyboards/wilba_tech/wt60_c/config.h | 2 + keyboards/wilba_tech/wt_mono_backlight.c | 2 +- keyboards/wilba_tech/zeal60/config.h | 2 + keyboards/wilba_tech/zeal65/config.h | 2 + keyboards/xelus/dawn60/rev1/config.h | 2 + keyboards/xelus/pachi/rgb/rev1/rev1.c | 6 +- keyboards/xelus/pachi/rgb/rev2/rev2.c | 6 +- quantum/led_matrix/led_matrix_drivers.c | 111 ++----------------- quantum/rgb_matrix/rgb_matrix_drivers.c | 120 ++------------------- 72 files changed, 346 insertions(+), 319 deletions(-) (limited to 'drivers/led/snled27351-simple.h') diff --git a/drivers/led/aw20216s.c b/drivers/led/aw20216s.c index 078a694d30..988cb6e9f6 100644 --- a/drivers/led/aw20216s.c +++ b/drivers/led/aw20216s.c @@ -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 +} diff --git a/drivers/led/aw20216s.h b/drivers/led/aw20216s.h index f8c0efcc6f..8abc2ee4af 100644 --- a/drivers/led/aw20216s.h +++ b/drivers/led/aw20216s.h @@ -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 diff --git a/drivers/led/issi/is31fl3731-simple.c b/drivers/led/issi/is31fl3731-simple.c index f9ad703ced..adf2ccfca0 100644 --- a/drivers/led/issi/is31fl3731-simple.c +++ b/drivers/led/issi/is31fl3731-simple.c @@ -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 +} diff --git a/drivers/led/issi/is31fl3731-simple.h b/drivers/led/issi/is31fl3731-simple.h index 3233fdc0d7..69d38e74da 100644 --- a/drivers/led/issi/is31fl3731-simple.h +++ b/drivers/led/issi/is31fl3731-simple.h @@ -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 diff --git a/drivers/led/issi/is31fl3731.c b/drivers/led/issi/is31fl3731.c index a30e8fcbc2..767c0da0d9 100644 --- a/drivers/led/issi/is31fl3731.c +++ b/drivers/led/issi/is31fl3731.c @@ -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 +} diff --git a/drivers/led/issi/is31fl3731.h b/drivers/led/issi/is31fl3731.h index fff91bfdbf..cab6d40c5a 100644 --- a/drivers/led/issi/is31fl3731.h +++ b/drivers/led/issi/is31fl3731.h @@ -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 diff --git a/drivers/led/issi/is31fl3733-simple.c b/drivers/led/issi/is31fl3733-simple.c index e94b4c7d78..dbbf86a8f5 100644 --- a/drivers/led/issi/is31fl3733-simple.c +++ b/drivers/led/issi/is31fl3733-simple.c @@ -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 +} diff --git a/drivers/led/issi/is31fl3733-simple.h b/drivers/led/issi/is31fl3733-simple.h index 8041a7f0f3..b8a4530260 100644 --- a/drivers/led/issi/is31fl3733-simple.h +++ b/drivers/led/issi/is31fl3733-simple.h @@ -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 diff --git a/drivers/led/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c index efc5929587..35ec96a55a 100644 --- a/drivers/led/issi/is31fl3733.c +++ b/drivers/led/issi/is31fl3733.c @@ -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 +} diff --git a/drivers/led/issi/is31fl3733.h b/drivers/led/issi/is31fl3733.h index e56d04f66f..2a02576979 100644 --- a/drivers/led/issi/is31fl3733.h +++ b/drivers/led/issi/is31fl3733.h @@ -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 diff --git a/drivers/led/issi/is31fl3736-simple.c b/drivers/led/issi/is31fl3736-simple.c index f3f202efb2..d8262c3416 100644 --- a/drivers/led/issi/is31fl3736-simple.c +++ b/drivers/led/issi/is31fl3736-simple.c @@ -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 +} diff --git a/drivers/led/issi/is31fl3736-simple.h b/drivers/led/issi/is31fl3736-simple.h index d5525e460d..4f9dee47b0 100644 --- a/drivers/led/issi/is31fl3736-simple.h +++ b/drivers/led/issi/is31fl3736-simple.h @@ -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 diff --git a/drivers/led/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c index 03f50873df..4edf1b04c8 100644 --- a/drivers/led/issi/is31fl3736.c +++ b/drivers/led/issi/is31fl3736.c @@ -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 +} diff --git a/drivers/led/issi/is31fl3736.h b/drivers/led/issi/is31fl3736.h index 91312384ae..cd3505b0b6 100644 --- a/drivers/led/issi/is31fl3736.h +++ b/drivers/led/issi/is31fl3736.h @@ -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 diff --git a/drivers/led/issi/is31fl3737-simple.c b/drivers/led/issi/is31fl3737-simple.c index 3db7b7ed33..7a4263d9af 100644 --- a/drivers/led/issi/is31fl3737-simple.c +++ b/drivers/led/issi/is31fl3737-simple.c @@ -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 +} diff --git a/drivers/led/issi/is31fl3737-simple.h b/drivers/led/issi/is31fl3737-simple.h index 0f4e0d014b..106127e737 100644 --- a/drivers/led/issi/is31fl3737-simple.h +++ b/drivers/led/issi/is31fl3737-simple.h @@ -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 diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c index c2af75bbb8..d769bb9707 100644 --- a/drivers/led/issi/is31fl3737.c +++ b/drivers/led/issi/is31fl3737.c @@ -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 +} diff --git a/drivers/led/issi/is31fl3737.h b/drivers/led/issi/is31fl3737.h index a2a81640f6..bb4afbcccb 100644 --- a/drivers/led/issi/is31fl3737.h +++ b/drivers/led/issi/is31fl3737.h @@ -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 diff --git a/drivers/led/issi/is31fl3741-simple.c b/drivers/led/issi/is31fl3741-simple.c index 93c02fbc26..c7335866ec 100644 --- a/drivers/led/issi/is31fl3741-simple.c +++ b/drivers/led/issi/is31fl3741-simple.c @@ -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 +} diff --git a/drivers/led/issi/is31fl3741-simple.h b/drivers/led/issi/is31fl3741-simple.h index 46c058c644..29e6dc261d 100644 --- a/drivers/led/issi/is31fl3741-simple.h +++ b/drivers/led/issi/is31fl3741-simple.h @@ -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 diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c index 47c15a11ca..5e4ed711ca 100644 --- a/drivers/led/issi/is31fl3741.c +++ b/drivers/led/issi/is31fl3741.c @@ -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 +} diff --git a/drivers/led/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h index 30fab248bc..aedbe89b93 100644 --- a/drivers/led/issi/is31fl3741.h +++ b/drivers/led/issi/is31fl3741.h @@ -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 diff --git a/drivers/led/issi/is31flcommon.c b/drivers/led/issi/is31flcommon.c index 4b78947ada..850f23c831 100644 --- a/drivers/led/issi/is31flcommon.c +++ b/drivers/led/issi/is31flcommon.c @@ -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) { diff --git a/drivers/led/issi/is31flcommon.h b/drivers/led/issi/is31flcommon.h index 93533e14de..c380f2a8d6 100644 --- a/drivers/led/issi/is31flcommon.h +++ b/drivers/led/issi/is31flcommon.h @@ -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); diff --git a/drivers/led/snled27351-simple.c b/drivers/led/snled27351-simple.c index 499769555c..882fe4e8b4 100644 --- a/drivers/led/snled27351-simple.c +++ b/drivers/led/snled27351-simple.c @@ -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); diff --git a/drivers/led/snled27351-simple.h b/drivers/led/snled27351-simple.h index ff71b44b91..999b70f891 100644 --- a/drivers/led/snled27351-simple.h +++ b/drivers/led/snled27351-simple.h @@ -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); diff --git a/drivers/led/snled27351.c b/drivers/led/snled27351.c index 1ca691b30f..198b190dac 100644 --- a/drivers/led/snled27351.c +++ b/drivers/led/snled27351.c @@ -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); diff --git a/drivers/led/snled27351.h b/drivers/led/snled27351.h index 67047c8921..59d56855f3 100644 --- a/drivers/led/snled27351.h +++ b/drivers/led/snled27351.h @@ -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); diff --git a/keyboards/aeboards/satellite/rev1/rev1.c b/keyboards/aeboards/satellite/rev1/rev1.c index 8e4b5f4166..4c6e7d6d7c 100644 --- a/keyboards/aeboards/satellite/rev1/rev1.c +++ b/keyboards/aeboards/satellite/rev1/rev1.c @@ -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 diff --git a/keyboards/fallacy/indicators.c b/keyboards/fallacy/indicators.c index ae4f796ecc..a8630d2e11 100755 --- a/keyboards/fallacy/indicators.c +++ b/keyboards/fallacy/indicators.c @@ -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(); } diff --git a/keyboards/hs60/v2/ansi/config.h b/keyboards/hs60/v2/ansi/config.h index 8b31f0e066..3600b30feb 100644 --- a/keyboards/hs60/v2/ansi/config.h +++ b/keyboards/hs60/v2/ansi/config.h @@ -53,7 +53,8 @@ along with this program. If not, see . #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 diff --git a/keyboards/hs60/v2/hhkb/config.h b/keyboards/hs60/v2/hhkb/config.h index 7494b2e66c..bdc27435cf 100644 --- a/keyboards/hs60/v2/hhkb/config.h +++ b/keyboards/hs60/v2/hhkb/config.h @@ -53,7 +53,8 @@ along with this program. If not, see . #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 diff --git a/keyboards/hs60/v2/iso/config.h b/keyboards/hs60/v2/iso/config.h index 22608404b5..9a9a4ed623 100644 --- a/keyboards/hs60/v2/iso/config.h +++ b/keyboards/hs60/v2/iso/config.h @@ -50,7 +50,8 @@ along with this program. If not, see . #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 diff --git a/keyboards/inland/v83p/config.h b/keyboards/inland/v83p/config.h index c433b568dd..1cd93e2033 100644 --- a/keyboards/inland/v83p/config.h +++ b/keyboards/inland/v83p/config.h @@ -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 diff --git a/keyboards/inland/v83p/info.json b/keyboards/inland/v83p/info.json index d7a418bccf..f738af3ef7 100644 --- a/keyboards/inland/v83p/info.json +++ b/keyboards/inland/v83p/info.json @@ -33,7 +33,7 @@ ] }, "rgb_matrix": { - "driver": "ckled2001", + "driver": "snled27351", "max_brightness": 180, "animations": { "solid_color": true, diff --git a/keyboards/inland/v83p/v83p.c b/keyboards/inland/v83p/v83p.c index 26ab62784a..3cb9c06cb0 100644 --- a/keyboards/inland/v83p/v83p.c +++ b/keyboards/inland/v83p/v83p.c @@ -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 diff --git a/keyboards/input_club/k_type/is31fl3733-dual.c b/keyboards/input_club/k_type/is31fl3733-dual.c index ea523eea1f..54e9d76960 100644 --- a/keyboards/input_club/k_type/is31fl3733-dual.c +++ b/keyboards/input_club/k_type/is31fl3733-dual.c @@ -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 +} diff --git a/keyboards/input_club/k_type/is31fl3733-dual.h b/keyboards/input_club/k_type/is31fl3733-dual.h index 7a43bc49f4..33943af320 100644 --- a/keyboards/input_club/k_type/is31fl3733-dual.h +++ b/keyboards/input_club/k_type/is31fl3733-dual.h @@ -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 diff --git a/keyboards/input_club/k_type/k_type-rgbdriver.c b/keyboards/input_club/k_type/k_type-rgbdriver.c index be16179ce2..1e8132e6dc 100644 --- a/keyboards/input_club/k_type/k_type-rgbdriver.c +++ b/keyboards/input_club/k_type/k_type-rgbdriver.c @@ -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, }; diff --git a/keyboards/keebwerk/mega/ansi/config.h b/keyboards/keebwerk/mega/ansi/config.h index a9734683f4..ee98c95636 100755 --- a/keyboards/keebwerk/mega/ansi/config.h +++ b/keyboards/keebwerk/mega/ansi/config.h @@ -50,6 +50,8 @@ along with this program. If not, see . #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 diff --git a/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c b/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c index 2b5d658f02..307eac90e1 100644 --- a/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c +++ b/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c @@ -14,7 +14,7 @@ * along with this program. If not, see . */ #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) fadeTime && R fadeTime && r 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; } } diff --git a/keyboards/matrix/m20add/rgb_ring.c b/keyboards/matrix/m20add/rgb_ring.c index c56ee931ee..553a3d5360 100644 --- a/keyboards/matrix/m20add/rgb_ring.c +++ b/keyboards/matrix/m20add/rgb_ring.c @@ -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) diff --git a/keyboards/monsgeek/m3/config.h b/keyboards/monsgeek/m3/config.h index 85eb5b8e99..93ffa1f07c 100644 --- a/keyboards/monsgeek/m3/config.h +++ b/keyboards/monsgeek/m3/config.h @@ -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 */ diff --git a/keyboards/monsgeek/m3/info.json b/keyboards/monsgeek/m3/info.json index db646103f1..a93b0d47dc 100644 --- a/keyboards/monsgeek/m3/info.json +++ b/keyboards/monsgeek/m3/info.json @@ -31,7 +31,7 @@ "caps_lock": "A15" }, "rgb_matrix": { - "driver": "ckled2001", + "driver": "snled27351", "max_brightness": 160, "animations": { "breathing": true, diff --git a/keyboards/monsgeek/m3/m3.c b/keyboards/monsgeek/m3/m3.c index 95bfb34789..b7e197e6ac 100644 --- a/keyboards/monsgeek/m3/m3.c +++ b/keyboards/monsgeek/m3/m3.c @@ -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 diff --git a/keyboards/neson_design/700e/700e.c b/keyboards/neson_design/700e/700e.c index 395ae4759a..d4aa336edb 100644 --- a/keyboards/neson_design/700e/700e.c +++ b/keyboards/neson_design/700e/700e.c @@ -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(); } diff --git a/keyboards/neson_design/n6/n6.c b/keyboards/neson_design/n6/n6.c index e6531bc2c4..5f3ae3a169 100644 --- a/keyboards/neson_design/n6/n6.c +++ b/keyboards/neson_design/n6/n6.c @@ -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(); } diff --git a/keyboards/novelkeys/nk65/config.h b/keyboards/novelkeys/nk65/config.h index 80327af491..4dc1ab9165 100755 --- a/keyboards/novelkeys/nk65/config.h +++ b/keyboards/novelkeys/nk65/config.h @@ -50,6 +50,8 @@ along with this program. If not, see . #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 diff --git a/keyboards/novelkeys/nk87/config.h b/keyboards/novelkeys/nk87/config.h index d2949ef6d3..3b3e9309c1 100755 --- a/keyboards/novelkeys/nk87/config.h +++ b/keyboards/novelkeys/nk87/config.h @@ -50,6 +50,8 @@ along with this program. If not, see . #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 diff --git a/keyboards/spaceholdings/nebula12/config.h b/keyboards/spaceholdings/nebula12/config.h index d6e8f0e196..5e4b48927f 100755 --- a/keyboards/spaceholdings/nebula12/config.h +++ b/keyboards/spaceholdings/nebula12/config.h @@ -73,6 +73,7 @@ along with this program. If not, see . #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 diff --git a/keyboards/spaceholdings/nebula68/config.h b/keyboards/spaceholdings/nebula68/config.h index f6df627592..0283a4a036 100755 --- a/keyboards/spaceholdings/nebula68/config.h +++ b/keyboards/spaceholdings/nebula68/config.h @@ -56,6 +56,8 @@ along with this program. If not, see . #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 diff --git a/keyboards/tkc/portico/config.h b/keyboards/tkc/portico/config.h index 9a8e19171f..5599f2a36b 100644 --- a/keyboards/tkc/portico/config.h +++ b/keyboards/tkc/portico/config.h @@ -48,6 +48,8 @@ along with this program. If not, see . #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 diff --git a/keyboards/tkc/portico75/config.h b/keyboards/tkc/portico75/config.h index d5b401704b..756dfbb54a 100644 --- a/keyboards/tkc/portico75/config.h +++ b/keyboards/tkc/portico75/config.h @@ -79,6 +79,7 @@ along with this program. If not, see . # 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 diff --git a/keyboards/wilba_tech/rama_works_kara/config.h b/keyboards/wilba_tech/rama_works_kara/config.h index b3fa3808ec..5d8c9df820 100644 --- a/keyboards/wilba_tech/rama_works_kara/config.h +++ b/keyboards/wilba_tech/rama_works_kara/config.h @@ -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 diff --git a/keyboards/wilba_tech/rama_works_koyu/config.h b/keyboards/wilba_tech/rama_works_koyu/config.h index 85bbf28051..aad4cd12ac 100644 --- a/keyboards/wilba_tech/rama_works_koyu/config.h +++ b/keyboards/wilba_tech/rama_works_koyu/config.h @@ -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 diff --git a/keyboards/wilba_tech/rama_works_m10_c/config.h b/keyboards/wilba_tech/rama_works_m10_c/config.h index b3cb0ef7a8..529896f6ed 100644 --- a/keyboards/wilba_tech/rama_works_m10_c/config.h +++ b/keyboards/wilba_tech/rama_works_m10_c/config.h @@ -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 diff --git a/keyboards/wilba_tech/rama_works_m50_a/config.h b/keyboards/wilba_tech/rama_works_m50_a/config.h index 16439309be..599550b91f 100644 --- a/keyboards/wilba_tech/rama_works_m50_a/config.h +++ b/keyboards/wilba_tech/rama_works_m50_a/config.h @@ -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 diff --git a/keyboards/wilba_tech/rama_works_m60_a/config.h b/keyboards/wilba_tech/rama_works_m60_a/config.h index 7cec5dcc21..bc7d7e6128 100644 --- a/keyboards/wilba_tech/rama_works_m60_a/config.h +++ b/keyboards/wilba_tech/rama_works_m60_a/config.h @@ -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 diff --git a/keyboards/wilba_tech/rama_works_m65_b/config.h b/keyboards/wilba_tech/rama_works_m65_b/config.h index 88f8341aa6..b3e381d77d 100644 --- a/keyboards/wilba_tech/rama_works_m65_b/config.h +++ b/keyboards/wilba_tech/rama_works_m65_b/config.h @@ -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 diff --git a/keyboards/wilba_tech/rama_works_m65_bx/config.h b/keyboards/wilba_tech/rama_works_m65_bx/config.h index be3af2f668..8070e917d7 100644 --- a/keyboards/wilba_tech/rama_works_m65_bx/config.h +++ b/keyboards/wilba_tech/rama_works_m65_bx/config.h @@ -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 diff --git a/keyboards/wilba_tech/rama_works_u80_a/config.h b/keyboards/wilba_tech/rama_works_u80_a/config.h index 0d8e1e12b5..4ab2d53c3c 100644 --- a/keyboards/wilba_tech/rama_works_u80_a/config.h +++ b/keyboards/wilba_tech/rama_works_u80_a/config.h @@ -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 diff --git a/keyboards/wilba_tech/wt60_b/config.h b/keyboards/wilba_tech/wt60_b/config.h index c5818173ca..c5fb1b32c7 100644 --- a/keyboards/wilba_tech/wt60_b/config.h +++ b/keyboards/wilba_tech/wt60_b/config.h @@ -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 diff --git a/keyboards/wilba_tech/wt60_bx/config.h b/keyboards/wilba_tech/wt60_bx/config.h index 37ffe646bc..f87d9ff48e 100644 --- a/keyboards/wilba_tech/wt60_bx/config.h +++ b/keyboards/wilba_tech/wt60_bx/config.h @@ -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 diff --git a/keyboards/wilba_tech/wt60_c/config.h b/keyboards/wilba_tech/wt60_c/config.h index 80f894e451..4a1b8b6ad2 100644 --- a/keyboards/wilba_tech/wt60_c/config.h +++ b/keyboards/wilba_tech/wt60_c/config.h @@ -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 diff --git a/keyboards/wilba_tech/wt_mono_backlight.c b/keyboards/wilba_tech/wt_mono_backlight.c index acb2c3aec7..4add18b14e 100644 --- a/keyboards/wilba_tech/wt_mono_backlight.c +++ b/keyboards/wilba_tech/wt_mono_backlight.c @@ -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) diff --git a/keyboards/wilba_tech/zeal60/config.h b/keyboards/wilba_tech/zeal60/config.h index 31ee2942ce..3233c6187d 100644 --- a/keyboards/wilba_tech/zeal60/config.h +++ b/keyboards/wilba_tech/zeal60/config.h @@ -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 diff --git a/keyboards/wilba_tech/zeal65/config.h b/keyboards/wilba_tech/zeal65/config.h index 7370931df1..1046ee8108 100644 --- a/keyboards/wilba_tech/zeal65/config.h +++ b/keyboards/wilba_tech/zeal65/config.h @@ -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 diff --git a/keyboards/xelus/dawn60/rev1/config.h b/keyboards/xelus/dawn60/rev1/config.h index b895890388..c7945df3d6 100644 --- a/keyboards/xelus/dawn60/rev1/config.h +++ b/keyboards/xelus/dawn60/rev1/config.h @@ -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 diff --git a/keyboards/xelus/pachi/rgb/rev1/rev1.c b/keyboards/xelus/pachi/rgb/rev1/rev1.c index b54b2a0a1d..1a3d9b2f4d 100644 --- a/keyboards/xelus/pachi/rgb/rev1/rev1.c +++ b/keyboards/xelus/pachi/rgb/rev1/rev1.c @@ -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 }; diff --git a/keyboards/xelus/pachi/rgb/rev2/rev2.c b/keyboards/xelus/pachi/rgb/rev2/rev2.c index 744e7838b1..729b6b0545 100644 --- a/keyboards/xelus/pachi/rgb/rev2/rev2.c +++ b/keyboards/xelus/pachi/rgb/rev2/rev2.c @@ -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 }; 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, }; diff --git a/quantum/rgb_matrix/rgb_matrix_drivers.c b/quantum/rgb_matrix/rgb_matrix_drivers.c index 555e750e50..0fe93ee077 100644 --- a/quantum/rgb_matrix/rgb_matrix_drivers.c +++ b/quantum/rgb_matrix/rgb_matrix_drivers.c @@ -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, }; -- cgit v1.2.3 From 17ccf3521bc9623e29f1f6febd167c3886f37408 Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 30 Oct 2023 08:39:26 +1000 Subject: Add `_LED_COUNT` defines to LED drivers (#22309) --- drivers/led/aw20216s.h | 4 ++++ drivers/led/issi/is31fl3218-simple.h | 4 ++++ drivers/led/issi/is31fl3218.h | 4 ++++ drivers/led/issi/is31fl3731-simple.h | 4 ++++ drivers/led/issi/is31fl3731.h | 4 ++++ drivers/led/issi/is31fl3733-simple.h | 4 ++++ drivers/led/issi/is31fl3733.h | 4 ++++ drivers/led/issi/is31fl3736-simple.h | 4 ++++ drivers/led/issi/is31fl3736.h | 4 ++++ drivers/led/issi/is31fl3737-simple.h | 4 ++++ drivers/led/issi/is31fl3737.h | 4 ++++ drivers/led/issi/is31fl3741-simple.h | 4 ++++ drivers/led/issi/is31fl3741.h | 4 ++++ drivers/led/snled27351-simple.h | 4 ++++ drivers/led/snled27351.h | 4 ++++ 15 files changed, 60 insertions(+) (limited to 'drivers/led/snled27351-simple.h') diff --git a/drivers/led/aw20216s.h b/drivers/led/aw20216s.h index 8abc2ee4af..4060126446 100644 --- a/drivers/led/aw20216s.h +++ b/drivers/led/aw20216s.h @@ -54,6 +54,10 @@ #define g_aw_leds g_aw20216s_leds // ======== +#if defined(RGB_MATRIX_AW20216S) +# define AW20216S_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + typedef struct aw20216s_led_t { uint8_t driver : 2; uint8_t r; diff --git a/drivers/led/issi/is31fl3218-simple.h b/drivers/led/issi/is31fl3218-simple.h index 2260361ec6..34a4886957 100644 --- a/drivers/led/issi/is31fl3218-simple.h +++ b/drivers/led/issi/is31fl3218-simple.h @@ -22,6 +22,10 @@ #define IS31FL3218_I2C_ADDRESS 0x54 +#if defined(LED_MATRIX_IS31FL3218) +# define IS31FL3218_LED_COUNT LED_MATRIX_LED_COUNT +#endif + typedef struct is31fl3218_led_t { uint8_t v; } __attribute__((packed)) is31fl3218_led_t; diff --git a/drivers/led/issi/is31fl3218.h b/drivers/led/issi/is31fl3218.h index a5ac44fd1d..844e11f490 100644 --- a/drivers/led/issi/is31fl3218.h +++ b/drivers/led/issi/is31fl3218.h @@ -22,6 +22,10 @@ #define IS31FL3218_I2C_ADDRESS 0x54 +#if defined(RGB_MATRIX_IS31FL3218) +# define IS31FL3218_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + typedef struct is31fl3218_led_t { uint8_t r; uint8_t g; diff --git a/drivers/led/issi/is31fl3731-simple.h b/drivers/led/issi/is31fl3731-simple.h index 69d38e74da..2ab253717c 100644 --- a/drivers/led/issi/is31fl3731-simple.h +++ b/drivers/led/issi/is31fl3731-simple.h @@ -57,6 +57,10 @@ #define IS31FL3731_I2C_ADDRESS_SDA 0x76 #define IS31FL3731_I2C_ADDRESS_VCC 0x77 +#if defined(LED_MATRIX_IS31FL3731) +# define IS31FL3731_LED_COUNT LED_MATRIX_LED_COUNT +#endif + typedef struct is31fl3731_led_t { uint8_t driver : 2; uint8_t v; diff --git a/drivers/led/issi/is31fl3731.h b/drivers/led/issi/is31fl3731.h index cab6d40c5a..756c5b473a 100644 --- a/drivers/led/issi/is31fl3731.h +++ b/drivers/led/issi/is31fl3731.h @@ -56,6 +56,10 @@ #define IS31FL3731_I2C_ADDRESS_SDA 0x76 #define IS31FL3731_I2C_ADDRESS_VCC 0x77 +#if defined(RGB_MATRIX_IS31FL3731) +# define IS31FL3731_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + typedef struct is31fl3731_led_t { uint8_t driver : 2; uint8_t r; diff --git a/drivers/led/issi/is31fl3733-simple.h b/drivers/led/issi/is31fl3733-simple.h index b8a4530260..e9f68e3506 100644 --- a/drivers/led/issi/is31fl3733-simple.h +++ b/drivers/led/issi/is31fl3733-simple.h @@ -76,6 +76,10 @@ #define IS31FL3733_I2C_ADDRESS_VCC_SDA 0x5E #define IS31FL3733_I2C_ADDRESS_VCC_VCC 0x5F +#if defined(LED_MATRIX_IS31FL3733) +# define IS31FL3733_LED_COUNT LED_MATRIX_LED_COUNT +#endif + typedef struct is31fl3733_led_t { uint8_t driver : 2; uint8_t v; diff --git a/drivers/led/issi/is31fl3733.h b/drivers/led/issi/is31fl3733.h index 2a02576979..bda6f1908f 100644 --- a/drivers/led/issi/is31fl3733.h +++ b/drivers/led/issi/is31fl3733.h @@ -99,6 +99,10 @@ #define IS31FL3733_I2C_ADDRESS_VCC_SDA 0x5E #define IS31FL3733_I2C_ADDRESS_VCC_VCC 0x5F +#if defined(RGB_MATRIX_IS31FL3733) +# define IS31FL3733_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + typedef struct is31fl3733_led_t { uint8_t driver : 2; uint8_t r; diff --git a/drivers/led/issi/is31fl3736-simple.h b/drivers/led/issi/is31fl3736-simple.h index 4f9dee47b0..fe3cec9564 100644 --- a/drivers/led/issi/is31fl3736-simple.h +++ b/drivers/led/issi/is31fl3736-simple.h @@ -71,6 +71,10 @@ #define IS31FL3736_I2C_ADDRESS_VCC_SDA 0x5E #define IS31FL3736_I2C_ADDRESS_VCC_VCC 0x5F +#if defined(LED_MATRIX_IS31FL3736) +# define IS31FL3736_LED_COUNT LED_MATRIX_LED_COUNT +#endif + typedef struct is31fl3736_led_t { uint8_t driver : 2; uint8_t v; diff --git a/drivers/led/issi/is31fl3736.h b/drivers/led/issi/is31fl3736.h index cd3505b0b6..728021ae29 100644 --- a/drivers/led/issi/is31fl3736.h +++ b/drivers/led/issi/is31fl3736.h @@ -83,6 +83,10 @@ #define IS31FL3736_I2C_ADDRESS_VCC_SDA 0x5E #define IS31FL3736_I2C_ADDRESS_VCC_VCC 0x5F +#if defined(RGB_MATRIX_IS31FL3736) +# define IS31FL3736_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + typedef struct is31fl3736_led_t { uint8_t driver : 2; uint8_t r; diff --git a/drivers/led/issi/is31fl3737-simple.h b/drivers/led/issi/is31fl3737-simple.h index 106127e737..b177d4fb0a 100644 --- a/drivers/led/issi/is31fl3737-simple.h +++ b/drivers/led/issi/is31fl3737-simple.h @@ -61,6 +61,10 @@ #define IS31FL3737_I2C_ADDRESS_SDA 0x5A #define IS31FL3737_I2C_ADDRESS_VCC 0x5F +#if defined(LED_MATRIX_IS31FL3737) +# define IS31FL3737_LED_COUNT LED_MATRIX_LED_COUNT +#endif + typedef struct is31fl3737_led_t { uint8_t driver : 2; uint8_t v; diff --git a/drivers/led/issi/is31fl3737.h b/drivers/led/issi/is31fl3737.h index bb4afbcccb..12f84e3bfe 100644 --- a/drivers/led/issi/is31fl3737.h +++ b/drivers/led/issi/is31fl3737.h @@ -76,6 +76,10 @@ #define IS31FL3737_I2C_ADDRESS_SDA 0x5A #define IS31FL3737_I2C_ADDRESS_VCC 0x5F +#if defined(RGB_MATRIX_IS31FL3737) +# define IS31FL3737_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + typedef struct is31fl3737_led_t { uint8_t driver : 2; uint8_t r; diff --git a/drivers/led/issi/is31fl3741-simple.h b/drivers/led/issi/is31fl3741-simple.h index 29e6dc261d..8ecc330298 100644 --- a/drivers/led/issi/is31fl3741-simple.h +++ b/drivers/led/issi/is31fl3741-simple.h @@ -61,6 +61,10 @@ #define IS31FL3741_I2C_ADDRESS_SDA 0x32 #define IS31FL3741_I2C_ADDRESS_VCC 0x33 +#if defined(LED_MATRIX_IS31FL3741) +# define IS31FL3741_LED_COUNT LED_MATRIX_LED_COUNT +#endif + typedef struct is31fl3741_led_t { uint32_t driver : 2; uint32_t v : 10; diff --git a/drivers/led/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h index aedbe89b93..13e132efa0 100644 --- a/drivers/led/issi/is31fl3741.h +++ b/drivers/led/issi/is31fl3741.h @@ -76,6 +76,10 @@ #define IS31FL3741_I2C_ADDRESS_SDA 0x32 #define IS31FL3741_I2C_ADDRESS_VCC 0x33 +#if defined(RGB_MATRIX_IS31FL3741) +# define IS31FL3741_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + typedef struct is31fl3741_led_t { uint32_t driver : 2; uint32_t r : 10; diff --git a/drivers/led/snled27351-simple.h b/drivers/led/snled27351-simple.h index 999b70f891..e8238071a5 100644 --- a/drivers/led/snled27351-simple.h +++ b/drivers/led/snled27351-simple.h @@ -59,6 +59,10 @@ #define SNLED27351_I2C_ADDRESS_SDA 0x76 #define SNLED27351_I2C_ADDRESS_VDDIO 0x77 +#if defined(LED_MATRIX_SNLED27351) +# define SNLED27351_LED_COUNT LED_MATRIX_LED_COUNT +#endif + typedef struct snled27351_led_t { uint8_t driver : 2; uint8_t v; diff --git a/drivers/led/snled27351.h b/drivers/led/snled27351.h index 59d56855f3..e92ca71799 100644 --- a/drivers/led/snled27351.h +++ b/drivers/led/snled27351.h @@ -71,6 +71,10 @@ #define SNLED27351_I2C_ADDRESS_SDA 0x76 #define SNLED27351_I2C_ADDRESS_VDDIO 0x77 +#if defined(RGB_MATRIX_SNLED27351) +# define SNLED27351_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + typedef struct snled27351_led_t { uint8_t driver : 2; uint8_t r; -- 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) --- drivers/led/aw20216s.c | 11 +- drivers/led/aw20216s.h | 3 +- drivers/led/issi/is31fl3218-simple.c | 12 +- drivers/led/issi/is31fl3218-simple.h | 2 +- drivers/led/issi/is31fl3218.c | 12 +- drivers/led/issi/is31fl3218.h | 2 +- drivers/led/issi/is31fl3731-simple.c | 34 ++- drivers/led/issi/is31fl3731-simple.h | 3 +- drivers/led/issi/is31fl3731.c | 34 ++- drivers/led/issi/is31fl3731.h | 3 +- drivers/led/issi/is31fl3733-simple.c | 47 +++- drivers/led/issi/is31fl3733-simple.h | 7 +- drivers/led/issi/is31fl3733.c | 47 +++- drivers/led/issi/is31fl3733.h | 7 +- drivers/led/issi/is31fl3736-simple.c | 34 ++- drivers/led/issi/is31fl3736-simple.h | 3 +- drivers/led/issi/is31fl3736.c | 34 ++- drivers/led/issi/is31fl3736.h | 3 +- drivers/led/issi/is31fl3737-simple.c | 34 ++- drivers/led/issi/is31fl3737-simple.h | 3 +- drivers/led/issi/is31fl3737.c | 34 ++- drivers/led/issi/is31fl3737.h | 3 +- drivers/led/issi/is31fl3741-simple.c | 34 ++- drivers/led/issi/is31fl3741-simple.h | 3 +- drivers/led/issi/is31fl3741.c | 34 ++- drivers/led/issi/is31fl3741.h | 3 +- drivers/led/issi/is31flcommon.c | 70 +++++ drivers/led/issi/is31flcommon.h | 2 + drivers/led/snled27351-simple.c | 32 ++- drivers/led/snled27351-simple.h | 3 +- drivers/led/snled27351.c | 32 ++- drivers/led/snled27351.h | 3 +- keyboards/acheron/apollo/87h/gamma/config.h | 1 - keyboards/aeboards/satellite/rev1/config.h | 4 +- keyboards/aeboards/satellite/rev1/rev1.c | 4 +- keyboards/fallacy/config.h | 2 +- keyboards/fallacy/indicators.c | 11 +- keyboards/hs60/v2/ansi/config.h | 2 +- keyboards/hs60/v2/hhkb/config.h | 2 +- keyboards/hs60/v2/iso/config.h | 2 +- keyboards/input_club/k_type/config.h | 4 +- keyboards/input_club/k_type/i2c_master.h | 1 + keyboards/input_club/k_type/is31fl3733-dual.c | 35 ++- keyboards/input_club/k_type/is31fl3733-dual.h | 7 +- keyboards/input_club/k_type/k_type-rgbdriver.c | 22 +- keyboards/input_club/k_type/k_type.c | 2 +- keyboards/input_club/k_type/post_rules.mk | 4 +- keyboards/keebwerk/mega/ansi/config.h | 2 +- keyboards/kprepublic/bm60hsrgb/rev2/config.h | 4 +- keyboards/kprepublic/bm60hsrgb/rev2/rev2.c | 14 +- keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h | 4 +- keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c | 14 +- keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h | 4 +- keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c | 14 +- keyboards/matrix/m20add/config.h | 2 +- keyboards/matrix/m20add/rgb_ring.c | 10 +- keyboards/neson_design/700e/700e.c | 32 +-- keyboards/neson_design/700e/config.h | 2 +- keyboards/neson_design/n6/config.h | 2 +- keyboards/neson_design/n6/n6.c | 26 +- keyboards/novelkeys/nk65/config.h | 2 +- keyboards/novelkeys/nk87/config.h | 2 +- keyboards/spaceholdings/nebula12/config.h | 2 +- keyboards/spaceholdings/nebula68/config.h | 2 +- keyboards/tkc/portico/config.h | 2 +- keyboards/tkc/portico/portico.c | 2 +- keyboards/tkc/portico75/config.h | 2 +- keyboards/tkc/portico75/portico75.c | 2 +- keyboards/wilba_tech/rama_works_kara/config.h | 2 +- keyboards/wilba_tech/rama_works_koyu/config.h | 2 +- keyboards/wilba_tech/rama_works_m10_c/config.h | 2 +- keyboards/wilba_tech/rama_works_m50_a/config.h | 2 +- keyboards/wilba_tech/rama_works_m60_a/config.h | 2 +- keyboards/wilba_tech/rama_works_m65_b/config.h | 2 +- keyboards/wilba_tech/rama_works_m65_bx/config.h | 2 +- keyboards/wilba_tech/rama_works_m6_b/config.h | 2 +- keyboards/wilba_tech/rama_works_u80_a/config.h | 2 +- keyboards/wilba_tech/wt60_a/config.h | 2 +- keyboards/wilba_tech/wt60_b/config.h | 2 +- keyboards/wilba_tech/wt60_bx/config.h | 2 +- keyboards/wilba_tech/wt60_c/config.h | 2 +- keyboards/wilba_tech/wt65_a/config.h | 2 +- keyboards/wilba_tech/wt65_b/config.h | 2 +- keyboards/wilba_tech/wt75_a/config.h | 2 +- keyboards/wilba_tech/wt75_b/config.h | 2 +- keyboards/wilba_tech/wt75_c/config.h | 2 +- keyboards/wilba_tech/wt80_a/config.h | 2 +- keyboards/wilba_tech/wt_mono_backlight.c | 11 +- keyboards/wilba_tech/wt_rgb_backlight.c | 66 ++--- keyboards/wilba_tech/zeal60/config.h | 2 +- keyboards/wilba_tech/zeal65/config.h | 2 +- keyboards/xelus/dawn60/rev1/config.h | 2 +- keyboards/xelus/dawn60/rev1_qmk/config.h | 4 +- keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c | 34 +-- keyboards/xelus/pachi/rgb/rev1/config.h | 3 +- keyboards/xelus/pachi/rgb/rev1/rev1.c | 4 +- keyboards/xelus/pachi/rgb/rev2/config.h | 3 +- keyboards/xelus/pachi/rgb/rev2/rev2.c | 4 +- quantum/led_matrix/led_matrix_drivers.c | 286 +++----------------- quantum/rgb_matrix/rgb_matrix_drivers.c | 297 +++------------------ 100 files changed, 795 insertions(+), 798 deletions(-) (limited to 'drivers/led/snled27351-simple.h') diff --git a/drivers/led/aw20216s.c b/drivers/led/aw20216s.c index 988cb6e9f6..8f3ebec510 100644 --- a/drivers/led/aw20216s.c +++ b/drivers/led/aw20216s.c @@ -126,6 +126,15 @@ static inline void aw20216s_auto_lowpower(pin_t cs_pin) { aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_REG_MIXFUNCTION, AW20216S_MIXCR_DEFAULT | AW20216S_LPEN); } +void aw20216s_init_drivers(void) { + spi_init(); + + aw20216s_init(AW20216S_CS_PIN_1, AW20216S_EN_PIN_1); +#if defined(AW20216S_CS_PIN_2) + aw20216s_init(AW20216S_CS_PIN_2, AW20216S_EN_PIN_2); +#endif +} + void aw20216s_init(pin_t cs_pin, pin_t en_pin) { setPinOutput(en_pin); writePinHigh(en_pin); @@ -155,7 +164,7 @@ 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) { - for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (uint8_t i = 0; i < AW20216S_LED_COUNT; i++) { aw20216s_set_color(i, red, green, blue); } } diff --git a/drivers/led/aw20216s.h b/drivers/led/aw20216s.h index 4060126446..0d6bd3c189 100644 --- a/drivers/led/aw20216s.h +++ b/drivers/led/aw20216s.h @@ -65,8 +65,9 @@ typedef struct aw20216s_led_t { uint8_t b; } aw20216s_led_t; -extern const aw20216s_led_t PROGMEM g_aw20216s_leds[RGB_MATRIX_LED_COUNT]; +extern const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT]; +void aw20216s_init_drivers(void); void aw20216s_init(pin_t cs_pin, pin_t en_pin); 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); diff --git a/drivers/led/issi/is31fl3218-simple.c b/drivers/led/issi/is31fl3218-simple.c index a78dedfcf1..bdf3187fe1 100644 --- a/drivers/led/issi/is31fl3218-simple.c +++ b/drivers/led/issi/is31fl3218-simple.c @@ -68,6 +68,8 @@ void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) { } void is31fl3218_init(void) { + i2c_init(); + // In case we ever want to reinitialize (?) is31fl3218_write_register(IS31FL3218_REG_RESET, 0x00); @@ -86,11 +88,17 @@ void is31fl3218_init(void) { // Load PWM registers and LED Control register data is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01); + + for (int i = 0; i < IS31FL3218_LED_COUNT; i++) { + is31fl3218_set_led_control_register(i, true); + } + + is31fl3218_update_led_control_registers(); } void is31fl3218_set_value(int index, uint8_t value) { is31fl3218_led_t led; - if (index >= 0 && index < LED_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3218_LED_COUNT) { memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led)); } if (g_pwm_buffer[led.v - IS31FL3218_REG_PWM] == value) { @@ -101,7 +109,7 @@ void is31fl3218_set_value(int index, uint8_t value) { } void is31fl3218_set_value_all(uint8_t value) { - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3218_LED_COUNT; i++) { is31fl3218_set_value(i, value); } } diff --git a/drivers/led/issi/is31fl3218-simple.h b/drivers/led/issi/is31fl3218-simple.h index 34a4886957..959990a93f 100644 --- a/drivers/led/issi/is31fl3218-simple.h +++ b/drivers/led/issi/is31fl3218-simple.h @@ -30,7 +30,7 @@ typedef struct is31fl3218_led_t { uint8_t v; } __attribute__((packed)) is31fl3218_led_t; -extern const is31fl3218_led_t PROGMEM g_is31fl3218_leds[LED_MATRIX_LED_COUNT]; +extern const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT]; void is31fl3218_init(void); diff --git a/drivers/led/issi/is31fl3218.c b/drivers/led/issi/is31fl3218.c index 87a0acfc08..04523a3c01 100644 --- a/drivers/led/issi/is31fl3218.c +++ b/drivers/led/issi/is31fl3218.c @@ -68,6 +68,8 @@ void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) { } void is31fl3218_init(void) { + i2c_init(); + // In case we ever want to reinitialize (?) is31fl3218_write_register(IS31FL3218_REG_RESET, 0x00); @@ -86,11 +88,17 @@ void is31fl3218_init(void) { // Load PWM registers and LED Control register data is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01); + + for (int i = 0; i < IS31FL3218_LED_COUNT; i++) { + is31fl3218_set_led_control_register(i, true, true, true); + } + + is31fl3218_update_led_control_registers(); } void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { is31fl3218_led_t led; - if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3218_LED_COUNT) { memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led)); } if (g_pwm_buffer[led.r - IS31FL3218_REG_PWM] == red && g_pwm_buffer[led.g - IS31FL3218_REG_PWM] == green && g_pwm_buffer[led.b - IS31FL3218_REG_PWM] == blue) { @@ -103,7 +111,7 @@ void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3218_LED_COUNT; i++) { is31fl3218_set_color(i, red, green, blue); } } diff --git a/drivers/led/issi/is31fl3218.h b/drivers/led/issi/is31fl3218.h index 844e11f490..c48bc2f238 100644 --- a/drivers/led/issi/is31fl3218.h +++ b/drivers/led/issi/is31fl3218.h @@ -32,7 +32,7 @@ typedef struct is31fl3218_led_t { uint8_t b; } __attribute__((packed)) is31fl3218_led_t; -extern const is31fl3218_led_t PROGMEM g_is31fl3218_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT]; void is31fl3218_init(void); diff --git a/drivers/led/issi/is31fl3731-simple.c b/drivers/led/issi/is31fl3731-simple.c index adf2ccfca0..3663d30c10 100644 --- a/drivers/led/issi/is31fl3731-simple.c +++ b/drivers/led/issi/is31fl3731-simple.c @@ -104,6 +104,36 @@ void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { } } +void is31fl3731_init_drivers(void) { + i2c_init(); + + 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 + + for (int i = 0; i < IS31FL3731_LED_COUNT; i++) { + is31fl3731_set_led_control_register(i, true); + } + + 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 +} + void is31fl3731_init(uint8_t addr) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, first enable software shutdown, @@ -161,7 +191,7 @@ void is31fl3731_init(uint8_t addr) { void is31fl3731_set_value(int index, uint8_t value) { is31fl3731_led_t led; - if (index >= 0 && index < LED_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3731_LED_COUNT) { memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led)); // Subtract 0x24 to get the second index of g_pwm_buffer @@ -175,7 +205,7 @@ void is31fl3731_set_value(int index, uint8_t value) { } void is31fl3731_set_value_all(uint8_t value) { - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3731_LED_COUNT; i++) { is31fl3731_set_value(i, value); } } diff --git a/drivers/led/issi/is31fl3731-simple.h b/drivers/led/issi/is31fl3731-simple.h index 2ab253717c..32504c1933 100644 --- a/drivers/led/issi/is31fl3731-simple.h +++ b/drivers/led/issi/is31fl3731-simple.h @@ -66,8 +66,9 @@ typedef struct is31fl3731_led_t { uint8_t v; } __attribute__((packed)) is31fl3731_led_t; -extern const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT]; +extern const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT]; +void is31fl3731_init_drivers(void); void is31fl3731_init(uint8_t addr); void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data); void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); diff --git a/drivers/led/issi/is31fl3731.c b/drivers/led/issi/is31fl3731.c index 767c0da0d9..42abd8ed38 100644 --- a/drivers/led/issi/is31fl3731.c +++ b/drivers/led/issi/is31fl3731.c @@ -101,6 +101,36 @@ void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { } } +void is31fl3731_init_drivers(void) { + i2c_init(); + + 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 + + for (int i = 0; i < IS31FL3731_LED_COUNT; i++) { + is31fl3731_set_led_control_register(i, true, true, true); + } + + 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 +} + void is31fl3731_init(uint8_t addr) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, first enable software shutdown, @@ -158,7 +188,7 @@ void is31fl3731_init(uint8_t addr) { void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { is31fl3731_led_t led; - if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3731_LED_COUNT) { memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led)); // Subtract 0x24 to get the second index of g_pwm_buffer @@ -173,7 +203,7 @@ void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3731_LED_COUNT; i++) { is31fl3731_set_color(i, red, green, blue); } } diff --git a/drivers/led/issi/is31fl3731.h b/drivers/led/issi/is31fl3731.h index 756c5b473a..73fa018897 100644 --- a/drivers/led/issi/is31fl3731.h +++ b/drivers/led/issi/is31fl3731.h @@ -67,8 +67,9 @@ typedef struct is31fl3731_led_t { uint8_t b; } __attribute__((packed)) is31fl3731_led_t; -extern const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT]; +void is31fl3731_init_drivers(void); void is31fl3731_init(uint8_t addr); void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data); void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); diff --git a/drivers/led/issi/is31fl3733-simple.c b/drivers/led/issi/is31fl3733-simple.c index dbbf86a8f5..aa1b02450c 100644 --- a/drivers/led/issi/is31fl3733-simple.c +++ b/drivers/led/issi/is31fl3733-simple.c @@ -63,6 +63,19 @@ # define IS31FL3733_GLOBALCURRENT 0xFF #endif +#ifndef IS31FL3733_SYNC_1 +# define IS31FL3733_SYNC_1 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_2 +# define IS31FL3733_SYNC_2 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_3 +# define IS31FL3733_SYNC_3 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_4 +# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE +#endif + // Transfer buffer for TWITransmitData() uint8_t g_twi_transfer_buffer[20]; @@ -126,6 +139,36 @@ bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { return true; } +void is31fl3733_init_drivers(void) { + i2c_init(); + + is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1); +#if defined(IS31FL3733_I2C_ADDRESS_2) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_2, IS31FL3733_SYNC_2); +# if defined(IS31FL3733_I2C_ADDRESS_3) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_3, IS31FL3733_SYNC_3); +# if defined(IS31FL3733_I2C_ADDRESS_4) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_4, IS31FL3733_SYNC_4); +# endif +# endif +#endif + + for (int i = 0; i < IS31FL3733_LED_COUNT; i++) { + is31fl3733_set_led_control_register(i, true); + } + + 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 +} + void is31fl3733_init(uint8_t addr, uint8_t sync) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -174,7 +217,7 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) { void is31fl3733_set_value(int index, uint8_t value) { is31fl3733_led_t led; - if (index >= 0 && index < LED_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3733_LED_COUNT) { memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.v] == value) { @@ -186,7 +229,7 @@ void is31fl3733_set_value(int index, uint8_t value) { } void is31fl3733_set_value_all(uint8_t value) { - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3733_LED_COUNT; i++) { is31fl3733_set_value(i, value); } } diff --git a/drivers/led/issi/is31fl3733-simple.h b/drivers/led/issi/is31fl3733-simple.h index e9f68e3506..367af43c6a 100644 --- a/drivers/led/issi/is31fl3733-simple.h +++ b/drivers/led/issi/is31fl3733-simple.h @@ -85,8 +85,9 @@ typedef struct is31fl3733_led_t { uint8_t v; } __attribute__((packed)) is31fl3733_led_t; -extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[LED_MATRIX_LED_COUNT]; +extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT]; +void is31fl3733_init_drivers(void); void is31fl3733_init(uint8_t addr, uint8_t sync); bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data); bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); @@ -119,6 +120,10 @@ void is31fl3733_flush(void); #define IS31FL3733_PWM_FREQUENCY_2K1_HZ 0b011 #define IS31FL3733_PWM_FREQUENCY_1K05_HZ 0b100 +#define IS31FL3733_SYNC_NONE 0b00 +#define IS31FL3733_SYNC_MASTER 0b01 +#define IS31FL3733_SYNC_SLAVE 0b10 + #define A_1 0x00 #define A_2 0x01 #define A_3 0x02 diff --git a/drivers/led/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c index 35ec96a55a..24b0733030 100644 --- a/drivers/led/issi/is31fl3733.c +++ b/drivers/led/issi/is31fl3733.c @@ -62,6 +62,19 @@ # define IS31FL3733_GLOBALCURRENT 0xFF #endif +#ifndef IS31FL3733_SYNC_1 +# define IS31FL3733_SYNC_1 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_2 +# define IS31FL3733_SYNC_2 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_3 +# define IS31FL3733_SYNC_3 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_4 +# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE +#endif + // Transfer buffer for TWITransmitData() uint8_t g_twi_transfer_buffer[20]; @@ -125,6 +138,36 @@ bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { return true; } +void is31fl3733_init_drivers(void) { + i2c_init(); + + is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1); +#if defined(IS31FL3733_I2C_ADDRESS_2) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_2, IS31FL3733_SYNC_2); +# if defined(IS31FL3733_I2C_ADDRESS_3) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_3, IS31FL3733_SYNC_3); +# if defined(IS31FL3733_I2C_ADDRESS_4) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_4, IS31FL3733_SYNC_4); +# endif +# endif +#endif + + for (int i = 0; i < IS31FL3733_LED_COUNT; i++) { + is31fl3733_set_led_control_register(i, true, true, true); + } + + 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 +} + void is31fl3733_init(uint8_t addr, uint8_t sync) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -173,7 +216,7 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) { void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { is31fl3733_led_t led; - if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3733_LED_COUNT) { memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { @@ -187,7 +230,7 @@ void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3733_LED_COUNT; i++) { is31fl3733_set_color(i, red, green, blue); } } diff --git a/drivers/led/issi/is31fl3733.h b/drivers/led/issi/is31fl3733.h index bda6f1908f..4902b3c1d7 100644 --- a/drivers/led/issi/is31fl3733.h +++ b/drivers/led/issi/is31fl3733.h @@ -110,8 +110,9 @@ typedef struct is31fl3733_led_t { uint8_t b; } __attribute__((packed)) is31fl3733_led_t; -extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT]; +void is31fl3733_init_drivers(void); void is31fl3733_init(uint8_t addr, uint8_t sync); bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data); bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); @@ -144,6 +145,10 @@ void is31fl3733_flush(void); #define IS31FL3733_PWM_FREQUENCY_2K1_HZ 0b011 #define IS31FL3733_PWM_FREQUENCY_1K05_HZ 0b100 +#define IS31FL3733_SYNC_NONE 0b00 +#define IS31FL3733_SYNC_MASTER 0b01 +#define IS31FL3733_SYNC_SLAVE 0b10 + #define A_1 0x00 #define A_2 0x01 #define A_3 0x02 diff --git a/drivers/led/issi/is31fl3736-simple.c b/drivers/led/issi/is31fl3736-simple.c index d8262c3416..2876533819 100644 --- a/drivers/led/issi/is31fl3736-simple.c +++ b/drivers/led/issi/is31fl3736-simple.c @@ -112,6 +112,36 @@ void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { } } +void is31fl3736_init_drivers(void) { + i2c_init(); + + 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 + + for (int i = 0; i < IS31FL3736_LED_COUNT; i++) { + is31fl3736_set_led_control_register(i, true); + } + + 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 +} + void is31fl3736_init(uint8_t addr) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -159,7 +189,7 @@ void is31fl3736_init(uint8_t addr) { void is31fl3736_set_value(int index, uint8_t value) { is31fl3736_led_t led; - if (index >= 0 && index < LED_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3736_LED_COUNT) { memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.v] == value) { @@ -171,7 +201,7 @@ void is31fl3736_set_value(int index, uint8_t value) { } void is31fl3736_set_value_all(uint8_t value) { - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3736_LED_COUNT; i++) { is31fl3736_set_value(i, value); } } diff --git a/drivers/led/issi/is31fl3736-simple.h b/drivers/led/issi/is31fl3736-simple.h index fe3cec9564..88422ec3a4 100644 --- a/drivers/led/issi/is31fl3736-simple.h +++ b/drivers/led/issi/is31fl3736-simple.h @@ -80,8 +80,9 @@ typedef struct is31fl3736_led_t { uint8_t v; } __attribute__((packed)) is31fl3736_led_t; -extern const is31fl3736_led_t PROGMEM g_is31fl3736_leds[LED_MATRIX_LED_COUNT]; +extern const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT]; +void is31fl3736_init_drivers(void); void is31fl3736_init(uint8_t addr); void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data); void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); diff --git a/drivers/led/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c index 4edf1b04c8..ad421e5cf2 100644 --- a/drivers/led/issi/is31fl3736.c +++ b/drivers/led/issi/is31fl3736.c @@ -112,6 +112,36 @@ void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { } } +void is31fl3736_init_drivers(void) { + i2c_init(); + + 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 + + for (int i = 0; i < IS31FL3736_LED_COUNT; i++) { + is31fl3736_set_led_control_register(i, true, true, true); + } + + 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 +} + void is31fl3736_init(uint8_t addr) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -159,7 +189,7 @@ void is31fl3736_init(uint8_t addr) { void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { is31fl3736_led_t led; - if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3736_LED_COUNT) { memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { @@ -173,7 +203,7 @@ void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3736_LED_COUNT; i++) { is31fl3736_set_color(i, red, green, blue); } } diff --git a/drivers/led/issi/is31fl3736.h b/drivers/led/issi/is31fl3736.h index 728021ae29..b64fdf9d1c 100644 --- a/drivers/led/issi/is31fl3736.h +++ b/drivers/led/issi/is31fl3736.h @@ -94,8 +94,9 @@ typedef struct is31fl3736_led_t { uint8_t b; } __attribute__((packed)) is31fl3736_led_t; -extern const is31fl3736_led_t PROGMEM g_is31fl3736_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT]; +void is31fl3736_init_drivers(void); void is31fl3736_init(uint8_t addr); void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data); void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); diff --git a/drivers/led/issi/is31fl3737-simple.c b/drivers/led/issi/is31fl3737-simple.c index 7a4263d9af..aa6eba982c 100644 --- a/drivers/led/issi/is31fl3737-simple.c +++ b/drivers/led/issi/is31fl3737-simple.c @@ -115,6 +115,36 @@ void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { } } +void is31fl3737_init_drivers(void) { + i2c_init(); + + 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 + + for (int i = 0; i < IS31FL3737_LED_COUNT; i++) { + is31fl3737_set_led_control_register(i, true); + } + + 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 +} + void is31fl3737_init(uint8_t addr) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -162,7 +192,7 @@ void is31fl3737_init(uint8_t addr) { void is31fl3737_set_value(int index, uint8_t value) { is31fl3737_led_t led; - if (index >= 0 && index < LED_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3737_LED_COUNT) { memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.v] == value) { @@ -174,7 +204,7 @@ void is31fl3737_set_value(int index, uint8_t value) { } void is31fl3737_set_value_all(uint8_t value) { - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3737_LED_COUNT; i++) { is31fl3737_set_value(i, value); } } diff --git a/drivers/led/issi/is31fl3737-simple.h b/drivers/led/issi/is31fl3737-simple.h index b177d4fb0a..4c7af02176 100644 --- a/drivers/led/issi/is31fl3737-simple.h +++ b/drivers/led/issi/is31fl3737-simple.h @@ -70,8 +70,9 @@ typedef struct is31fl3737_led_t { uint8_t v; } __attribute__((packed)) is31fl3737_led_t; -extern const is31fl3737_led_t PROGMEM g_is31fl3737_leds[LED_MATRIX_LED_COUNT]; +extern const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT]; +void is31fl3737_init_drivers(void); void is31fl3737_init(uint8_t addr); void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data); void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c index d769bb9707..75544231ec 100644 --- a/drivers/led/issi/is31fl3737.c +++ b/drivers/led/issi/is31fl3737.c @@ -115,6 +115,36 @@ void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { } } +void is31fl3737_init_drivers(void) { + i2c_init(); + + 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 + + for (int i = 0; i < IS31FL3737_LED_COUNT; i++) { + is31fl3737_set_led_control_register(i, true, true, true); + } + + 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 +} + void is31fl3737_init(uint8_t addr) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -162,7 +192,7 @@ void is31fl3737_init(uint8_t addr) { void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { is31fl3737_led_t led; - if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3737_LED_COUNT) { memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { @@ -176,7 +206,7 @@ void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3737_LED_COUNT; i++) { is31fl3737_set_color(i, red, green, blue); } } diff --git a/drivers/led/issi/is31fl3737.h b/drivers/led/issi/is31fl3737.h index 12f84e3bfe..fadab70c74 100644 --- a/drivers/led/issi/is31fl3737.h +++ b/drivers/led/issi/is31fl3737.h @@ -87,8 +87,9 @@ typedef struct is31fl3737_led_t { uint8_t b; } __attribute__((packed)) is31fl3737_led_t; -extern const is31fl3737_led_t PROGMEM g_is31fl3737_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT]; +void is31fl3737_init_drivers(void); void is31fl3737_init(uint8_t addr); void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data); void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); diff --git a/drivers/led/issi/is31fl3741-simple.c b/drivers/led/issi/is31fl3741-simple.c index c7335866ec..8e77a6446d 100644 --- a/drivers/led/issi/is31fl3741-simple.c +++ b/drivers/led/issi/is31fl3741-simple.c @@ -143,6 +143,36 @@ bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { return true; } +void is31fl3741_init_drivers(void) { + i2c_init(); + + 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 + + for (int i = 0; i < IS31FL3741_LED_COUNT; i++) { + is31fl3741_set_led_control_register(i, true); + } + + 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 +} + void is31fl3741_init(uint8_t addr) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -174,7 +204,7 @@ void is31fl3741_init(uint8_t addr) { void is31fl3741_set_value(int index, uint8_t value) { is31fl3741_led_t led; - if (index >= 0 && index < LED_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3741_LED_COUNT) { memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.v] == value) { @@ -186,7 +216,7 @@ void is31fl3741_set_value(int index, uint8_t value) { } void is31fl3741_set_value_all(uint8_t value) { - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3741_LED_COUNT; i++) { is31fl3741_set_value(i, value); } } diff --git a/drivers/led/issi/is31fl3741-simple.h b/drivers/led/issi/is31fl3741-simple.h index 8ecc330298..d97591fa60 100644 --- a/drivers/led/issi/is31fl3741-simple.h +++ b/drivers/led/issi/is31fl3741-simple.h @@ -70,8 +70,9 @@ typedef struct is31fl3741_led_t { uint32_t v : 10; } __attribute__((packed)) is31fl3741_led_t; -extern const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT]; +void is31fl3741_init_drivers(void); void is31fl3741_init(uint8_t addr); void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data); bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c index 5e4ed711ca..f316b76157 100644 --- a/drivers/led/issi/is31fl3741.c +++ b/drivers/led/issi/is31fl3741.c @@ -143,6 +143,36 @@ bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { return true; } +void is31fl3741_init_drivers(void) { + i2c_init(); + + 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 + + for (int i = 0; i < IS31FL3741_LED_COUNT; i++) { + is31fl3741_set_led_control_register(i, true, true, true); + } + + 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 +} + void is31fl3741_init(uint8_t addr) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -174,7 +204,7 @@ void is31fl3741_init(uint8_t addr) { void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { is31fl3741_led_t led; - if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3741_LED_COUNT) { memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { @@ -188,7 +218,7 @@ void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3741_LED_COUNT; i++) { is31fl3741_set_color(i, red, green, blue); } } diff --git a/drivers/led/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h index 13e132efa0..1febb6398b 100644 --- a/drivers/led/issi/is31fl3741.h +++ b/drivers/led/issi/is31fl3741.h @@ -87,8 +87,9 @@ typedef struct is31fl3741_led_t { uint32_t b : 10; } __attribute__((packed)) is31fl3741_led_t; -extern const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT]; +void is31fl3741_init_drivers(void); void is31fl3741_init(uint8_t addr); void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data); bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); diff --git a/drivers/led/issi/is31flcommon.c b/drivers/led/issi/is31flcommon.c index 850f23c831..d6b9bce93d 100644 --- a/drivers/led/issi/is31flcommon.c +++ b/drivers/led/issi/is31flcommon.c @@ -188,6 +188,41 @@ void IS31FL_common_flush(void) { } #ifdef RGB_MATRIX_ENABLE +void IS31FL_RGB_init_drivers(void) { + i2c_init(); + + IS31FL_common_init(DRIVER_ADDR_1, ISSI_SSR_1); +# if defined(DRIVER_ADDR_2) + IS31FL_common_init(DRIVER_ADDR_2, ISSI_SSR_2); +# if defined(DRIVER_ADDR_3) + IS31FL_common_init(DRIVER_ADDR_3, ISSI_SSR_3); +# if defined(DRIVER_ADDR_4) + IS31FL_common_init(DRIVER_ADDR_4, ISSI_SSR_4); +# endif +# endif +# endif + + for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + IS31FL_RGB_set_scaling_buffer(i, true, true, true); + } + + // This actually updates the LED drivers +# ifdef ISSI_MANUAL_SCALING + IS31FL_set_manual_scaling_buffer(); +# endif + + IS31FL_common_update_scaling_register(DRIVER_ADDR_1, 0); +# if defined(DRIVER_ADDR_2) + IS31FL_common_update_scaling_register(DRIVER_ADDR_2, 1); +# if defined(DRIVER_ADDR_3) + IS31FL_common_update_scaling_register(DRIVER_ADDR_3, 2); +# if defined(DRIVER_ADDR_4) + IS31FL_common_update_scaling_register(DRIVER_ADDR_4, 3); +# endif +# endif +# endif +} + // Colour is set by adjusting PWM register void IS31FL_RGB_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { @@ -231,6 +266,41 @@ void IS31FL_RGB_set_scaling_buffer(uint8_t index, bool red, bool green, bool blu #elif defined(LED_MATRIX_ENABLE) // LED Matrix Specific scripts +void IS31FL_simple_init_drivers(void) { + i2c_init(); + + IS31FL_common_init(DRIVER_ADDR_1, ISSI_SSR_1); +# if defined(DRIVER_ADDR_2) + IS31FL_common_init(DRIVER_ADDR_2, ISSI_SSR_2); +# if defined(DRIVER_ADDR_3) + IS31FL_common_init(DRIVER_ADDR_3, ISSI_SSR_3); +# if defined(DRIVER_ADDR_4) + IS31FL_common_init(DRIVER_ADDR_4, ISSI_SSR_4); +# endif +# endif +# endif + + for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { + IS31FL_simple_set_scaling_buffer(i, true); + } + +// This actually updates the LED drivers +# ifdef ISSI_MANUAL_SCALING + IS31FL_set_manual_scaling_buffer(); +# endif + + IS31FL_common_update_scaling_register(DRIVER_ADDR_1, 0); +# if defined(DRIVER_ADDR_2) + IS31FL_common_update_scaling_register(DRIVER_ADDR_2, 1); +# if defined(DRIVER_ADDR_3) + IS31FL_common_update_scaling_register(DRIVER_ADDR_3, 2); +# if defined(DRIVER_ADDR_4) + IS31FL_common_update_scaling_register(DRIVER_ADDR_4, 3); +# endif +# endif +# endif +} + void IS31FL_simple_set_scaling_buffer(uint8_t index, bool value) { is31_led led; memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); diff --git a/drivers/led/issi/is31flcommon.h b/drivers/led/issi/is31flcommon.h index c380f2a8d6..94ec9ae3ce 100644 --- a/drivers/led/issi/is31flcommon.h +++ b/drivers/led/issi/is31flcommon.h @@ -71,11 +71,13 @@ void IS31FL_common_flush(void); #ifdef RGB_MATRIX_ENABLE // RGB Matrix Specific scripts +void IS31FL_RGB_init_drivers(void); void IS31FL_RGB_set_color(int index, uint8_t red, uint8_t green, uint8_t blue); void IS31FL_RGB_set_color_all(uint8_t red, uint8_t green, uint8_t blue); void IS31FL_RGB_set_scaling_buffer(uint8_t index, bool red, bool green, bool blue); #elif defined(LED_MATRIX_ENABLE) // LED Matrix Specific scripts +void IS31FL_simple_init_drivers(void); void IS31FL_simple_set_scaling_buffer(uint8_t index, bool value); void IS31FL_simple_set_brightness(int index, uint8_t value); void IS31FL_simple_set_brigntness_all(uint8_t value); diff --git a/drivers/led/snled27351-simple.c b/drivers/led/snled27351-simple.c index 882fe4e8b4..c274506f83 100644 --- a/drivers/led/snled27351-simple.c +++ b/drivers/led/snled27351-simple.c @@ -99,6 +99,34 @@ bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { return true; } +void snled27351_init_drivers(void) { + 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 + + for (int i = 0; i < SNLED27351_LED_COUNT; i++) { + snled27351_set_led_control_register(i, true); + } + + 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 +} + void snled27351_init(uint8_t addr) { // Select to function page snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE); @@ -147,7 +175,7 @@ void snled27351_init(uint8_t addr) { void snled27351_set_value(int index, uint8_t value) { snled27351_led_t led; - if (index >= 0 && index < LED_MATRIX_LED_COUNT) { + if (index >= 0 && index < SNLED27351_LED_COUNT) { memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.v] == value) { @@ -159,7 +187,7 @@ void snled27351_set_value(int index, uint8_t value) { } void snled27351_set_value_all(uint8_t value) { - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < SNLED27351_LED_COUNT; i++) { snled27351_set_value(i, value); } } diff --git a/drivers/led/snled27351-simple.h b/drivers/led/snled27351-simple.h index e8238071a5..64257202b9 100644 --- a/drivers/led/snled27351-simple.h +++ b/drivers/led/snled27351-simple.h @@ -68,8 +68,9 @@ typedef struct snled27351_led_t { uint8_t v; } __attribute__((packed)) snled27351_led_t; -extern const snled27351_led_t PROGMEM g_snled27351_leds[LED_MATRIX_LED_COUNT]; +extern const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT]; +void snled27351_init_drivers(void); void snled27351_init(uint8_t addr); bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data); bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); diff --git a/drivers/led/snled27351.c b/drivers/led/snled27351.c index 198b190dac..2746737a5a 100644 --- a/drivers/led/snled27351.c +++ b/drivers/led/snled27351.c @@ -98,6 +98,34 @@ bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { return true; } +void snled27351_init_drivers(void) { + 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 + + for (int i = 0; i < SNLED27351_LED_COUNT; i++) { + snled27351_set_led_control_register(i, true, true, true); + } + + 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 +} + void snled27351_init(uint8_t addr) { // Select to function page snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE); @@ -146,7 +174,7 @@ void snled27351_init(uint8_t addr) { void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { snled27351_led_t led; - if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { + if (index >= 0 && index < SNLED27351_LED_COUNT) { memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { @@ -160,7 +188,7 @@ void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < SNLED27351_LED_COUNT; i++) { snled27351_set_color(i, red, green, blue); } } diff --git a/drivers/led/snled27351.h b/drivers/led/snled27351.h index e92ca71799..cecd552dbb 100644 --- a/drivers/led/snled27351.h +++ b/drivers/led/snled27351.h @@ -82,8 +82,9 @@ typedef struct snled27351_led_t { uint8_t b; } __attribute__((packed)) snled27351_led_t; -extern const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT]; +extern const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT]; +void snled27351_init_drivers(void); void snled27351_init(uint8_t addr); bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data); bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); diff --git a/keyboards/acheron/apollo/87h/gamma/config.h b/keyboards/acheron/apollo/87h/gamma/config.h index e8600a18f1..151239ba33 100644 --- a/keyboards/acheron/apollo/87h/gamma/config.h +++ b/keyboards/acheron/apollo/87h/gamma/config.h @@ -30,7 +30,6 @@ along with this program. If not, see . #define IS31FL3741_DRIVER_COUNT 1 #define DRIVER_1_LED_TOTAL 87 #define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL -#define ISSI_DRIVER_TOTAL RGB_MATRIX_LED_COUNT #define RGB_MATRIX_DEFAULT_VAL 80 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/aeboards/satellite/rev1/config.h b/keyboards/aeboards/satellite/rev1/config.h index fcf3105f0f..7a06288394 100644 --- a/keyboards/aeboards/satellite/rev1/config.h +++ b/keyboards/aeboards/satellite/rev1/config.h @@ -23,8 +23,8 @@ #define IS31FL3731_DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 36 #define DRIVER_2_LED_TOTAL 36 -#define ISSI_DRIVER_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) -#define RGB_MATRIX_LED_COUNT ISSI_DRIVER_TOTAL +#define IS31FL3731_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +#define RGB_MATRIX_LED_COUNT IS31FL3731_LED_COUNT #define RGB_MATRIX_DEFAULT_VAL 80 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/aeboards/satellite/rev1/rev1.c b/keyboards/aeboards/satellite/rev1/rev1.c index 4c6e7d6d7c..6727894e06 100644 --- a/keyboards/aeboards/satellite/rev1/rev1.c +++ b/keyboards/aeboards/satellite/rev1/rev1.c @@ -18,7 +18,7 @@ #include "drivers/led/issi/is31fl3731.h" #ifdef RGB_MATRIX_ENABLE -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -149,7 +149,7 @@ static void init(void) { is31fl3731_init(IS31FL3731_I2C_ADDRESS_1); is31fl3731_init(IS31FL3731_I2C_ADDRESS_2); - for (int index = 0; index < ISSI_DRIVER_TOTAL; index++) { + for (int index = 0; index < IS31FL3731_LED_COUNT; index++) { bool enabled = !( ( index == 18+5) || //B5 ( index == 36+17) || //C17 ( index == 54+13) //D13 diff --git a/keyboards/fallacy/config.h b/keyboards/fallacy/config.h index 254f809c34..65cea1d5c1 100755 --- a/keyboards/fallacy/config.h +++ b/keyboards/fallacy/config.h @@ -20,7 +20,7 @@ */ #define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND #define IS31FL3731_DRIVER_COUNT 1 -#define LED_MATRIX_LED_COUNT 3 +#define IS31FL3731_LED_COUNT 3 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ diff --git a/keyboards/fallacy/indicators.c b/keyboards/fallacy/indicators.c index a8630d2e11..b95786db41 100755 --- a/keyboards/fallacy/indicators.c +++ b/keyboards/fallacy/indicators.c @@ -22,14 +22,7 @@ * init IS31FL3731 and i2c */ void init_fallacy_leds(void) { - i2c_init(); - is31fl3731_init(IS31FL3731_I2C_ADDRESS_1); - - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { - is31fl3731_set_led_control_register(i, true); - } - - is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0); + is31fl3731_init_drivers(); } @@ -54,7 +47,7 @@ void set_fallacy_led(int index, bool state) { /* define LED matrix */ -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { {0, C1_1}, {0, C2_1}, {0, C3_1}, diff --git a/keyboards/hs60/v2/ansi/config.h b/keyboards/hs60/v2/ansi/config.h index 3600b30feb..e4dc24dc33 100644 --- a/keyboards/hs60/v2/ansi/config.h +++ b/keyboards/hs60/v2/ansi/config.h @@ -55,7 +55,7 @@ along with this program. If not, see . #define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND #define IS31FL3733_DRIVER_COUNT 1 -#define RGB_MATRIX_LED_COUNT 64 +#define IS31FL3733_LED_COUNT 64 // These define which keys in the matrix are alphas/mods // Used for backlight effects so colors are different for diff --git a/keyboards/hs60/v2/hhkb/config.h b/keyboards/hs60/v2/hhkb/config.h index bdc27435cf..029e1ebb18 100644 --- a/keyboards/hs60/v2/hhkb/config.h +++ b/keyboards/hs60/v2/hhkb/config.h @@ -55,7 +55,7 @@ along with this program. If not, see . #define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND #define IS31FL3733_DRIVER_COUNT 1 -#define RGB_MATRIX_LED_COUNT 64 +#define IS31FL3733_LED_COUNT 64 // These define which keys in the matrix are alphas/mods // Used for backlight effects so colors are different for diff --git a/keyboards/hs60/v2/iso/config.h b/keyboards/hs60/v2/iso/config.h index 9a9a4ed623..52cada51a6 100644 --- a/keyboards/hs60/v2/iso/config.h +++ b/keyboards/hs60/v2/iso/config.h @@ -52,7 +52,7 @@ along with this program. If not, see . #define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND #define IS31FL3733_DRIVER_COUNT 1 -#define RGB_MATRIX_LED_COUNT 64 +#define IS31FL3733_LED_COUNT 64 // These define which keys in the matrix are alphas/mods // Used for backlight effects so colors are different for diff --git a/keyboards/input_club/k_type/config.h b/keyboards/input_club/k_type/config.h index d6abd39a83..c188038a82 100644 --- a/keyboards/input_club/k_type/config.h +++ b/keyboards/input_club/k_type/config.h @@ -34,7 +34,6 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT #ifdef RGB_MATRIX_ENABLE -//#include "gpio.h" // RGB Matrix Animation modes. Explicitly enabled // For full list of effects, see: // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects @@ -106,7 +105,8 @@ along with this program. If not, see . # define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_GND # define IS31FL3733_DRIVER_COUNT 2 +# define IS31FL3733_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) # define DRIVER_1_LED_TOTAL 64 # define DRIVER_2_LED_TOTAL 55 -# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +# define RGB_MATRIX_LED_COUNT IS31FL3733_LED_COUNT #endif diff --git a/keyboards/input_club/k_type/i2c_master.h b/keyboards/input_club/k_type/i2c_master.h index d4e9d6878f..db4f12e43c 100644 --- a/keyboards/input_club/k_type/i2c_master.h +++ b/keyboards/input_club/k_type/i2c_master.h @@ -26,6 +26,7 @@ #include #include +#include "gpio.h" #ifndef I2C_COUNT # define I2C_COUNT 1 diff --git a/keyboards/input_club/k_type/is31fl3733-dual.c b/keyboards/input_club/k_type/is31fl3733-dual.c index 54e9d76960..0b6c6a607c 100644 --- a/keyboards/input_club/k_type/is31fl3733-dual.c +++ b/keyboards/input_club/k_type/is31fl3733-dual.c @@ -60,6 +60,19 @@ # define IS31FL3733_GLOBALCURRENT 0xFF #endif +#ifndef IS31FL3733_SYNC_1 +# define IS31FL3733_SYNC_1 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_2 +# define IS31FL3733_SYNC_2 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_3 +# define IS31FL3733_SYNC_3 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_4 +# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE +#endif + // Transfer buffer for TWITransmitData() uint8_t g_twi_transfer_buffer[20]; @@ -125,6 +138,24 @@ bool is31fl3733_write_pwm_buffer(uint8_t index, uint8_t addr, uint8_t *pwm_buffe return true; } +void is31fl3733_init_drivers(void) { + i2c_init(&I2CD1, I2C1_SCL_PIN, I2C1_SDA_PIN); + is31fl3733_init(0, IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1); +# ifdef USE_I2C2 + i2c_init(&I2CD2, I2C2_SCL_PIN, I2C2_SDA_PIN); + is31fl3733_init(1, IS31FL3733_I2C_ADDRESS_2, IS31FL3733_SYNC_2); +# endif + + for (int i = 0; i < IS31FL3733_LED_COUNT; i++) { + is31fl3733_set_led_control_register(i, true, true, true); + } + + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_1, 0); +# ifdef USE_I2C2 + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_2, 1); +# endif +} + void is31fl3733_init(uint8_t bus, uint8_t addr, uint8_t sync) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -173,7 +204,7 @@ void is31fl3733_init(uint8_t bus, uint8_t addr, uint8_t sync) { void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { is31fl3733_led_t led; - if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { + if (index >= 0 && index < IS31FL3733_LED_COUNT) { memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { @@ -187,7 +218,7 @@ void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3733_LED_COUNT; i++) { is31fl3733_set_color(i, red, green, blue); } } diff --git a/keyboards/input_club/k_type/is31fl3733-dual.h b/keyboards/input_club/k_type/is31fl3733-dual.h index 33943af320..696c234b67 100644 --- a/keyboards/input_club/k_type/is31fl3733-dual.h +++ b/keyboards/input_club/k_type/is31fl3733-dual.h @@ -46,8 +46,9 @@ typedef struct is31fl3733_led_t { uint8_t b; } __attribute__((packed)) is31fl3733_led_t; -extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT]; +void is31fl3733_init_drivers(void); void is31fl3733_init(uint8_t bus, uint8_t addr, uint8_t sync); bool is31fl3733_write_register(uint8_t index, uint8_t addr, uint8_t reg, uint8_t data); bool is31fl3733_write_pwm_buffer(uint8_t index, uint8_t addr, uint8_t *pwm_buffer); @@ -80,6 +81,10 @@ void is31fl3733_flush(void); #define IS31FL3733_PWM_FREQUENCY_2K1_HZ 0x03 #define IS31FL3733_PWM_FREQUENCY_1K05_HZ 0x04 +#define IS31FL3733_SYNC_NONE 0b00 +#define IS31FL3733_SYNC_MASTER 0b01 +#define IS31FL3733_SYNC_SLAVE 0b10 + #define A_1 0x00 #define A_2 0x01 #define A_3 0x02 diff --git a/keyboards/input_club/k_type/k_type-rgbdriver.c b/keyboards/input_club/k_type/k_type-rgbdriver.c index 1e8132e6dc..e4d2d2d04b 100644 --- a/keyboards/input_club/k_type/k_type-rgbdriver.c +++ b/keyboards/input_club/k_type/k_type-rgbdriver.c @@ -16,30 +16,10 @@ #ifdef RGB_MATRIX_ENABLE # include "rgb_matrix.h" -# include "i2c_master.h" # include "is31fl3733-dual.h" -# include "gpio.h" - -static void init(void) { - i2c_init(&I2CD1, I2C1_SCL_PIN, I2C1_SDA_PIN); - is31fl3733_init(0, IS31FL3733_I2C_ADDRESS_1, 0); -# ifdef USE_I2C2 - i2c_init(&I2CD2, I2C2_SCL_PIN, I2C2_SDA_PIN); - is31fl3733_init(1, IS31FL3733_I2C_ADDRESS_2, 0); -# endif - for (int index = 0; index < RGB_MATRIX_LED_COUNT; index++) { - bool enabled = true; - // This only caches it for later - is31fl3733_set_led_control_register(index, enabled, enabled, enabled); - } - is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_1, 0); -# ifdef USE_I2C2 - is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_2, 1); -# endif -} const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, + .init = is31fl3733_init_drivers, .flush = is31fl3733_flush, .set_color = is31fl3733_set_color, .set_color_all = is31fl3733_set_color_all, diff --git a/keyboards/input_club/k_type/k_type.c b/keyboards/input_club/k_type/k_type.c index c6d06b51dc..e97007fc70 100644 --- a/keyboards/input_club/k_type/k_type.c +++ b/keyboards/input_club/k_type/k_type.c @@ -20,7 +20,7 @@ along with this program. If not, see . #ifdef RGB_MATRIX_ENABLE # include "is31fl3733-dual.h" -const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { { 0, B_1, A_1, C_1 }, { 0, B_2, A_2, C_2 }, { 0, B_3, A_3, C_3 }, diff --git a/keyboards/input_club/k_type/post_rules.mk b/keyboards/input_club/k_type/post_rules.mk index 897e422b05..ba750e2624 100644 --- a/keyboards/input_club/k_type/post_rules.mk +++ b/keyboards/input_club/k_type/post_rules.mk @@ -1,5 +1,5 @@ ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) # Additional files for RGB lighting - SRC += k_type-rgbdriver.c - QUANTUM_LIB_SRC += i2c_master.c is31fl3733-dual.c + SRC += k_type-rgbdriver.c is31fl3733-dual.c + QUANTUM_LIB_SRC += i2c_master.c endif diff --git a/keyboards/keebwerk/mega/ansi/config.h b/keyboards/keebwerk/mega/ansi/config.h index ee98c95636..c3b90cc2ca 100755 --- a/keyboards/keebwerk/mega/ansi/config.h +++ b/keyboards/keebwerk/mega/ansi/config.h @@ -53,7 +53,7 @@ along with this program. If not, see . #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 +#define IS31FL3733_LED_COUNT 128 // These define which keys in the matrix are alphas/mods // Used for backlight effects so colors are different for diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/config.h b/keyboards/kprepublic/bm60hsrgb/rev2/config.h index 9349838622..8d194f5ccb 100644 --- a/keyboards/kprepublic/bm60hsrgb/rev2/config.h +++ b/keyboards/kprepublic/bm60hsrgb/rev2/config.h @@ -74,7 +74,7 @@ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 -#define ISSI_LED_TOTAL DRIVER_1_LED_TOTAL +#define IS31FL3733_LED_COUNT DRIVER_1_LED_TOTAL // Underglow LEDs are WS2812, but someone might want to use RGBLIGHT for them; // don't use those LEDs in RGB Matrix in that case. @@ -84,7 +84,7 @@ # define WS2812_LED_TOTAL 6 #endif -#define RGB_MATRIX_LED_COUNT (ISSI_LED_TOTAL + WS2812_LED_TOTAL) +#define RGB_MATRIX_LED_COUNT (IS31FL3733_LED_COUNT + WS2812_LED_TOTAL) #ifdef RGB_MATRIX_ENABLE # define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c index 8b786d7cfb..0e9b3d318d 100644 --- a/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c +++ b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c @@ -22,7 +22,7 @@ # include "is31fl3733.h" # include "ws2812.h" -const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { { 0, B_1, A_1, C_1 }, { 0, B_2, A_2, C_2 }, { 0, B_3, A_3, C_3 }, @@ -153,8 +153,8 @@ rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; static void rgb_matrix_driver_init(void) { i2c_init(); - is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, 0); - for (uint8_t index = 0; index < ISSI_LED_TOTAL; index++) { + is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_NONE); + for (uint8_t index = 0; index < IS31FL3733_LED_COUNT; index++) { bool enabled = true; is31fl3733_set_led_control_register(index, enabled, enabled, enabled); } @@ -169,13 +169,13 @@ static void rgb_matrix_driver_flush(void) { } static void rgb_matrix_driver_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { - if (index < ISSI_LED_TOTAL) { + if (index < IS31FL3733_LED_COUNT) { is31fl3733_set_color(index, red, green, blue); } else { # if WS2812_LED_TOTAL > 0 - rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].r = red; - rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].g = green; - rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].b = blue; + rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].r = red; + rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].g = green; + rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].b = blue; # endif } } diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h index acd30f0659..b22c384460 100644 --- a/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h +++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h @@ -82,7 +82,7 @@ // IS31FL3733+WS2812 driver setup used by this board the LED controller drivers // are compiled unconditionally). -#define ISSI_LED_TOTAL DRIVER_1_LED_TOTAL +#define IS31FL3733_LED_COUNT DRIVER_1_LED_TOTAL #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 @@ -94,7 +94,7 @@ # define WS2812_LED_TOTAL 6 #endif -#define RGB_MATRIX_LED_COUNT (ISSI_LED_TOTAL + WS2812_LED_TOTAL) +#define RGB_MATRIX_LED_COUNT (IS31FL3733_LED_COUNT + WS2812_LED_TOTAL) #ifdef RGB_MATRIX_ENABLE # define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c index 02dd4ab6ce..2cfe18e08e 100644 --- a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c +++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c @@ -24,7 +24,7 @@ # include "ws2812.h" -const PROGMEM is31fl3733_led_t g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { +const PROGMEM is31fl3733_led_t g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { { 0, B_1, A_1, C_1 }, { 0, B_2, A_2, C_2 }, { 0, B_3, A_3, C_3 }, @@ -153,8 +153,8 @@ rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; static void rgb_matrix_driver_init(void) { i2c_init(); - is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, 0); - for (uint8_t index = 0; index < ISSI_LED_TOTAL; index++) { + is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_NONE); + for (uint8_t index = 0; index < IS31FL3733_LED_COUNT; index++) { bool enabled = true; is31fl3733_set_led_control_register(index, enabled, enabled, enabled); } @@ -169,13 +169,13 @@ static void rgb_matrix_driver_flush(void) { } static void rgb_matrix_driver_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { - if (index < ISSI_LED_TOTAL) { + if (index < IS31FL3733_LED_COUNT) { is31fl3733_set_color(index, red, green, blue); } else { # if WS2812_LED_TOTAL > 0 - rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].r = red; - rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].g = green; - rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].b = blue; + rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].r = red; + rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].g = green; + rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].b = blue; # endif } } diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h index 7fd7575148..57cb40dc24 100644 --- a/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h +++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h @@ -81,7 +81,7 @@ #define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND #define DRIVER_1_LED_TOTAL 61 -#define ISSI_LED_TOTAL DRIVER_1_LED_TOTAL +#define IS31FL3733_LED_COUNT DRIVER_1_LED_TOTAL // Underglow LEDs are WS2812, but someone might want to use RGBLIGHT for them; // don't use those LEDs in RGB Matrix in that case. @@ -91,7 +91,7 @@ # define WS2812_LED_TOTAL 6 #endif -#define RGB_MATRIX_LED_COUNT (ISSI_LED_TOTAL + WS2812_LED_TOTAL) +#define RGB_MATRIX_LED_COUNT (IS31FL3733_LED_COUNT + WS2812_LED_TOTAL) #ifdef RGB_MATRIX_ENABLE # define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c index f76c45e6c5..2e66a3096e 100644 --- a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c +++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c @@ -21,7 +21,7 @@ # include "is31fl3733.h" # include "ws2812.h" -const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { { 0, B_1, A_1, C_1 }, { 0, B_2, A_2, C_2 }, { 0, B_3, A_3, C_3 }, @@ -149,8 +149,8 @@ rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; static void rgb_matrix_driver_init(void) { i2c_init(); - is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, 0); - for (uint8_t index = 0; index < ISSI_LED_TOTAL; index++) { + is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_NONE); + for (uint8_t index = 0; index < IS31FL3733_LED_COUNT; index++) { bool enabled = true; is31fl3733_set_led_control_register(index, enabled, enabled, enabled); } @@ -165,13 +165,13 @@ static void rgb_matrix_driver_flush(void) { } static void rgb_matrix_driver_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { - if (index < ISSI_LED_TOTAL) { + if (index < IS31FL3733_LED_COUNT) { is31fl3733_set_color(index, red, green, blue); } else { # if WS2812_LED_TOTAL > 0 - rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].r = red; - rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].g = green; - rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].b = blue; + rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].r = red; + rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].g = green; + rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].b = blue; # endif } } diff --git a/keyboards/matrix/m20add/config.h b/keyboards/matrix/m20add/config.h index aba2357357..51b050ca7c 100644 --- a/keyboards/matrix/m20add/config.h +++ b/keyboards/matrix/m20add/config.h @@ -80,4 +80,4 @@ #define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND #define IS31FL3731_DRIVER_COUNT 1 -#define RGB_MATRIX_LED_COUNT 20 +#define IS31FL3731_LED_COUNT 20 diff --git a/keyboards/matrix/m20add/rgb_ring.c b/keyboards/matrix/m20add/rgb_ring.c index 553a3d5360..f3fbe83d72 100644 --- a/keyboards/matrix/m20add/rgb_ring.c +++ b/keyboards/matrix/m20add/rgb_ring.c @@ -30,7 +30,7 @@ #endif // rgb ring leds setting -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -371,13 +371,7 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) void rgb_ring_init(void) { - i2c_init(); - is31fl3731_init(IS31FL3731_I2C_ADDRESS_1); - for (int index = 0; index < RGB_MATRIX_LED_COUNT; index++) { - bool enabled = true; - is31fl3731_set_led_control_register(index, enabled, enabled, enabled); - } - is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0); + is31fl3731_init_drivers(); } void rgb_ring_task(void) diff --git a/keyboards/neson_design/700e/700e.c b/keyboards/neson_design/700e/700e.c index d4aa336edb..9def73d6a4 100644 --- a/keyboards/neson_design/700e/700e.c +++ b/keyboards/neson_design/700e/700e.c @@ -111,7 +111,7 @@ static void self_testing(void) } if (rgb_state.index >= ST_LEFT_END) { - for (int i = rgb_state.index - 1; i < RGB_MATRIX_LED_COUNT - rgb_state.index + 1; i++) { + for (int i = rgb_state.index - 1; i < IS31FL3731_LED_COUNT - rgb_state.index + 1; i++) { is31fl3731_set_color(i, led.r, led.g, led.b); } if (rgb_state.index == ST_LEFT_END) { @@ -173,13 +173,13 @@ static void self_testing(void) } break; case ST_STAGE_3: - if (rgb_state.index != RGB_MATRIX_LED_COUNT/2) { + if (rgb_state.index != IS31FL3731_LED_COUNT/2) { is31fl3731_set_color_all(0, 0, 0); } // light left and right - if (rgb_state.index == RGB_MATRIX_LED_COUNT/2) { + if (rgb_state.index == IS31FL3731_LED_COUNT/2) { if (rgb_state.duration) { rgb_state.duration--; } else { @@ -207,7 +207,7 @@ static void self_testing(void) update_ticks(); } -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -294,18 +294,8 @@ void matrix_init_kb(void) setPinOutput(LED_CAPS_LOCK_PIN); writePinLow(LED_CAPS_LOCK_PIN); - i2c_init(); - is31fl3731_init(IS31FL3731_I2C_ADDRESS_1); -#ifdef IS31FL3731_I2C_ADDRESS_2 - is31fl3731_init(IS31FL3731_I2C_ADDRESS_2); -#endif - for (int index = 0; index < RGB_MATRIX_LED_COUNT; index++) { - is31fl3731_set_led_control_register(index, true, true, true); - } - is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0); -#ifdef IS31FL3731_I2C_ADDRESS_2 - is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1); -#endif + is31fl3731_init_drivers(); + update_ticks(); matrix_init_user(); } @@ -350,16 +340,16 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { if (rgb_state.state != NORMAL) return; - for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (uint8_t i = 0; i < IS31FL3731_LED_COUNT; i++) { is31fl3731_set_color(i, start_led[i].r, start_led[i].g, start_led[i].b); } rgb_led_t leds[4]; for (int i = 0; i < 4; i++) { - leds[i].r = start_led[RGB_MATRIX_LED_COUNT+i].g; - leds[i].g = start_led[RGB_MATRIX_LED_COUNT+i].r; - leds[i].b = start_led[RGB_MATRIX_LED_COUNT+i].b; + leds[i].r = start_led[IS31FL3731_LED_COUNT+i].g; + leds[i].g = start_led[IS31FL3731_LED_COUNT+i].r; + leds[i].b = start_led[IS31FL3731_LED_COUNT+i].b; } - //ws2812_setleds(start_led+RGB_MATRIX_LED_COUNT, 4); + //ws2812_setleds(start_led+IS31FL3731_LED_COUNT, 4); ws2812_setleds(leds, 4); } diff --git a/keyboards/neson_design/700e/config.h b/keyboards/neson_design/700e/config.h index bd1d9888ec..4cecb6165a 100644 --- a/keyboards/neson_design/700e/config.h +++ b/keyboards/neson_design/700e/config.h @@ -35,6 +35,6 @@ #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 (DRIVER_1_LED_TOTAL+DRIVER_2_LED_TOTAL) +#define IS31FL3731_LED_COUNT (DRIVER_1_LED_TOTAL+DRIVER_2_LED_TOTAL) #define USB_SUSPEND_WAKEUP_DELAY 1000 diff --git a/keyboards/neson_design/n6/config.h b/keyboards/neson_design/n6/config.h index 22a25a0d92..847b26eb25 100644 --- a/keyboards/neson_design/n6/config.h +++ b/keyboards/neson_design/n6/config.h @@ -35,4 +35,4 @@ #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 (DRIVER_1_LED_TOTAL+DRIVER_2_LED_TOTAL) +#define IS31FL3731_LED_COUNT (DRIVER_1_LED_TOTAL+DRIVER_2_LED_TOTAL) diff --git a/keyboards/neson_design/n6/n6.c b/keyboards/neson_design/n6/n6.c index 5f3ae3a169..38b634eeb7 100644 --- a/keyboards/neson_design/n6/n6.c +++ b/keyboards/neson_design/n6/n6.c @@ -115,7 +115,7 @@ static void self_testing(void) } if (rgb_state.index >= ST_LEFT_END) { - for (int i = rgb_state.index - 1; i < RGB_MATRIX_LED_COUNT - rgb_state.index + 1; i++) { + for (int i = rgb_state.index - 1; i < IS31FL3731_LED_COUNT - rgb_state.index + 1; i++) { is31fl3731_set_color(i, led.r, led.g, led.b); } if (rgb_state.index == ST_LEFT_END) { @@ -177,13 +177,13 @@ static void self_testing(void) } break; case ST_STAGE_3: - if (rgb_state.index != RGB_MATRIX_LED_COUNT/2) { + if (rgb_state.index != IS31FL3731_LED_COUNT/2) { is31fl3731_set_color_all(0, 0, 0); } // light left and right - if (rgb_state.index == RGB_MATRIX_LED_COUNT/2) { + if (rgb_state.index == IS31FL3731_LED_COUNT/2) { if (rgb_state.duration) { rgb_state.duration--; } else { @@ -211,7 +211,7 @@ static void self_testing(void) update_ticks(); } -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -298,18 +298,8 @@ void matrix_init_kb(void) setPinOutput(LED_CAPS_LOCK_PIN); writePinLow(LED_CAPS_LOCK_PIN); - i2c_init(); - is31fl3731_init(IS31FL3731_I2C_ADDRESS_1); -#ifdef IS31FL3731_I2C_ADDRESS_2 - is31fl3731_init(IS31FL3731_I2C_ADDRESS_2); -#endif - for (int index = 0; index < RGB_MATRIX_LED_COUNT; index++) { - is31fl3731_set_led_control_register(index, true, true, true); - } - is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0); -#ifdef IS31FL3731_I2C_ADDRESS_2 - is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1); -#endif + is31fl3731_init_drivers(); + update_ticks(); matrix_init_user(); } @@ -352,10 +342,10 @@ void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { if (rgb_state.state != NORMAL) return; - for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (uint8_t i = 0; i < IS31FL3731_LED_COUNT; i++) { is31fl3731_set_color(i, start_led[i].r, start_led[i].g, start_led[i].b); } - ws2812_setleds(start_led+RGB_MATRIX_LED_COUNT, 1); + ws2812_setleds(start_led+IS31FL3731_LED_COUNT, 1); } bool led_update_kb(led_t led_state) diff --git a/keyboards/novelkeys/nk65/config.h b/keyboards/novelkeys/nk65/config.h index 4dc1ab9165..bbba5cd7d8 100755 --- a/keyboards/novelkeys/nk65/config.h +++ b/keyboards/novelkeys/nk65/config.h @@ -53,7 +53,7 @@ along with this program. If not, see . #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 +#define IS31FL3733_LED_COUNT 128 // These define which keys in the matrix are alphas/mods // Used for backlight effects so colors are different for diff --git a/keyboards/novelkeys/nk87/config.h b/keyboards/novelkeys/nk87/config.h index 3b3e9309c1..41ecb8a8e3 100755 --- a/keyboards/novelkeys/nk87/config.h +++ b/keyboards/novelkeys/nk87/config.h @@ -53,7 +53,7 @@ along with this program. If not, see . #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 +#define IS31FL3733_LED_COUNT 128 // These define which keys in the matrix are alphas/mods // Used for backlight effects so colors are different for diff --git a/keyboards/spaceholdings/nebula12/config.h b/keyboards/spaceholdings/nebula12/config.h index 5e4b48927f..512b775136 100755 --- a/keyboards/spaceholdings/nebula12/config.h +++ b/keyboards/spaceholdings/nebula12/config.h @@ -75,7 +75,7 @@ along with this program. If not, see . #define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND #define IS31FL3731_DRIVER_COUNT 1 -#define RGB_MATRIX_LED_COUNT 16 +#define IS31FL3731_LED_COUNT 16 // These define which keys in the matrix are alphas/mods // Used for backlight effects so colors are different for diff --git a/keyboards/spaceholdings/nebula68/config.h b/keyboards/spaceholdings/nebula68/config.h index 0283a4a036..1ad24d364c 100755 --- a/keyboards/spaceholdings/nebula68/config.h +++ b/keyboards/spaceholdings/nebula68/config.h @@ -59,7 +59,7 @@ along with this program. If not, see . #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 +#define IS31FL3733_LED_COUNT 128 // These define which keys in the matrix are alphas/mods // Used for backlight effects so colors are different for diff --git a/keyboards/tkc/portico/config.h b/keyboards/tkc/portico/config.h index 5599f2a36b..2a1056b4a5 100644 --- a/keyboards/tkc/portico/config.h +++ b/keyboards/tkc/portico/config.h @@ -51,7 +51,7 @@ along with this program. If not, see . #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 +#define IS31FL3731_LED_COUNT 67 #define RGB_BACKLIGHT_ENABLED 1 diff --git a/keyboards/tkc/portico/portico.c b/keyboards/tkc/portico/portico.c index bbb09ef8f6..72f8754f6c 100644 --- a/keyboards/tkc/portico/portico.c +++ b/keyboards/tkc/portico/portico.c @@ -19,7 +19,7 @@ along with this program. If not, see . #ifdef RGB_MATRIX_ENABLE -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { { 0, C2_1, C3_1, C4_1 }, { 0, C1_1, C3_2, C4_2 }, { 0, C1_2, C2_2, C4_3 }, diff --git a/keyboards/tkc/portico75/config.h b/keyboards/tkc/portico75/config.h index 756dfbb54a..3a9b50baca 100644 --- a/keyboards/tkc/portico75/config.h +++ b/keyboards/tkc/portico75/config.h @@ -81,7 +81,7 @@ along with this program. If not, see . // 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 +# define IS31FL3741_LED_COUNT 98 # define RGB_BACKLIGHT_ENABLED 1 diff --git a/keyboards/tkc/portico75/portico75.c b/keyboards/tkc/portico75/portico75.c index 69d6256071..f0751483aa 100644 --- a/keyboards/tkc/portico75/portico75.c +++ b/keyboards/tkc/portico75/portico75.c @@ -20,7 +20,7 @@ along with this program. If not, see . #ifdef RGB_MATRIX_ENABLE -const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = { {0, CS18_SW1, CS17_SW1, CS16_SW1}, {0, CS18_SW2, CS17_SW2, CS16_SW2}, {0, CS18_SW3, CS17_SW3, CS16_SW3}, diff --git a/keyboards/wilba_tech/rama_works_kara/config.h b/keyboards/wilba_tech/rama_works_kara/config.h index 5d8c9df820..09aac7a552 100644 --- a/keyboards/wilba_tech/rama_works_kara/config.h +++ b/keyboards/wilba_tech/rama_works_kara/config.h @@ -19,7 +19,7 @@ #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 +#define IS31FL3731_LED_COUNT 72 // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap #define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/wilba_tech/rama_works_koyu/config.h b/keyboards/wilba_tech/rama_works_koyu/config.h index aad4cd12ac..512cff857b 100644 --- a/keyboards/wilba_tech/rama_works_koyu/config.h +++ b/keyboards/wilba_tech/rama_works_koyu/config.h @@ -19,7 +19,7 @@ #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 +#define IS31FL3731_LED_COUNT 72 // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap #define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/wilba_tech/rama_works_m10_c/config.h b/keyboards/wilba_tech/rama_works_m10_c/config.h index 529896f6ed..1e0d943b96 100644 --- a/keyboards/wilba_tech/rama_works_m10_c/config.h +++ b/keyboards/wilba_tech/rama_works_m10_c/config.h @@ -23,7 +23,7 @@ // IS31FL3731 driver #define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND #define IS31FL3731_DRIVER_COUNT 1 -#define RGB_MATRIX_LED_COUNT 12 +#define IS31FL3731_LED_COUNT 12 // Enable WT RGB backlight #define RGB_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/rama_works_m50_a/config.h b/keyboards/wilba_tech/rama_works_m50_a/config.h index 599550b91f..98149ffa14 100644 --- a/keyboards/wilba_tech/rama_works_m50_a/config.h +++ b/keyboards/wilba_tech/rama_works_m50_a/config.h @@ -24,7 +24,7 @@ #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 +#define IS31FL3731_LED_COUNT 72 // Enable WT RGB backlight #define RGB_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/rama_works_m60_a/config.h b/keyboards/wilba_tech/rama_works_m60_a/config.h index bc7d7e6128..c291ba2db3 100644 --- a/keyboards/wilba_tech/rama_works_m60_a/config.h +++ b/keyboards/wilba_tech/rama_works_m60_a/config.h @@ -19,7 +19,7 @@ #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 +#define IS31FL3731_LED_COUNT 72 // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap #define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/wilba_tech/rama_works_m65_b/config.h b/keyboards/wilba_tech/rama_works_m65_b/config.h index b3e381d77d..9807fbc874 100644 --- a/keyboards/wilba_tech/rama_works_m65_b/config.h +++ b/keyboards/wilba_tech/rama_works_m65_b/config.h @@ -24,7 +24,7 @@ #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 +#define IS31FL3731_LED_COUNT 72 // Enable WT RGB backlight #define RGB_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/rama_works_m65_bx/config.h b/keyboards/wilba_tech/rama_works_m65_bx/config.h index 8070e917d7..64da89ff9e 100644 --- a/keyboards/wilba_tech/rama_works_m65_bx/config.h +++ b/keyboards/wilba_tech/rama_works_m65_bx/config.h @@ -24,7 +24,7 @@ #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 +#define IS31FL3731_LED_COUNT 72 // Enable WT RGB backlight #define RGB_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/rama_works_m6_b/config.h b/keyboards/wilba_tech/rama_works_m6_b/config.h index 27a5e72c04..112cd500be 100644 --- a/keyboards/wilba_tech/rama_works_m6_b/config.h +++ b/keyboards/wilba_tech/rama_works_m6_b/config.h @@ -20,7 +20,7 @@ /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define RGB_MATRIX_LED_COUNT 6 +#define IS31FL3218_LED_COUNT 6 #define RGB_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/rama_works_u80_a/config.h b/keyboards/wilba_tech/rama_works_u80_a/config.h index 4ab2d53c3c..2a0da80fed 100644 --- a/keyboards/wilba_tech/rama_works_u80_a/config.h +++ b/keyboards/wilba_tech/rama_works_u80_a/config.h @@ -42,7 +42,7 @@ #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 +#define IS31FL3731_LED_COUNT 108 #define RGB_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/wt60_a/config.h b/keyboards/wilba_tech/wt60_a/config.h index c9d448fbb8..25a6f25a1c 100644 --- a/keyboards/wilba_tech/wt60_a/config.h +++ b/keyboards/wilba_tech/wt60_a/config.h @@ -64,4 +64,4 @@ #define IS31FL3736_I2C_ADDRESS_1 IS31FL3736_I2C_ADDRESS_GND_GND #define IS31FL3736_DRIVER_COUNT 1 -#define LED_MATRIX_LED_COUNT 96 +#define IS31FL3736_LED_COUNT 96 diff --git a/keyboards/wilba_tech/wt60_b/config.h b/keyboards/wilba_tech/wt60_b/config.h index c5fb1b32c7..926136f332 100644 --- a/keyboards/wilba_tech/wt60_b/config.h +++ b/keyboards/wilba_tech/wt60_b/config.h @@ -26,7 +26,7 @@ #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 +#define IS31FL3731_LED_COUNT 72 #define RGB_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/wt60_bx/config.h b/keyboards/wilba_tech/wt60_bx/config.h index f87d9ff48e..85ab052437 100644 --- a/keyboards/wilba_tech/wt60_bx/config.h +++ b/keyboards/wilba_tech/wt60_bx/config.h @@ -26,7 +26,7 @@ #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 +#define IS31FL3731_LED_COUNT 72 #define RGB_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/wt60_c/config.h b/keyboards/wilba_tech/wt60_c/config.h index 4a1b8b6ad2..ca7366bc32 100644 --- a/keyboards/wilba_tech/wt60_c/config.h +++ b/keyboards/wilba_tech/wt60_c/config.h @@ -26,7 +26,7 @@ #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 +#define IS31FL3731_LED_COUNT 72 #define RGB_BACKLIGHT_ENABLED 1 diff --git a/keyboards/wilba_tech/wt65_a/config.h b/keyboards/wilba_tech/wt65_a/config.h index 04d607e77a..88f28ac844 100644 --- a/keyboards/wilba_tech/wt65_a/config.h +++ b/keyboards/wilba_tech/wt65_a/config.h @@ -64,4 +64,4 @@ #define IS31FL3736_I2C_ADDRESS_1 IS31FL3736_I2C_ADDRESS_GND_GND #define IS31FL3736_DRIVER_COUNT 1 -#define LED_MATRIX_LED_COUNT 96 +#define IS31FL3736_LED_COUNT 96 diff --git a/keyboards/wilba_tech/wt65_b/config.h b/keyboards/wilba_tech/wt65_b/config.h index 780b3c80c4..164caecd00 100644 --- a/keyboards/wilba_tech/wt65_b/config.h +++ b/keyboards/wilba_tech/wt65_b/config.h @@ -64,4 +64,4 @@ #define IS31FL3736_I2C_ADDRESS_1 IS31FL3736_I2C_ADDRESS_GND_GND #define IS31FL3736_DRIVER_COUNT 1 -#define LED_MATRIX_LED_COUNT 96 +#define IS31FL3736_LED_COUNT 96 diff --git a/keyboards/wilba_tech/wt75_a/config.h b/keyboards/wilba_tech/wt75_a/config.h index 29399e148a..a8185a6807 100644 --- a/keyboards/wilba_tech/wt75_a/config.h +++ b/keyboards/wilba_tech/wt75_a/config.h @@ -64,4 +64,4 @@ #define IS31FL3736_I2C_ADDRESS_1 IS31FL3736_I2C_ADDRESS_GND_GND #define IS31FL3736_DRIVER_COUNT 1 -#define LED_MATRIX_LED_COUNT 96 +#define IS31FL3736_LED_COUNT 96 diff --git a/keyboards/wilba_tech/wt75_b/config.h b/keyboards/wilba_tech/wt75_b/config.h index 71ca6891ca..4834251691 100644 --- a/keyboards/wilba_tech/wt75_b/config.h +++ b/keyboards/wilba_tech/wt75_b/config.h @@ -64,4 +64,4 @@ #define IS31FL3736_I2C_ADDRESS_1 IS31FL3736_I2C_ADDRESS_GND_GND #define IS31FL3736_DRIVER_COUNT 1 -#define LED_MATRIX_LED_COUNT 96 +#define IS31FL3736_LED_COUNT 96 diff --git a/keyboards/wilba_tech/wt75_c/config.h b/keyboards/wilba_tech/wt75_c/config.h index b404dccfbb..d1e81992f5 100644 --- a/keyboards/wilba_tech/wt75_c/config.h +++ b/keyboards/wilba_tech/wt75_c/config.h @@ -64,4 +64,4 @@ #define IS31FL3736_I2C_ADDRESS_1 IS31FL3736_I2C_ADDRESS_GND_GND #define IS31FL3736_DRIVER_COUNT 1 -#define LED_MATRIX_LED_COUNT 96 +#define IS31FL3736_LED_COUNT 96 diff --git a/keyboards/wilba_tech/wt80_a/config.h b/keyboards/wilba_tech/wt80_a/config.h index a1f8fbdef6..c6594c1689 100644 --- a/keyboards/wilba_tech/wt80_a/config.h +++ b/keyboards/wilba_tech/wt80_a/config.h @@ -64,4 +64,4 @@ #define IS31FL3736_I2C_ADDRESS_1 IS31FL3736_I2C_ADDRESS_GND_GND #define IS31FL3736_DRIVER_COUNT 1 -#define LED_MATRIX_LED_COUNT 96 +#define IS31FL3736_LED_COUNT 96 diff --git a/keyboards/wilba_tech/wt_mono_backlight.c b/keyboards/wilba_tech/wt_mono_backlight.c index 4add18b14e..e218f0af4b 100644 --- a/keyboards/wilba_tech/wt_mono_backlight.c +++ b/keyboards/wilba_tech/wt_mono_backlight.c @@ -50,7 +50,7 @@ backlight_config g_config = { .color_1 = MONO_BACKLIGHT_COLOR_1, }; -const is31fl3736_led_t PROGMEM g_is31fl3736_leds[LED_MATRIX_LED_COUNT] = { +const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = { {0, A_1}, {0, A_2}, {0, A_3}, @@ -170,14 +170,7 @@ uint32_t g_any_key_hit = 0; void backlight_init_drivers(void) { - // Initialize I2C - i2c_init(); - is31fl3736_init( IS31FL3736_I2C_ADDRESS_1 ); - - for ( uint8_t index = 0; index < 96; index++ ) { - is31fl3736_set_led_control_register( index, true ); - } - is31fl3736_update_led_control_registers( IS31FL3736_I2C_ADDRESS_1, 0 ); + is31fl3736_init_drivers(); } void backlight_set_key_hit(uint8_t row, uint8_t column) diff --git a/keyboards/wilba_tech/wt_rgb_backlight.c b/keyboards/wilba_tech/wt_rgb_backlight.c index 1c865deecf..8bd04c840f 100644 --- a/keyboards/wilba_tech/wt_rgb_backlight.c +++ b/keyboards/wilba_tech/wt_rgb_backlight.c @@ -157,7 +157,7 @@ uint32_t g_any_key_hit = 0; #if defined(RGB_BACKLIGHT_HS60) #define ISSI_ADDR_1 IS31FL3733_I2C_ADDRESS_GND_GND -const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -234,7 +234,7 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { #define ISSI_ADDR_1 IS31FL3733_I2C_ADDRESS_GND_GND #define ISSI_ADDR_2 IS31FL3733_I2C_ADDRESS_GND_SDA -const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -375,7 +375,7 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { #elif defined(RGB_BACKLIGHT_NEBULA12) #define ISSI_ADDR_1 IS31FL3731_I2C_ADDRESS_GND -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -406,7 +406,7 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { #define ISSI_ADDR_2 IS31FL3731_I2C_ADDRESS_SDA #define ISSI_ADDR_3 IS31FL3731_I2C_ADDRESS_SCL -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -531,7 +531,7 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { #define ISSI_ADDR_1 IS31FL3731_I2C_ADDRESS_GND #define ISSI_ADDR_2 IS31FL3731_I2C_ADDRESS_SDA -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -610,7 +610,7 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { #define ISSI_ADDR_1 IS31FL3731_I2C_ADDRESS_GND #define ISSI_ADDR_2 IS31FL3731_I2C_ADDRESS_VCC -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -694,7 +694,7 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { #define ISSI_ADDR_1 IS31FL3741_I2C_ADDRESS_GND #define ISSI_ADDR_2 -const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -817,7 +817,7 @@ const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = { }; #elif defined(RGB_BACKLIGHT_M6_B) -const is31fl3218_led_t PROGMEM g_is31fl3218_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT] = { {OUT1, OUT2, OUT3}, {OUT4, OUT5, OUT6}, {OUT7, OUT8, OUT9}, @@ -829,7 +829,7 @@ const is31fl3218_led_t PROGMEM g_is31fl3218_leds[RGB_MATRIX_LED_COUNT] = { #define ISSI_ADDR_1 IS31FL3731_I2C_ADDRESS_GND #define ISSI_ADDR_2 -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { {0, C1_9, C3_10, C4_10}, // LB1 {0, C1_10, C2_10, C4_11}, // LB2 {0, C1_11, C2_11, C3_11}, // LB3 @@ -847,7 +847,7 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { #define ISSI_ADDR_1 IS31FL3731_I2C_ADDRESS_GND #define ISSI_ADDR_2 IS31FL3731_I2C_ADDRESS_SDA -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -1817,12 +1817,12 @@ void backlight_set_color( int index, uint8_t red, uint8_t green, uint8_t blue ) is31fl3733_set_color( index, red, green, blue ); } #elif defined(RGB_BACKLIGHT_DAWN60) - if( index < RGB_MATRIX_LED_COUNT ) { + if( index < IS31FL3731_LED_COUNT ) { is31fl3731_set_color( index, red, green, blue ); } else { - g_ws2812_leds[index - RGB_MATRIX_LED_COUNT].r = red; - g_ws2812_leds[index - RGB_MATRIX_LED_COUNT].g = green; - g_ws2812_leds[index - RGB_MATRIX_LED_COUNT].b = blue; + g_ws2812_leds[index - IS31FL3731_LED_COUNT].r = red; + g_ws2812_leds[index - IS31FL3731_LED_COUNT].g = green; + g_ws2812_leds[index - IS31FL3731_LED_COUNT].b = blue; ws2812_setleds(g_ws2812_leds, WS2812_LED_TOTAL); } #else @@ -2111,9 +2111,9 @@ void backlight_effect_alphas_mods(void) for (int i = 0; i < WS2812_LED_TOTAL; i++) { if ((RGB_UNDERGLOW_ALPHA_TOP_START <= i && i <= RGB_UNDERGLOW_ALPHA_TOP_END) || (RGB_UNDERGLOW_ALPHA_BOT_START <= i && i <= RGB_UNDERGLOW_ALPHA_BOT_END)) { - backlight_set_color(i + RGB_MATRIX_LED_COUNT, rgb1.r, rgb1.g, rgb1.b); + backlight_set_color(i + IS31FL3731_LED_COUNT, rgb1.r, rgb1.g, rgb1.b); } else { - backlight_set_color(i + RGB_MATRIX_LED_COUNT, rgb2.r, rgb2.g, rgb2.b); + backlight_set_color(i + IS31FL3731_LED_COUNT, rgb2.r, rgb2.g, rgb2.b); } } #endif @@ -2902,7 +2902,7 @@ void backlight_init_drivers(void) #if defined(RGB_BACKLIGHT_M6_B) is31fl3218_init(); - for ( int index = 0; index < RGB_MATRIX_LED_COUNT; index++ ) + for ( int index = 0; index < IS31FL3218_LED_COUNT; index++ ) { bool enabled = true; @@ -2913,9 +2913,9 @@ void backlight_init_drivers(void) // This actually updates the LED drivers is31fl3218_update_led_control_registers(); #elif defined(RGB_BACKLIGHT_HS60) - is31fl3733_init( ISSI_ADDR_1, 0 ); + is31fl3733_init( ISSI_ADDR_1, IS31FL3733_SYNC_NONE ); - for ( int index = 0; index < RGB_MATRIX_LED_COUNT; index++ ) + for ( int index = 0; index < IS31FL3733_LED_COUNT; index++ ) { #if defined(HS60_ANSI) bool enabled = !( ( index == 48-1 ) || //LA48 @@ -2934,10 +2934,10 @@ void backlight_init_drivers(void) // This actually updates the LED drivers is31fl3733_update_led_control_registers( ISSI_ADDR_1, 0 ); #elif defined(RGB_BACKLIGHT_NK65) - is31fl3733_init( ISSI_ADDR_1, 0 ); - is31fl3733_init( ISSI_ADDR_2, 0 ); + is31fl3733_init( ISSI_ADDR_1, IS31FL3733_SYNC_NONE ); + is31fl3733_init( ISSI_ADDR_2, IS31FL3733_SYNC_NONE ); - for ( int index = 0; index < RGB_MATRIX_LED_COUNT; index++ ) + for ( int index = 0; index < IS31FL3733_LED_COUNT; index++ ) { bool enabled = !( ( index == 61-1 ) || //LA61 ( index > 6+64-1 ) ); //LB7-LB64 @@ -2949,10 +2949,10 @@ void backlight_init_drivers(void) is31fl3733_update_led_control_registers( ISSI_ADDR_1, 0 ); is31fl3733_update_led_control_registers( ISSI_ADDR_2, 1 ); #elif defined(RGB_BACKLIGHT_NK87) - is31fl3733_init( ISSI_ADDR_1, 0 ); - is31fl3733_init( ISSI_ADDR_2, 0 ); + is31fl3733_init( ISSI_ADDR_1, IS31FL3733_SYNC_NONE ); + is31fl3733_init( ISSI_ADDR_2, IS31FL3733_SYNC_NONE ); - for ( int index = 0; index < RGB_MATRIX_LED_COUNT; index++ ) + for ( int index = 0; index < IS31FL3733_LED_COUNT; index++ ) { bool enabled = !( ( index == 61-1 ) || //LA61 ( (index >= 2+64-1) && (index <= 4+64-1) ) || @@ -2979,10 +2979,10 @@ void backlight_init_drivers(void) is31fl3733_update_led_control_registers( ISSI_ADDR_1, 0 ); is31fl3733_update_led_control_registers( ISSI_ADDR_2, 1 ); #elif defined(RGB_BACKLIGHT_NEBULA68) - is31fl3733_init( ISSI_ADDR_1, 0 ); - is31fl3733_init( ISSI_ADDR_2, 0 ); + is31fl3733_init( ISSI_ADDR_1, IS31FL3733_SYNC_NONE ); + is31fl3733_init( ISSI_ADDR_2, IS31FL3733_SYNC_NONE ); - for ( int index = 0; index < RGB_MATRIX_LED_COUNT; index++ ) + for ( int index = 0; index < IS31FL3733_LED_COUNT; index++ ) { bool enabled = !( ( index == 61-1 ) || //LA61 ( index > 5+64-1 ) ); //LB6-LB64 @@ -2995,17 +2995,17 @@ void backlight_init_drivers(void) #elif defined(RGB_BACKLIGHT_PORTICO75) is31fl3741_init( ISSI_ADDR_1 ); bool enabled = true; - for ( int index = 0; index < RGB_MATRIX_LED_COUNT; index++ ) + for ( int index = 0; index < IS31FL3741_LED_COUNT; index++ ) { is31fl3741_set_led_control_register( index, enabled, enabled, enabled ); } // This actually updates the LED drivers is31fl3741_update_led_control_registers( ISSI_ADDR_1, 0 ); #elif defined(RGB_BACKLIGHT_KW_MEGA) - is31fl3733_init( ISSI_ADDR_1, 0 ); - is31fl3733_init( ISSI_ADDR_2, 0 ); + is31fl3733_init( ISSI_ADDR_1, IS31FL3733_SYNC_NONE ); + is31fl3733_init( ISSI_ADDR_2, IS31FL3733_SYNC_NONE ); - for ( int index = 0; index < RGB_MATRIX_LED_COUNT; index++ ) + for ( int index = 0; index < IS31FL3733_LED_COUNT; index++ ) { bool enabled = !( ( index == 61-1 ) || //LA61 ( index > 6+64-1 ) ); //LB7-LB64 @@ -3032,7 +3032,7 @@ void backlight_init_drivers(void) bool disable_spacebar_stab_leds = false; #endif - for ( int index = 0; index < RGB_MATRIX_LED_COUNT; index++ ) + for ( int index = 0; index < BACKLIGHT_LED_COUNT; index++ ) { // OR the possible "disabled" cases together, then NOT the result to get the enabled state // LC6 LD13 not present on Zeal65 diff --git a/keyboards/wilba_tech/zeal60/config.h b/keyboards/wilba_tech/zeal60/config.h index 3233c6187d..830dd6d78a 100644 --- a/keyboards/wilba_tech/zeal60/config.h +++ b/keyboards/wilba_tech/zeal60/config.h @@ -19,7 +19,7 @@ #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 +#define IS31FL3731_LED_COUNT 72 // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap #define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/wilba_tech/zeal65/config.h b/keyboards/wilba_tech/zeal65/config.h index 1046ee8108..a7d1b81f84 100644 --- a/keyboards/wilba_tech/zeal65/config.h +++ b/keyboards/wilba_tech/zeal65/config.h @@ -19,7 +19,7 @@ #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 +#define IS31FL3731_LED_COUNT 72 // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap #define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/xelus/dawn60/rev1/config.h b/keyboards/xelus/dawn60/rev1/config.h index c7945df3d6..a2a127f0a4 100644 --- a/keyboards/xelus/dawn60/rev1/config.h +++ b/keyboards/xelus/dawn60/rev1/config.h @@ -19,7 +19,7 @@ #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 +#define IS31FL3731_LED_COUNT 64 // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap #define LOCKING_SUPPORT_ENABLE diff --git a/keyboards/xelus/dawn60/rev1_qmk/config.h b/keyboards/xelus/dawn60/rev1_qmk/config.h index 33629a8ef3..e0ffe30843 100644 --- a/keyboards/xelus/dawn60/rev1_qmk/config.h +++ b/keyboards/xelus/dawn60/rev1_qmk/config.h @@ -30,8 +30,8 @@ #define IS31FL3731_DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 32 #define DRIVER_2_LED_TOTAL 32 -#define ISSI_DRIVER_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) -#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + WS2812_LED_TOTAL) +#define IS31FL3731_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +#define RGB_MATRIX_LED_COUNT (IS31FL3731_LED_COUNT + WS2812_LED_TOTAL) #define RGB_MATRIX_DEFAULT_VAL 80 #define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c index da83d358b9..35ac5a06b2 100644 --- a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c +++ b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c @@ -25,7 +25,7 @@ #ifdef RGB_MATRIX_ENABLE rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; -const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -99,28 +99,6 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { {1, C9_14, C8_14, C7_14}, //D14 {1, C9_15, C8_15, C6_14}, //D15 {1, C9_16, C7_15, C6_15}, //D16 - - //fake underglows 1- 20 - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0}, - {2, 0, 0, 0} }; __attribute__ ((weak)) @@ -169,7 +147,7 @@ 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++) { + for (int index = 0; index < IS31FL3731_LED_COUNT; index++) { bool enabled = true; is31fl3731_set_led_control_register(index, enabled, enabled, enabled); } @@ -187,12 +165,12 @@ static void flush(void) { } static void set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { - if (index < ISSI_DRIVER_TOTAL) { + if (index < IS31FL3731_LED_COUNT) { is31fl3731_set_color(index, red, green, blue); } else { - rgb_matrix_ws2812_array[index - ISSI_DRIVER_TOTAL].r = red; - rgb_matrix_ws2812_array[index - ISSI_DRIVER_TOTAL].g = green; - rgb_matrix_ws2812_array[index - ISSI_DRIVER_TOTAL].b = blue; + rgb_matrix_ws2812_array[index - IS31FL3731_LED_COUNT].r = red; + rgb_matrix_ws2812_array[index - IS31FL3731_LED_COUNT].g = green; + rgb_matrix_ws2812_array[index - IS31FL3731_LED_COUNT].b = blue; } } diff --git a/keyboards/xelus/pachi/rgb/rev1/config.h b/keyboards/xelus/pachi/rgb/rev1/config.h index e51a176c84..8d86a977c1 100644 --- a/keyboards/xelus/pachi/rgb/rev1/config.h +++ b/keyboards/xelus/pachi/rgb/rev1/config.h @@ -41,8 +41,7 @@ #define IS31FL3741_DRIVER_COUNT 1 #define DRIVER_1_LED_TOTAL 117 -#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL -#define ISSI_DRIVER_TOTAL RGB_MATRIX_LED_COUNT +#define IS31FL3741_LED_COUNT DRIVER_1_LED_TOTAL #define RGB_MATRIX_DEFAULT_VAL 80 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/xelus/pachi/rgb/rev1/rev1.c b/keyboards/xelus/pachi/rgb/rev1/rev1.c index 1a3d9b2f4d..e43726115e 100644 --- a/keyboards/xelus/pachi/rgb/rev1/rev1.c +++ b/keyboards/xelus/pachi/rgb/rev1/rev1.c @@ -22,7 +22,7 @@ void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); } #ifdef RGB_MATRIX_ENABLE #include "i2c_master.h" #include "drivers/led/issi/is31fl3741.h" -const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -189,7 +189,7 @@ led_config_t g_led_config = { { static void init(void) { i2c_init(); is31fl3741_init(IS31FL3741_I2C_ADDRESS_1); - for (int index = 0; index < ISSI_DRIVER_TOTAL; index++) { + for (int index = 0; index < IS31FL3741_LED_COUNT; index++) { bool enabled = !( ( index == -1+0+13) || //A13 ( index == -1+13+3) || //B3 ( index == -1+13+13) || //B13 diff --git a/keyboards/xelus/pachi/rgb/rev2/config.h b/keyboards/xelus/pachi/rgb/rev2/config.h index da989e16a2..0afc9e2a43 100644 --- a/keyboards/xelus/pachi/rgb/rev2/config.h +++ b/keyboards/xelus/pachi/rgb/rev2/config.h @@ -41,8 +41,7 @@ #define IS31FL3741_DRIVER_COUNT 1 #define DRIVER_1_LED_TOTAL 117 -#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL -#define ISSI_DRIVER_TOTAL RGB_MATRIX_LED_COUNT +#define IS31FL3741_LED_COUNT DRIVER_1_LED_TOTAL #define RGB_MATRIX_DEFAULT_VAL 80 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/xelus/pachi/rgb/rev2/rev2.c b/keyboards/xelus/pachi/rgb/rev2/rev2.c index 729b6b0545..25d1406653 100644 --- a/keyboards/xelus/pachi/rgb/rev2/rev2.c +++ b/keyboards/xelus/pachi/rgb/rev2/rev2.c @@ -22,7 +22,7 @@ void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); } #ifdef RGB_MATRIX_ENABLE #include "i2c_master.h" #include "drivers/led/issi/is31fl3741.h" -const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -195,7 +195,7 @@ led_config_t g_led_config = { { static void init(void) { i2c_init(); is31fl3741_init(IS31FL3741_I2C_ADDRESS_1); - for (int index = 0; index < ISSI_DRIVER_TOTAL; index++) { + for (int index = 0; index < IS31FL3741_LED_COUNT; index++) { bool enabled = !( ( index == -1+0+13) || //A13 ( index == -1+13+3) || //B3 ( index == -1+13+13) || //B13 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 diff --git a/quantum/rgb_matrix/rgb_matrix_drivers.c b/quantum/rgb_matrix/rgb_matrix_drivers.c index 0fe93ee077..0f979cb233 100644 --- a/quantum/rgb_matrix/rgb_matrix_drivers.c +++ b/quantum/rgb_matrix/rgb_matrix_drivers.c @@ -24,307 +24,73 @@ * be here if shared between boards. */ -#if defined(RGB_MATRIX_IS31FL3218) || defined(RGB_MATRIX_IS31FL3731) || defined(RGB_MATRIX_IS31FL3733) || defined(RGB_MATRIX_IS31FL3736) || defined(RGB_MATRIX_IS31FL3737) || defined(RGB_MATRIX_IS31FL3741) || defined(IS31FLCOMMON) || defined(RGB_MATRIX_SNLED27351) -# include "i2c_master.h" - -static void init(void) { - i2c_init(); - -# if defined(RGB_MATRIX_IS31FL3218) - is31fl3218_init(); - -# elif defined(RGB_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(RGB_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(RGB_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(RGB_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(RGB_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(DRIVER_ADDR_2) - IS31FL_common_init(DRIVER_ADDR_2, ISSI_SSR_2); -# if defined(DRIVER_ADDR_3) - IS31FL_common_init(DRIVER_ADDR_3, ISSI_SSR_3); -# if defined(DRIVER_ADDR_4) - IS31FL_common_init(DRIVER_ADDR_4, ISSI_SSR_4); -# endif -# endif -# endif - -# elif defined(RGB_MATRIX_SNLED27351) - 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 < RGB_MATRIX_LED_COUNT; index++) { - bool enabled = true; - - // This only caches it for later -# if defined(RGB_MATRIX_IS31FL3218) - is31fl3218_set_led_control_register(index, enabled, enabled, enabled); -# elif defined(RGB_MATRIX_IS31FL3731) - is31fl3731_set_led_control_register(index, enabled, enabled, enabled); -# elif defined(RGB_MATRIX_IS31FL3733) - is31fl3733_set_led_control_register(index, enabled, enabled, enabled); -# elif defined(RGB_MATRIX_IS31FL3736) - is31fl3736_set_led_control_register(index, enabled, enabled, enabled); -# elif defined(RGB_MATRIX_IS31FL3737) - is31fl3737_set_led_control_register(index, enabled, enabled, enabled); -# elif defined(RGB_MATRIX_IS31FL3741) - is31fl3741_set_led_control_register(index, enabled, enabled, enabled); -# elif defined(IS31FLCOMMON) - IS31FL_RGB_set_scaling_buffer(index, enabled, enabled, enabled); -# elif defined(RGB_MATRIX_SNLED27351) - snled27351_set_led_control_register(index, enabled, enabled, enabled); -# endif - } - - // This actually updates the LED drivers -# if defined(RGB_MATRIX_IS31FL3218) - is31fl3218_update_led_control_registers(); - -# elif defined(RGB_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(RGB_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(RGB_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(RGB_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(RGB_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(DRIVER_ADDR_2) - IS31FL_common_update_scaling_register(DRIVER_ADDR_2, 1); -# if defined(DRIVER_ADDR_3) - IS31FL_common_update_scaling_register(DRIVER_ADDR_3, 2); -# if defined(DRIVER_ADDR_4) - IS31FL_common_update_scaling_register(DRIVER_ADDR_4, 3); -# endif -# endif -# endif - -# elif defined(RGB_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(RGB_MATRIX_IS31FL3218) +#if defined(RGB_MATRIX_IS31FL3218) const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, + .init = is31fl3218_init, .flush = is31fl3218_update_pwm_buffers, .set_color = is31fl3218_set_color, .set_color_all = is31fl3218_set_color_all, }; -# elif defined(RGB_MATRIX_IS31FL3731) +#elif defined(RGB_MATRIX_IS31FL3731) const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = is31fl3731_flush, - .set_color = is31fl3731_set_color, + .init = is31fl3731_init_drivers, + .flush = is31fl3731_flush, + .set_color = is31fl3731_set_color, .set_color_all = is31fl3731_set_color_all, }; -# elif defined(RGB_MATRIX_IS31FL3733) +#elif defined(RGB_MATRIX_IS31FL3733) const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = is31fl3733_flush, - .set_color = is31fl3733_set_color, + .init = is31fl3733_init_drivers, + .flush = is31fl3733_flush, + .set_color = is31fl3733_set_color, .set_color_all = is31fl3733_set_color_all, }; -# elif defined(RGB_MATRIX_IS31FL3736) +#elif defined(RGB_MATRIX_IS31FL3736) const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = is31fl3736_flush, - .set_color = is31fl3736_set_color, + .init = is31fl3736_init_drivers, + .flush = is31fl3736_flush, + .set_color = is31fl3736_set_color, .set_color_all = is31fl3736_set_color_all, }; -# elif defined(RGB_MATRIX_IS31FL3737) +#elif defined(RGB_MATRIX_IS31FL3737) const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = is31fl3737_flush, - .set_color = is31fl3737_set_color, + .init = is31fl3737_init_drivers, + .flush = is31fl3737_flush, + .set_color = is31fl3737_set_color, .set_color_all = is31fl3737_set_color_all, }; -# elif defined(RGB_MATRIX_IS31FL3741) +#elif defined(RGB_MATRIX_IS31FL3741) const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = is31fl3741_flush, - .set_color = is31fl3741_set_color, + .init = is31fl3741_init_drivers, + .flush = is31fl3741_flush, + .set_color = is31fl3741_set_color, .set_color_all = is31fl3741_set_color_all, }; -# elif defined(IS31FLCOMMON) +#elif defined(IS31FLCOMMON) const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = IS31FL_common_flush, - .set_color = IS31FL_RGB_set_color, + .init = IS31FL_RGB_init_drivers, + .flush = IS31FL_common_flush, + .set_color = IS31FL_RGB_set_color, .set_color_all = IS31FL_RGB_set_color_all, }; -# elif defined(RGB_MATRIX_SNLED27351) +#elif defined(RGB_MATRIX_SNLED27351) const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, - .flush = snled27351_flush, - .set_color = snled27351_set_color, + .init = snled27351_init_drivers, + .flush = snled27351_flush, + .set_color = snled27351_set_color, .set_color_all = snled27351_set_color_all, }; -# endif #elif defined(RGB_MATRIX_AW20216S) -# include "spi_master.h" - -static void init(void) { - spi_init(); - - aw20216s_init(AW20216S_CS_PIN_1, AW20216S_EN_PIN_1); -# if defined(AW20216S_CS_PIN_2) - aw20216s_init(AW20216S_CS_PIN_2, AW20216S_EN_PIN_2); -# endif -} - const rgb_matrix_driver_t rgb_matrix_driver = { - .init = init, + .init = aw20216s_init_drivers, .flush = aw20216s_flush, .set_color = aw20216s_set_color, .set_color_all = aw20216s_set_color_all, @@ -391,4 +157,5 @@ const rgb_matrix_driver_t rgb_matrix_driver = { .set_color = setled, .set_color_all = setled_all, }; + #endif -- cgit v1.2.3 From 5d58534a8c1ad3cf17d2b40797de603d6e83de6d Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 2 Nov 2023 14:31:09 +1100 Subject: LED drivers: use `PACKED` define from util.h (#22380) --- drivers/led/aw20216s.h | 3 ++- drivers/led/issi/is31fl3218-simple.h | 3 ++- drivers/led/issi/is31fl3218.h | 3 ++- drivers/led/issi/is31fl3731-simple.h | 3 ++- drivers/led/issi/is31fl3731.h | 3 ++- drivers/led/issi/is31fl3733-simple.h | 3 ++- drivers/led/issi/is31fl3733.h | 3 ++- drivers/led/issi/is31fl3736-simple.h | 3 ++- drivers/led/issi/is31fl3736.h | 3 ++- drivers/led/issi/is31fl3737-simple.h | 3 ++- drivers/led/issi/is31fl3737.h | 3 ++- drivers/led/issi/is31fl3741-simple.h | 7 ++++--- drivers/led/issi/is31fl3741.h | 11 ++++++----- drivers/led/issi/is31flcommon.h | 9 +++++---- drivers/led/snled27351-simple.h | 3 ++- drivers/led/snled27351.h | 3 ++- 16 files changed, 41 insertions(+), 25 deletions(-) (limited to 'drivers/led/snled27351-simple.h') diff --git a/drivers/led/aw20216s.h b/drivers/led/aw20216s.h index 0d6bd3c189..7ad1e5653b 100644 --- a/drivers/led/aw20216s.h +++ b/drivers/led/aw20216s.h @@ -20,6 +20,7 @@ #include #include "progmem.h" #include "gpio.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef DRIVER_COUNT @@ -63,7 +64,7 @@ typedef struct aw20216s_led_t { uint8_t r; uint8_t g; uint8_t b; -} aw20216s_led_t; +} PACKED aw20216s_led_t; extern const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3218-simple.h b/drivers/led/issi/is31fl3218-simple.h index 959990a93f..0b5abca341 100644 --- a/drivers/led/issi/is31fl3218-simple.h +++ b/drivers/led/issi/is31fl3218-simple.h @@ -19,6 +19,7 @@ #include #include #include "progmem.h" +#include "util.h" #define IS31FL3218_I2C_ADDRESS 0x54 @@ -28,7 +29,7 @@ typedef struct is31fl3218_led_t { uint8_t v; -} __attribute__((packed)) is31fl3218_led_t; +} PACKED is31fl3218_led_t; extern const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3218.h b/drivers/led/issi/is31fl3218.h index c48bc2f238..1d4f881e3c 100644 --- a/drivers/led/issi/is31fl3218.h +++ b/drivers/led/issi/is31fl3218.h @@ -19,6 +19,7 @@ #include #include #include "progmem.h" +#include "util.h" #define IS31FL3218_I2C_ADDRESS 0x54 @@ -30,7 +31,7 @@ typedef struct is31fl3218_led_t { uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) is31fl3218_led_t; +} PACKED is31fl3218_led_t; extern const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3731-simple.h b/drivers/led/issi/is31fl3731-simple.h index 32504c1933..185e80683b 100644 --- a/drivers/led/issi/is31fl3731-simple.h +++ b/drivers/led/issi/is31fl3731-simple.h @@ -21,6 +21,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef LED_DRIVER_ADDR_1 @@ -64,7 +65,7 @@ typedef struct is31fl3731_led_t { uint8_t driver : 2; uint8_t v; -} __attribute__((packed)) is31fl3731_led_t; +} PACKED is31fl3731_led_t; extern const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3731.h b/drivers/led/issi/is31fl3731.h index 73fa018897..77162ded30 100644 --- a/drivers/led/issi/is31fl3731.h +++ b/drivers/led/issi/is31fl3731.h @@ -20,6 +20,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef DRIVER_ADDR_1 @@ -65,7 +66,7 @@ typedef struct is31fl3731_led_t { uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) is31fl3731_led_t; +} PACKED is31fl3731_led_t; extern const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3733-simple.h b/drivers/led/issi/is31fl3733-simple.h index 367af43c6a..65d3298a50 100644 --- a/drivers/led/issi/is31fl3733-simple.h +++ b/drivers/led/issi/is31fl3733-simple.h @@ -23,6 +23,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef LED_DRIVER_COUNT @@ -83,7 +84,7 @@ typedef struct is31fl3733_led_t { uint8_t driver : 2; uint8_t v; -} __attribute__((packed)) is31fl3733_led_t; +} PACKED is31fl3733_led_t; extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3733.h b/drivers/led/issi/is31fl3733.h index 4902b3c1d7..a8407f2154 100644 --- a/drivers/led/issi/is31fl3733.h +++ b/drivers/led/issi/is31fl3733.h @@ -22,6 +22,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef DRIVER_ADDR_1 @@ -108,7 +109,7 @@ typedef struct is31fl3733_led_t { uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) is31fl3733_led_t; +} PACKED is31fl3733_led_t; extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3736-simple.h b/drivers/led/issi/is31fl3736-simple.h index 88422ec3a4..cb751a917e 100644 --- a/drivers/led/issi/is31fl3736-simple.h +++ b/drivers/led/issi/is31fl3736-simple.h @@ -20,6 +20,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef DRIVER_COUNT @@ -78,7 +79,7 @@ typedef struct is31fl3736_led_t { uint8_t driver : 2; uint8_t v; -} __attribute__((packed)) is31fl3736_led_t; +} PACKED is31fl3736_led_t; extern const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3736.h b/drivers/led/issi/is31fl3736.h index b64fdf9d1c..79d8c3276d 100644 --- a/drivers/led/issi/is31fl3736.h +++ b/drivers/led/issi/is31fl3736.h @@ -20,6 +20,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef DRIVER_ADDR_1 @@ -92,7 +93,7 @@ typedef struct is31fl3736_led_t { uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) is31fl3736_led_t; +} PACKED is31fl3736_led_t; extern const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3737-simple.h b/drivers/led/issi/is31fl3737-simple.h index 4c7af02176..dfc2189dec 100644 --- a/drivers/led/issi/is31fl3737-simple.h +++ b/drivers/led/issi/is31fl3737-simple.h @@ -22,6 +22,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef DRIVER_COUNT @@ -68,7 +69,7 @@ typedef struct is31fl3737_led_t { uint8_t driver : 2; uint8_t v; -} __attribute__((packed)) is31fl3737_led_t; +} PACKED is31fl3737_led_t; extern const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3737.h b/drivers/led/issi/is31fl3737.h index fadab70c74..38482584e0 100644 --- a/drivers/led/issi/is31fl3737.h +++ b/drivers/led/issi/is31fl3737.h @@ -22,6 +22,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef DRIVER_ADDR_1 @@ -85,7 +86,7 @@ typedef struct is31fl3737_led_t { uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) is31fl3737_led_t; +} PACKED is31fl3737_led_t; extern const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3741-simple.h b/drivers/led/issi/is31fl3741-simple.h index d97591fa60..d022f3a865 100644 --- a/drivers/led/issi/is31fl3741-simple.h +++ b/drivers/led/issi/is31fl3741-simple.h @@ -22,6 +22,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef DRIVER_COUNT @@ -66,9 +67,9 @@ #endif typedef struct is31fl3741_led_t { - uint32_t driver : 2; - uint32_t v : 10; -} __attribute__((packed)) is31fl3741_led_t; + uint8_t driver : 2; + uint16_t v : 9; +} PACKED is31fl3741_led_t; extern const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT]; diff --git a/drivers/led/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h index 1febb6398b..2b0e449554 100644 --- a/drivers/led/issi/is31fl3741.h +++ b/drivers/led/issi/is31fl3741.h @@ -22,6 +22,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef DRIVER_ADDR_1 @@ -81,11 +82,11 @@ #endif typedef struct is31fl3741_led_t { - uint32_t driver : 2; - uint32_t r : 10; - uint32_t g : 10; - uint32_t b : 10; -} __attribute__((packed)) is31fl3741_led_t; + uint8_t driver : 2; + uint16_t r : 9; + uint16_t g : 9; + uint16_t b : 9; +} PACKED is31fl3741_led_t; extern const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT]; diff --git a/drivers/led/issi/is31flcommon.h b/drivers/led/issi/is31flcommon.h index 94ec9ae3ce..5414b54047 100644 --- a/drivers/led/issi/is31flcommon.h +++ b/drivers/led/issi/is31flcommon.h @@ -23,6 +23,7 @@ #include #include #include "progmem.h" +#include "util.h" // Which variant header file to use #if defined(LED_MATRIX_IS31FL3742A) || defined(RGB_MATRIX_IS31FL3742A) @@ -37,19 +38,19 @@ #ifdef RGB_MATRIX_ENABLE typedef struct is31_led { - uint8_t driver; + uint8_t driver : 2; uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) is31_led; +} PACKED is31_led; extern const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT]; #elif defined(LED_MATRIX_ENABLE) typedef struct is31_led { - uint8_t driver; + uint8_t driver : 2; uint8_t v; -} __attribute__((packed)) is31_led; +} PACKED is31_led; extern const is31_led PROGMEM g_is31_leds[LED_MATRIX_LED_COUNT]; #endif diff --git a/drivers/led/snled27351-simple.h b/drivers/led/snled27351-simple.h index 64257202b9..051271cca8 100644 --- a/drivers/led/snled27351-simple.h +++ b/drivers/led/snled27351-simple.h @@ -19,6 +19,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef DRIVER_COUNT @@ -66,7 +67,7 @@ typedef struct snled27351_led_t { uint8_t driver : 2; uint8_t v; -} __attribute__((packed)) snled27351_led_t; +} PACKED snled27351_led_t; extern const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT]; diff --git a/drivers/led/snled27351.h b/drivers/led/snled27351.h index cecd552dbb..dd60f59183 100644 --- a/drivers/led/snled27351.h +++ b/drivers/led/snled27351.h @@ -19,6 +19,7 @@ #include #include #include "progmem.h" +#include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== #ifdef DRIVER_COUNT @@ -80,7 +81,7 @@ typedef struct snled27351_led_t { uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) snled27351_led_t; +} PACKED snled27351_led_t; extern const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT]; -- cgit v1.2.3 From 84df69572ce47f74213869120211f9db371cd3cf Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 10 Nov 2023 05:14:22 +0000 Subject: Infer LED DRIVER_COUNT from configured addresses (#22311) --- docs/feature_led_matrix.md | 4 ---- docs/feature_rgb_matrix.md | 12 ------------ drivers/led/aw20216s.h | 9 ++++++--- drivers/led/issi/is31fl3731-simple.h | 13 ++++++++++--- drivers/led/issi/is31fl3731.h | 13 ++++++++++--- drivers/led/issi/is31fl3733-simple.h | 13 ++++++++++--- drivers/led/issi/is31fl3733.h | 13 ++++++++++--- drivers/led/issi/is31fl3736-simple.h | 13 ++++++++++--- drivers/led/issi/is31fl3736.h | 13 ++++++++++--- drivers/led/issi/is31fl3737-simple.h | 13 ++++++++++--- drivers/led/issi/is31fl3737.h | 13 ++++++++++--- drivers/led/issi/is31fl3741-simple.h | 13 ++++++++++--- drivers/led/issi/is31fl3741.h | 13 ++++++++++--- drivers/led/issi/is31fl3743.h | 2 +- drivers/led/issi/is31fl3745.h | 2 +- drivers/led/issi/is31flcommon.h | 10 ++++++++++ drivers/led/snled27351-simple.h | 13 ++++++++++--- drivers/led/snled27351.h | 13 ++++++++++--- 18 files changed, 138 insertions(+), 57 deletions(-) (limited to 'drivers/led/snled27351-simple.h') diff --git a/docs/feature_led_matrix.md b/docs/feature_led_matrix.md index 7dd2e71d61..b1ce09d349 100644 --- a/docs/feature_led_matrix.md +++ b/docs/feature_led_matrix.md @@ -21,7 +21,6 @@ You can use between 1 and 4 IS31FL3731 IC's. Do not specify `LED_DRIVER_ADDR_ |----------|-------------|---------| | `IS31FL3731_I2C_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | | `IS31FL3731_I2C_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | -| `IS31FL3731_DRIVER_COUNT` | (Required) How many LED driver IC's are present | | | `LED_MATRIX_LED_COUNT` | (Required) How many LED lights are present across all drivers | | | `IS31FL3731_I2C_ADDRESS_1` | (Required) Address for the first LED driver | | | `IS31FL3731_I2C_ADDRESS_2` | (Optional) Address for the second LED driver | | @@ -43,7 +42,6 @@ Here is an example using 2 drivers. #define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND #define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA -#define IS31FL3731_DRIVER_COUNT 2 #define LED_DRIVER_1_LED_TOTAL 25 #define LED_DRIVER_2_LED_TOTAL 24 #define LED_MATRIX_LED_COUNT (LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL) @@ -96,7 +94,6 @@ Configure the hardware via your `config.h`: |----------|-------------|---------| | `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | | `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | -| `DRIVER_COUNT` | (Required) How many LED driver IC's are present | | | `LED_MATRIX_LED_COUNT` | (Required) How many LED lights are present across all drivers | | | `DRIVER_ADDR_1` | (Optional) Address for the first LED driver | | | `DRIVER_ADDR_` | (Required) Address for the additional LED drivers | | @@ -129,7 +126,6 @@ Here is an example using 2 drivers. ```c #define DRIVER_ADDR_2 0b0100001 -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 66 #define DRIVER_2_LED_TOTAL 42 #define LED_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md index f068058093..01ecff1f3f 100644 --- a/docs/feature_rgb_matrix.md +++ b/docs/feature_rgb_matrix.md @@ -22,7 +22,6 @@ You can use between 1 and 4 IS31FL3731 IC's. Do not specify `DRIVER_ADDR_` de | `IS31FL3731_I2C_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | | `IS31FL3731_I2C_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | | `IS31FL3731_DEGHOST` | (Optional) Set this define to enable de-ghosting by halving Vcc during blanking time | | -| `IS31FL3731_DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | | `RGB_MATRIX_LED_COUNT` | (Required) How many RGB lights are present across all drivers | | | `IS31FL3731_I2C_ADDRESS_1` | (Required) Address for the first RGB driver | | | `IS31FL3731_I2C_ADDRESS_2` | (Optional) Address for the second RGB driver | | @@ -44,7 +43,6 @@ Here is an example using 2 drivers. #define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND #define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA -#define IS31FL3731_DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 25 #define DRIVER_2_LED_TOTAL 24 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -91,7 +89,6 @@ You can use between 1 and 4 IS31FL3733 IC's. Do not specify `DRIVER_ADDR_` de | `IS31FL3733_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF | | `IS31FL3733_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | | `IS31FL3733_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | -| `IS31FL3733_DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | | `RGB_MATRIX_LED_COUNT` | (Required) How many RGB lights are present across all drivers | | | `IS31FL3733_I2C_ADDRESS_1` | (Required) Address for the first RGB driver | | | `IS31FL3733_I2C_ADDRESS_2` | (Optional) Address for the second RGB driver | | @@ -130,7 +127,6 @@ Here is an example using 2 drivers. #define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND #define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_VCC -#define IS31FL3733_DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 58 #define DRIVER_2_LED_TOTAL 10 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -178,7 +174,6 @@ Configure the hardware via your `config.h`: | `IS31FL3736_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF | | `IS31FL3736_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | | `IS31FL3736_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | -| `IS31FL3736_DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | | `RGB_MATRIX_LED_COUNT` | (Required) How many RGB lights are present across all drivers | | | `IS31FL3736_I2C_ADDRESS_1` | (Required) Address for the first RGB driver | | | `IS31FL3736_I2C_ADDRESS_2` | (Optional) Address for the second RGB driver | | @@ -214,7 +209,6 @@ Here is an example using 2 drivers. #define IS31FL3736_I2C_ADDRESS_1 IS31FL3736_I2C_ADDRESS_GND_GND #define IS31FL3736_I2C_ADDRESS_2 IS31FL3736_I2C_ADDRESS_GND_SCL -#define IS31FL3736_DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 30 #define DRIVER_2_LED_TOTAL 32 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -255,7 +249,6 @@ Configure the hardware via your `config.h`: | `IS31FL3737_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF | | `IS31FL3737_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | | `IS31FL3737_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | -| `IS31FL3737_DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | | `RGB_MATRIX_LED_COUNT` | (Required) How many RGB lights are present across all drivers | | | `IS31FL3737_I2C_ADDRESS_1` | (Required) Address for the first RGB driver | | | `IS31FL3737_I2C_ADDRESS_2` | (Optional) Address for the second RGB driver | | @@ -290,7 +283,6 @@ Here is an example using 2 drivers. #define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND #define IS31FL3737_I2C_ADDRESS_2 IS31FL3737_I2C_ADDRESS_SCL -#define IS31FL3737_DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 30 #define DRIVER_2_LED_TOTAL 36 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -341,7 +333,6 @@ Configure the hardware via your `config.h`: |----------|-------------|---------| | `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | | `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | -| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | | `RGB_MATRIX_LED_COUNT` | (Required) How many RGB lights are present across all drivers | | | `DRIVER_ADDR_1` | (Optional) Address for the first RGB driver | | | `DRIVER_ADDR_` | (Required) Address for the additional RGB drivers | | @@ -376,7 +367,6 @@ Here is an example using 2 drivers. ```c #define DRIVER_ADDR_2 0b0100001 -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 66 #define DRIVER_2_LED_TOTAL 42 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -486,7 +476,6 @@ You can use up to 2 AW20216S IC's. Do not specify `DRIVER__xxx` defines for I | `AW20216S_EN_PIN_2` | (Optional) MCU pin connected to second RGB driver hardware enable line | | | `DRIVER_1_LED_TOTAL` | (Required) How many RGB lights are connected to first RGB driver | | | `DRIVER_2_LED_TOTAL` | (Optional) How many RGB lights are connected to second RGB driver | | -| `AW20216S_DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | | `RGB_MATRIX_LED_COUNT` | (Required) How many RGB lights are present across all drivers | | | `AW20216S_SCALING_MAX` | (Optional) LED current scaling value (0-255, higher values mean LED is brighter at full PWM) | 150 | | `AW20216S_GLOBAL_CURRENT_MAX` | (Optional) Driver global current limit (0-255, higher values means the driver may consume more power) | 150 | @@ -502,7 +491,6 @@ Here is an example using 2 drivers. #define AW20216S_EN_PIN_1 C13 #define AW20216S_EN_PIN_2 C13 -#define AW20216S_DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 66 #define DRIVER_2_LED_TOTAL 32 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/drivers/led/aw20216s.h b/drivers/led/aw20216s.h index 7ad1e5653b..d79d632084 100644 --- a/drivers/led/aw20216s.h +++ b/drivers/led/aw20216s.h @@ -23,9 +23,6 @@ #include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== -#ifdef DRIVER_COUNT -# define AW20216S_DRIVER_COUNT DRIVER_COUNT -#endif #ifdef AW_SCALING_MAX # define AW20216S_SCALING_MAX AW_SCALING_MAX #endif @@ -59,6 +56,12 @@ # define AW20216S_LED_COUNT RGB_MATRIX_LED_COUNT #endif +#if defined(AW20216S_CS_PIN_2) +# define AW20216S_DRIVER_COUNT 2 +#elif defined(AW20216S_CS_PIN_1) +# define AW20216S_DRIVER_COUNT 1 +#endif + typedef struct aw20216s_led_t { uint8_t driver : 2; uint8_t r; diff --git a/drivers/led/issi/is31fl3731-simple.h b/drivers/led/issi/is31fl3731-simple.h index 185e80683b..32b42feab0 100644 --- a/drivers/led/issi/is31fl3731-simple.h +++ b/drivers/led/issi/is31fl3731-simple.h @@ -36,9 +36,6 @@ #ifdef LED_DRIVER_ADDR_4 # define IS31FL3731_I2C_ADDRESS_4 LED_DRIVER_ADDR_4 #endif -#ifdef LED_DRIVER_COUNT -# define IS31FL3731_DRIVER_COUNT LED_DRIVER_COUNT -#endif #ifdef ISSI_TIMEOUT # define IS31FL3731_I2C_TIMEOUT ISSI_TIMEOUT #endif @@ -62,6 +59,16 @@ # define IS31FL3731_LED_COUNT LED_MATRIX_LED_COUNT #endif +#if defined IS31FL3731_I2C_ADDRESS_4 +# define IS31FL3731_DRIVER_COUNT 4 +#elif defined IS31FL3731_I2C_ADDRESS_3 +# define IS31FL3731_DRIVER_COUNT 3 +#elif defined IS31FL3731_I2C_ADDRESS_2 +# define IS31FL3731_DRIVER_COUNT 2 +#elif defined IS31FL3731_I2C_ADDRESS_1 +# define IS31FL3731_DRIVER_COUNT 1 +#endif + typedef struct is31fl3731_led_t { uint8_t driver : 2; uint8_t v; diff --git a/drivers/led/issi/is31fl3731.h b/drivers/led/issi/is31fl3731.h index 77162ded30..d7b512e4c4 100644 --- a/drivers/led/issi/is31fl3731.h +++ b/drivers/led/issi/is31fl3731.h @@ -35,9 +35,6 @@ #ifdef DRIVER_ADDR_4 # define IS31FL3731_I2C_ADDRESS_4 DRIVER_ADDR_4 #endif -#ifdef DRIVER_COUNT -# define IS31FL3731_DRIVER_COUNT DRIVER_COUNT -#endif #ifdef ISSI_TIMEOUT # define IS31FL3731_I2C_TIMEOUT ISSI_TIMEOUT #endif @@ -61,6 +58,16 @@ # define IS31FL3731_LED_COUNT RGB_MATRIX_LED_COUNT #endif +#if defined(IS31FL3731_I2C_ADDRESS_4) +# define IS31FL3731_DRIVER_COUNT 4 +#elif defined(IS31FL3731_I2C_ADDRESS_3) +# define IS31FL3731_DRIVER_COUNT 3 +#elif defined(IS31FL3731_I2C_ADDRESS_2) +# define IS31FL3731_DRIVER_COUNT 2 +#elif defined(IS31FL3731_I2C_ADDRESS_1) +# define IS31FL3731_DRIVER_COUNT 1 +#endif + typedef struct is31fl3731_led_t { uint8_t driver : 2; uint8_t r; diff --git a/drivers/led/issi/is31fl3733-simple.h b/drivers/led/issi/is31fl3733-simple.h index 2c6014455f..201d3ff788 100644 --- a/drivers/led/issi/is31fl3733-simple.h +++ b/drivers/led/issi/is31fl3733-simple.h @@ -26,9 +26,6 @@ #include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== -#ifdef LED_DRIVER_COUNT -# define IS31FL3733_DRIVER_COUNT LED_DRIVER_COUNT -#endif #ifdef ISSI_TIMEOUT # define IS31FL3733_I2C_TIMEOUT ISSI_TIMEOUT #endif @@ -81,6 +78,16 @@ # define IS31FL3733_LED_COUNT LED_MATRIX_LED_COUNT #endif +#if defined(IS31FL3733_I2C_ADDRESS_4) +# define IS31FL3733_DRIVER_COUNT 4 +#elif defined(IS31FL3733_I2C_ADDRESS_3) +# define IS31FL3733_DRIVER_COUNT 3 +#elif defined(IS31FL3733_I2C_ADDRESS_2) +# define IS31FL3733_DRIVER_COUNT 2 +#elif defined(IS31FL3733_I2C_ADDRESS_1) +# define IS31FL3733_DRIVER_COUNT 1 +#endif + typedef struct is31fl3733_led_t { uint8_t driver : 2; uint8_t v; diff --git a/drivers/led/issi/is31fl3733.h b/drivers/led/issi/is31fl3733.h index a87d790c44..c86aa9ee1e 100644 --- a/drivers/led/issi/is31fl3733.h +++ b/drivers/led/issi/is31fl3733.h @@ -49,9 +49,6 @@ #ifdef DRIVER_ADDR_4 # define IS31FL3733_SYNC_4 DRIVER_SYNC_4 #endif -#ifdef DRIVER_COUNT -# define IS31FL3733_DRIVER_COUNT DRIVER_COUNT -#endif #ifdef ISSI_TIMEOUT # define IS31FL3733_I2C_TIMEOUT ISSI_TIMEOUT #endif @@ -104,6 +101,16 @@ # define IS31FL3733_LED_COUNT RGB_MATRIX_LED_COUNT #endif +#if defined(IS31FL3733_I2C_ADDRESS_4) +# define IS31FL3733_DRIVER_COUNT 4 +#elif defined(IS31FL3733_I2C_ADDRESS_3) +# define IS31FL3733_DRIVER_COUNT 3 +#elif defined(IS31FL3733_I2C_ADDRESS_2) +# define IS31FL3733_DRIVER_COUNT 2 +#elif defined(IS31FL3733_I2C_ADDRESS_1) +# define IS31FL3733_DRIVER_COUNT 1 +#endif + typedef struct is31fl3733_led_t { uint8_t driver : 2; uint8_t r; diff --git a/drivers/led/issi/is31fl3736-simple.h b/drivers/led/issi/is31fl3736-simple.h index 7e3e728641..9ff9c650aa 100644 --- a/drivers/led/issi/is31fl3736-simple.h +++ b/drivers/led/issi/is31fl3736-simple.h @@ -23,9 +23,6 @@ #include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== -#ifdef DRIVER_COUNT -# define IS31FL3736_DRIVER_COUNT DRIVER_COUNT -#endif #ifdef ISSI_TIMEOUT # define IS31FL3736_I2C_TIMEOUT ISSI_TIMEOUT #endif @@ -76,6 +73,16 @@ # define IS31FL3736_LED_COUNT LED_MATRIX_LED_COUNT #endif +#if defined(IS31FL3736_I2C_ADDRESS_4) +# define IS31FL3736_DRIVER_COUNT 4 +#elif defined(IS31FL3736_I2C_ADDRESS_3) +# define IS31FL3736_DRIVER_COUNT 3 +#elif defined(IS31FL3736_I2C_ADDRESS_2) +# define IS31FL3736_DRIVER_COUNT 2 +#elif defined(IS31FL3736_I2C_ADDRESS_1) +# define IS31FL3736_DRIVER_COUNT 1 +#endif + typedef struct is31fl3736_led_t { uint8_t driver : 2; uint8_t v; diff --git a/drivers/led/issi/is31fl3736.h b/drivers/led/issi/is31fl3736.h index bdb787494d..c3fa158de7 100644 --- a/drivers/led/issi/is31fl3736.h +++ b/drivers/led/issi/is31fl3736.h @@ -35,9 +35,6 @@ #ifdef DRIVER_ADDR_4 # define IS31FL3736_I2C_ADDRESS_4 DRIVER_ADDR_4 #endif -#ifdef DRIVER_COUNT -# define IS31FL3736_DRIVER_COUNT DRIVER_COUNT -#endif #ifdef ISSI_TIMEOUT # define IS31FL3736_I2C_TIMEOUT ISSI_TIMEOUT #endif @@ -88,6 +85,16 @@ # define IS31FL3736_LED_COUNT RGB_MATRIX_LED_COUNT #endif +#if defined(IS31FL3736_I2C_ADDRESS_4) +# define IS31FL3736_DRIVER_COUNT 4 +#elif defined(IS31FL3736_I2C_ADDRESS_3) +# define IS31FL3736_DRIVER_COUNT 3 +#elif defined(IS31FL3736_I2C_ADDRESS_2) +# define IS31FL3736_DRIVER_COUNT 2 +#elif defined(IS31FL3736_I2C_ADDRESS_1) +# define IS31FL3736_DRIVER_COUNT 1 +#endif + typedef struct is31fl3736_led_t { uint8_t driver : 2; uint8_t r; diff --git a/drivers/led/issi/is31fl3737-simple.h b/drivers/led/issi/is31fl3737-simple.h index 3262987697..36125518c6 100644 --- a/drivers/led/issi/is31fl3737-simple.h +++ b/drivers/led/issi/is31fl3737-simple.h @@ -25,9 +25,6 @@ #include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== -#ifdef DRIVER_COUNT -# define IS31FL3737_DRIVER_COUNT DRIVER_COUNT -#endif #ifdef ISSI_TIMEOUT # define IS31FL3737_I2C_TIMEOUT ISSI_TIMEOUT #endif @@ -66,6 +63,16 @@ # define IS31FL3737_LED_COUNT LED_MATRIX_LED_COUNT #endif +#if defined(IS31FL3737_I2C_ADDRESS_4) +# define IS31FL3737_DRIVER_COUNT 4 +#elif defined(IS31FL3737_I2C_ADDRESS_3) +# define IS31FL3737_DRIVER_COUNT 3 +#elif defined(IS31FL3737_I2C_ADDRESS_2) +# define IS31FL3737_DRIVER_COUNT 2 +#elif defined(IS31FL3737_I2C_ADDRESS_1) +# define IS31FL3737_DRIVER_COUNT 1 +#endif + typedef struct is31fl3737_led_t { uint8_t driver : 2; uint8_t v; diff --git a/drivers/led/issi/is31fl3737.h b/drivers/led/issi/is31fl3737.h index 17d2635dd8..6a2f301052 100644 --- a/drivers/led/issi/is31fl3737.h +++ b/drivers/led/issi/is31fl3737.h @@ -37,9 +37,6 @@ #ifdef DRIVER_ADDR_4 # define IS31FL3737_I2C_ADDRESS_4 DRIVER_ADDR_4 #endif -#ifdef DRIVER_COUNT -# define IS31FL3737_DRIVER_COUNT DRIVER_COUNT -#endif #ifdef ISSI_TIMEOUT # define IS31FL3737_I2C_TIMEOUT ISSI_TIMEOUT #endif @@ -81,6 +78,16 @@ # define IS31FL3737_LED_COUNT RGB_MATRIX_LED_COUNT #endif +#if defined(IS31FL3737_I2C_ADDRESS_4) +# define IS31FL3737_DRIVER_COUNT 4 +#elif defined(IS31FL3737_I2C_ADDRESS_3) +# define IS31FL3737_DRIVER_COUNT 3 +#elif defined(IS31FL3737_I2C_ADDRESS_2) +# define IS31FL3737_DRIVER_COUNT 2 +#elif defined(IS31FL3737_I2C_ADDRESS_1) +# define IS31FL3737_DRIVER_COUNT 1 +#endif + typedef struct is31fl3737_led_t { uint8_t driver : 2; uint8_t r; diff --git a/drivers/led/issi/is31fl3741-simple.h b/drivers/led/issi/is31fl3741-simple.h index b8cda3da34..04f0c2793a 100644 --- a/drivers/led/issi/is31fl3741-simple.h +++ b/drivers/led/issi/is31fl3741-simple.h @@ -25,9 +25,6 @@ #include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== -#ifdef DRIVER_COUNT -# define IS31FL3741_DRIVER_COUNT DRIVER_COUNT -#endif #ifdef ISSI_TIMEOUT # define IS31FL3741_I2C_TIMEOUT ISSI_TIMEOUT #endif @@ -66,6 +63,16 @@ # define IS31FL3741_LED_COUNT LED_MATRIX_LED_COUNT #endif +#if defined(IS31FL3741_I2C_ADDRESS_4) +# define IS31FL3741_DRIVER_COUNT 4 +#elif defined(IS31FL3741_I2C_ADDRESS_3) +# define IS31FL3741_DRIVER_COUNT 3 +#elif defined(IS31FL3741_I2C_ADDRESS_2) +# define IS31FL3741_DRIVER_COUNT 2 +#elif defined(IS31FL3741_I2C_ADDRESS_1) +# define IS31FL3741_DRIVER_COUNT 1 +#endif + typedef struct is31fl3741_led_t { uint8_t driver : 2; uint16_t v : 9; diff --git a/drivers/led/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h index 7f3c31a8ab..0c3f7d3d18 100644 --- a/drivers/led/issi/is31fl3741.h +++ b/drivers/led/issi/is31fl3741.h @@ -37,9 +37,6 @@ #ifdef DRIVER_ADDR_4 # define IS31FL3741_I2C_ADDRESS_4 DRIVER_ADDR_4 #endif -#ifdef DRIVER_COUNT -# define IS31FL3741_DRIVER_COUNT DRIVER_COUNT -#endif #ifdef ISSI_TIMEOUT # define IS31FL3741_I2C_TIMEOUT ISSI_TIMEOUT #endif @@ -81,6 +78,16 @@ # define IS31FL3741_LED_COUNT RGB_MATRIX_LED_COUNT #endif +#if defined(IS31FL3741_I2C_ADDRESS_4) +# define IS31FL3741_DRIVER_COUNT 4 +#elif defined(IS31FL3741_I2C_ADDRESS_3) +# define IS31FL3741_DRIVER_COUNT 3 +#elif defined(IS31FL3741_I2C_ADDRESS_2) +# define IS31FL3741_DRIVER_COUNT 2 +#elif defined(IS31FL3741_I2C_ADDRESS_1) +# define IS31FL3741_DRIVER_COUNT 1 +#endif + typedef struct is31fl3741_led_t { uint8_t driver : 2; uint16_t r : 9; diff --git a/drivers/led/issi/is31fl3743.h b/drivers/led/issi/is31fl3743.h index d8fcd79096..706b271254 100644 --- a/drivers/led/issi/is31fl3743.h +++ b/drivers/led/issi/is31fl3743.h @@ -36,7 +36,7 @@ // Set defaults for Spread Spectrum Register #ifndef ISSI_SSR_1 -# if DRIVER_COUNT == 1 +# ifndef DRIVER_ADDR_2 # define ISSI_SSR_1 0x00 # else # define ISSI_SSR_1 0xC0 diff --git a/drivers/led/issi/is31fl3745.h b/drivers/led/issi/is31fl3745.h index ca5dd4a986..1e88aab4a8 100644 --- a/drivers/led/issi/is31fl3745.h +++ b/drivers/led/issi/is31fl3745.h @@ -36,7 +36,7 @@ // Set defaults for Spread Spectrum Register #ifndef ISSI_SSR_1 -# if DRIVER_COUNT == 1 +# ifndef DRIVER_ADDR_2 # define ISSI_SSR_1 0x00 # else # define ISSI_SSR_1 0xC0 diff --git a/drivers/led/issi/is31flcommon.h b/drivers/led/issi/is31flcommon.h index 5414b54047..10613a6eed 100644 --- a/drivers/led/issi/is31flcommon.h +++ b/drivers/led/issi/is31flcommon.h @@ -36,6 +36,16 @@ # include "is31fl3746.h" #endif +#if defined DRIVER_ADDR_4 +# define DRIVER_COUNT 4 +#elif defined DRIVER_ADDR_3 +# define DRIVER_COUNT 3 +#elif defined DRIVER_ADDR_2 +# define DRIVER_COUNT 2 +#elif defined DRIVER_ADDR_1 +# define DRIVER_COUNT 1 +#endif + #ifdef RGB_MATRIX_ENABLE typedef struct is31_led { uint8_t driver : 2; diff --git a/drivers/led/snled27351-simple.h b/drivers/led/snled27351-simple.h index 051271cca8..66e5d162d0 100644 --- a/drivers/led/snled27351-simple.h +++ b/drivers/led/snled27351-simple.h @@ -22,9 +22,6 @@ #include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== -#ifdef DRIVER_COUNT -# define SNLED27351_DRIVER_COUNT DRIVER_COUNT -#endif #ifdef CKLED2001_TIMEOUT # define SNLED27351_I2C_TIMEOUT CKLED2001_TIMEOUT #endif @@ -64,6 +61,16 @@ # define SNLED27351_LED_COUNT LED_MATRIX_LED_COUNT #endif +#if defined(SNLED27351_I2C_ADDRESS_4) +# define SNLED27351_DRIVER_COUNT 4 +#elif defined(SNLED27351_I2C_ADDRESS_3) +# define SNLED27351_DRIVER_COUNT 3 +#elif defined(SNLED27351_I2C_ADDRESS_2) +# define SNLED27351_DRIVER_COUNT 2 +#elif defined(SNLED27351_I2C_ADDRESS_1) +# define SNLED27351_DRIVER_COUNT 1 +#endif + typedef struct snled27351_led_t { uint8_t driver : 2; uint8_t v; diff --git a/drivers/led/snled27351.h b/drivers/led/snled27351.h index dd60f59183..77837d36aa 100644 --- a/drivers/led/snled27351.h +++ b/drivers/led/snled27351.h @@ -22,9 +22,6 @@ #include "util.h" // ======== DEPRECATED DEFINES - DO NOT USE ======== -#ifdef DRIVER_COUNT -# define SNLED27351_DRIVER_COUNT DRIVER_COUNT -#endif #ifdef DRIVER_ADDR_1 # define SNLED27351_I2C_ADDRESS_1 DRIVER_ADDR_1 #endif @@ -76,6 +73,16 @@ # define SNLED27351_LED_COUNT RGB_MATRIX_LED_COUNT #endif +#if defined(SNLED27351_I2C_ADDRESS_4) +# define SNLED27351_DRIVER_COUNT 4 +#elif defined(SNLED27351_I2C_ADDRESS_3) +# define SNLED27351_DRIVER_COUNT 3 +#elif defined(SNLED27351_I2C_ADDRESS_2) +# define SNLED27351_DRIVER_COUNT 2 +#elif defined(SNLED27351_I2C_ADDRESS_1) +# define SNLED27351_DRIVER_COUNT 1 +#endif + typedef struct snled27351_led_t { uint8_t driver : 2; uint8_t r; -- cgit v1.2.3 From dda6e7fb36f20821c60fbd7638c9bd016ef217d6 Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 21 Nov 2023 02:48:23 +1100 Subject: LED drivers: register naming cleanups (#22436) --- drivers/led/aw20216s.c | 47 ++----- drivers/led/aw20216s.h | 22 +++ drivers/led/issi/is31fl3218-simple.c | 11 +- drivers/led/issi/is31fl3218-simple.h | 8 ++ drivers/led/issi/is31fl3218.c | 11 +- drivers/led/issi/is31fl3218.h | 8 ++ drivers/led/issi/is31fl3731-simple.c | 40 ++---- drivers/led/issi/is31fl3731-simple.h | 24 ++++ drivers/led/issi/is31fl3731.c | 40 ++---- drivers/led/issi/is31fl3731.h | 24 ++++ drivers/led/issi/is31fl3733-simple.c | 48 +++---- drivers/led/issi/is31fl3733-simple.h | 21 ++- drivers/led/issi/is31fl3733.c | 48 +++---- drivers/led/issi/is31fl3733.h | 21 ++- drivers/led/issi/is31fl3736-simple.c | 48 +++---- drivers/led/issi/is31fl3736-simple.h | 21 ++- drivers/led/issi/is31fl3736.c | 48 +++---- drivers/led/issi/is31fl3736.h | 21 ++- drivers/led/issi/is31fl3737-simple.c | 48 +++---- drivers/led/issi/is31fl3737-simple.h | 21 ++- drivers/led/issi/is31fl3737.c | 48 +++---- drivers/led/issi/is31fl3737.h | 21 ++- drivers/led/issi/is31fl3741-simple.c | 50 +++---- drivers/led/issi/is31fl3741-simple.h | 23 +++- drivers/led/issi/is31fl3741.c | 50 +++---- drivers/led/issi/is31fl3741.h | 23 +++- drivers/led/snled27351-simple.c | 42 +++--- drivers/led/snled27351-simple.h | 185 ++++++++++++-------------- drivers/led/snled27351.c | 42 +++--- drivers/led/snled27351.h | 185 ++++++++++++-------------- keyboards/input_club/k_type/is31fl3733-dual.c | 48 +++---- keyboards/input_club/k_type/is31fl3733-dual.h | 19 +++ keyboards/keychron/c1_pro/ansi/rgb/config.h | 2 +- keyboards/keychron/c1_pro/ansi/white/config.h | 2 +- keyboards/keychron/q0/plus/config.h | 2 +- keyboards/keychron/q10/config.h | 2 +- keyboards/keychron/q1v2/config.h | 2 +- keyboards/keychron/q2/config.h | 2 +- keyboards/keychron/q3/config.h | 2 +- keyboards/keychron/q4/ansi/v1/config.h | 3 +- keyboards/keychron/q65/config.h | 2 +- keyboards/keychron/q7/config.h | 2 +- keyboards/keychron/q8/config.h | 2 +- keyboards/keychron/s1/ansi/rgb/config.h | 2 +- keyboards/keychron/s1/ansi/white/config.h | 2 +- keyboards/keychron/v1/config.h | 2 +- keyboards/keychron/v10/config.h | 2 +- keyboards/keychron/v2/config.h | 2 +- keyboards/keychron/v3/config.h | 2 +- keyboards/keychron/v7/config.h | 2 +- keyboards/keychron/v8/config.h | 2 +- 51 files changed, 684 insertions(+), 671 deletions(-) (limited to 'drivers/led/snled27351-simple.h') diff --git a/drivers/led/aw20216s.c b/drivers/led/aw20216s.c index 8f3ebec510..ab7f3ccb42 100644 --- a/drivers/led/aw20216s.c +++ b/drivers/led/aw20216s.c @@ -19,39 +19,16 @@ #include "wait.h" #include "spi_master.h" -/* The AW20216S appears to be somewhat similar to the IS31FL743, although quite - * a few things are different, such as the command byte format and page ordering. - * The LED addresses start from 0x00 instead of 0x01. - */ -#define AW20216S_ID 0b1010 << 4 - -#define AW20216S_PAGE_FUNCTION 0x00 << 1 // PG0, Function registers -#define AW20216S_PAGE_PWM 0x01 << 1 // PG1, LED PWM control -#define AW20216S_PAGE_SCALING 0x02 << 1 // PG2, LED current scaling control -#define AW20216S_PAGE_PATCHOICE 0x03 << 1 // PG3, Pattern choice? -#define AW20216S_PAGE_PWMSCALING 0x04 << 1 // PG4, LED PWM + Scaling control? - -#define AW20216S_WRITE 0 -#define AW20216S_READ 1 - -#define AW20216S_REG_CONFIGURATION 0x00 // PG0 -#define AW20216S_REG_GLOBALCURRENT 0x01 // PG0 -#define AW20216S_REG_RESET 0x2F // PG0 -#define AW20216S_REG_MIXFUNCTION 0x46 // PG0 - -// Default value of AW20216S_REG_CONFIGURATION -// D7:D4 = 1011, SWSEL (SW1~SW12 active) -// D3 = 0?, reserved (apparently this should be 1 but it doesn't seem to matter) -// D2:D1 = 00, OSDE (open/short detection enable) -// D0 = 0, CHIPEN (write 1 to enable LEDs when hardware enable pulled high) -#define AW20216S_CONFIG_DEFAULT 0b10110000 -#define AW20216S_MIXCR_DEFAULT 0b00000000 -#define AW20216S_RESET_CMD 0xAE -#define AW20216S_CHIPEN 1 -#define AW20216S_LPEN (0x01 << 1) - #define AW20216S_PWM_REGISTER_COUNT 216 +#ifndef AW20216S_CONFIGURATION +# define AW20216S_CONFIGURATION (AW20216S_CONFIGURATION_SWSEL_1_12 | AW20216S_CONFIGURATION_CHIPEN) +#endif + +#ifndef AW20216S_MIX_FUNCTION +# define AW20216S_MIX_FUNCTION (AW20216S_MIX_FUNCTION_LPEN) +#endif + #ifndef AW20216S_SCALING_MAX # define AW20216S_SCALING_MAX 150 #endif @@ -102,7 +79,7 @@ static inline bool aw20216s_write_register(pin_t cs_pin, uint8_t page, uint8_t r } void aw20216s_soft_reset(pin_t cs_pin) { - aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_REG_RESET, AW20216S_RESET_CMD); + aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_RESET, AW20216S_RESET_MAGIC); } static void aw20216s_init_scaling(pin_t cs_pin) { @@ -114,16 +91,16 @@ static void aw20216s_init_scaling(pin_t cs_pin) { static inline void aw20216s_init_current_limit(pin_t cs_pin) { // Push config - aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_REG_GLOBALCURRENT, AW20216S_GLOBAL_CURRENT_MAX); + aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_GLOBAL_CURRENT, AW20216S_GLOBAL_CURRENT_MAX); } static inline void aw20216s_soft_enable(pin_t cs_pin) { // Push config - aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_REG_CONFIGURATION, AW20216S_CONFIG_DEFAULT | AW20216S_CHIPEN); + aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_CONFIGURATION, AW20216S_CONFIGURATION); } static inline void aw20216s_auto_lowpower(pin_t cs_pin) { - aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_REG_MIXFUNCTION, AW20216S_MIXCR_DEFAULT | AW20216S_LPEN); + aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_MIX_FUNCTION, AW20216S_MIX_FUNCTION); } void aw20216s_init_drivers(void) { diff --git a/drivers/led/aw20216s.h b/drivers/led/aw20216s.h index d79d632084..38a0c92b2f 100644 --- a/drivers/led/aw20216s.h +++ b/drivers/led/aw20216s.h @@ -52,6 +52,28 @@ #define g_aw_leds g_aw20216s_leds // ======== +#define AW20216S_ID (0b1010 << 4) +#define AW20216S_WRITE 0 +#define AW20216S_READ 1 + +#define AW20216S_PAGE_FUNCTION (0x00 << 1) +#define AW20216S_PAGE_PWM (0x01 << 1) +#define AW20216S_PAGE_SCALING (0x02 << 1) +#define AW20216S_PAGE_PATTERN_CHOICE (0x03 << 1) +#define AW20216S_PAGE_PWM_SCALING (0x04 << 1) + +#define AW20216S_FUNCTION_REG_CONFIGURATION 0x00 +#define AW20216S_CONFIGURATION_SWSEL_1_12 (0b1011 << 4) +#define AW20216S_CONFIGURATION_CHIPEN (0b1 << 0) + +#define AW20216S_FUNCTION_REG_GLOBAL_CURRENT 0x01 + +#define AW20216S_FUNCTION_REG_RESET 0x2F +#define AW20216S_RESET_MAGIC 0xAE + +#define AW20216S_FUNCTION_REG_MIX_FUNCTION 0x46 +#define AW20216S_MIX_FUNCTION_LPEN (0b1 << 1) + #if defined(RGB_MATRIX_AW20216S) # define AW20216S_LED_COUNT RGB_MATRIX_LED_COUNT #endif diff --git a/drivers/led/issi/is31fl3218-simple.c b/drivers/led/issi/is31fl3218-simple.c index ea9d76ddbb..ce28c51d18 100644 --- a/drivers/led/issi/is31fl3218-simple.c +++ b/drivers/led/issi/is31fl3218-simple.c @@ -17,13 +17,6 @@ #include #include "i2c_master.h" -// These are the register addresses -#define IS31FL3218_REG_SHUTDOWN 0x00 -#define IS31FL3218_REG_PWM 0x01 -#define IS31FL3218_REG_CONTROL 0x13 -#define IS31FL3218_REG_UPDATE 0x16 -#define IS31FL3218_REG_RESET 0x17 - #define IS31FL3218_PWM_REGISTER_COUNT 18 #define IS31FL3218_LED_CONTROL_REGISTER_COUNT 3 @@ -86,7 +79,7 @@ void is31fl3218_init(void) { // turn off all LEDs in the LED control register for (uint8_t i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) { - is31fl3218_write_register(IS31FL3218_REG_CONTROL + i, 0x00); + is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, 0x00); } // Load PWM registers and LED Control register data @@ -146,7 +139,7 @@ void is31fl3218_update_pwm_buffers(void) { void is31fl3218_update_led_control_registers(void) { if (g_led_control_registers_update_required) { for (int i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) { - is31fl3218_write_register(IS31FL3218_REG_CONTROL + i, g_led_control_registers[i]); + is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, g_led_control_registers[i]); } g_led_control_registers_update_required = false; diff --git a/drivers/led/issi/is31fl3218-simple.h b/drivers/led/issi/is31fl3218-simple.h index 0b5abca341..9492817809 100644 --- a/drivers/led/issi/is31fl3218-simple.h +++ b/drivers/led/issi/is31fl3218-simple.h @@ -21,6 +21,14 @@ #include "progmem.h" #include "util.h" +#define IS31FL3218_REG_SHUTDOWN 0x00 +#define IS31FL3218_REG_PWM 0x01 +#define IS31FL3218_REG_LED_CONTROL_1 0x13 +#define IS31FL3218_REG_LED_CONTROL_2 0x14 +#define IS31FL3218_REG_LED_CONTROL_3 0x15 +#define IS31FL3218_REG_UPDATE 0x16 +#define IS31FL3218_REG_RESET 0x17 + #define IS31FL3218_I2C_ADDRESS 0x54 #if defined(LED_MATRIX_IS31FL3218) diff --git a/drivers/led/issi/is31fl3218.c b/drivers/led/issi/is31fl3218.c index 357cb1ab55..39db09d518 100644 --- a/drivers/led/issi/is31fl3218.c +++ b/drivers/led/issi/is31fl3218.c @@ -17,13 +17,6 @@ #include #include "i2c_master.h" -// These are the register addresses -#define IS31FL3218_REG_SHUTDOWN 0x00 -#define IS31FL3218_REG_PWM 0x01 -#define IS31FL3218_REG_CONTROL 0x13 -#define IS31FL3218_REG_UPDATE 0x16 -#define IS31FL3218_REG_RESET 0x17 - #define IS31FL3218_PWM_REGISTER_COUNT 18 #define IS31FL3218_LED_CONTROL_REGISTER_COUNT 3 @@ -86,7 +79,7 @@ void is31fl3218_init(void) { // turn off all LEDs in the LED control register for (uint8_t i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) { - is31fl3218_write_register(IS31FL3218_REG_CONTROL + i, 0x00); + is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, 0x00); } // Load PWM registers and LED Control register data @@ -162,7 +155,7 @@ void is31fl3218_update_pwm_buffers(void) { void is31fl3218_update_led_control_registers(void) { if (g_led_control_registers_update_required) { for (int i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) { - is31fl3218_write_register(IS31FL3218_REG_CONTROL + i, g_led_control_registers[i]); + is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, g_led_control_registers[i]); } g_led_control_registers_update_required = false; diff --git a/drivers/led/issi/is31fl3218.h b/drivers/led/issi/is31fl3218.h index 1d4f881e3c..ffa7f36d61 100644 --- a/drivers/led/issi/is31fl3218.h +++ b/drivers/led/issi/is31fl3218.h @@ -21,6 +21,14 @@ #include "progmem.h" #include "util.h" +#define IS31FL3218_REG_SHUTDOWN 0x00 +#define IS31FL3218_REG_PWM 0x01 +#define IS31FL3218_REG_LED_CONTROL_1 0x13 +#define IS31FL3218_REG_LED_CONTROL_2 0x14 +#define IS31FL3218_REG_LED_CONTROL_3 0x15 +#define IS31FL3218_REG_UPDATE 0x16 +#define IS31FL3218_REG_RESET 0x17 + #define IS31FL3218_I2C_ADDRESS 0x54 #if defined(RGB_MATRIX_IS31FL3218) diff --git a/drivers/led/issi/is31fl3731-simple.c b/drivers/led/issi/is31fl3731-simple.c index c6f1da5789..8dbfc3cd31 100644 --- a/drivers/led/issi/is31fl3731-simple.c +++ b/drivers/led/issi/is31fl3731-simple.c @@ -22,26 +22,6 @@ #include "i2c_master.h" #include "wait.h" -#define IS31FL3731_REG_CONFIG 0x00 -#define IS31FL3731_REG_CONFIG_PICTUREMODE 0x00 -#define IS31FL3731_REG_CONFIG_AUTOPLAYMODE 0x08 -#define IS31FL3731_REG_CONFIG_AUDIOPLAYMODE 0x18 - -#define IS31FL3731_CONF_PICTUREMODE 0x00 -#define IS31FL3731_CONF_AUTOFRAMEMODE 0x04 -#define IS31FL3731_CONF_AUDIOMODE 0x08 - -#define IS31FL3731_REG_PICTUREFRAME 0x01 - -// Not defined in the datasheet -- See AN for IC -#define IS31FL3731_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting - -#define IS31FL3731_REG_SHUTDOWN 0x0A -#define IS31FL3731_REG_AUDIOSYNC 0x06 - -#define IS31FL3731_COMMANDREGISTER 0xFD -#define IS31FL3731_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine' - #define IS31FL3731_PWM_REGISTER_COUNT 144 #define IS31FL3731_LED_CONTROL_REGISTER_COUNT 18 @@ -144,26 +124,26 @@ void is31fl3731_init(uint8_t addr) { // then disable software shutdown. // select "function register" bank - is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, IS31FL3731_BANK_FUNCTIONREG); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION); // enable software shutdown - is31fl3731_write_register(addr, IS31FL3731_REG_SHUTDOWN, 0x00); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x00); #ifdef IS31FL3731_DEGHOST // set to enable de-ghosting of the array - is31fl3731_write_register(addr, IS31FL3731_REG_GHOST_IMAGE_PREVENTION, 0x10); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION, IS31FL3731_GHOST_IMAGE_PREVENTION_GEN); #endif // this delay was copied from other drivers, might not be needed wait_ms(10); // picture mode - is31fl3731_write_register(addr, IS31FL3731_REG_CONFIG, IS31FL3731_REG_CONFIG_PICTUREMODE); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_CONFIG, IS31FL3731_CONFIG_MODE_PICTURE); // display frame 0 - is31fl3731_write_register(addr, IS31FL3731_REG_PICTUREFRAME, 0x00); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY, 0x00); // audio sync off - is31fl3731_write_register(addr, IS31FL3731_REG_AUDIOSYNC, 0x00); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_AUDIO_SYNC, 0x00); // select bank 0 - is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, 0); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1); // turn off all LEDs in the LED control register for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) { @@ -181,15 +161,15 @@ void is31fl3731_init(uint8_t addr) { } // select "function register" bank - is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, IS31FL3731_BANK_FUNCTIONREG); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION); // disable software shutdown - is31fl3731_write_register(addr, IS31FL3731_REG_SHUTDOWN, 0x01); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x01); // select bank 0 and leave it selected. // most usage after initialization is just writing PWM buffers in bank 0 // as there's not much point in double-buffering - is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, 0); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1); } void is31fl3731_set_value(int index, uint8_t value) { diff --git a/drivers/led/issi/is31fl3731-simple.h b/drivers/led/issi/is31fl3731-simple.h index 32b42feab0..4d173847dd 100644 --- a/drivers/led/issi/is31fl3731-simple.h +++ b/drivers/led/issi/is31fl3731-simple.h @@ -50,6 +50,30 @@ #define g_is31_leds g_is31fl3731_leds // ======== +#define IS31FL3731_REG_COMMAND 0xFD +#define IS31FL3731_COMMAND_FRAME_1 0x00 +#define IS31FL3731_COMMAND_FRAME_2 0x01 +#define IS31FL3731_COMMAND_FRAME_3 0x02 +#define IS31FL3731_COMMAND_FRAME_4 0x03 +#define IS31FL3731_COMMAND_FRAME_5 0x04 +#define IS31FL3731_COMMAND_FRAME_6 0x05 +#define IS31FL3731_COMMAND_FRAME_7 0x06 +#define IS31FL3731_COMMAND_FRAME_8 0x07 +#define IS31FL3731_COMMAND_FUNCTION 0x0B + +#define IS31FL3731_FUNCTION_REG_CONFIG 0x00 +#define IS31FL3731_CONFIG_MODE_PICTURE 0x00 +#define IS31FL3731_CONFIG_MODE_AUTO_PLAY 0x08 +#define IS31FL3731_CONFIG_MODE_AUDIO_PLAY 0x18 + +#define IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY 0x01 +#define IS31FL3731_FUNCTION_REG_AUDIO_SYNC 0x06 +#define IS31FL3731_FUNCTION_REG_SHUTDOWN 0x0A + +// Not defined in the datasheet -- See AN for IC +#define IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION 0xC2 +#define IS31FL3731_GHOST_IMAGE_PREVENTION_GEN 0x10 + #define IS31FL3731_I2C_ADDRESS_GND 0x74 #define IS31FL3731_I2C_ADDRESS_SCL 0x75 #define IS31FL3731_I2C_ADDRESS_SDA 0x76 diff --git a/drivers/led/issi/is31fl3731.c b/drivers/led/issi/is31fl3731.c index 6a64d89ecf..1ab8997731 100644 --- a/drivers/led/issi/is31fl3731.c +++ b/drivers/led/issi/is31fl3731.c @@ -21,26 +21,6 @@ #include "i2c_master.h" #include "wait.h" -#define IS31FL3731_REG_CONFIG 0x00 -#define IS31FL3731_REG_CONFIG_PICTUREMODE 0x00 -#define IS31FL3731_REG_CONFIG_AUTOPLAYMODE 0x08 -#define IS31FL3731_REG_CONFIG_AUDIOPLAYMODE 0x18 - -#define IS31FL3731_CONF_PICTUREMODE 0x00 -#define IS31FL3731_CONF_AUTOFRAMEMODE 0x04 -#define IS31FL3731_CONF_AUDIOMODE 0x08 - -#define IS31FL3731_REG_PICTUREFRAME 0x01 - -// Not defined in the datasheet -- See AN for IC -#define IS31FL3731_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting - -#define IS31FL3731_REG_SHUTDOWN 0x0A -#define IS31FL3731_REG_AUDIOSYNC 0x06 - -#define IS31FL3731_COMMANDREGISTER 0xFD -#define IS31FL3731_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine' - #define IS31FL3731_PWM_REGISTER_COUNT 144 #define IS31FL3731_LED_CONTROL_REGISTER_COUNT 18 @@ -141,26 +121,26 @@ void is31fl3731_init(uint8_t addr) { // then disable software shutdown. // select "function register" bank - is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, IS31FL3731_BANK_FUNCTIONREG); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION); // enable software shutdown - is31fl3731_write_register(addr, IS31FL3731_REG_SHUTDOWN, 0x00); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x00); #ifdef IS31FL3731_DEGHOST // set to enable de-ghosting of the array - is31fl3731_write_register(addr, IS31FL3731_REG_GHOST_IMAGE_PREVENTION, 0x10); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION, IS31FL3731_GHOST_IMAGE_PREVENTION_GEN); #endif // this delay was copied from other drivers, might not be needed wait_ms(10); // picture mode - is31fl3731_write_register(addr, IS31FL3731_REG_CONFIG, IS31FL3731_REG_CONFIG_PICTUREMODE); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_CONFIG, IS31FL3731_CONFIG_MODE_PICTURE); // display frame 0 - is31fl3731_write_register(addr, IS31FL3731_REG_PICTUREFRAME, 0x00); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY, 0x00); // audio sync off - is31fl3731_write_register(addr, IS31FL3731_REG_AUDIOSYNC, 0x00); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_AUDIO_SYNC, 0x00); // select bank 0 - is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, 0); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1); // turn off all LEDs in the LED control register for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) { @@ -178,15 +158,15 @@ void is31fl3731_init(uint8_t addr) { } // select "function register" bank - is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, IS31FL3731_BANK_FUNCTIONREG); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION); // disable software shutdown - is31fl3731_write_register(addr, IS31FL3731_REG_SHUTDOWN, 0x01); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x01); // select bank 0 and leave it selected. // most usage after initialization is just writing PWM buffers in bank 0 // as there's not much point in double-buffering - is31fl3731_write_register(addr, IS31FL3731_COMMANDREGISTER, 0); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1); } void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { diff --git a/drivers/led/issi/is31fl3731.h b/drivers/led/issi/is31fl3731.h index d7b512e4c4..b45cb2b07d 100644 --- a/drivers/led/issi/is31fl3731.h +++ b/drivers/led/issi/is31fl3731.h @@ -49,6 +49,30 @@ #define g_is31_leds g_is31fl3731_leds // ======== +#define IS31FL3731_REG_COMMAND 0xFD +#define IS31FL3731_COMMAND_FRAME_1 0x00 +#define IS31FL3731_COMMAND_FRAME_2 0x01 +#define IS31FL3731_COMMAND_FRAME_3 0x02 +#define IS31FL3731_COMMAND_FRAME_4 0x03 +#define IS31FL3731_COMMAND_FRAME_5 0x04 +#define IS31FL3731_COMMAND_FRAME_6 0x05 +#define IS31FL3731_COMMAND_FRAME_7 0x06 +#define IS31FL3731_COMMAND_FRAME_8 0x07 +#define IS31FL3731_COMMAND_FUNCTION 0x0B + +#define IS31FL3731_FUNCTION_REG_CONFIG 0x00 +#define IS31FL3731_CONFIG_MODE_PICTURE 0x00 +#define IS31FL3731_CONFIG_MODE_AUTO_PLAY 0x08 +#define IS31FL3731_CONFIG_MODE_AUDIO_PLAY 0x18 + +#define IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY 0x01 +#define IS31FL3731_FUNCTION_REG_AUDIO_SYNC 0x06 +#define IS31FL3731_FUNCTION_REG_SHUTDOWN 0x0A + +// Not defined in the datasheet -- See AN for IC +#define IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION 0xC2 +#define IS31FL3731_GHOST_IMAGE_PREVENTION_GEN 0x10 + #define IS31FL3731_I2C_ADDRESS_GND 0x74 #define IS31FL3731_I2C_ADDRESS_SCL 0x75 #define IS31FL3731_I2C_ADDRESS_SDA 0x76 diff --git a/drivers/led/issi/is31fl3733-simple.c b/drivers/led/issi/is31fl3733-simple.c index 63e9f533e2..9f2444c253 100644 --- a/drivers/led/issi/is31fl3733-simple.c +++ b/drivers/led/issi/is31fl3733-simple.c @@ -23,22 +23,6 @@ #include "i2c_master.h" #include "wait.h" -#define IS31FL3733_COMMANDREGISTER 0xFD -#define IS31FL3733_COMMANDREGISTER_WRITELOCK 0xFE -#define IS31FL3733_INTERRUPTMASKREGISTER 0xF0 -#define IS31FL3733_INTERRUPTSTATUSREGISTER 0xF1 - -#define IS31FL3733_PAGE_LEDCONTROL 0x00 // PG0 -#define IS31FL3733_PAGE_PWM 0x01 // PG1 -#define IS31FL3733_PAGE_AUTOBREATH 0x02 // PG2 -#define IS31FL3733_PAGE_FUNCTION 0x03 // PG3 - -#define IS31FL3733_REG_CONFIGURATION 0x00 // PG3 -#define IS31FL3733_REG_GLOBALCURRENT 0x01 // PG3 -#define IS31FL3733_REG_RESET 0x11 // PG3 -#define IS31FL3733_REG_SW_PULLUP 0x0F // PG3 -#define IS31FL3733_REG_CS_PULLDOWN 0x10 // PG3 - #define IS31FL3733_PWM_REGISTER_COUNT 192 #define IS31FL3733_LED_CONTROL_REGISTER_COUNT 24 @@ -62,8 +46,8 @@ # define IS31FL3733_CSPULLDOWN IS31FL3733_PDR_0_OHM #endif -#ifndef IS31FL3733_GLOBALCURRENT -# define IS31FL3733_GLOBALCURRENT 0xFF +#ifndef IS31FL3733_GLOBAL_CURRENT +# define IS31FL3733_GLOBAL_CURRENT 0xFF #endif #ifndef IS31FL3733_SYNC_1 @@ -180,20 +164,20 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) { // Sync is passed so set it according to the datasheet. // Unlock the command register. - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG0 - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_LEDCONTROL); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL); // Turn off all LEDs. for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3733_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG1 - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_PWM); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM); // Set PWM on all LEDs to 0 // No need to setup Breath registers to PWM as that is the default. for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i++) { @@ -201,18 +185,18 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) { } // Unlock the command register. - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG3 - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_FUNCTION); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_FUNCTION); // Set de-ghost pull-up resistors (SWx) - is31fl3733_write_register(addr, IS31FL3733_REG_SW_PULLUP, IS31FL3733_SW_PULLUP); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_SW_PULLUP, IS31FL3733_SW_PULLUP); // Set de-ghost pull-down resistors (CSx) - is31fl3733_write_register(addr, IS31FL3733_REG_CS_PULLDOWN, IS31FL3733_CS_PULLDOWN); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CS_PULLDOWN, IS31FL3733_CS_PULLDOWN); // Set global current to maximum. - is31fl3733_write_register(addr, IS31FL3733_REG_GLOBALCURRENT, IS31FL3733_GLOBALCURRENT); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3733_GLOBAL_CURRENT); // Disable software shutdown. - is31fl3733_write_register(addr, IS31FL3733_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((IS31FL3733_PWM_FREQUENCY & 0b111) << 3) | 0x01); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((IS31FL3733_PWM_FREQUENCY & 0b111) << 3) | 0x01); // Wait 10ms to ensure the device has woken up. wait_ms(10); @@ -256,8 +240,8 @@ void is31fl3733_set_led_control_register(uint8_t index, bool value) { void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) { if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1. - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_PWM); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM); // If any of the transactions fail we risk writing dirty PG0, // refresh page 0 just in case. @@ -271,8 +255,8 @@ void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) { void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_LEDCONTROL); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL); for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3733_write_register(addr, i, g_led_control_registers[index][i]); } diff --git a/drivers/led/issi/is31fl3733-simple.h b/drivers/led/issi/is31fl3733-simple.h index 201d3ff788..c37b1fe5f2 100644 --- a/drivers/led/issi/is31fl3733-simple.h +++ b/drivers/led/issi/is31fl3733-simple.h @@ -42,7 +42,7 @@ # define IS31FL3733_CS_PULLDOWN ISSI_CSPULLUP #endif #ifdef ISSI_GLOBALCURRENT -# define IS31FL3733_GLOBALCURRENT ISSI_GLOBALCURRENT +# define IS31FL3733_GLOBAL_CURRENT ISSI_GLOBALCURRENT #endif #define is31_led is31fl3733_led_t @@ -57,6 +57,25 @@ #define PUR_32KR IS31FL3733_PUR_32K_OHM // ======== +#define IS31FL3733_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3733_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3733_REG_COMMAND 0xFD + +#define IS31FL3733_COMMAND_LED_CONTROL 0x00 +#define IS31FL3733_COMMAND_PWM 0x01 +#define IS31FL3733_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3733_COMMAND_FUNCTION 0x03 + +#define IS31FL3733_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3733_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3733_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3733_FUNCTION_REG_RESET 0x11 + +#define IS31FL3733_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3733_COMMAND_WRITE_LOCK_MAGIC 0xC5 + #define IS31FL3733_I2C_ADDRESS_GND_GND 0x50 #define IS31FL3733_I2C_ADDRESS_GND_SCL 0x51 #define IS31FL3733_I2C_ADDRESS_GND_SDA 0x52 diff --git a/drivers/led/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c index 5a5f352a6a..5857a800d7 100644 --- a/drivers/led/issi/is31fl3733.c +++ b/drivers/led/issi/is31fl3733.c @@ -22,22 +22,6 @@ #include "i2c_master.h" #include "wait.h" -#define IS31FL3733_COMMANDREGISTER 0xFD -#define IS31FL3733_COMMANDREGISTER_WRITELOCK 0xFE -#define IS31FL3733_INTERRUPTMASKREGISTER 0xF0 -#define IS31FL3733_INTERRUPTSTATUSREGISTER 0xF1 - -#define IS31FL3733_PAGE_LEDCONTROL 0x00 // PG0 -#define IS31FL3733_PAGE_PWM 0x01 // PG1 -#define IS31FL3733_PAGE_AUTOBREATH 0x02 // PG2 -#define IS31FL3733_PAGE_FUNCTION 0x03 // PG3 - -#define IS31FL3733_REG_CONFIGURATION 0x00 // PG3 -#define IS31FL3733_REG_GLOBALCURRENT 0x01 // PG3 -#define IS31FL3733_REG_RESET 0x11 // PG3 -#define IS31FL3733_REG_SW_PULLUP 0x0F // PG3 -#define IS31FL3733_REG_CS_PULLDOWN 0x10 // PG3 - #define IS31FL3733_PWM_REGISTER_COUNT 192 #define IS31FL3733_LED_CONTROL_REGISTER_COUNT 24 @@ -61,8 +45,8 @@ # define IS31FL3733_CS_PULLDOWN IS31FL3733_PDR_0_OHM #endif -#ifndef IS31FL3733_GLOBALCURRENT -# define IS31FL3733_GLOBALCURRENT 0xFF +#ifndef IS31FL3733_GLOBAL_CURRENT +# define IS31FL3733_GLOBAL_CURRENT 0xFF #endif #ifndef IS31FL3733_SYNC_1 @@ -179,20 +163,20 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) { // Sync is passed so set it according to the datasheet. // Unlock the command register. - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG0 - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_LEDCONTROL); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL); // Turn off all LEDs. for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3733_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG1 - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_PWM); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM); // Set PWM on all LEDs to 0 // No need to setup Breath registers to PWM as that is the default. for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i++) { @@ -200,18 +184,18 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) { } // Unlock the command register. - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG3 - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_FUNCTION); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_FUNCTION); // Set de-ghost pull-up resistors (SWx) - is31fl3733_write_register(addr, IS31FL3733_REG_SW_PULLUP, IS31FL3733_SW_PULLUP); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_SW_PULLUP, IS31FL3733_SW_PULLUP); // Set de-ghost pull-down resistors (CSx) - is31fl3733_write_register(addr, IS31FL3733_REG_CS_PULLDOWN, IS31FL3733_CS_PULLDOWN); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CS_PULLDOWN, IS31FL3733_CS_PULLDOWN); // Set global current to maximum. - is31fl3733_write_register(addr, IS31FL3733_REG_GLOBALCURRENT, IS31FL3733_GLOBALCURRENT); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3733_GLOBAL_CURRENT); // Disable software shutdown. - is31fl3733_write_register(addr, IS31FL3733_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((IS31FL3733_PWM_FREQUENCY & 0b111) << 3) | 0x01); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((IS31FL3733_PWM_FREQUENCY & 0b111) << 3) | 0x01); // Wait 10ms to ensure the device has woken up. wait_ms(10); @@ -271,8 +255,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) { if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1. - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_PWM); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM); // If any of the transactions fail we risk writing dirty PG0, // refresh page 0 just in case. @@ -286,8 +270,8 @@ void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) { void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3733_write_register(addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_LEDCONTROL); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL); for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3733_write_register(addr, i, g_led_control_registers[index][i]); } diff --git a/drivers/led/issi/is31fl3733.h b/drivers/led/issi/is31fl3733.h index c86aa9ee1e..20804b016b 100644 --- a/drivers/led/issi/is31fl3733.h +++ b/drivers/led/issi/is31fl3733.h @@ -65,7 +65,7 @@ # define IS31FL3733_CS_PULLDOWN ISSI_CSPULLUP #endif #ifdef ISSI_GLOBALCURRENT -# define IS31FL3733_GLOBALCURRENT ISSI_GLOBALCURRENT +# define IS31FL3733_GLOBAL_CURRENT ISSI_GLOBALCURRENT #endif #define is31_led is31fl3733_led_t @@ -80,6 +80,25 @@ #define PUR_32KR IS31FL3733_PUR_32K_OHM // ======== +#define IS31FL3733_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3733_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3733_REG_COMMAND 0xFD + +#define IS31FL3733_COMMAND_LED_CONTROL 0x00 +#define IS31FL3733_COMMAND_PWM 0x01 +#define IS31FL3733_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3733_COMMAND_FUNCTION 0x03 + +#define IS31FL3733_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3733_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3733_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3733_FUNCTION_REG_RESET 0x11 + +#define IS31FL3733_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3733_COMMAND_WRITE_LOCK_MAGIC 0xC5 + #define IS31FL3733_I2C_ADDRESS_GND_GND 0x50 #define IS31FL3733_I2C_ADDRESS_GND_SCL 0x51 #define IS31FL3733_I2C_ADDRESS_GND_SDA 0x52 diff --git a/drivers/led/issi/is31fl3736-simple.c b/drivers/led/issi/is31fl3736-simple.c index e0d76d07c6..e1cce3c48a 100644 --- a/drivers/led/issi/is31fl3736-simple.c +++ b/drivers/led/issi/is31fl3736-simple.c @@ -20,22 +20,6 @@ #include "i2c_master.h" #include "wait.h" -#define IS31FL3736_COMMANDREGISTER 0xFD -#define IS31FL3736_COMMANDREGISTER_WRITELOCK 0xFE -#define IS31FL3736_INTERRUPTMASKREGISTER 0xF0 -#define IS31FL3736_INTERRUPTSTATUSREGISTER 0xF1 - -#define IS31FL3736_PAGE_LEDCONTROL 0x00 // PG0 -#define IS31FL3736_PAGE_PWM 0x01 // PG1 -#define IS31FL3736_PAGE_AUTOBREATH 0x02 // PG2 -#define IS31FL3736_PAGE_FUNCTION 0x03 // PG3 - -#define IS31FL3736_REG_CONFIGURATION 0x00 // PG3 -#define IS31FL3736_REG_GLOBALCURRENT 0x01 // PG3 -#define IS31FL3736_REG_RESET 0x11 // PG3 -#define IS31FL3736_REG_SW_PULLUP 0x0F // PG3 -#define IS31FL3736_REG_CS_PULLDOWN 0x10 // PG3 - #define IS31FL3736_PWM_REGISTER_COUNT 192 // actually 96 #define IS31FL3736_LED_CONTROL_REGISTER_COUNT 24 @@ -59,8 +43,8 @@ # define IS31FL3736_CS_PULLDOWN IS31FL3736_PDR_0_OHM #endif -#ifndef IS31FL3736_GLOBALCURRENT -# define IS31FL3736_GLOBALCURRENT 0xFF +#ifndef IS31FL3736_GLOBAL_CURRENT +# define IS31FL3736_GLOBAL_CURRENT 0xFF #endif // Transfer buffer for TWITransmitData() @@ -152,20 +136,20 @@ void is31fl3736_init(uint8_t addr) { // then disable software shutdown. // Unlock the command register. - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); // Select PG0 - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER, IS31FL3736_PAGE_LEDCONTROL); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_LED_CONTROL); // Turn off all LEDs. for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3736_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); // Select PG1 - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER, IS31FL3736_PAGE_PWM); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM); // Set PWM on all LEDs to 0 // No need to setup Breath registers to PWM as that is the default. for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i++) { @@ -173,18 +157,18 @@ void is31fl3736_init(uint8_t addr) { } // Unlock the command register. - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); // Select PG3 - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER, IS31FL3736_PAGE_FUNCTION); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_FUNCTION); // Set de-ghost pull-up resistors (SWx) - is31fl3736_write_register(addr, IS31FL3736_REG_SW_PULLUP, IS31FL3736_SW_PULLUP); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_SW_PULLUP, IS31FL3736_SW_PULLUP); // Set de-ghost pull-down resistors (CSx) - is31fl3736_write_register(addr, IS31FL3736_REG_CS_PULLDOWN, IS31FL3736_CS_PULLDOWN); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CS_PULLDOWN, IS31FL3736_CS_PULLDOWN); // Set global current to maximum. - is31fl3736_write_register(addr, IS31FL3736_REG_GLOBALCURRENT, IS31FL3736_GLOBALCURRENT); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3736_GLOBAL_CURRENT); // Disable software shutdown. - is31fl3736_write_register(addr, IS31FL3736_REG_CONFIGURATION, ((IS31FL3736_PWM_FREQUENCY & 0b111) << 3) | 0x01); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CONFIGURATION, ((IS31FL3736_PWM_FREQUENCY & 0b111) << 3) | 0x01); // Wait 10ms to ensure the device has woken up. wait_ms(10); @@ -234,8 +218,8 @@ void is31fl3736_set_led_control_register(uint8_t index, bool value) { void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) { if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1 - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER, IS31FL3736_PAGE_PWM); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM); is31fl3736_write_pwm_buffer(addr, g_pwm_buffer[index]); g_pwm_buffer_update_required[index] = false; @@ -245,8 +229,8 @@ void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) { void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER, IS31FL3736_PAGE_LEDCONTROL); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_LED_CONTROL); for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3736_write_register(addr, i, g_led_control_registers[index][i]); } diff --git a/drivers/led/issi/is31fl3736-simple.h b/drivers/led/issi/is31fl3736-simple.h index 9ff9c650aa..a73a872545 100644 --- a/drivers/led/issi/is31fl3736-simple.h +++ b/drivers/led/issi/is31fl3736-simple.h @@ -36,7 +36,7 @@ # define IS31FL3736_CS_PULLDOWN ISSI_CSPULLUP #endif #ifdef ISSI_GLOBALCURRENT -# define IS31FL3736_GLOBALCURRENT ISSI_GLOBALCURRENT +# define IS31FL3736_GLOBAL_CURRENT ISSI_GLOBALCURRENT #endif #define is31_led is31fl3736_led_t @@ -52,6 +52,25 @@ #define PUR_32KR IS31FL3736_PUR_32K_OHM // ======== +#define IS31FL3736_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3736_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3736_REG_COMMAND 0xFD + +#define IS31FL3736_COMMAND_LED_CONTROL 0x00 +#define IS31FL3736_COMMAND_PWM 0x01 +#define IS31FL3736_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3736_COMMAND_FUNCTION 0x03 + +#define IS31FL3736_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3736_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3736_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3736_FUNCTION_REG_RESET 0x11 + +#define IS31FL3736_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3736_COMMAND_WRITE_LOCK_MAGIC 0xC5 + #define IS31FL3736_I2C_ADDRESS_GND_GND 0x50 #define IS31FL3736_I2C_ADDRESS_GND_SCL 0x51 #define IS31FL3736_I2C_ADDRESS_GND_SDA 0x52 diff --git a/drivers/led/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c index 0e3205f19b..30ab796f3e 100644 --- a/drivers/led/issi/is31fl3736.c +++ b/drivers/led/issi/is31fl3736.c @@ -20,22 +20,6 @@ #include "i2c_master.h" #include "wait.h" -#define IS31FL3736_COMMANDREGISTER 0xFD -#define IS31FL3736_COMMANDREGISTER_WRITELOCK 0xFE -#define IS31FL3736_INTERRUPTMASKREGISTER 0xF0 -#define IS31FL3736_INTERRUPTSTATUSREGISTER 0xF1 - -#define IS31FL3736_PAGE_LEDCONTROL 0x00 // PG0 -#define IS31FL3736_PAGE_PWM 0x01 // PG1 -#define IS31FL3736_PAGE_AUTOBREATH 0x02 // PG2 -#define IS31FL3736_PAGE_FUNCTION 0x03 // PG3 - -#define IS31FL3736_REG_CONFIGURATION 0x00 // PG3 -#define IS31FL3736_REG_GLOBALCURRENT 0x01 // PG3 -#define IS31FL3736_REG_RESET 0x11 // PG3 -#define IS31FL3736_REG_SW_PULLUP 0x0F // PG3 -#define IS31FL3736_REG_CS_PULLDOWN 0x10 // PG3 - #define IS31FL3736_PWM_REGISTER_COUNT 192 // actually 96 #define IS31FL3736_LED_CONTROL_REGISTER_COUNT 24 @@ -59,8 +43,8 @@ # define IS31FL3736_CS_PULLDOWN IS31FL3736_PDR_0_OHM #endif -#ifndef IS31FL3736_GLOBALCURRENT -# define IS31FL3736_GLOBALCURRENT 0xFF +#ifndef IS31FL3736_GLOBAL_CURRENT +# define IS31FL3736_GLOBAL_CURRENT 0xFF #endif // Transfer buffer for TWITransmitData() @@ -152,20 +136,20 @@ void is31fl3736_init(uint8_t addr) { // then disable software shutdown. // Unlock the command register. - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); // Select PG0 - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER, IS31FL3736_PAGE_LEDCONTROL); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_REG_LED_CONTROL); // Turn off all LEDs. for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3736_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITELOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); // Select PG1 - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER, IS31FL3736_PAGE_PWM); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM); // Set PWM on all LEDs to 0 // No need to setup Breath registers to PWM as that is the default. for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i++) { @@ -173,18 +157,18 @@ void is31fl3736_init(uint8_t addr) { } // Unlock the command register. - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); // Select PG3 - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER, IS31FL3736_PAGE_FUNCTION); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_FUNCTION); // Set de-ghost pull-up resistors (SWx) - is31fl3736_write_register(addr, IS31FL3736_REG_SW_PULLUP, IS31FL3736_SW_PULLUP); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_SW_PULLUP, IS31FL3736_SW_PULLUP); // Set de-ghost pull-down resistors (CSx) - is31fl3736_write_register(addr, IS31FL3736_REG_CS_PULLDOWN, IS31FL3736_CS_PULLDOWN); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CS_PULLDOWN, IS31FL3736_CS_PULLDOWN); // Set global current to maximum. - is31fl3736_write_register(addr, IS31FL3736_REG_GLOBALCURRENT, IS31FL3736_GLOBALCURRENT); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3736_GLOBAL_CURRENT); // Disable software shutdown. - is31fl3736_write_register(addr, IS31FL3736_REG_CONFIGURATION, ((IS31FL3736_PWM_FREQUENCY & 0b111) << 3) | 0x01); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CONFIGURATION, ((IS31FL3736_PWM_FREQUENCY & 0b111) << 3) | 0x01); // Wait 10ms to ensure the device has woken up. wait_ms(10); @@ -251,8 +235,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) { if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1 - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER, IS31FL3736_PAGE_PWM); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM); is31fl3736_write_pwm_buffer(addr, g_pwm_buffer[index]); g_pwm_buffer_update_required[index] = false; @@ -262,8 +246,8 @@ void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) { void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3736_write_register(addr, IS31FL3736_COMMANDREGISTER, IS31FL3736_PAGE_LEDCONTROL); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_LED_CONTROL); for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3736_write_register(addr, i, g_led_control_registers[index][i]); } diff --git a/drivers/led/issi/is31fl3736.h b/drivers/led/issi/is31fl3736.h index c3fa158de7..a5710d7ed4 100644 --- a/drivers/led/issi/is31fl3736.h +++ b/drivers/led/issi/is31fl3736.h @@ -48,7 +48,7 @@ # define IS31FL3736_CS_PULLDOWN ISSI_CSPULLUP #endif #ifdef ISSI_GLOBALCURRENT -# define IS31FL3736_GLOBALCURRENT ISSI_GLOBALCURRENT +# define IS31FL3736_GLOBAL_CURRENT ISSI_GLOBALCURRENT #endif #define is31_led is31fl3736_led_t @@ -64,6 +64,25 @@ #define PUR_32KR IS31FL3736_PUR_32K_OHM // ======== +#define IS31FL3736_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3736_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3736_REG_COMMAND 0xFD + +#define IS31FL3736_COMMAND_LED_CONTROL 0x00 +#define IS31FL3736_COMMAND_PWM 0x01 +#define IS31FL3736_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3736_COMMAND_FUNCTION 0x03 + +#define IS31FL3736_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3736_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3736_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3736_FUNCTION_REG_RESET 0x11 + +#define IS31FL3736_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3736_COMMAND_WRITE_LOCK_MAGIC 0xC5 + #define IS31FL3736_I2C_ADDRESS_GND_GND 0x50 #define IS31FL3736_I2C_ADDRESS_GND_SCL 0x51 #define IS31FL3736_I2C_ADDRESS_GND_SDA 0x52 diff --git a/drivers/led/issi/is31fl3737-simple.c b/drivers/led/issi/is31fl3737-simple.c index 904b7c65bd..7f641f4ca5 100644 --- a/drivers/led/issi/is31fl3737-simple.c +++ b/drivers/led/issi/is31fl3737-simple.c @@ -22,22 +22,6 @@ #include "i2c_master.h" #include "wait.h" -#define IS31FL3737_COMMANDREGISTER 0xFD -#define IS31FL3737_COMMANDREGISTER_WRITELOCK 0xFE -#define IS31FL3737_INTERRUPTMASKREGISTER 0xF0 -#define IS31FL3737_INTERRUPTSTATUSREGISTER 0xF1 - -#define IS31FL3737_PAGE_LEDCONTROL 0x00 // PG0 -#define IS31FL3737_PAGE_PWM 0x01 // PG1 -#define IS31FL3737_PAGE_AUTOBREATH 0x02 // PG2 -#define IS31FL3737_PAGE_FUNCTION 0x03 // PG3 - -#define IS31FL3737_REG_CONFIGURATION 0x00 // PG3 -#define IS31FL3737_REG_GLOBALCURRENT 0x01 // PG3 -#define IS31FL3737_REG_RESET 0x11 // PG3 -#define IS31FL3737_REG_SW_PULLUP 0x0F // PG3 -#define IS31FL3737_REG_CS_PULLDOWN 0x10 // PG3 - #define IS31FL3737_PWM_REGISTER_COUNT 192 // actually 144 #define IS31FL3737_LED_CONTROL_REGISTER_COUNT 24 @@ -61,8 +45,8 @@ # define IS31FL3737_CS_PULLDOWN IS31FL3737_PDR_0_OHM #endif -#ifndef IS31FL3737_GLOBALCURRENT -# define IS31FL3737_GLOBALCURRENT 0xFF +#ifndef IS31FL3737_GLOBAL_CURRENT +# define IS31FL3737_GLOBAL_CURRENT 0xFF #endif // Transfer buffer for TWITransmitData() @@ -155,20 +139,20 @@ void is31fl3737_init(uint8_t addr) { // then disable software shutdown. // Unlock the command register. - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); // Select PG0 - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER, IS31FL3737_PAGE_LEDCONTROL); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL); // Turn off all LEDs. for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3737_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); // Select PG1 - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER, IS31FL3737_PAGE_PWM); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM); // Set PWM on all LEDs to 0 // No need to setup Breath registers to PWM as that is the default. for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i++) { @@ -176,18 +160,18 @@ void is31fl3737_init(uint8_t addr) { } // Unlock the command register. - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); // Select PG3 - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER, IS31FL3737_PAGE_FUNCTION); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_FUNCTION); // Set de-ghost pull-up resistors (SWx) - is31fl3737_write_register(addr, IS31FL3737_REG_SW_PULLUP, IS31FL3737_SW_PULLUP); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_SW_PULLUP, IS31FL3737_SW_PULLUP); // Set de-ghost pull-down resistors (CSx) - is31fl3737_write_register(addr, IS31FL3737_REG_CS_PULLDOWN, IS31FL3737_CS_PULLDOWN); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CS_PULLDOWN, IS31FL3737_CS_PULLDOWN); // Set global current to maximum. - is31fl3737_write_register(addr, IS31FL3737_REG_GLOBALCURRENT, IS31FL3737_GLOBALCURRENT); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3737_GLOBAL_CURRENT); // Disable software shutdown. - is31fl3737_write_register(addr, IS31FL3737_REG_CONFIGURATION, ((IS31FL3737_PWM_FREQUENCY & 0b111) << 3) | 0x01); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CONFIGURATION, ((IS31FL3737_PWM_FREQUENCY & 0b111) << 3) | 0x01); // Wait 10ms to ensure the device has woken up. wait_ms(10); @@ -231,8 +215,8 @@ void is31fl3737_set_led_control_register(uint8_t index, bool value) { void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) { if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1 - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER, IS31FL3737_PAGE_PWM); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM); is31fl3737_write_pwm_buffer(addr, g_pwm_buffer[index]); g_pwm_buffer_update_required[index] = false; @@ -242,8 +226,8 @@ void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) { void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER, IS31FL3737_PAGE_LEDCONTROL); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL); for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3737_write_register(addr, i, g_led_control_registers[index][i]); } diff --git a/drivers/led/issi/is31fl3737-simple.h b/drivers/led/issi/is31fl3737-simple.h index 36125518c6..2658702b1b 100644 --- a/drivers/led/issi/is31fl3737-simple.h +++ b/drivers/led/issi/is31fl3737-simple.h @@ -41,7 +41,7 @@ # define IS31FL3737_CS_PULLDOWN ISSI_CSPULLUP #endif #ifdef ISSI_GLOBALCURRENT -# define IS31FL3737_GLOBALCURRENT ISSI_GLOBALCURRENT +# define IS31FL3737_GLOBAL_CURRENT ISSI_GLOBALCURRENT #endif #define PUR_0R IS31FL3737_PUR_0_OHM @@ -54,6 +54,25 @@ #define PUR_32KR IS31FL3737_PUR_32K_OHM // ======== +#define IS31FL3737_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3737_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3737_REG_COMMAND 0xFD + +#define IS31FL3737_COMMAND_LED_CONTROL 0x00 +#define IS31FL3737_COMMAND_PWM 0x01 +#define IS31FL3737_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3737_COMMAND_FUNCTION 0x03 + +#define IS31FL3737_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3737_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3737_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3737_FUNCTION_REG_RESET 0x11 + +#define IS31FL3737_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3737_COMMAND_WRITE_LOCK_MAGIC 0xC5 + #define IS31FL3737_I2C_ADDRESS_GND 0x50 #define IS31FL3737_I2C_ADDRESS_SCL 0x55 #define IS31FL3737_I2C_ADDRESS_SDA 0x5A diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c index 27860558a5..a458431952 100644 --- a/drivers/led/issi/is31fl3737.c +++ b/drivers/led/issi/is31fl3737.c @@ -22,22 +22,6 @@ #include "i2c_master.h" #include "wait.h" -#define IS31FL3737_COMMANDREGISTER 0xFD -#define IS31FL3737_COMMANDREGISTER_WRITELOCK 0xFE -#define IS31FL3737_INTERRUPTMASKREGISTER 0xF0 -#define IS31FL3737_INTERRUPTSTATUSREGISTER 0xF1 - -#define IS31FL3737_PAGE_LEDCONTROL 0x00 // PG0 -#define IS31FL3737_PAGE_PWM 0x01 // PG1 -#define IS31FL3737_PAGE_AUTOBREATH 0x02 // PG2 -#define IS31FL3737_PAGE_FUNCTION 0x03 // PG3 - -#define IS31FL3737_REG_CONFIGURATION 0x00 // PG3 -#define IS31FL3737_REG_GLOBALCURRENT 0x01 // PG3 -#define IS31FL3737_REG_RESET 0x11 // PG3 -#define IS31FL3737_REG_SW_PULLUP 0x0F // PG3 -#define IS31FL3737_REG_CS_PULLDOWN 0x10 // PG3 - #define IS31FL3737_PWM_REGISTER_COUNT 192 // actually 144 #define IS31FL3737_LED_CONTROL_REGISTER_COUNT 24 @@ -61,8 +45,8 @@ # define IS31FL3737_CS_PULLDOWN IS31FL3737_PDR_0_OHM #endif -#ifndef IS31FL3737_GLOBALCURRENT -# define IS31FL3737_GLOBALCURRENT 0xFF +#ifndef IS31FL3737_GLOBAL_CURRENT +# define IS31FL3737_GLOBAL_CURRENT 0xFF #endif // Transfer buffer for TWITransmitData() @@ -155,20 +139,20 @@ void is31fl3737_init(uint8_t addr) { // then disable software shutdown. // Unlock the command register. - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); // Select PG0 - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER, IS31FL3737_PAGE_LEDCONTROL); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL); // Turn off all LEDs. for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3737_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); // Select PG1 - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER, IS31FL3737_PAGE_PWM); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM); // Set PWM on all LEDs to 0 // No need to setup Breath registers to PWM as that is the default. for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i++) { @@ -176,18 +160,18 @@ void is31fl3737_init(uint8_t addr) { } // Unlock the command register. - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); // Select PG3 - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER, IS31FL3737_PAGE_FUNCTION); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_FUNCTION); // Set de-ghost pull-up resistors (SWx) - is31fl3737_write_register(addr, IS31FL3737_REG_SW_PULLUP, IS31FL3737_SW_PULLUP); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_SW_PULLUP, IS31FL3737_SW_PULLUP); // Set de-ghost pull-down resistors (CSx) - is31fl3737_write_register(addr, IS31FL3737_REG_CS_PULLDOWN, IS31FL3737_CS_PULLDOWN); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CS_PULLDOWN, IS31FL3737_CS_PULLDOWN); // Set global current to maximum. - is31fl3737_write_register(addr, IS31FL3737_REG_GLOBALCURRENT, IS31FL3737_GLOBALCURRENT); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3737_GLOBAL_CURRENT); // Disable software shutdown. - is31fl3737_write_register(addr, IS31FL3737_REG_CONFIGURATION, ((IS31FL3737_PWM_FREQUENCY & 0b111) << 3) | 0x01); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CONFIGURATION, ((IS31FL3737_PWM_FREQUENCY & 0b111) << 3) | 0x01); // Wait 10ms to ensure the device has woken up. wait_ms(10); @@ -247,8 +231,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) { if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1 - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER, IS31FL3737_PAGE_PWM); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM); is31fl3737_write_pwm_buffer(addr, g_pwm_buffer[index]); g_pwm_buffer_update_required[index] = false; @@ -258,8 +242,8 @@ void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) { void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3737_write_register(addr, IS31FL3737_COMMANDREGISTER, IS31FL3737_PAGE_LEDCONTROL); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL); for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3737_write_register(addr, i, g_led_control_registers[index][i]); } diff --git a/drivers/led/issi/is31fl3737.h b/drivers/led/issi/is31fl3737.h index 6a2f301052..8de3bf4ef5 100644 --- a/drivers/led/issi/is31fl3737.h +++ b/drivers/led/issi/is31fl3737.h @@ -53,7 +53,7 @@ # define IS31FL3737_CS_PULLDOWN ISSI_CSPULLUP #endif #ifdef ISSI_GLOBALCURRENT -# define IS31FL3737_GLOBALCURRENT ISSI_GLOBALCURRENT +# define IS31FL3737_GLOBAL_CURRENT ISSI_GLOBALCURRENT #endif #define is31_led is31fl3737_led_t @@ -69,6 +69,25 @@ #define PUR_32KR IS31FL3737_PUR_32K_OHM // ======== +#define IS31FL3737_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3737_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3737_REG_COMMAND 0xFD + +#define IS31FL3737_COMMAND_LED_CONTROL 0x00 +#define IS31FL3737_COMMAND_PWM 0x01 +#define IS31FL3737_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3737_COMMAND_FUNCTION 0x03 + +#define IS31FL3737_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3737_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3737_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3737_FUNCTION_REG_RESET 0x11 + +#define IS31FL3737_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3737_COMMAND_WRITE_LOCK_MAGIC 0xC5 + #define IS31FL3737_I2C_ADDRESS_GND 0x50 #define IS31FL3737_I2C_ADDRESS_SCL 0x55 #define IS31FL3737_I2C_ADDRESS_SDA 0x5A diff --git a/drivers/led/issi/is31fl3741-simple.c b/drivers/led/issi/is31fl3741-simple.c index 582551c05e..f7009853ba 100644 --- a/drivers/led/issi/is31fl3741-simple.c +++ b/drivers/led/issi/is31fl3741-simple.c @@ -22,24 +22,6 @@ #include "i2c_master.h" #include "wait.h" -#define IS31FL3741_COMMANDREGISTER 0xFD -#define IS31FL3741_COMMANDREGISTER_WRITELOCK 0xFE -#define IS31FL3741_INTERRUPTMASKREGISTER 0xF0 -#define IS31FL3741_INTERRUPTSTATUSREGISTER 0xF1 -#define IS31FL3741_IDREGISTER 0xFC - -#define IS31FL3741_PAGE_PWM0 0x00 // PG0 -#define IS31FL3741_PAGE_PWM1 0x01 // PG1 -#define IS31FL3741_PAGE_SCALING_0 0x02 // PG2 -#define IS31FL3741_PAGE_SCALING_1 0x03 // PG3 -#define IS31FL3741_PAGE_FUNCTION 0x04 // PG4 - -#define IS31FL3741_REG_CONFIGURATION 0x00 // PG4 -#define IS31FL3741_REG_GLOBALCURRENT 0x01 // PG4 -#define IS31FL3741_REG_PULLDOWNUP 0x02 // PG4 -#define IS31FL3741_REG_PWM_FREQUENCY 0x36 // PG4 -#define IS31FL3741_REG_RESET 0x3F // PG4 - #define IS31FL3741_PWM_REGISTER_COUNT 351 #ifndef IS31FL3741_I2C_TIMEOUT @@ -66,8 +48,8 @@ # define IS31FL3741_CS_PULLDOWN IS31FL3741_PDR_32K_OHM #endif -#ifndef IS31FL3741_GLOBALCURRENT -# define IS31FL3741_GLOBALCURRENT 0xFF +#ifndef IS31FL3741_GLOBAL_CURRENT +# define IS31FL3741_GLOBAL_CURRENT 0xFF #endif // Transfer buffer for TWITransmitData() @@ -104,8 +86,8 @@ bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { for (int i = 0; i < 342; i += 18) { if (i == 180) { // unlock the command register and select PG1 - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER, IS31FL3741_PAGE_PWM1); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_1); } g_twi_transfer_buffer[0] = i % 180; @@ -181,20 +163,20 @@ void is31fl3741_init(uint8_t addr) { // Unlock the command register. // Unlock the command register. - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); // Select PG4 - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER, IS31FL3741_PAGE_FUNCTION); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_FUNCTION); // Set to Normal operation - is31fl3741_write_register(addr, IS31FL3741_REG_CONFIGURATION, IS31FL3741_CONFIGURATION); + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_CONFIGURATION, IS31FL3741_CONFIGURATION); // Set Golbal Current Control Register - is31fl3741_write_register(addr, IS31FL3741_REG_GLOBALCURRENT, IS31FL3741_GLOBALCURRENT); + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3741_GLOBAL_CURRENT); // Set Pull up & Down for SWx CSy - is31fl3741_write_register(addr, IS31FL3741_REG_PULLDOWNUP, ((IS31FL3741_CS_PULLDOWN << 4) | IS31FL3741_SW_PULLUP)); + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PULLDOWNUP, ((IS31FL3741_CS_PULLDOWN << 4) | IS31FL3741_SW_PULLUP)); // Set PWM frequency - is31fl3741_write_register(addr, IS31FL3741_REG_PWM_FREQUENCY, (IS31FL3741_PWM_FREQUENCY & 0b1111)); + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PWM_FREQUENCY, (IS31FL3741_PWM_FREQUENCY & 0b1111)); // is31fl3741_update_led_scaling_registers(addr, 0xFF, 0xFF, 0xFF); @@ -237,8 +219,8 @@ void is31fl3741_set_led_control_register(uint8_t index, bool value) { void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index) { if (g_pwm_buffer_update_required[index]) { // unlock the command register and select PG2 - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER, IS31FL3741_PAGE_PWM0); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_0); is31fl3741_write_pwm_buffer(addr, g_pwm_buffer[index]); } @@ -255,8 +237,8 @@ void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t value) { void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_scaling_registers_update_required[index]) { // unlock the command register and select PG2 - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER, IS31FL3741_PAGE_SCALING_0); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_0); // CS1_SW1 to CS30_SW6 are on PG2 for (int i = CS1_SW1; i <= CS30_SW6; ++i) { @@ -264,8 +246,8 @@ void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) { } // unlock the command register and select PG3 - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER, IS31FL3741_PAGE_SCALING_1); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_1); // CS1_SW7 to CS39_SW9 are on PG3 for (int i = CS1_SW7; i <= CS39_SW9; ++i) { diff --git a/drivers/led/issi/is31fl3741-simple.h b/drivers/led/issi/is31fl3741-simple.h index 04f0c2793a..34608a37e0 100644 --- a/drivers/led/issi/is31fl3741-simple.h +++ b/drivers/led/issi/is31fl3741-simple.h @@ -41,7 +41,7 @@ # define IS31FL3741_CS_PULLDOWN ISSI_CSPULLUP #endif #ifdef ISSI_GLOBALCURRENT -# define IS31FL3741_GLOBALCURRENT ISSI_GLOBALCURRENT +# define IS31FL3741_GLOBAL_CURRENT ISSI_GLOBALCURRENT #endif #define PUR_0R IS31FL3741_PUR_0_OHM @@ -54,6 +54,27 @@ #define PUR_32KR IS31FL3741_PUR_32K_OHM // ======== +#define IS31FL3741_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3741_REG_INTERRUPT_STATUS 0xF1 +#define IS31FL3741_REG_ID 0xFC + +#define IS31FL3741_REG_COMMAND 0xFD + +#define IS31FL3741_COMMAND_PWM_0 0x00 +#define IS31FL3741_COMMAND_PWM_1 0x01 +#define IS31FL3741_COMMAND_SCALING_0 0x02 +#define IS31FL3741_COMMAND_SCALING_1 0x03 +#define IS31FL3741_COMMAND_FUNCTION 0x04 + +#define IS31FL3741_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3741_FUNCTION_REG_PULLDOWNUP 0x02 +#define IS31FL3741_FUNCTION_REG_PWM_FREQUENCY 0x36 +#define IS31FL3741_FUNCTION_REG_RESET 0x3F + +#define IS31FL3741_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3741_COMMAND_WRITE_LOCK_MAGIC 0xC5 + #define IS31FL3741_I2C_ADDRESS_GND 0x30 #define IS31FL3741_I2C_ADDRESS_SCL 0x31 #define IS31FL3741_I2C_ADDRESS_SDA 0x32 diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c index 9925a169c3..efcfa77b46 100644 --- a/drivers/led/issi/is31fl3741.c +++ b/drivers/led/issi/is31fl3741.c @@ -22,24 +22,6 @@ #include "i2c_master.h" #include "wait.h" -#define IS31FL3741_COMMANDREGISTER 0xFD -#define IS31FL3741_COMMANDREGISTER_WRITELOCK 0xFE -#define IS31FL3741_INTERRUPTMASKREGISTER 0xF0 -#define IS31FL3741_INTERRUPTSTATUSREGISTER 0xF1 -#define IS31FL3741_IDREGISTER 0xFC - -#define IS31FL3741_PAGE_PWM0 0x00 // PG0 -#define IS31FL3741_PAGE_PWM1 0x01 // PG1 -#define IS31FL3741_PAGE_SCALING_0 0x02 // PG2 -#define IS31FL3741_PAGE_SCALING_1 0x03 // PG3 -#define IS31FL3741_PAGE_FUNCTION 0x04 // PG4 - -#define IS31FL3741_REG_CONFIGURATION 0x00 // PG4 -#define IS31FL3741_REG_GLOBALCURRENT 0x01 // PG4 -#define IS31FL3741_REG_PULLDOWNUP 0x02 // PG4 -#define IS31FL3741_REG_PWM_FREQUENCY 0x36 // PG4 -#define IS31FL3741_REG_RESET 0x3F // PG4 - #define IS31FL3741_PWM_REGISTER_COUNT 351 #ifndef IS31FL3741_I2C_TIMEOUT @@ -66,8 +48,8 @@ # define IS31FL3741_CS_PULLDOWN IS31FL3741_PDR_32K_OHM #endif -#ifndef IS31FL3741_GLOBALCURRENT -# define IS31FL3741_GLOBALCURRENT 0xFF +#ifndef IS31FL3741_GLOBAL_CURRENT +# define IS31FL3741_GLOBAL_CURRENT 0xFF #endif // Transfer buffer for TWITransmitData() @@ -104,8 +86,8 @@ bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { for (int i = 0; i < 342; i += 18) { if (i == 180) { // unlock the command register and select PG1 - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER, IS31FL3741_PAGE_PWM1); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_1); } g_twi_transfer_buffer[0] = i % 180; @@ -181,20 +163,20 @@ void is31fl3741_init(uint8_t addr) { // Unlock the command register. // Unlock the command register. - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); // Select PG4 - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER, IS31FL3741_PAGE_FUNCTION); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_FUNCTION); // Set to Normal operation - is31fl3741_write_register(addr, IS31FL3741_REG_CONFIGURATION, IS31FL3741_CONFIGURATION); + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_CONFIGURATION, IS31FL3741_CONFIGURATION); // Set Golbal Current Control Register - is31fl3741_write_register(addr, IS31FL3741_REG_GLOBALCURRENT, IS31FL3741_GLOBALCURRENT); + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3741_GLOBAL_CURRENT); // Set Pull up & Down for SWx CSy - is31fl3741_write_register(addr, IS31FL3741_REG_PULLDOWNUP, ((IS31FL3741_CS_PULLDOWN << 4) | IS31FL3741_SW_PULLUP)); + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PULLDOWNUP, ((IS31FL3741_CS_PULLDOWN << 4) | IS31FL3741_SW_PULLUP)); // Set PWM frequency - is31fl3741_write_register(addr, IS31FL3741_REG_PWM_FREQUENCY, (IS31FL3741_PWM_FREQUENCY & 0b1111)); + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PWM_FREQUENCY, (IS31FL3741_PWM_FREQUENCY & 0b1111)); // is31fl3741_update_led_scaling_registers(addr, 0xFF, 0xFF, 0xFF); @@ -251,8 +233,8 @@ void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bo void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index) { if (g_pwm_buffer_update_required[index]) { // unlock the command register and select PG2 - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER, IS31FL3741_PAGE_PWM0); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_0); is31fl3741_write_pwm_buffer(addr, g_pwm_buffer[index]); } @@ -271,8 +253,8 @@ void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t red, uint8_ void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_scaling_registers_update_required[index]) { // unlock the command register and select PG2 - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER, IS31FL3741_PAGE_SCALING_0); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_0); // CS1_SW1 to CS30_SW6 are on PG2 for (int i = CS1_SW1; i <= CS30_SW6; ++i) { @@ -280,8 +262,8 @@ void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) { } // unlock the command register and select PG3 - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, IS31FL3741_COMMANDREGISTER, IS31FL3741_PAGE_SCALING_1); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_1); // CS1_SW7 to CS39_SW9 are on PG3 for (int i = CS1_SW7; i <= CS39_SW9; ++i) { diff --git a/drivers/led/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h index 0c3f7d3d18..6466696b60 100644 --- a/drivers/led/issi/is31fl3741.h +++ b/drivers/led/issi/is31fl3741.h @@ -53,7 +53,7 @@ # define IS31FL3741_CS_PULLDOWN ISSI_CSPULLUP #endif #ifdef ISSI_GLOBALCURRENT -# define IS31FL3741_GLOBALCURRENT ISSI_GLOBALCURRENT +# define IS31FL3741_GLOBAL_CURRENT ISSI_GLOBALCURRENT #endif #define is31_led is31fl3741_led_t @@ -69,6 +69,27 @@ #define PUR_32KR IS31FL3741_PUR_32K_OHM // ======== +#define IS31FL3741_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3741_REG_INTERRUPT_STATUS 0xF1 +#define IS31FL3741_REG_ID 0xFC + +#define IS31FL3741_REG_COMMAND 0xFD + +#define IS31FL3741_COMMAND_PWM_0 0x00 +#define IS31FL3741_COMMAND_PWM_1 0x01 +#define IS31FL3741_COMMAND_SCALING_0 0x02 +#define IS31FL3741_COMMAND_SCALING_1 0x03 +#define IS31FL3741_COMMAND_FUNCTION 0x04 + +#define IS31FL3741_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3741_FUNCTION_REG_PULLDOWNUP 0x02 +#define IS31FL3741_FUNCTION_REG_PWM_FREQUENCY 0x36 +#define IS31FL3741_FUNCTION_REG_RESET 0x3F + +#define IS31FL3741_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3741_COMMAND_WRITE_LOCK_MAGIC 0xC5 + #define IS31FL3741_I2C_ADDRESS_GND 0x30 #define IS31FL3741_I2C_ADDRESS_SCL 0x31 #define IS31FL3741_I2C_ADDRESS_SDA 0x32 diff --git a/drivers/led/snled27351-simple.c b/drivers/led/snled27351-simple.c index 6d504794a9..b2054c96d5 100644 --- a/drivers/led/snled27351-simple.c +++ b/drivers/led/snled27351-simple.c @@ -29,7 +29,7 @@ #endif #ifndef SNLED27351_PHASE_CHANNEL -# define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_12CHANNEL +# define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL #endif #ifndef SNLED27351_CURRENT_TUNE @@ -134,48 +134,48 @@ void snled27351_init_drivers(void) { void snled27351_init(uint8_t addr) { // Select to function page - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); // Setting LED driver to shutdown mode - snled27351_write_register(addr, SNLED27351_REG_CONFIGURATION, SNLED27351_MSKSW_SHUT_DOWN_MODE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN); // Setting internal channel pulldown/pullup - snled27351_write_register(addr, SNLED27351_REG_PDU, SNLED27351_MSKSET_CA_CB_CHANNEL); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_PULLDOWNUP, SNLED27351_PULLDOWNUP_ALL_ENABLED); // Select number of scan phase - snled27351_write_register(addr, SNLED27351_REG_SCAN_PHASE, SNLED27351_PHASE_CHANNEL); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SCAN_PHASE, SNLED27351_PHASE_CHANNEL); // Setting PWM Delay Phase - snled27351_write_register(addr, SNLED27351_REG_SLEW_RATE_CONTROL_MODE1, SNLED27351_MSKPWM_DELAY_PHASE_ENABLE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1, SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE); // Setting Driving/Sinking Channel Slew Rate - snled27351_write_register(addr, SNLED27351_REG_SLEW_RATE_CONTROL_MODE2, SNLED27351_MSKDRIVING_SINKING_CHANNEL_SLEWRATE_ENABLE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2, SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE | SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE); // Setting Iref - snled27351_write_register(addr, SNLED27351_REG_SOFTWARE_SLEEP, SNLED27351_MSKSLEEP_DISABLE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, 0); // Set LED CONTROL PAGE (Page 0) - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_LED_CONTROL_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) { snled27351_write_register(addr, i, 0x00); } // Set PWM PAGE (Page 1) - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_LED_PWM_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM); for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) { snled27351_write_register(addr, i, 0x00); } // Set CURRENT PAGE (Page 4) uint8_t current_tune_reg_list[SNLED27351_LED_CURRENT_TUNE_LENGTH] = SNLED27351_CURRENT_TUNE; - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_CURRENT_TUNE_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_CURRENT_TUNE); for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) { snled27351_write_register(addr, i, current_tune_reg_list[i]); } // Enable LEDs ON/OFF - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_LED_CONTROL_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) { snled27351_write_register(addr, i, 0xFF); } // Select to function page - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); // Setting LED driver to normal mode - snled27351_write_register(addr, SNLED27351_REG_CONFIGURATION, SNLED27351_MSKSW_NORMAL_MODE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL); } void snled27351_set_value(int index, uint8_t value) { @@ -215,7 +215,7 @@ void snled27351_set_led_control_register(uint8_t index, bool value) { void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) { if (g_pwm_buffer_update_required[index]) { - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_LED_PWM_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM); // If any of the transactions fail we risk writing dirty PG0, // refresh page 0 just in case. @@ -228,7 +228,7 @@ void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) { void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_LED_CONTROL_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) { snled27351_write_register(addr, i, g_led_control_registers[index][i]); } @@ -251,16 +251,16 @@ void snled27351_flush(void) { void snled27351_sw_return_normal(uint8_t addr) { // Select to function page - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); // Setting LED driver to normal mode - snled27351_write_register(addr, SNLED27351_REG_CONFIGURATION, SNLED27351_MSKSW_NORMAL_MODE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL); } void snled27351_sw_shutdown(uint8_t addr) { // Select to function page - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); // Setting LED driver to shutdown mode - snled27351_write_register(addr, SNLED27351_REG_CONFIGURATION, SNLED27351_MSKSW_SHUT_DOWN_MODE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN); // Write SW Sleep Register - snled27351_write_register(addr, SNLED27351_REG_SOFTWARE_SLEEP, SNLED27351_MSKSLEEP_ENABLE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, SNLED27351_SOFTWARE_SLEEP_ENABLE); } diff --git a/drivers/led/snled27351-simple.h b/drivers/led/snled27351-simple.h index 66e5d162d0..2fc62a6f0a 100644 --- a/drivers/led/snled27351-simple.h +++ b/drivers/led/snled27351-simple.h @@ -35,23 +35,98 @@ # define SNLED27351_CURRENT_TUNE CKLED2001_CURRENT_TUNE #endif -#define MSKPHASE_12CHANNEL SNLED27351_MSKPHASE_12CHANNEL -#define MSKPHASE_11CHANNEL SNLED27351_MSKPHASE_11CHANNEL -#define MSKPHASE_10CHANNEL SNLED27351_MSKPHASE_10CHANNEL -#define MSKPHASE_9CHANNEL SNLED27351_MSKPHASE_9CHANNEL -#define MSKPHASE_8CHANNEL SNLED27351_MSKPHASE_8CHANNEL -#define MSKPHASE_7CHANNEL SNLED27351_MSKPHASE_7CHANNEL -#define MSKPHASE_6CHANNEL SNLED27351_MSKPHASE_6CHANNEL -#define MSKPHASE_5CHANNEL SNLED27351_MSKPHASE_5CHANNEL -#define MSKPHASE_4CHANNEL SNLED27351_MSKPHASE_4CHANNEL -#define MSKPHASE_3CHANNEL SNLED27351_MSKPHASE_3CHANNEL -#define MSKPHASE_2CHANNEL SNLED27351_MSKPHASE_2CHANNEL -#define MSKPHASE_1CHANNEL SNLED27351_MSKPHASE_1CHANNEL +#define MSKPHASE_12CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL +#define MSKPHASE_11CHANNEL SNLED27351_SCAN_PHASE_11_CHANNEL +#define MSKPHASE_10CHANNEL SNLED27351_SCAN_PHASE_10_CHANNEL +#define MSKPHASE_9CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL +#define MSKPHASE_8CHANNEL SNLED27351_SCAN_PHASE_8_CHANNEL +#define MSKPHASE_7CHANNEL SNLED27351_SCAN_PHASE_7_CHANNEL +#define MSKPHASE_6CHANNEL SNLED27351_SCAN_PHASE_6_CHANNEL +#define MSKPHASE_5CHANNEL SNLED27351_SCAN_PHASE_5_CHANNEL +#define MSKPHASE_4CHANNEL SNLED27351_SCAN_PHASE_4_CHANNEL +#define MSKPHASE_3CHANNEL SNLED27351_SCAN_PHASE_3_CHANNEL +#define MSKPHASE_2CHANNEL SNLED27351_SCAN_PHASE_2_CHANNEL +#define MSKPHASE_1CHANNEL SNLED27351_SCAN_PHASE_1_CHANNEL #define ckled2001_led snled27351_led_t #define g_ckled2001_leds g_snled27351_leds // ======== +#define SNLED27351_REG_COMMAND 0xFD +#define SNLED27351_COMMAND_LED_CONTROL 0x00 +#define SNLED27351_COMMAND_PWM 0x01 +#define SNLED27351_COMMAND_FUNCTION 0x03 +#define SNLED27351_COMMAND_CURRENT_TUNE 0x04 + +#define SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN 0x00 +#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN (0x0 << 0) +#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL (0x1 << 0) + +#define SNLED27351_FUNCTION_REG_ID 0x11 +#define SNLED27351_DRIVER_ID 0x8A + +#define SNLED27351_FUNCTION_REG_PULLDOWNUP 0x13 +#define SNLED27351_PULLDOWNUP_ALL_ENABLED 0xAA + +#define SNLED27351_FUNCTION_REG_SCAN_PHASE 0x14 +#define SNLED27351_SCAN_PHASE_12_CHANNEL 0x00 +#define SNLED27351_SCAN_PHASE_11_CHANNEL 0x01 +#define SNLED27351_SCAN_PHASE_10_CHANNEL 0x02 +#define SNLED27351_SCAN_PHASE_9_CHANNEL 0x03 +#define SNLED27351_SCAN_PHASE_8_CHANNEL 0x04 +#define SNLED27351_SCAN_PHASE_7_CHANNEL 0x05 +#define SNLED27351_SCAN_PHASE_6_CHANNEL 0x06 +#define SNLED27351_SCAN_PHASE_5_CHANNEL 0x07 +#define SNLED27351_SCAN_PHASE_4_CHANNEL 0x08 +#define SNLED27351_SCAN_PHASE_3_CHANNEL 0x09 +#define SNLED27351_SCAN_PHASE_2_CHANNEL 0x0A +#define SNLED27351_SCAN_PHASE_1_CHANNEL 0x0B + +#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1 0x15 +#define SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE (0b1 << 2) + +#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2 0x16 +#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE (0b1 << 6) +#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_ENABLE 0x17 +#define SNLED27351_OPEN_SHORT_ENABLE_SDS_ENABLE (0b1 << 6) +#define SNLED27351_OPEN_SHORT_ENABLE_ODS_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_DUTY 0x18 + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_FLAG 0x19 +#define SNLED27351_OPEN_SHORT_FLAG_OSINT_ENABLE (0b1 << 6) +#define SNLED27351_OPEN_SHORT_FLAG_ODINT_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP 0x1A +#define SNLED27351_SOFTWARE_SLEEP_ENABLE (0b1 << 1) + +// LED Control Registers +#define SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR 0x0 +#define SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR 0x17 +#define SNLED27351_LED_CONTROL_ON_OFF_LENGTH ((SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR - SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR 0x18 +#define SNLED27351_LED_CONTROL_OPEN_LAST_ADDR 0x2F +#define SNLED27351_LED_CONTROL_OPEN_LENGTH ((SNLED27351_LED_CONTROL_OPEN_LAST_ADDR - SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR 0x30 +#define SNLED27351_LED_CONTROL_SHORT_LAST_ADDR 0x47 +#define SNLED27351_LED_CONTROL_SHORT_LENGTH ((SNLED27351_LED_CONTROL_SHORT_LAST_ADDR - SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_PAGE_LENGTH 0x48 + +// LED Control Registers +#define SNLED27351_LED_PWM_FIRST_ADDR 0x00 +#define SNLED27351_LED_PWM_LAST_ADDR 0xBF +#define SNLED27351_LED_PWM_LENGTH 0xC0 + +// Current Tune Registers +#define SNLED27351_LED_CURRENT_TUNE_FIRST_ADDR 0x00 +#define SNLED27351_LED_CURRENT_TUNE_LAST_ADDR 0x0B +#define SNLED27351_LED_CURRENT_TUNE_LENGTH 0x0C + #define SNLED27351_I2C_ADDRESS_GND 0x74 #define SNLED27351_I2C_ADDRESS_SCL 0x75 #define SNLED27351_I2C_ADDRESS_SDA 0x76 @@ -100,92 +175,6 @@ void snled27351_flush(void); void snled27351_sw_return_normal(uint8_t addr); void snled27351_sw_shutdown(uint8_t addr); -// Registers Page Define -#define SNLED27351_REG_CONFIGURE_CMD_PAGE 0xFD -#define SNLED27351_LED_CONTROL_PAGE 0x00 -#define SNLED27351_LED_PWM_PAGE 0x01 -#define SNLED27351_FUNCTION_PAGE 0x03 -#define SNLED27351_CURRENT_TUNE_PAGE 0x04 - -// Function Register: address 0x00 -#define SNLED27351_REG_CONFIGURATION 0x00 -#define SNLED27351_MSKSW_SHUT_DOWN_MODE (0x0 << 0) -#define SNLED27351_MSKSW_NORMAL_MODE (0x1 << 0) - -#define SNLED27351_REG_DRIVER_ID 0x11 -#define SNLED27351_DRIVER_ID 0x8A - -#define SNLED27351_REG_PDU 0x13 -#define SNLED27351_MSKSET_CA_CB_CHANNEL 0xAA -#define SNLED27351_MSKCLR_CA_CB_CHANNEL 0x00 - -#define SNLED27351_REG_SCAN_PHASE 0x14 -#define SNLED27351_MSKPHASE_12CHANNEL 0x00 -#define SNLED27351_MSKPHASE_11CHANNEL 0x01 -#define SNLED27351_MSKPHASE_10CHANNEL 0x02 -#define SNLED27351_MSKPHASE_9CHANNEL 0x03 -#define SNLED27351_MSKPHASE_8CHANNEL 0x04 -#define SNLED27351_MSKPHASE_7CHANNEL 0x05 -#define SNLED27351_MSKPHASE_6CHANNEL 0x06 -#define SNLED27351_MSKPHASE_5CHANNEL 0x07 -#define SNLED27351_MSKPHASE_4CHANNEL 0x08 -#define SNLED27351_MSKPHASE_3CHANNEL 0x09 -#define SNLED27351_MSKPHASE_2CHANNEL 0x0A -#define SNLED27351_MSKPHASE_1CHANNEL 0x0B - -#define SNLED27351_REG_SLEW_RATE_CONTROL_MODE1 0x15 -#define SNLED27351_MSKPWM_DELAY_PHASE_ENABLE 0x04 -#define SNLED27351_MSKPWM_DELAY_PHASE_DISABLE 0x00 - -#define SNLED27351_REG_SLEW_RATE_CONTROL_MODE2 0x16 -#define SNLED27351_MSKDRIVING_SINKING_CHANNEL_SLEWRATE_ENABLE 0xC0 -#define SNLED27351_MSKDRIVING_SINKING_CHANNEL_SLEWRATE_DISABLE 0x00 - -#define SNLED27351_REG_OPEN_SHORT_ENABLE 0x17 -#define SNLED27351_MSKOPEN_DETECTION_ENABLE (0x01 << 7) -#define SNLED27351_MSKOPEN_DETECTION_DISABLE (0x00) - -#define SNLED27351_MSKSHORT_DETECTION_ENABLE (0x01 << 6) -#define SNLED27351_MSKSHORT_DETECTION_DISABLE (0x00) - -#define SNLED27351_REG_OPEN_SHORT_DUTY 0x18 -#define SNLED27351_REG_OPEN_SHORT_FLAG 0x19 - -#define SNLED27351_MSKOPEN_DETECTION_INTERRUPT_ENABLE (0x01 << 7) -#define SNLED27351_MSKOPEN_DETECTION_INTERRUPT_DISABLE (0x00) - -#define SNLED27351_MSKSHORT_DETECTION_INTERRUPT_ENABLE (0x01 << 6) -#define SNLED27351_MSKSHORT_DETECTION_INTERRUPT_DISABLE (0x00) - -#define SNLED27351_REG_SOFTWARE_SLEEP 0x1A -#define SNLED27351_MSKSLEEP_ENABLE 0x02 -#define SNLED27351_MSKSLEEP_DISABLE 0x00 - -// LED Control Registers -#define SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR 0x0 -#define SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR 0x17 -#define SNLED27351_LED_CONTROL_ON_OFF_LENGTH ((SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR - SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR) + 1) - -#define SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR 0x18 -#define SNLED27351_LED_CONTROL_OPEN_LAST_ADDR 0x2F -#define SNLED27351_LED_CONTROL_OPEN_LENGTH ((SNLED27351_LED_CONTROL_OPEN_LAST_ADDR - SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR) + 1) - -#define SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR 0x30 -#define SNLED27351_LED_CONTROL_SHORT_LAST_ADDR 0x47 -#define SNLED27351_LED_CONTROL_SHORT_LENGTH ((SNLED27351_LED_CONTROL_SHORT_LAST_ADDR - SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR) + 1) - -#define SNLED27351_LED_CONTROL_PAGE_LENGTH 0x48 - -// LED Control Registers -#define SNLED27351_LED_PWM_FIRST_ADDR 0x00 -#define SNLED27351_LED_PWM_LAST_ADDR 0xBF -#define SNLED27351_LED_PWM_LENGTH 0xC0 - -// Current Tune Registers -#define SNLED27351_LED_CURRENT_TUNE_FIRST_ADDR 0x00 -#define SNLED27351_LED_CURRENT_TUNE_LAST_ADDR 0x0B -#define SNLED27351_LED_CURRENT_TUNE_LENGTH 0x0C - #define A_1 0x00 #define A_2 0x01 #define A_3 0x02 diff --git a/drivers/led/snled27351.c b/drivers/led/snled27351.c index 4e4067854e..71992b7322 100644 --- a/drivers/led/snled27351.c +++ b/drivers/led/snled27351.c @@ -29,7 +29,7 @@ #endif #ifndef SNLED27351_PHASE_CHANNEL -# define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_12CHANNEL +# define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL #endif #ifndef SNLED27351_CURRENT_TUNE @@ -133,48 +133,48 @@ void snled27351_init_drivers(void) { void snled27351_init(uint8_t addr) { // Select to function page - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); // Setting LED driver to shutdown mode - snled27351_write_register(addr, SNLED27351_REG_CONFIGURATION, SNLED27351_MSKSW_SHUT_DOWN_MODE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN); // Setting internal channel pulldown/pullup - snled27351_write_register(addr, SNLED27351_REG_PDU, SNLED27351_MSKSET_CA_CB_CHANNEL); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_PULLDOWNUP, SNLED27351_PULLDOWNUP_ALL_ENABLED); // Select number of scan phase - snled27351_write_register(addr, SNLED27351_REG_SCAN_PHASE, SNLED27351_PHASE_CHANNEL); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SCAN_PHASE, SNLED27351_PHASE_CHANNEL); // Setting PWM Delay Phase - snled27351_write_register(addr, SNLED27351_REG_SLEW_RATE_CONTROL_MODE1, SNLED27351_MSKPWM_DELAY_PHASE_ENABLE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1, SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE); // Setting Driving/Sinking Channel Slew Rate - snled27351_write_register(addr, SNLED27351_REG_SLEW_RATE_CONTROL_MODE2, SNLED27351_MSKDRIVING_SINKING_CHANNEL_SLEWRATE_ENABLE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2, SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE | SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE); // Setting Iref - snled27351_write_register(addr, SNLED27351_REG_SOFTWARE_SLEEP, SNLED27351_MSKSLEEP_DISABLE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, 0); // Set LED CONTROL PAGE (Page 0) - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_LED_CONTROL_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) { snled27351_write_register(addr, i, 0x00); } // Set PWM PAGE (Page 1) - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_LED_PWM_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM); for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) { snled27351_write_register(addr, i, 0x00); } // Set CURRENT PAGE (Page 4) uint8_t current_tune_reg_list[SNLED27351_LED_CURRENT_TUNE_LENGTH] = SNLED27351_CURRENT_TUNE; - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_CURRENT_TUNE_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_CURRENT_TUNE); for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) { snled27351_write_register(addr, i, current_tune_reg_list[i]); } // Enable LEDs ON/OFF - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_LED_CONTROL_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) { snled27351_write_register(addr, i, 0xFF); } // Select to function page - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); // Setting LED driver to normal mode - snled27351_write_register(addr, SNLED27351_REG_CONFIGURATION, SNLED27351_MSKSW_NORMAL_MODE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL); } void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { @@ -230,7 +230,7 @@ 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) { if (g_pwm_buffer_update_required[index]) { - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_LED_PWM_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM); // If any of the transactions fail we risk writing dirty PG0, // refresh page 0 just in case. @@ -243,7 +243,7 @@ void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) { void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_LED_CONTROL_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) { snled27351_write_register(addr, i, g_led_control_registers[index][i]); } @@ -266,16 +266,16 @@ void snled27351_flush(void) { void snled27351_sw_return_normal(uint8_t addr) { // Select to function page - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); // Setting LED driver to normal mode - snled27351_write_register(addr, SNLED27351_REG_CONFIGURATION, SNLED27351_MSKSW_NORMAL_MODE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL); } void snled27351_sw_shutdown(uint8_t addr) { // Select to function page - snled27351_write_register(addr, SNLED27351_REG_CONFIGURE_CMD_PAGE, SNLED27351_FUNCTION_PAGE); + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); // Setting LED driver to shutdown mode - snled27351_write_register(addr, SNLED27351_REG_CONFIGURATION, SNLED27351_MSKSW_SHUT_DOWN_MODE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN); // Write SW Sleep Register - snled27351_write_register(addr, SNLED27351_REG_SOFTWARE_SLEEP, SNLED27351_MSKSLEEP_ENABLE); + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, SNLED27351_SOFTWARE_SLEEP_ENABLE); } diff --git a/drivers/led/snled27351.h b/drivers/led/snled27351.h index 77837d36aa..77337f177b 100644 --- a/drivers/led/snled27351.h +++ b/drivers/led/snled27351.h @@ -47,23 +47,98 @@ # define SNLED27351_CURRENT_TUNE CKLED2001_CURRENT_TUNE #endif -#define MSKPHASE_12CHANNEL SNLED27351_MSKPHASE_12CHANNEL -#define MSKPHASE_11CHANNEL SNLED27351_MSKPHASE_11CHANNEL -#define MSKPHASE_10CHANNEL SNLED27351_MSKPHASE_10CHANNEL -#define MSKPHASE_9CHANNEL SNLED27351_MSKPHASE_9CHANNEL -#define MSKPHASE_8CHANNEL SNLED27351_MSKPHASE_8CHANNEL -#define MSKPHASE_7CHANNEL SNLED27351_MSKPHASE_7CHANNEL -#define MSKPHASE_6CHANNEL SNLED27351_MSKPHASE_6CHANNEL -#define MSKPHASE_5CHANNEL SNLED27351_MSKPHASE_5CHANNEL -#define MSKPHASE_4CHANNEL SNLED27351_MSKPHASE_4CHANNEL -#define MSKPHASE_3CHANNEL SNLED27351_MSKPHASE_3CHANNEL -#define MSKPHASE_2CHANNEL SNLED27351_MSKPHASE_2CHANNEL -#define MSKPHASE_1CHANNEL SNLED27351_MSKPHASE_1CHANNEL +#define MSKPHASE_12CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL +#define MSKPHASE_11CHANNEL SNLED27351_SCAN_PHASE_11_CHANNEL +#define MSKPHASE_10CHANNEL SNLED27351_SCAN_PHASE_10_CHANNEL +#define MSKPHASE_9CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL +#define MSKPHASE_8CHANNEL SNLED27351_SCAN_PHASE_8_CHANNEL +#define MSKPHASE_7CHANNEL SNLED27351_SCAN_PHASE_7_CHANNEL +#define MSKPHASE_6CHANNEL SNLED27351_SCAN_PHASE_6_CHANNEL +#define MSKPHASE_5CHANNEL SNLED27351_SCAN_PHASE_5_CHANNEL +#define MSKPHASE_4CHANNEL SNLED27351_SCAN_PHASE_4_CHANNEL +#define MSKPHASE_3CHANNEL SNLED27351_SCAN_PHASE_3_CHANNEL +#define MSKPHASE_2CHANNEL SNLED27351_SCAN_PHASE_2_CHANNEL +#define MSKPHASE_1CHANNEL SNLED27351_SCAN_PHASE_1_CHANNEL #define ckled2001_led snled27351_led_t #define g_ckled2001_leds g_snled27351_leds // ======== +#define SNLED27351_REG_COMMAND 0xFD +#define SNLED27351_COMMAND_LED_CONTROL 0x00 +#define SNLED27351_COMMAND_PWM 0x01 +#define SNLED27351_COMMAND_FUNCTION 0x03 +#define SNLED27351_COMMAND_CURRENT_TUNE 0x04 + +#define SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN 0x00 +#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN (0x0 << 0) +#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL (0x1 << 0) + +#define SNLED27351_FUNCTION_REG_ID 0x11 +#define SNLED27351_DRIVER_ID 0x8A + +#define SNLED27351_FUNCTION_REG_PULLDOWNUP 0x13 +#define SNLED27351_PULLDOWNUP_ALL_ENABLED 0xAA + +#define SNLED27351_FUNCTION_REG_SCAN_PHASE 0x14 +#define SNLED27351_SCAN_PHASE_12_CHANNEL 0x00 +#define SNLED27351_SCAN_PHASE_11_CHANNEL 0x01 +#define SNLED27351_SCAN_PHASE_10_CHANNEL 0x02 +#define SNLED27351_SCAN_PHASE_9_CHANNEL 0x03 +#define SNLED27351_SCAN_PHASE_8_CHANNEL 0x04 +#define SNLED27351_SCAN_PHASE_7_CHANNEL 0x05 +#define SNLED27351_SCAN_PHASE_6_CHANNEL 0x06 +#define SNLED27351_SCAN_PHASE_5_CHANNEL 0x07 +#define SNLED27351_SCAN_PHASE_4_CHANNEL 0x08 +#define SNLED27351_SCAN_PHASE_3_CHANNEL 0x09 +#define SNLED27351_SCAN_PHASE_2_CHANNEL 0x0A +#define SNLED27351_SCAN_PHASE_1_CHANNEL 0x0B + +#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1 0x15 +#define SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE (0b1 << 2) + +#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2 0x16 +#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE (0b1 << 6) +#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_ENABLE 0x17 +#define SNLED27351_OPEN_SHORT_ENABLE_SDS_ENABLE (0b1 << 6) +#define SNLED27351_OPEN_SHORT_ENABLE_ODS_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_DUTY 0x18 + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_FLAG 0x19 +#define SNLED27351_OPEN_SHORT_FLAG_OSINT_ENABLE (0b1 << 6) +#define SNLED27351_OPEN_SHORT_FLAG_ODINT_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP 0x1A +#define SNLED27351_SOFTWARE_SLEEP_ENABLE (0b1 << 1) + +// LED Control Registers +#define SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR 0x0 +#define SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR 0x17 +#define SNLED27351_LED_CONTROL_ON_OFF_LENGTH ((SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR - SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR 0x18 +#define SNLED27351_LED_CONTROL_OPEN_LAST_ADDR 0x2F +#define SNLED27351_LED_CONTROL_OPEN_LENGTH ((SNLED27351_LED_CONTROL_OPEN_LAST_ADDR - SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR 0x30 +#define SNLED27351_LED_CONTROL_SHORT_LAST_ADDR 0x47 +#define SNLED27351_LED_CONTROL_SHORT_LENGTH ((SNLED27351_LED_CONTROL_SHORT_LAST_ADDR - SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_PAGE_LENGTH 0x48 + +// LED Control Registers +#define SNLED27351_LED_PWM_FIRST_ADDR 0x00 +#define SNLED27351_LED_PWM_LAST_ADDR 0xBF +#define SNLED27351_LED_PWM_LENGTH 0xC0 + +// Current Tune Registers +#define SNLED27351_LED_CURRENT_TUNE_FIRST_ADDR 0x00 +#define SNLED27351_LED_CURRENT_TUNE_LAST_ADDR 0x0B +#define SNLED27351_LED_CURRENT_TUNE_LENGTH 0x0C + #define SNLED27351_I2C_ADDRESS_GND 0x74 #define SNLED27351_I2C_ADDRESS_SCL 0x75 #define SNLED27351_I2C_ADDRESS_SDA 0x76 @@ -114,92 +189,6 @@ void snled27351_flush(void); void snled27351_sw_return_normal(uint8_t addr); void snled27351_sw_shutdown(uint8_t addr); -// Registers Page Define -#define SNLED27351_REG_CONFIGURE_CMD_PAGE 0xFD -#define SNLED27351_LED_CONTROL_PAGE 0x00 -#define SNLED27351_LED_PWM_PAGE 0x01 -#define SNLED27351_FUNCTION_PAGE 0x03 -#define SNLED27351_CURRENT_TUNE_PAGE 0x04 - -// Function Register: address 0x00 -#define SNLED27351_REG_CONFIGURATION 0x00 -#define SNLED27351_MSKSW_SHUT_DOWN_MODE (0x0 << 0) -#define SNLED27351_MSKSW_NORMAL_MODE (0x1 << 0) - -#define SNLED27351_REG_DRIVER_ID 0x11 -#define SNLED27351_DRIVER_ID 0x8A - -#define SNLED27351_REG_PDU 0x13 -#define SNLED27351_MSKSET_CA_CB_CHANNEL 0xAA -#define SNLED27351_MSKCLR_CA_CB_CHANNEL 0x00 - -#define SNLED27351_REG_SCAN_PHASE 0x14 -#define SNLED27351_MSKPHASE_12CHANNEL 0x00 -#define SNLED27351_MSKPHASE_11CHANNEL 0x01 -#define SNLED27351_MSKPHASE_10CHANNEL 0x02 -#define SNLED27351_MSKPHASE_9CHANNEL 0x03 -#define SNLED27351_MSKPHASE_8CHANNEL 0x04 -#define SNLED27351_MSKPHASE_7CHANNEL 0x05 -#define SNLED27351_MSKPHASE_6CHANNEL 0x06 -#define SNLED27351_MSKPHASE_5CHANNEL 0x07 -#define SNLED27351_MSKPHASE_4CHANNEL 0x08 -#define SNLED27351_MSKPHASE_3CHANNEL 0x09 -#define SNLED27351_MSKPHASE_2CHANNEL 0x0A -#define SNLED27351_MSKPHASE_1CHANNEL 0x0B - -#define SNLED27351_REG_SLEW_RATE_CONTROL_MODE1 0x15 -#define SNLED27351_MSKPWM_DELAY_PHASE_ENABLE 0x04 -#define SNLED27351_MSKPWM_DELAY_PHASE_DISABLE 0x00 - -#define SNLED27351_REG_SLEW_RATE_CONTROL_MODE2 0x16 -#define SNLED27351_MSKDRIVING_SINKING_CHANNEL_SLEWRATE_ENABLE 0xC0 -#define SNLED27351_MSKDRIVING_SINKING_CHANNEL_SLEWRATE_DISABLE 0x00 - -#define SNLED27351_REG_OPEN_SHORT_ENABLE 0x17 -#define SNLED27351_MSKOPEN_DETECTION_ENABLE (0x01 << 7) -#define SNLED27351_MSKOPEN_DETECTION_DISABLE (0x00) - -#define SNLED27351_MSKSHORT_DETECTION_ENABLE (0x01 << 6) -#define SNLED27351_MSKSHORT_DETECTION_DISABLE (0x00) - -#define SNLED27351_REG_OPEN_SHORT_DUTY 0x18 -#define SNLED27351_REG_OPEN_SHORT_FLAG 0x19 - -#define SNLED27351_MSKOPEN_DETECTION_INTERRUPT_ENABLE (0x01 << 7) -#define SNLED27351_MSKOPEN_DETECTION_INTERRUPT_DISABLE (0x00) - -#define SNLED27351_MSKSHORT_DETECTION_INTERRUPT_ENABLE (0x01 << 6) -#define SNLED27351_MSKSHORT_DETECTION_INTERRUPT_DISABLE (0x00) - -#define SNLED27351_REG_SOFTWARE_SLEEP 0x1A -#define SNLED27351_MSKSLEEP_ENABLE 0x02 -#define SNLED27351_MSKSLEEP_DISABLE 0x00 - -// LED Control Registers -#define SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR 0x0 -#define SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR 0x17 -#define SNLED27351_LED_CONTROL_ON_OFF_LENGTH ((SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR - SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR) + 1) - -#define SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR 0x18 -#define SNLED27351_LED_CONTROL_OPEN_LAST_ADDR 0x2F -#define SNLED27351_LED_CONTROL_OPEN_LENGTH ((SNLED27351_LED_CONTROL_OPEN_LAST_ADDR - SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR) + 1) - -#define SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR 0x30 -#define SNLED27351_LED_CONTROL_SHORT_LAST_ADDR 0x47 -#define SNLED27351_LED_CONTROL_SHORT_LENGTH ((SNLED27351_LED_CONTROL_SHORT_LAST_ADDR - SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR) + 1) - -#define SNLED27351_LED_CONTROL_PAGE_LENGTH 0x48 - -// LED Control Registers -#define SNLED27351_LED_PWM_FIRST_ADDR 0x00 -#define SNLED27351_LED_PWM_LAST_ADDR 0xBF -#define SNLED27351_LED_PWM_LENGTH 0xC0 - -// Current Tune Registers -#define SNLED27351_LED_CURRENT_TUNE_FIRST_ADDR 0x00 -#define SNLED27351_LED_CURRENT_TUNE_LAST_ADDR 0x0B -#define SNLED27351_LED_CURRENT_TUNE_LENGTH 0x0C - #define A_1 0x00 #define A_2 0x01 #define A_3 0x02 diff --git a/keyboards/input_club/k_type/is31fl3733-dual.c b/keyboards/input_club/k_type/is31fl3733-dual.c index 8aa9344c85..e471cf0b71 100644 --- a/keyboards/input_club/k_type/is31fl3733-dual.c +++ b/keyboards/input_club/k_type/is31fl3733-dual.c @@ -20,22 +20,6 @@ #include "i2c_master.h" #include "wait.h" -#define IS31FL3733_COMMANDREGISTER 0xFD -#define IS31FL3733_COMMANDREGISTER_WRITELOCK 0xFE -#define IS31FL3733_INTERRUPTMASKREGISTER 0xF0 -#define IS31FL3733_INTERRUPTSTATUSREGISTER 0xF1 - -#define IS31FL3733_PAGE_LEDCONTROL 0x00 // PG0 -#define IS31FL3733_PAGE_PWM 0x01 // PG1 -#define IS31FL3733_PAGE_AUTOBREATH 0x02 // PG2 -#define IS31FL3733_PAGE_FUNCTION 0x03 // PG3 - -#define IS31FL3733_REG_CONFIGURATION 0x00 // PG3 -#define IS31FL3733_REG_GLOBALCURRENT 0x01 // PG3 -#define IS31FL3733_REG_RESET 0x11 // PG3 -#define IS31FL3733_REG_SW_PULLUP 0x0F // PG3 -#define IS31FL3733_REG_CS_PULLDOWN 0x10 // PG3 - #define IS31FL3733_PWM_REGISTER_COUNT 192 #define IS31FL3733_LED_CONTROL_REGISTER_COUNT 24 @@ -59,8 +43,8 @@ # define IS31FL3733_CS_PULLDOWN IS31FL3733_PDR_0_OHM #endif -#ifndef IS31FL3733_GLOBALCURRENT -# define IS31FL3733_GLOBALCURRENT 0xFF +#ifndef IS31FL3733_GLOBAL_CURRENT +# define IS31FL3733_GLOBAL_CURRENT 0xFF #endif #ifndef IS31FL3733_SYNC_1 @@ -167,20 +151,20 @@ void is31fl3733_init(uint8_t bus, uint8_t addr, uint8_t sync) { // Sync is passed so set it according to the datasheet. // Unlock the command register. - is31fl3733_write_register(bus, addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG0 - is31fl3733_write_register(bus, addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_LEDCONTROL); + is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL); // Turn off all LEDs. for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3733_write_register(bus, addr, i, 0x00); } // Unlock the command register. - is31fl3733_write_register(bus, addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG1 - is31fl3733_write_register(bus, addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_PWM); + is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM); // Set PWM on all LEDs to 0 // No need to setup Breath registers to PWM as that is the default. for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i++) { @@ -188,18 +172,18 @@ void is31fl3733_init(uint8_t bus, uint8_t addr, uint8_t sync) { } // Unlock the command register. - is31fl3733_write_register(bus, addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG3 - is31fl3733_write_register(bus, addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_FUNCTION); + is31fl3733_write_register(bus, addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_FUNCTION); // Set de-ghost pull-up resistors (SWx) - is31fl3733_write_register(bus, addr, IS31FL3733_REG_SW_PULLUP, IS31FL3733_SW_PULLUP); + is31fl3733_write_register(bus, addr, IS31FL3733_FUNCTION_REG_SW_PULLUP, IS31FL3733_SW_PULLUP); // Set de-ghost pull-down resistors (CSx) - is31fl3733_write_register(bus, addr, IS31FL3733_REG_CS_PULLDOWN, IS31FL3733_CS_PULLDOWN); + is31fl3733_write_register(bus, addr, IS31FL3733_FUNCTION_REG_CS_PULLDOWN, IS31FL3733_CS_PULLDOWN); // Set global current to maximum. - is31fl3733_write_register(bus, addr, IS31FL3733_REG_GLOBALCURRENT, IS31FL3733_GLOBALCURRENT); + is31fl3733_write_register(bus, addr, IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3733_GLOBAL_CURRENT); // Disable software shutdown. - is31fl3733_write_register(bus, addr, IS31FL3733_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((IS31FL3733_PWM_FREQUENCY & 0b111) << 3) | 0x01); + is31fl3733_write_register(bus, addr, IS31FL3733_FUNCTION_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((IS31FL3733_PWM_FREQUENCY & 0b111) << 3) | 0x01); // Wait 10ms to ensure the device has woken up. wait_ms(10); @@ -259,8 +243,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) { if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1. - is31fl3733_write_register(index, addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3733_write_register(index, addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_PWM); + is31fl3733_write_register(index, addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); + is31fl3733_write_register(index, addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM); // If any of the transactions fail we risk writing dirty PG0, // refresh page 0 just in case. @@ -274,8 +258,8 @@ void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) { void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - is31fl3733_write_register(index, addr, IS31FL3733_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3733_write_register(index, addr, IS31FL3733_COMMANDREGISTER, IS31FL3733_PAGE_LEDCONTROL); + is31fl3733_write_register(index, addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); + is31fl3733_write_register(index, addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL); for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3733_write_register(index, addr, i, g_led_control_registers[index][i]); } diff --git a/keyboards/input_club/k_type/is31fl3733-dual.h b/keyboards/input_club/k_type/is31fl3733-dual.h index 51c4492ff8..2f7d58f7e7 100644 --- a/keyboards/input_club/k_type/is31fl3733-dual.h +++ b/keyboards/input_club/k_type/is31fl3733-dual.h @@ -22,6 +22,25 @@ #include #include "progmem.h" +#define IS31FL3733_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3733_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3733_REG_COMMAND 0xFD + +#define IS31FL3733_COMMAND_LED_CONTROL 0x00 +#define IS31FL3733_COMMAND_PWM 0x01 +#define IS31FL3733_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3733_COMMAND_FUNCTION 0x03 + +#define IS31FL3733_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3733_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3733_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3733_FUNCTION_REG_RESET 0x11 + +#define IS31FL3733_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3733_COMMAND_WRITE_LOCK_MAGIC 0xC5 + #define IS31FL3733_I2C_ADDRESS_GND_GND 0x50 #define IS31FL3733_I2C_ADDRESS_GND_SCL 0x51 #define IS31FL3733_I2C_ADDRESS_GND_SDA 0x52 diff --git a/keyboards/keychron/c1_pro/ansi/rgb/config.h b/keyboards/keychron/c1_pro/ansi/rgb/config.h index ce9d46cad2..c3b52c5f24 100644 --- a/keyboards/keychron/c1_pro/ansi/rgb/config.h +++ b/keyboards/keychron/c1_pro/ansi/rgb/config.h @@ -29,7 +29,7 @@ #define DRIVER_2_LED_TOTAL 39 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL /* Set led driver current */ #define SNLED27351_CURRENT_TUNE \ { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 } diff --git a/keyboards/keychron/c1_pro/ansi/white/config.h b/keyboards/keychron/c1_pro/ansi/white/config.h index 17c415153b..8c9cadf271 100644 --- a/keyboards/keychron/c1_pro/ansi/white/config.h +++ b/keyboards/keychron/c1_pro/ansi/white/config.h @@ -26,7 +26,7 @@ /* LED Matrix Configuration */ #define LED_MATRIX_LED_COUNT 90 -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL /* Set led driver current */ #define SNLED27351_CURRENT_TUNE \ { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 } diff --git a/keyboards/keychron/q0/plus/config.h b/keyboards/keychron/q0/plus/config.h index a27ec9cfa6..524a73c54d 100644 --- a/keyboards/keychron/q0/plus/config.h +++ b/keyboards/keychron/q0/plus/config.h @@ -23,7 +23,7 @@ /* RGB Matrix Configuration */ #define RGB_MATRIX_LED_COUNT 26 -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL /* Encoder Configuration*/ #define ENCODER_DEFAULT_POS 0x3 diff --git a/keyboards/keychron/q10/config.h b/keyboards/keychron/q10/config.h index 645eb054d4..93941c3f19 100644 --- a/keyboards/keychron/q10/config.h +++ b/keyboards/keychron/q10/config.h @@ -41,7 +41,7 @@ #define I2C1_TIMINGR_SCLH 15U #define I2C1_TIMINGR_SCLL 51U -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL #define SNLED27351_CURRENT_TUNE \ { 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A } diff --git a/keyboards/keychron/q1v2/config.h b/keyboards/keychron/q1v2/config.h index d66e78b030..b3edfbbad8 100644 --- a/keyboards/keychron/q1v2/config.h +++ b/keyboards/keychron/q1v2/config.h @@ -44,7 +44,7 @@ #define WEAR_LEVELING_LOGICAL_SIZE 2048 #define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL /* Set LED driver current */ #define SNLED27351_CURRENT_TUNE \ { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 } diff --git a/keyboards/keychron/q2/config.h b/keyboards/keychron/q2/config.h index e6bb40fedf..486ce668b0 100644 --- a/keyboards/keychron/q2/config.h +++ b/keyboards/keychron/q2/config.h @@ -26,7 +26,7 @@ #define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_VDDIO #define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_GND -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL /* Disable DIP switch in matrix data */ #define MATRIX_MASKED diff --git a/keyboards/keychron/q3/config.h b/keyboards/keychron/q3/config.h index a3cf5eafb7..9558ecc211 100644 --- a/keyboards/keychron/q3/config.h +++ b/keyboards/keychron/q3/config.h @@ -28,7 +28,7 @@ #define I2C1_TIMINGR_SCLH 15U #define I2C1_TIMINGR_SCLL 51U -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL /* DIP switch */ #define DIP_SWITCH_MATRIX_GRID { {5, 4} } diff --git a/keyboards/keychron/q4/ansi/v1/config.h b/keyboards/keychron/q4/ansi/v1/config.h index 4c3df271dd..be3324cb27 100644 --- a/keyboards/keychron/q4/ansi/v1/config.h +++ b/keyboards/keychron/q4/ansi/v1/config.h @@ -24,5 +24,4 @@ /* RGB Matrix Configuration */ #define RGB_MATRIX_LED_COUNT 61 -/* Scan phase of led driver set as SNLED27351_MSKPHASE_9CHANNEL(defined as 0x03 in SNLED27351.h) */ -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL diff --git a/keyboards/keychron/q65/config.h b/keyboards/keychron/q65/config.h index 7ff53820d9..8d5f360826 100644 --- a/keyboards/keychron/q65/config.h +++ b/keyboards/keychron/q65/config.h @@ -37,7 +37,7 @@ #define I2C1_TIMINGR_SCLH 15U #define I2C1_TIMINGR_SCLL 30U -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL #define SNLED27351_CURRENT_TUNE \ { 0xB8, 0xB8, 0x58, 0xB8, 0xB8, 0x58, 0xB8, 0xB8, 0x58, 0xB8, 0xB8, 0x58 } diff --git a/keyboards/keychron/q7/config.h b/keyboards/keychron/q7/config.h index 688f057d31..4bf7d82096 100644 --- a/keyboards/keychron/q7/config.h +++ b/keyboards/keychron/q7/config.h @@ -28,7 +28,7 @@ #define I2C1_TIMINGR_SCLH 15U #define I2C1_TIMINGR_SCLL 51U -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL #define SNLED27351_CURRENT_TUNE \ { 0xF8, 0xF8, 0x80, 0xF8, 0xF8, 0x80, 0xF8, 0xF8, 0x80, 0xF8, 0xF8, 0x80 } diff --git a/keyboards/keychron/q8/config.h b/keyboards/keychron/q8/config.h index eb746a2083..abb1c6a970 100644 --- a/keyboards/keychron/q8/config.h +++ b/keyboards/keychron/q8/config.h @@ -31,7 +31,7 @@ #define I2C1_TIMINGR_SCLH 15U #define I2C1_TIMINGR_SCLL 51U -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL #define SNLED27351_CURRENT_TUNE \ { 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60 } diff --git a/keyboards/keychron/s1/ansi/rgb/config.h b/keyboards/keychron/s1/ansi/rgb/config.h index 1fa0623ac4..6036551690 100644 --- a/keyboards/keychron/s1/ansi/rgb/config.h +++ b/keyboards/keychron/s1/ansi/rgb/config.h @@ -24,7 +24,7 @@ #define DRIVER_2_LED_TOTAL 38 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL #define SNLED27351_CURRENT_TUNE \ { 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48 } diff --git a/keyboards/keychron/s1/ansi/white/config.h b/keyboards/keychron/s1/ansi/white/config.h index ad612700b0..5eb66e549a 100644 --- a/keyboards/keychron/s1/ansi/white/config.h +++ b/keyboards/keychron/s1/ansi/white/config.h @@ -22,7 +22,7 @@ #define DRIVER_1_LED_TOTAL 84 #define LED_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_6CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_6_CHANNEL #define SNLED27351_CURRENT_TUNE \ { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 } // 250mA // { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 } // 127mA diff --git a/keyboards/keychron/v1/config.h b/keyboards/keychron/v1/config.h index 713ca1157e..3fa164fa68 100644 --- a/keyboards/keychron/v1/config.h +++ b/keyboards/keychron/v1/config.h @@ -43,7 +43,7 @@ #define I2C1_TIMINGR_SCLH 15U #define I2C1_TIMINGR_SCLL 51U -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL /* turn off effects when suspended */ #define RGB_DISABLE_WHEN_USB_SUSPENDED diff --git a/keyboards/keychron/v10/config.h b/keyboards/keychron/v10/config.h index 2848f2ce8f..502f06ce83 100644 --- a/keyboards/keychron/v10/config.h +++ b/keyboards/keychron/v10/config.h @@ -42,7 +42,7 @@ #define I2C1_TIMINGR_SCLH 15U #define I2C1_TIMINGR_SCLL 51U -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL #define SNLED27351_CURRENT_TUNE { 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A } /* DIP switch */ diff --git a/keyboards/keychron/v2/config.h b/keyboards/keychron/v2/config.h index fa3c794edc..8f94b84235 100644 --- a/keyboards/keychron/v2/config.h +++ b/keyboards/keychron/v2/config.h @@ -31,7 +31,7 @@ #define I2C1_TIMINGR_SCLH 15U #define I2C1_TIMINGR_SCLL 51U -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL /* Disable DIP switch in matrix data */ #define MATRIX_MASKED diff --git a/keyboards/keychron/v3/config.h b/keyboards/keychron/v3/config.h index 53f81c87fb..4f3e47f3fe 100644 --- a/keyboards/keychron/v3/config.h +++ b/keyboards/keychron/v3/config.h @@ -31,7 +31,7 @@ #define I2C1_TIMINGR_SCLH 15U #define I2C1_TIMINGR_SCLL 51U -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL /* DIP switch */ #define DIP_SWITCH_MATRIX_GRID { {5, 4} } diff --git a/keyboards/keychron/v7/config.h b/keyboards/keychron/v7/config.h index dd0ce2f3c4..933211dee2 100644 --- a/keyboards/keychron/v7/config.h +++ b/keyboards/keychron/v7/config.h @@ -28,7 +28,7 @@ #define I2C1_TIMINGR_SCLH 15U #define I2C1_TIMINGR_SCLL 51U -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL #define SNLED27351_CURRENT_TUNE { 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70 } /* DIP switch */ diff --git a/keyboards/keychron/v8/config.h b/keyboards/keychron/v8/config.h index ae0c8ead05..88161444e1 100644 --- a/keyboards/keychron/v8/config.h +++ b/keyboards/keychron/v8/config.h @@ -31,7 +31,7 @@ #define I2C1_TIMINGR_SCLH 15U #define I2C1_TIMINGR_SCLL 51U -#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL +#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL #define SNLED27351_CURRENT_TUNE { 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60 } /* DIP switch */ -- cgit v1.2.3