summary refs log tree commit diff
path: root/quantum
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2019-04-08 19:57:43 -0400
committerDrashna Jaelre <drashna@live.com>2019-04-08 16:57:43 -0700
commitfa4052c26e33b42b65521fd5ba9f94a3a778b275 (patch)
treeb16d69187656b109d98710359c9044edc716aaa2 /quantum
parentbc536b9b6d98e5428a28f6e6ba69675bd77b79cc (diff)
Adds the Planck EZ, 3737 RGB, fixes out-of-tune notes (#5532)
* RGB Matrix overhaul
Breakout of animations to separate files
Integration of optimized int based math lib
Overhaul of rgb_matrix.c and animations for performance

* Updating effect function api for future extensions

* Combined the keypresses || keyreleases define checks into a single define so I stop forgetting it where necessary

* Moving define RGB_MATRIX_KEYREACTIVE_ENABLED earlier in the include chain

* Adds the Planck EZ, 3737 RGB, fixes out-of-tune notes

* fix bug in quantum/rgb_matrix_drivers.c

Co-Authored-By: jackhumbert <jack.humb@gmail.com>

* update command setting to the correct default

* correct rgb config

* remove commented-out lines

* update docs for the 3737

* Update docs/feature_rgb_matrix.md

Co-Authored-By: jackhumbert <jack.humb@gmail.com>
Diffstat (limited to 'quantum')
-rw-r--r--quantum/audio/audio_arm.c6
-rw-r--r--quantum/rgb_matrix.h4
-rw-r--r--quantum/rgb_matrix_drivers.c28
-rw-r--r--quantum/stm32/halconf.h2
-rw-r--r--quantum/stm32/mcuconf.h2
5 files changed, 31 insertions, 11 deletions
diff --git a/quantum/audio/audio_arm.c b/quantum/audio/audio_arm.c
index 6760015ef4..de0cd15c58 100644
--- a/quantum/audio/audio_arm.c
+++ b/quantum/audio/audio_arm.c
@@ -79,7 +79,7 @@ float startup_song[][2] = STARTUP_SONG;
 
 static void gpt_cb8(GPTDriver *gptp);
 
-#define DAC_BUFFER_SIZE 720
+#define DAC_BUFFER_SIZE 100
 #ifndef DAC_SAMPLE_MAX
 #define DAC_SAMPLE_MAX  65535U
 #endif
@@ -98,8 +98,8 @@ static void gpt_cb8(GPTDriver *gptp);
     RESTART_CHANNEL_1()
 #define UPDATE_CHANNEL_2_FREQ(freq) gpt7cfg1.frequency = freq * DAC_BUFFER_SIZE; \
     RESTART_CHANNEL_2()
-#define GET_CHANNEL_1_FREQ gpt6cfg1.frequency
-#define GET_CHANNEL_2_FREQ gpt7cfg1.frequency
+#define GET_CHANNEL_1_FREQ (uint16_t)(gpt6cfg1.frequency * DAC_BUFFER_SIZE)
+#define GET_CHANNEL_2_FREQ (uint16_t)(gpt7cfg1.frequency * DAC_BUFFER_SIZE)
 
 
 /*
diff --git a/quantum/rgb_matrix.h b/quantum/rgb_matrix.h
index 855ea03230..0e193dcb2f 100644
--- a/quantum/rgb_matrix.h
+++ b/quantum/rgb_matrix.h
@@ -28,7 +28,9 @@
 #ifdef IS31FL3731
   #include "is31fl3731.h"
 #elif defined (IS31FL3733)
-  #include "is31fl3733.h"
+    #include "is31fl3733.h"
+#elif defined (IS31FL3737)
+    #include "is31fl3737.h"
 #endif
 
 #ifndef RGB_MATRIX_LED_FLUSH_LIMIT
diff --git a/quantum/rgb_matrix_drivers.c b/quantum/rgb_matrix_drivers.c
index 70b80293dd..3b7d58483a 100644
--- a/quantum/rgb_matrix_drivers.c
+++ b/quantum/rgb_matrix_drivers.c
@@ -23,7 +23,7 @@
  * be here if shared between boards.
  */
 
-#if defined(IS31FL3731) || defined(IS31FL3733)
+#if defined(IS31FL3731) || defined(IS31FL3733) || defined(IS31FL3737)
 
 #include "i2c_master.h"
 
@@ -33,23 +33,29 @@ static void init( void )
 #ifdef IS31FL3731
     IS31FL3731_init( DRIVER_ADDR_1 );
     IS31FL3731_init( DRIVER_ADDR_2 );
-#else
+#elif defined(IS31FL3733)
     IS31FL3733_init( DRIVER_ADDR_1 );
+#else
+    IS31FL3737_init( DRIVER_ADDR_1 );
 #endif
     for ( int index = 0; index < DRIVER_LED_TOTAL; index++ ) {
         bool enabled = true;
         // This only caches it for later
 #ifdef IS31FL3731
         IS31FL3731_set_led_control_register( index, enabled, enabled, enabled );
-#else
+#elif defined(IS31FL3733)
         IS31FL3733_set_led_control_register( index, enabled, enabled, enabled );
+#else
+        IS31FL3737_set_led_control_register( index, enabled, enabled, enabled );
 #endif
     }
     // This actually updates the LED drivers
 #ifdef IS31FL3731
     IS31FL3731_update_led_control_registers( DRIVER_ADDR_1, DRIVER_ADDR_2 );
-#else
+#elif defined(IS31FL3733)
     IS31FL3733_update_led_control_registers( DRIVER_ADDR_1, DRIVER_ADDR_2 );
+#else
+    IS31FL3737_update_led_control_registers( DRIVER_ADDR_1, DRIVER_ADDR_2 );
 #endif
 }
 
