summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/audio/wm8978.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/firmware/drivers/audio/wm8978.c b/firmware/drivers/audio/wm8978.c
index d8bf050..ee881fb 100644
--- a/firmware/drivers/audio/wm8978.c
+++ b/firmware/drivers/audio/wm8978.c
@@ -227,12 +227,15 @@ void audiohw_postinit(void)
wmc_write(WMC_DAC_CONTROL, WMC_DACOSR_128 | WMC_AMUTE);
wmc_set(WMC_INPUT_CTRL, WMC_R2_2INPPGA | WMC_L2_2INPPGA);
- wmc_set(WMC_LEFT_INP_PGA_GAIN_CTRL, 0x3f);
- wmc_set(WMC_RIGHT_INP_PGA_GAIN_CTRL, 0x3f);
- wmc_set(WMC_LEFT_INP_PGA_GAIN_CTRL, 1<<8);
- wmc_set(WMC_RIGHT_INP_PGA_GAIN_CTRL, 1<<8);
- wmc_set(WMC_LEFT_ADC_BOOST_CTRL, (7<<3));
- wmc_set(WMC_RIGHT_ADC_BOOST_CTRL, (7<<3));
+ /* set PGA volumes to 0dB and enable zero cross */
+ wmc_set(WMC_LEFT_INP_PGA_GAIN_CTRL, 0x10 | 1 << 7);
+ wmc_set(WMC_RIGHT_INP_PGA_GAIN_CTRL, 0x10 | 1 << 7);
+ /* write to INPPGAUPDATE to actually change voulme */
+ wmc_set(WMC_LEFT_INP_PGA_GAIN_CTRL, 1 << 8);
+ wmc_set(WMC_RIGHT_INP_PGA_GAIN_CTRL, 1 << 8);
+ /* set boost gain to 0dB */
+ wmc_set(WMC_LEFT_ADC_BOOST_CTRL, (5 << 4));
+ wmc_set(WMC_RIGHT_ADC_BOOST_CTRL, (5 << 4));
/* Specific to HW clocking */
wmc_write_masked(WMC_CLOCK_GEN_CTRL, WMC_BCLKDIV_4 | WMC_MS,