summaryrefslogtreecommitdiff
path: root/firmware/drivers/audio/wm8978.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/audio/wm8978.c')
-rw-r--r--firmware/drivers/audio/wm8978.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/firmware/drivers/audio/wm8978.c b/firmware/drivers/audio/wm8978.c
index c2c19ca7be..6a7c974f43 100644
--- a/firmware/drivers/audio/wm8978.c
+++ b/firmware/drivers/audio/wm8978.c
@@ -144,12 +144,12 @@ static void wmc_write(unsigned int reg, unsigned int val)
144 wmcodec_write(reg, val); 144 wmcodec_write(reg, val);
145} 145}
146 146
147static void wmc_set(unsigned int reg, unsigned int bits) 147void wmc_set(unsigned int reg, unsigned int bits)
148{ 148{
149 wmc_write(reg, wmc_regs[reg] | bits); 149 wmc_write(reg, wmc_regs[reg] | bits);
150} 150}
151 151
152static void wmc_clear(unsigned int reg, unsigned int bits) 152void wmc_clear(unsigned int reg, unsigned int bits)
153{ 153{
154 wmc_write(reg, wmc_regs[reg] & ~bits); 154 wmc_write(reg, wmc_regs[reg] & ~bits);
155} 155}
@@ -226,6 +226,14 @@ void audiohw_postinit(void)
226 wmc_write(WMC_AUDIO_INTERFACE, WMC_WL_16 | WMC_FMT_I2S); 226 wmc_write(WMC_AUDIO_INTERFACE, WMC_WL_16 | WMC_FMT_I2S);
227 wmc_write(WMC_DAC_CONTROL, WMC_DACOSR_128 | WMC_AMUTE); 227 wmc_write(WMC_DAC_CONTROL, WMC_DACOSR_128 | WMC_AMUTE);
228 228
229 wmc_set(WMC_INPUT_CTRL, WMC_R2_2INPPGA | WMC_L2_2INPPGA);
230 wmc_set(WMC_LEFT_INP_PGA_GAIN_CTRL, 0x3f);
231 wmc_set(WMC_RIGHT_INP_PGA_GAIN_CTRL, 0x3f);
232 wmc_set(WMC_LEFT_INP_PGA_GAIN_CTRL, 1<<8);
233 wmc_set(WMC_RIGHT_INP_PGA_GAIN_CTRL, 1<<8);
234 wmc_set(WMC_LEFT_ADC_BOOST_CTRL, (7<<3));
235 wmc_set(WMC_RIGHT_ADC_BOOST_CTRL, (7<<3));
236
229 /* Specific to HW clocking */ 237 /* Specific to HW clocking */
230 wmc_write_masked(WMC_CLOCK_GEN_CTRL, WMC_BCLKDIV_4 | WMC_MS, 238 wmc_write_masked(WMC_CLOCK_GEN_CTRL, WMC_BCLKDIV_4 | WMC_MS,
231 WMC_BCLKDIV | WMC_MS | WMC_CLKSEL); 239 WMC_BCLKDIV | WMC_MS | WMC_CLKSEL);