diff options
Diffstat (limited to 'firmware/drivers/uda1380.c')
-rw-r--r-- | firmware/drivers/uda1380.c | 23 |
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 */ | ||
132 | void 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) */ |
132 | int uda1380_init(void) | 147 | int 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 | ||