summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/audio/as3514.c17
-rw-r--r--firmware/export/as3514.h7
2 files changed, 21 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}
diff --git a/firmware/export/as3514.h b/firmware/export/as3514.h
index c7353a2e97..afc982da39 100644
--- a/firmware/export/as3514.h
+++ b/firmware/export/as3514.h
@@ -102,10 +102,17 @@ extern void audiohw_set_lineout_vol(int vol_l, int vol_r);
102 102
103/* HPH_OUT_R (0x02) */ 103/* HPH_OUT_R (0x02) */
104#define HPH_OUT_R_HP_OVC_TO (0x3 << 6) 104#define HPH_OUT_R_HP_OVC_TO (0x3 << 6)
105 /* AS3514/AS3517 */
105 #define HPH_OUT_R_HP_OVC_TO_0MS (0x3 << 6) 106 #define HPH_OUT_R_HP_OVC_TO_0MS (0x3 << 6)
106 #define HPH_OUT_R_HP_OVC_TO_128MS (0x1 << 6) 107 #define HPH_OUT_R_HP_OVC_TO_128MS (0x1 << 6)
107 #define HPH_OUT_R_HP_OVC_TO_256MS (0x0 << 6) 108 #define HPH_OUT_R_HP_OVC_TO_256MS (0x0 << 6)
108 #define HPH_OUT_R_HP_OVC_TO_512MS (0x2 << 6) 109 #define HPH_OUT_R_HP_OVC_TO_512MS (0x2 << 6)
110 /* AS3543 */
111 #define HPH_OUT_R_HP_OUT_SUM (0x0 << 5)
112 #define HPH_OUT_R_HP_OUT_DAC (0x1 << 5)
113 #define HPH_OUT_R_HP_OUT_LINE (0x2 << 5)
114 #define HPH_OUT_R_HP_OUT_MIC (0x3 << 5)
115 #define HPH_OUT_R_HP_OUT_MASK (0x3 << 5)
109/* Use AS3514_VOL_MASK */ 116/* Use AS3514_VOL_MASK */
110 117
111/* HPH_OUT_L (0x03) */ 118/* HPH_OUT_L (0x03) */