summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon <47527944+Frooastside@users.noreply.github.com>2022-03-24 19:08:22 +0100
committerGitHub <noreply@github.com>2022-03-24 18:08:22 +0000
commitdc9eb21332b0fc274cc69358032dc923da6dc306 (patch)
treec7324c92e04a92385ef6fe45b0aab865759c7d3e
parent706bceeff8e58d812836c2baf7caaa3bed13df45 (diff)
add the ability to change the pwm frequency for the IS31FL3737B (#16718)
-rw-r--r--docs/feature_rgb_matrix.md1
-rw-r--r--drivers/led/issi/is31fl3737.c6
2 files changed, 6 insertions, 1 deletions
diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md
index 87dbc5f780..a8793be328 100644
--- a/docs/feature_rgb_matrix.md
+++ b/docs/feature_rgb_matrix.md
@@ -171,6 +171,7 @@ 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 |
+| `ISSI_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3737B only | 0 |
| `ISSI_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `ISSI_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c
index 9f2a13de45..bce0c34b2c 100644
--- a/drivers/led/issi/is31fl3737.c
+++ b/drivers/led/issi/is31fl3737.c
@@ -57,6 +57,10 @@
# define ISSI_PERSISTENCE 0
#endif
+#ifndef ISSI_PWM_FREQUENCY
+# define ISSI_PWM_FREQUENCY 0b000 // PFS - IS31FL3737B only
+#endif
+
#ifndef ISSI_SWPULLUP
# define ISSI_SWPULLUP PUR_0R
#endif
@@ -159,7 +163,7 @@ void IS31FL3737_init(uint8_t addr) {
// Set global current to maximum.
IS31FL3737_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF);
// Disable software shutdown.
- IS31FL3737_write_register(addr, ISSI_REG_CONFIGURATION, 0x01);
+ IS31FL3737_write_register(addr, ISSI_REG_CONFIGURATION, ((ISSI_PWM_FREQUENCY & 0b111) << 3) | 0x01);
// Wait 10ms to ensure the device has woken up.
wait_ms(10);