diff options
Diffstat (limited to 'firmware/drivers/audio/as3514.c')
-rw-r--r-- | firmware/drivers/audio/as3514.c | 42 |
1 files changed, 8 insertions, 34 deletions
diff --git a/firmware/drivers/audio/as3514.c b/firmware/drivers/audio/as3514.c index 5f18bc6ec1..b9118f9fcf 100644 --- a/firmware/drivers/audio/as3514.c +++ b/firmware/drivers/audio/as3514.c | |||
@@ -63,21 +63,6 @@ | |||
63 | 63 | ||
64 | #endif | 64 | #endif |
65 | 65 | ||
66 | const struct sound_settings_info audiohw_settings[] = { | ||
67 | [SOUND_VOLUME] = {"dB", 0, 1, VOLUME_MIN/10, 6, -25}, | ||
68 | /* HAVE_SW_TONE_CONTROLS */ | ||
69 | [SOUND_BASS] = {"dB", 0, 1, -24, 24, 0}, | ||
70 | [SOUND_TREBLE] = {"dB", 0, 1, -24, 24, 0}, | ||
71 | [SOUND_BALANCE] = {"%", 0, 1,-100, 100, 0}, | ||
72 | [SOUND_CHANNELS] = {"", 0, 1, 0, 5, 0}, | ||
73 | [SOUND_STEREO_WIDTH] = {"%", 0, 5, 0, 250, 100}, | ||
74 | #ifdef HAVE_RECORDING | ||
75 | [SOUND_MIC_GAIN] = {"dB", 1, 1, 0, 39, 23}, | ||
76 | [SOUND_LEFT_GAIN] = {"dB", 1, 1, 0, 31, 23}, | ||
77 | [SOUND_RIGHT_GAIN] = {"dB", 1, 1, 0, 31, 23}, | ||
78 | #endif | ||
79 | }; | ||
80 | |||
81 | /* Shadow registers */ | 66 | /* Shadow registers */ |
82 | static uint8_t as3514_regs[AS3514_NUM_AUDIO_REGS]; /* 8-bit registers */ | 67 | static uint8_t as3514_regs[AS3514_NUM_AUDIO_REGS]; /* 8-bit registers */ |
83 | 68 | ||
@@ -112,7 +97,7 @@ static void as3514_write_masked(unsigned int reg, unsigned int bits, | |||
112 | } | 97 | } |
113 | 98 | ||
114 | /* convert tenth of dB volume to master volume register value */ | 99 | /* convert tenth of dB volume to master volume register value */ |
115 | int tenthdb2master(int db) | 100 | static int vol_tenthdb2hw(int db) |
116 | { | 101 | { |
117 | /* +6 to -73.5dB (or -81.0 dB) in 1.5dB steps == 53 (or 58) levels */ | 102 | /* +6 to -73.5dB (or -81.0 dB) in 1.5dB steps == 53 (or 58) levels */ |
118 | if (db < VOLUME_MIN) { | 103 | if (db < VOLUME_MIN) { |
@@ -124,22 +109,6 @@ int tenthdb2master(int db) | |||
124 | } | 109 | } |
125 | } | 110 | } |
126 | 111 | ||
127 | int sound_val2phys(int setting, int value) | ||
128 | { | ||
129 | switch(setting) | ||
130 | { | ||
131 | #if defined(HAVE_RECORDING) | ||
132 | case SOUND_LEFT_GAIN: | ||
133 | case SOUND_RIGHT_GAIN: | ||
134 | case SOUND_MIC_GAIN: | ||
135 | return (value - 23) * 15; | ||
136 | #endif | ||
137 | |||
138 | default: | ||
139 | return value; | ||
140 | } | ||
141 | } | ||
142 | |||
143 | /* | 112 | /* |
144 | * Initialise the PP I2C and I2S. | 113 | * Initialise the PP I2C and I2S. |
145 | */ | 114 | */ |
@@ -276,6 +245,9 @@ void audiohw_set_master_vol(int vol_l, int vol_r) | |||
276 | unsigned int hph_r, hph_l; | 245 | unsigned int hph_r, hph_l; |
277 | unsigned int mix_l, mix_r; | 246 | unsigned int mix_l, mix_r; |
278 | 247 | ||
248 | vol_l = vol_tenthdb2hw(vol_l); | ||
249 | vol_r = vol_tenthdb2hw(vol_r); | ||
250 | |||
279 | if (vol_l == 0 && vol_r == 0) { | 251 | if (vol_l == 0 && vol_r == 0) { |
280 | audiohw_mute(true); | 252 | audiohw_mute(true); |
281 | return; | 253 | return; |
@@ -322,12 +294,14 @@ void audiohw_set_master_vol(int vol_l, int vol_r) | |||
322 | } | 294 | } |
323 | 295 | ||
324 | #if 0 /* unused */ | 296 | #if 0 /* unused */ |
325 | void audiohw_set_lineout_vol(int vol_l, int vol_r) | 297 | void audiohw_set_lineout_volume(int vol_l, int vol_r) |
326 | { | 298 | { |
327 | #ifdef HAVE_AS3543 | 299 | #ifdef HAVE_AS3543 |
328 | /* line out volume is set in the same registers */ | 300 | /* line out volume is set in the same registers */ |
329 | audiohw_set_master_vol(vol_l, vol_r); | 301 | audiohw_set_master_volume(vol_l, vol_r); |
330 | #else | 302 | #else |
303 | vol_l = vol_tenthdb2hw(vol_l); | ||
304 | vol_r = vol_tenthdb2hw(vol_r); | ||
331 | as3514_write_masked(AS3514_LINE_OUT_R, vol_r, AS3514_VOL_MASK); | 305 | as3514_write_masked(AS3514_LINE_OUT_R, vol_r, AS3514_VOL_MASK); |
332 | as3514_write_masked(AS3514_LINE_OUT_L, vol_l, AS3514_VOL_MASK); | 306 | as3514_write_masked(AS3514_LINE_OUT_L, vol_l, AS3514_VOL_MASK); |
333 | #endif | 307 | #endif |