summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/led/apa102.c10
-rw-r--r--drivers/led/apa102.h2
-rw-r--r--drivers/led/issi/is31fl3218.c32
-rw-r--r--drivers/led/issi/is31fl3741.c6
-rw-r--r--drivers/ws2812.h2
5 files changed, 28 insertions, 24 deletions
diff --git a/drivers/led/apa102.c b/drivers/led/apa102.c
index 766d8cd2eb..527519eb8a 100644
--- a/drivers/led/apa102.c
+++ b/drivers/led/apa102.c
@@ -24,7 +24,7 @@
# elif defined(PROTOCOL_CHIBIOS)
# include "hal.h"
# include "chibios_config.h"
-# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(GD32VF103)
+# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(GD32VF103) || defined(MCU_RP)
# define APA102_NOPS (100 / (1000000000L / (CPU_CLOCK / 4))) // This calculates how many loops of 4 nops to run to delay 100 ns
# else
# error APA102_NOPS configuration required
@@ -61,18 +61,18 @@ void static apa102_end_frame(uint16_t num_leds);
void static apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness);
void static apa102_send_byte(uint8_t byte);
-void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds) {
- LED_TYPE *end = start_led + num_leds;
+void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) {
+ rgb_led_t *end = start_led + num_leds;
apa102_start_frame();
- for (LED_TYPE *led = start_led; led < end; led++) {
+ for (rgb_led_t *led = start_led; led < end; led++) {
apa102_send_frame(led->r, led->g, led->b, apa102_led_brightness);
}
apa102_end_frame(num_leds);
}
// Overwrite the default rgblight_call_driver to use apa102 driver
-void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) {
+void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) {
apa102_setleds(start_led, num_leds);
}
diff --git a/drivers/led/apa102.h b/drivers/led/apa102.h
index 58cf020c1e..cd0a19d445 100644
--- a/drivers/led/apa102.h
+++ b/drivers/led/apa102.h
@@ -37,5 +37,5 @@ extern uint8_t apa102_led_brightness;
* - Set the data-out pin as output
* - Send out the LED data
*/
-void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds);
+void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds);
void apa102_set_brightness(uint8_t brightness);
diff --git a/drivers/led/issi/is31fl3218.c b/drivers/led/issi/is31fl3218.c
index 970e9a0be9..6072f6cecd 100644
--- a/drivers/led/issi/is31fl3218.c
+++ b/drivers/led/issi/is31fl3218.c
@@ -17,17 +17,17 @@
#include "i2c_master.h"
// This is the full 8-bit address
-#define ISSI_ADDRESS 0b10101000
+#define IS31FL3218_I2C_ADDRESS 0xA8
// These are the register addresses
-#define ISSI_REG_SHUTDOWN 0x00
-#define ISSI_REG_PWM 0x01
-#define ISSI_REG_CONTROL 0x13
-#define ISSI_REG_UPDATE 0x16
-#define ISSI_REG_RESET 0x17
+#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
// Default timeout if no I2C response
-#define ISSI_TIMEOUT 100
+#define IS31FL3218_I2C_TIMEOUT 100
// Reusable buffer for transfers
uint8_t g_twi_transfer_buffer[20];
@@ -40,35 +40,35 @@ bool g_pwm_buffer_update_required = false;
void is31fl3218_write_register(uint8_t reg, uint8_t data) {
g_twi_transfer_buffer[0] = reg;
g_twi_transfer_buffer[1] = data;
- i2c_transmit(ISSI_ADDRESS, g_twi_transfer_buffer, 2, ISSI_TIMEOUT);
+ i2c_transmit(IS31FL3218_I2C_ADDRESS, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT);
}
void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) {
- g_twi_transfer_buffer[0] = ISSI_REG_PWM;
+ g_twi_transfer_buffer[0] = IS31FL3218_REG_PWM;
memcpy(g_twi_transfer_buffer + 1, pwm_buffer, 18);
- i2c_transmit(ISSI_ADDRESS, g_twi_transfer_buffer, 19, ISSI_TIMEOUT);
+ i2c_transmit(IS31FL3218_I2C_ADDRESS, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT);
}
void is31fl3218_init(void) {
// In case we ever want to reinitialize (?)
- is31fl3218_write_register(ISSI_REG_RESET, 0x00);
+ is31fl3218_write_register(IS31FL3218_REG_RESET, 0x00);
// Turn off software shutdown
- is31fl3218_write_register(ISSI_REG_SHUTDOWN, 0x01);
+ is31fl3218_write_register(IS31FL3218_REG_SHUTDOWN, 0x01);
// Set all PWM values to zero
for (uint8_t i = 0; i < 18; i++) {
- is31fl3218_write_register(ISSI_REG_PWM + i, 0x00);
+ is31fl3218_write_register(IS31FL3218_REG_PWM + i, 0x00);
}
// Enable all channels
for (uint8_t i = 0; i < 3; i++) {
- is31fl3218_write_register(ISSI_REG_CONTROL + i, 0b00111111);
+ is31fl3218_write_register(IS31FL3218_REG_CONTROL + i, 0b00111111);
}
// Load PWM registers and LED Control register data
- is31fl3218_write_register(ISSI_REG_UPDATE, 0x01);
+ is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01);
}
void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
@@ -91,7 +91,7 @@ void is31fl3218_update_pwm_buffers(void) {
if (g_pwm_buffer_update_required) {
is31fl3218_write_pwm_buffer(g_pwm_buffer);
// Load PWM registers and LED Control register data
- is31fl3218_write_register(ISSI_REG_UPDATE, 0x01);
+ is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01);
}
g_pwm_buffer_update_required = false;
}
diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c
index 70671c2a40..5c84ac2067 100644
--- a/drivers/led/issi/is31fl3741.c
+++ b/drivers/led/issi/is31fl3741.c
@@ -61,6 +61,10 @@
# define ISSI_PERSISTENCE 0
#endif
+#ifndef ISSI_CONFIGURATION
+# define ISSI_CONFIGURATION 0x01
+#endif
+
#ifndef ISSI_SWPULLUP
# define ISSI_SWPULLUP PUR_32KR
#endif
@@ -162,7 +166,7 @@ void is31fl3741_init(uint8_t addr) {
is31fl3741_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION);
// Set to Normal operation
- is31fl3741_write_register(addr, ISSI_REG_CONFIGURATION, 0x01);
+ is31fl3741_write_register(addr, ISSI_REG_CONFIGURATION, ISSI_CONFIGURATION);
// Set Golbal Current Control Register
is31fl3741_write_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT);
diff --git a/drivers/ws2812.h b/drivers/ws2812.h
index 8750b0110e..1527df23d3 100644
--- a/drivers/ws2812.h
+++ b/drivers/ws2812.h
@@ -73,4 +73,4 @@
* - Send out the LED data
* - Wait 50us to reset the LEDs
*/
-void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds);
+void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds);