aboutsummaryrefslogtreecommitdiff
path: root/quantum/audio
diff options
context:
space:
mode:
authorDrashna Jaelre <[email protected]>2024-03-06 03:02:37 -0800
committerGitHub <[email protected]>2024-03-06 22:02:37 +1100
commit83e6ddbbb4c8e715bfe419c4d7fc0ae305ea5bd5 (patch)
tree28fd4e4bbbb83fc41e3800c5b95369592c6e9942 /quantum/audio
parent045e5c9729f22a8ab8a3f22fe9c0e6b51d1940fe (diff)
downloadqmk_firmware-83e6ddbbb4c8e715bfe419c4d7fc0ae305ea5bd5.tar.gz
qmk_firmware-83e6ddbbb4c8e715bfe419c4d7fc0ae305ea5bd5.zip
[Audio] Add support for audio shutdown pin (#22731)
Co-authored-by: Ryan <[email protected]>
Diffstat (limited to 'quantum/audio')
-rw-r--r--quantum/audio/audio.c27
-rw-r--r--quantum/audio/audio.h6
2 files changed, 30 insertions, 3 deletions
diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c
index c1a1500493..b2611c5f09 100644
--- a/quantum/audio/audio.c
+++ b/quantum/audio/audio.c
@@ -20,6 +20,7 @@
#include "debug.h"
#include "wait.h"
#include "util.h"
+#include "gpio.h"
/* audio system:
*
@@ -121,6 +122,32 @@ static bool audio_initialized = false;
static bool audio_driver_stopped = true;
audio_config_t audio_config;
+#ifndef AUDIO_POWER_CONTROL_PIN_ON_STATE
+# define AUDIO_POWER_CONTROL_PIN_ON_STATE 1
+#endif
+
+void audio_driver_initialize(void) {
+#ifdef AUDIO_POWER_CONTROL_PIN
+ gpio_set_pin_output_push_pull(AUDIO_POWER_CONTROL_PIN);
+ gpio_write_pin(AUDIO_POWER_CONTROL_PIN, !AUDIO_POWER_CONTROL_PIN_ON_STATE);
+#endif
+ audio_driver_initialize_impl();
+}
+
+void audio_driver_stop(void) {
+ audio_driver_stop_impl();
+#ifdef AUDIO_POWER_CONTROL_PIN
+ gpio_write_pin(AUDIO_POWER_CONTROL_PIN, !AUDIO_POWER_CONTROL_PIN_ON_STATE);
+#endif
+}
+
+void audio_driver_start(void) {
+#ifdef AUDIO_POWER_CONTROL_PIN
+ gpio_write_pin(AUDIO_POWER_CONTROL_PIN, AUDIO_POWER_CONTROL_PIN_ON_STATE);
+#endif
+ audio_driver_start_impl();
+}
+
void eeconfig_update_audio_current(void) {
eeconfig_update_audio(audio_config.raw);
}
diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h
index eb0bedc6f9..054331d6f3 100644
--- a/quantum/audio/audio.h
+++ b/quantum/audio/audio.h
@@ -215,9 +215,9 @@ void audio_startup(void);
// hardware interface
// implementation in the driver_avr/arm_* respective parts
-void audio_driver_initialize(void);
-void audio_driver_start(void);
-void audio_driver_stop(void);
+void audio_driver_initialize_impl(void);
+void audio_driver_start_impl(void);
+void audio_driver_stop_impl(void);
/**
* @brief get the number of currently active tones