@@ -65,7 +71,7 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
     .set_color = IS31FL3731_set_color,
     .set_color_all = IS31FL3731_set_color_all,
 };
-#else
+#elif defined(IS31FL3733)
 static void flush( void )
 {
     IS31FL3733_update_pwm_buffers( DRIVER_ADDR_1, DRIVER_ADDR_2 );
@@ -77,6 +83,18 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
     .set_color = IS31FL3733_set_color,
     .set_color_all = IS31FL3733_set_color_all,
 };
+#else
+static void flush( void )
+{
+    IS31FL3737_update_pwm_buffers( DRIVER_ADDR_1, DRIVER_ADDR_2 );
+}
+
+const rgb_matrix_driver_t rgb_matrix_driver = {
+    .init = init,
+    .flush = flush,
+    .set_color = IS31FL3737_set_color,
+    .set_color_all = IS31FL3737_set_color_all,
+};
 #endif
 
 #endif
diff --git a/quantum/stm32/halconf.h b/quantum/stm32/halconf.h
index 8fe8e0c6f5..c3e0cbb728 100644
--- a/quantum/stm32/halconf.h
+++ b/quantum/stm32/halconf.h
@@ -76,7 +76,7 @@
  * @brief   Enables the I2C subsystem.
  */
 #if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C                 FALSE
+#define HAL_USE_I2C                 TRUE
 #endif
 
 /**
diff --git a/quantum/stm32/mcuconf.h b/quantum/stm32/mcuconf.h
index 7c3c6e570c..36f8ca2252 100644
--- a/quantum/stm32/mcuconf.h
+++ b/quantum/stm32/mcuconf.h
@@ -154,7 +154,7 @@
 /*
  * I2C driver system settings.
  */
-#define STM32_I2C_USE_I2C1                  FALSE
+#define STM32_I2C_USE_I2C1                  TRUE
 #define STM32_I2C_USE_I2C2                  FALSE
 #define STM32_I2C_BUSY_TIMEOUT              50
 #define STM32_I2C_I2C1_IRQ_PRIORITY         10