From 1ea01765e19bf84b9a09954443b7d64be2bec0c7 Mon Sep 17 00:00:00 2001 From: Gigahawk Date: Wed, 23 Jun 2021 02:57:46 -0700 Subject: [PATCH] Allow settable SPI divisor for AW20216 driver, set default to 4 (#13309) --- docs/feature_rgb_matrix.md | 1 + drivers/awinic/aw20216.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md index 25ba3ffe3..925c9de6e 100644 --- a/docs/feature_rgb_matrix.md +++ b/docs/feature_rgb_matrix.md @@ -250,6 +250,7 @@ You can use up to 2 AW20216 IC's. Do not specify `DRIVER__xxx` defines for IC | `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | | | `AW_SCALING_MAX` | (Optional) LED current scaling value (0-255, higher values mean LED is brighter at full PWM) | 150 | | `AW_GLOBAL_CURRENT_MAX` | (Optional) Driver global current limit (0-255, higher values means the driver may consume more power) | 150 | +| `AW_SPI_DIVISOR` | (Optional) Clock divisor for SPI communication (powers of 2, smaller numbers means faster communication, should not be less than 4) | 4 | Here is an example using 2 drivers. diff --git a/drivers/awinic/aw20216.c b/drivers/awinic/aw20216.c index 236c42a3c..269bb3a59 100644 --- a/drivers/awinic/aw20216.c +++ b/drivers/awinic/aw20216.c @@ -59,13 +59,17 @@ # define DRIVER_1_EN C13 #endif +#ifndef AW_SPI_DIVISOR +# define AW_SPI_DIVISOR 4 +#endif + uint8_t g_spi_transfer_buffer[20] = {0}; aw_led g_pwm_buffer[DRIVER_LED_TOTAL]; bool g_pwm_buffer_update_required[DRIVER_LED_TOTAL]; bool AW20216_write_register(pin_t slave_pin, uint8_t page, uint8_t reg, uint8_t data) { // Do we need to call spi_stop() if this fails? - if (!spi_start(slave_pin, false, 0, 16)) { + if (!spi_start(slave_pin, false, 0, AW_SPI_DIVISOR)) { return false; }