summaryrefslogtreecommitdiff
path: root/firmware/drivers/audio
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/audio')
-rw-r--r--firmware/drivers/audio/as3514.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/firmware/drivers/audio/as3514.c b/firmware/drivers/audio/as3514.c
index 14c6e43909..11adddc0f1 100644
--- a/firmware/drivers/audio/as3514.c
+++ b/firmware/drivers/audio/as3514.c
@@ -183,15 +183,16 @@ void audiohw_preinit(void)
183 as3514_write(AS3514_LSP_OUT_L, LSP_OUT_L_SP_MUTE | 0x00); 183 as3514_write(AS3514_LSP_OUT_L, LSP_OUT_L_SP_MUTE | 0x00);
184#else 184#else
185 as3514_clear(AS3543_DAC_IF, 0x80); 185 as3514_clear(AS3543_DAC_IF, 0x80);
186 as3514_set(AS3514_LINE_IN1_R, 1<<6); // Select Line-in 2
186#endif 187#endif
187 188
188 /* Set headphone over-current to 0, Min volume */
189#if CONFIG_CPU != AS3525v2 189#if CONFIG_CPU != AS3525v2
190 /* Set headphone over-current to 0, Min volume */
190 as3514_write(AS3514_HPH_OUT_R, 191 as3514_write(AS3514_HPH_OUT_R,
191 HPH_OUT_R_HP_OVC_TO_0MS | 0x00); 192 HPH_OUT_R_HP_OVC_TO_0MS | 0x00);
192#else 193#else
193 as3514_write(AS3514_HPH_OUT_R, (0<<7) /* out */ | (1<<5) /* dac */ 194 as3514_write(AS3514_HPH_OUT_R, (0<<7) /* out */ | HPH_OUT_R_HP_OUT_DAC |
194 | 0x1f /* vol */); 195 0x00);
195#endif 196#endif
196 /* Headphone ON, MUTE, Min volume */ 197 /* Headphone ON, MUTE, Min volume */
197 as3514_write(AS3514_HPH_OUT_L, 198 as3514_write(AS3514_HPH_OUT_L,
@@ -429,13 +430,23 @@ void audiohw_set_monitor(bool enable)
429 LINE_IN1_R_LI1R_MUTE_off); 430 LINE_IN1_R_LI1R_MUTE_off);
430 as3514_set((LINE_INPUT == 1) ? AS3514_LINE_IN1_L : AS3514_LINE_IN2_L, 431 as3514_set((LINE_INPUT == 1) ? AS3514_LINE_IN1_L : AS3514_LINE_IN2_L,
431 LINE_IN1_L_LI1L_MUTE_off); 432 LINE_IN1_L_LI1L_MUTE_off);
433
434#if CONFIG_CPU == AS3525v2
435 as3514_write_masked(AS3514_HPH_OUT_R,
436 HPH_OUT_R_HP_OUT_LINE, HPH_OUT_R_HP_OUT_MASK);
437#endif
432 } 438 }
433 else { 439 else {
434 /* turn off both LIN1 and LIN2 */ 440 /* turn off both LIN1 and LIN2 */
435 as3514_clear(AS3514_LINE_IN1_R, LINE_IN1_R_LI1R_MUTE_off); 441 as3514_clear(AS3514_LINE_IN1_R, LINE_IN1_R_LI1R_MUTE_off);
436 as3514_clear(AS3514_LINE_IN1_L, LINE_IN1_L_LI1L_MUTE_off); 442 as3514_clear(AS3514_LINE_IN1_L, LINE_IN1_L_LI1L_MUTE_off);
443#if CONFIG_CPU != AS3525v2 /* not in as3543 */
437 as3514_clear(AS3514_LINE_IN2_R, LINE_IN2_R_LI2R_MUTE_off); 444 as3514_clear(AS3514_LINE_IN2_R, LINE_IN2_R_LI2R_MUTE_off);
438 as3514_clear(AS3514_LINE_IN2_L, LINE_IN2_L_LI2L_MUTE_off); 445 as3514_clear(AS3514_LINE_IN2_L, LINE_IN2_L_LI2L_MUTE_off);
446#else
447 as3514_write_masked(AS3514_HPH_OUT_R,
448 HPH_OUT_R_HP_OUT_DAC, HPH_OUT_R_HP_OUT_MASK);
449#endif
439 as3514_clear(AS3514_AUDIOSET1, AUDIOSET1_LIN1_on | AUDIOSET1_LIN2_on); 450 as3514_clear(AS3514_AUDIOSET1, AUDIOSET1_LIN1_on | AUDIOSET1_LIN2_on);
440 } 451 }
441} 452}