diff options
Diffstat (limited to 'firmware/drivers/audio/eros_qn_codec.c')
-rw-r--r-- | firmware/drivers/audio/eros_qn_codec.c | 50 |
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 | ||
31 | static long int vol_l_hw = 0; | 30 | #include "gpio-x1000.h" |
32 | static long int vol_r_hw = 0; | ||
33 | 31 | ||
34 | /* internal: Switch the output sink. 0 - headphones, 1 - line out */ | 32 | static long int vol_l_hw = PCM5102A_VOLUME_MIN; |
35 | void audiohw_switch_output(int select); | 33 | static long int vol_r_hw = PCM5102A_VOLUME_MIN; |
34 | int es9018k2m_present_flag = 0; | ||
36 | 35 | ||
37 | void dac_set_outputs(void) | 36 | void 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, | 41 | void eros_qn_set_last_vol(long int vol_l, long int vol_r) |
43 | * but we need access to settings.h */ | ||
44 | void 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; | 47 | int 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 | ||
78 | void audiohw_switch_output(int select) | 52 | void 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 |