summaryrefslogtreecommitdiff
path: root/firmware/drivers/audio/eros_qn_codec.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/audio/eros_qn_codec.c')
-rw-r--r--firmware/drivers/audio/eros_qn_codec.c50
1 files changed, 12 insertions, 38 deletions
diff --git a/firmware/drivers/audio/eros_qn_codec.c b/firmware/drivers/audio/eros_qn_codec.c
index 39a421ee92..095b3b5305 100644
--- a/firmware/drivers/audio/eros_qn_codec.c
+++ b/firmware/drivers/audio/eros_qn_codec.c
@@ -26,56 +26,30 @@
26#include "audiohw.h" 26#include "audiohw.h"
27#include "settings.h" 27#include "settings.h"
28#include "pcm_sw_volume.h" 28#include "pcm_sw_volume.h"
29#include "gpio-x1000.h"
30 29
31static long int vol_l_hw = 0; 30#include "gpio-x1000.h"
32static long int vol_r_hw = 0;
33 31
34/* internal: Switch the output sink. 0 - headphones, 1 - line out */ 32static long int vol_l_hw = PCM5102A_VOLUME_MIN;
35void audiohw_switch_output(int select); 33static long int vol_r_hw = PCM5102A_VOLUME_MIN;
34int es9018k2m_present_flag = 0;
36 35
37void dac_set_outputs(void) 36void eros_qn_set_outputs(void)
38{ 37{
39 audiohw_set_volume(vol_l_hw, vol_r_hw); 38 audiohw_set_volume(vol_l_hw, vol_r_hw);
40} 39}
41 40
42/* this makes less sense here than it does in the audiohw-*.c file, 41void eros_qn_set_last_vol(long int vol_l, long int vol_r)
43 * but we need access to settings.h */
44void audiohw_set_volume(int vol_l, int vol_r)
45{ 42{
46 int l, r;
47
48 vol_l_hw = vol_l; 43 vol_l_hw = vol_l;
49 vol_r_hw = vol_r; 44 vol_r_hw = vol_r;
45}
50 46
51 l = vol_l; 47int eros_qn_get_volume_limit(void)
52 r = vol_r; 48{
53 49 return (global_settings.volume_limit * 10);
54#if (defined(HAVE_HEADPHONE_DETECTION) && defined(HAVE_LINEOUT_DETECTION))
55 /* make sure headphones aren't present - don't want to
56 * blow out our eardrums cranking it to full */
57 if (lineout_inserted() && !headphones_inserted())
58 {
59 audiohw_switch_output(1);
60
61 l = r = global_settings.volume_limit * 10;
62 }
63 else
64 {
65 audiohw_switch_output(0);
66
67 l = vol_l;
68 r = vol_r;
69 }
70#endif
71
72 l = l <= PCM5102A_VOLUME_MIN ? PCM_MUTE_LEVEL : (l / 20);
73 r = r <= PCM5102A_VOLUME_MIN ? PCM_MUTE_LEVEL : (r / 20);
74
75 pcm_set_master_volume(l, r);
76} 50}
77 51
78void audiohw_switch_output(int select) 52void eros_qn_switch_output(int select)
79{ 53{
80 if (select == 0) 54 if (select == 0)
81 { 55 {
@@ -85,4 +59,4 @@ void audiohw_switch_output(int select)
85 { 59 {
86 gpio_set_level(GPIO_STEREOSW_SEL, 1); 60 gpio_set_level(GPIO_STEREOSW_SEL, 1);
87 } 61 }
88} 62} \ No newline at end of file