summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/uda1380.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/firmware/drivers/uda1380.c b/firmware/drivers/uda1380.c
index 67479fd92e..4b63ccd744 100644
--- a/firmware/drivers/uda1380.c
+++ b/firmware/drivers/uda1380.c
@@ -128,20 +128,27 @@ int uda1380_set_regs(void)
128 return 0; 128 return 0;
129} 129}
130 130
131/* Silently enable / disable audio output */
132void uda1380_enable_output(bool enable)
133{
134 if (enable) {
135 uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] | PON_HP);
136
137 /* Sleep a while, then disable the master mute */
138 sleep(HZ/8);
139 uda1380_write_reg(REG_MUTE, MUTE_CH2);
140 } else {
141 uda1380_write_reg(REG_MUTE, MUTE_MASTER);
142 uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] & ~PON_HP);
143 }
144}
145
131/* Initialize UDA1380 codec with default register values (uda1380_defaults) */ 146/* Initialize UDA1380 codec with default register values (uda1380_defaults) */
132int uda1380_init(void) 147int uda1380_init(void)
133{ 148{
134 if (uda1380_set_regs() == -1) 149 if (uda1380_set_regs() == -1)
135 return -1; 150 return -1;
136 151
137 /* Sleep a while, then power on headphone amp */
138 sleep(HZ/8);
139 uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] | PON_HP);
140
141 /* Sleep a little more, then disable the master mute */
142 sleep(HZ/8);
143 uda1380_write_reg(REG_MUTE, MUTE_CH2);
144
145 return 0; 152 return 0;
146} 153}
147 154