diff options
Diffstat (limited to 'firmware/target/mips/ingenic_x1000/erosqnative')
-rw-r--r-- | firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c b/firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c index 52265c9580..caecf493f0 100644 --- a/firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c +++ b/firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c | |||
@@ -47,6 +47,7 @@ void audiohw_init(void) | |||
47 | aic_set_i2s_mode(AIC_I2S_MASTER_MODE); | 47 | aic_set_i2s_mode(AIC_I2S_MASTER_MODE); |
48 | audiohw_set_frequency(HW_FREQ_48); | 48 | audiohw_set_frequency(HW_FREQ_48); |
49 | 49 | ||
50 | aic_set_play_last_sample(true); | ||
50 | aic_enable_i2s_master_clock(true); | 51 | aic_enable_i2s_master_clock(true); |
51 | aic_enable_i2s_bit_clock(true); | 52 | aic_enable_i2s_bit_clock(true); |
52 | 53 | ||
@@ -59,6 +60,22 @@ void audiohw_init(void) | |||
59 | 60 | ||
60 | void audiohw_postinit(void) | 61 | void audiohw_postinit(void) |
61 | { | 62 | { |
63 | /* | ||
64 | * enable playback, fill FIFO buffer with -1 to prevent | ||
65 | * the DAC from auto-muting, wait, and then stop playback. | ||
66 | * This seems to completely prevent power-on or first-track | ||
67 | * clicking. | ||
68 | */ | ||
69 | jz_writef(AIC_CCR, ERPL(1)); | ||
70 | for (int i = 0; i < 32; i++) | ||
71 | { | ||
72 | jz_write(AIC_DR, 0xFFFFFF); | ||
73 | } | ||
74 | /* Wait until all samples are through the FIFO. */ | ||
75 | while(jz_readf(AIC_SR, TFL) != 0); | ||
76 | mdelay(20); /* This seems to silence the power-on click */ | ||
77 | jz_writef(AIC_CCR, ERPL(0)); | ||
78 | |||
62 | /* unmute - attempt to make power-on pop-free */ | 79 | /* unmute - attempt to make power-on pop-free */ |
63 | gpio_set_level(GPIO_ISL54405_SEL, 0); | 80 | gpio_set_level(GPIO_ISL54405_SEL, 0); |
64 | gpio_set_level(GPIO_MAX97220_SHDN, 1); | 81 | gpio_set_level(GPIO_MAX97220_SHDN, 1); |