The external audio amplifier is placed in 'suspend' mode most of the
time to save power. When audio is being sent, turn it on.
Signed-off-by: Keith Packard <keithp@keithp.com>
{
ao_mutex_get(&ao_audio_mutex);
{
ao_mutex_get(&ao_audio_mutex);
+#if AUDIO_STANDBY_ON_P2_4
+ /*
+ * Turn on the audio amp
+ */
+ P2_4 = 1;
+#endif
/*
* Turn on timer 4. Free running from 0 to 0xff, with P2_0
* 'on' interval controlled by the value in T4CC0. Run this
/*
* Turn on timer 4. Free running from 0 to 0xff, with P2_0
* 'on' interval controlled by the value in T4CC0. Run this
P2_0 = 0;
P2SEL = (P2SEL & ~P2SEL_SELP2_0_MASK) | P2SEL_SELP2_0_GPIO;
P2_0 = 0;
P2SEL = (P2SEL & ~P2SEL_SELP2_0_MASK) | P2SEL_SELP2_0_GPIO;
+#if AUDIO_STANDBY_ON_P2_4
+ /*
+ * Turn off the audio amp
+ */
+ P2_4 = 0;
+#endif
ao_mutex_put(&ao_audio_mutex);
}
ao_mutex_put(&ao_audio_mutex);
}
P2SEL = (P2SEL & ~P2SEL_SELP2_0_MASK) | P2SEL_SELP2_0_GPIO;
PERCFG = (PERCFG & ~PERCFG_T4CFG_ALT_MASK) | PERCFG_T4CFG_ALT_2;
P2SEL = (P2SEL & ~P2SEL_SELP2_0_MASK) | P2SEL_SELP2_0_GPIO;
PERCFG = (PERCFG & ~PERCFG_T4CFG_ALT_MASK) | PERCFG_T4CFG_ALT_2;
+#if AUDIO_STANDBY_ON_P2_4
+ P2_4 = 0;
+ P2SEL &= ~P2SEL_SELP2_4_PERIPHERAL;
+ P2DIR |= (1 << 4);
+#endif
+
/* Timer 3 is used to clock the DMA transfers from the audio data buffer
* to the timer 4
*/
/* Timer 3 is used to clock the DMA transfers from the audio data buffer
* to the timer 4
*/
#define AO_LED_RED 1
#define LEDS_AVAILABLE (AO_LED_RED)
#define HAS_EXTERNAL_TEMP 0
#define AO_LED_RED 1
#define LEDS_AVAILABLE (AO_LED_RED)
#define HAS_EXTERNAL_TEMP 0
+ #define AUDIO_STANDBY_ON_P2_4 0
#endif
#if defined(TELEDONGLE_V_0_2)
#endif
#if defined(TELEDONGLE_V_0_2)
#define AO_LED_RED 1
#define AO_LED_GREEN 2
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
#define AO_LED_RED 1
#define AO_LED_GREEN 2
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
+ #define AUDIO_STANDBY_ON_P2_4 0
#endif
#if defined(TELEMETRUM_V_0_1)
#endif
#if defined(TELEMETRUM_V_0_1)
#define AO_LED_GREEN 1
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
#define HAS_EXTERNAL_TEMP 1
#define AO_LED_GREEN 1
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
#define HAS_EXTERNAL_TEMP 1
+ #define AUDIO_STANDBY_ON_P2_4 0
#endif
#if defined(TELEDONGLE_V_0_1)
#endif
#if defined(TELEDONGLE_V_0_1)
#define AO_LED_RED 2
#define AO_LED_GREEN 1
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
#define AO_LED_RED 2
#define AO_LED_GREEN 1
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
+ #define AUDIO_STANDBY_ON_P2_4 0
#endif
#if defined(TELETERRA_V_0_1)
#endif
#if defined(TELETERRA_V_0_1)
#define AO_LED_RED 1
#define AO_LED_GREEN 2
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
#define AO_LED_RED 1
#define AO_LED_GREEN 2
#define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
+ #define AUDIO_STANDBY_ON_P2_4 1
#endif
#if defined(TIDONGLE)
#endif
#if defined(TIDONGLE)
#define PACKET_HAS_SLAVE 0
#define AO_LED_RED 2
#define LEDS_AVAILABLE (AO_LED_RED)
#define PACKET_HAS_SLAVE 0
#define AO_LED_RED 2
#define LEDS_AVAILABLE (AO_LED_RED)
+ #define AUDIO_STANDBY_ON_P2_4 0
#error Please define PACKET_HAS_SLAVE
#endif
#error Please define PACKET_HAS_SLAVE
#endif
+
+#ifndef AUDIO_STANDBY_ON_P2_4
+#error Please define AUDIO_STANDBY_ON_P2_4
+#endif
+