Browse Source

add the ability to change the pwm frequency for the IS31FL3737B (#16718)

Simon 3 years ago
parent
commit
dc9eb21332
2 changed files with 6 additions and 1 deletions
  1. 1 0
      docs/feature_rgb_matrix.md
  2. 5 1
      drivers/led/issi/is31fl3737.c

+ 1 - 0
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 | |

+ 5 - 1
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);