summaryrefslogtreecommitdiff
path: root/firmware/drivers/audio/tlv320.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/audio/tlv320.c')
-rw-r--r--firmware/drivers/audio/tlv320.c48
1 files changed, 24 insertions, 24 deletions
diff --git a/firmware/drivers/audio/tlv320.c b/firmware/drivers/audio/tlv320.c
index 753a2453c3..b537fd5773 100644
--- a/firmware/drivers/audio/tlv320.c
+++ b/firmware/drivers/audio/tlv320.c
@@ -101,6 +101,30 @@ static void tlv320_write_reg(unsigned reg, unsigned value)
101 tlv320_regs[reg] = value; 101 tlv320_regs[reg] = value;
102} 102}
103 103
104static void audiohw_mute(bool mute)
105{
106 unsigned value_dap = tlv320_regs[REG_DAP];
107 unsigned value_l, value_r;
108
109 if (mute)
110 {
111 value_l = LHV_LHV(HEADPHONE_MUTE);
112 value_r = RHV_RHV(HEADPHONE_MUTE);
113 value_dap |= DAP_DACM;
114 }
115 else
116 {
117 value_l = LHV_LHV(tlv320.vol_l);
118 value_r = RHV_RHV(tlv320.vol_r);
119 if (value_l > HEADPHONE_MUTE || value_r > HEADPHONE_MUTE)
120 value_dap &= ~DAP_DACM;
121 }
122
123 tlv320_write_reg(REG_LHV, LHV_LZC | value_l);
124 tlv320_write_reg(REG_RHV, RHV_RZC | value_r);
125 tlv320_write_reg(REG_DAP, value_dap);
126}
127
104/* public functions */ 128/* public functions */
105 129
106/** 130/**
@@ -238,30 +262,6 @@ void audiohw_set_recvol(int left, int right, int type)
238} 262}
239#endif 263#endif
240 264
241void audiohw_mute(bool mute)
242{
243 unsigned value_dap = tlv320_regs[REG_DAP];
244 unsigned value_l, value_r;
245
246 if (mute)
247 {
248 value_l = LHV_LHV(HEADPHONE_MUTE);
249 value_r = RHV_RHV(HEADPHONE_MUTE);
250 value_dap |= DAP_DACM;
251 }
252 else
253 {
254 value_l = LHV_LHV(tlv320.vol_l);
255 value_r = RHV_RHV(tlv320.vol_r);
256 if (value_l > HEADPHONE_MUTE || value_r > HEADPHONE_MUTE)
257 value_dap &= ~DAP_DACM;
258 }
259
260 tlv320_write_reg(REG_LHV, LHV_LZC | value_l);
261 tlv320_write_reg(REG_RHV, RHV_RZC | value_r);
262 tlv320_write_reg(REG_DAP, value_dap);
263}
264
265/* Nice shutdown of TLV320 codec */ 265/* Nice shutdown of TLV320 codec */
266void audiohw_close(void) 266void audiohw_close(void)
267{ 267{