Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

ErosQNative: Initialize AIC FIFO to -1

Write -1 to AIC_DR to initialize the "last sample"
to -1 in order to prevent power-on clicks.

It appears necessary to completely fill the FIFO,
otherwise I was able to get a click out of it, however
uncommon it was.

Not only does this prevent a click when first
playing a song after power-on, but it also seems to prevent
any click at all when powering on - previously, a small
click may have been heard when first booting.

Change-Id: I2b81c2fa6af9809ef1c354d7a08ca8f9893a7690

authored by

Dana Conrad and committed by
Aidan MacDonald
67d4da53 465c2166

+17
+17
firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c
··· 47 47 aic_set_i2s_mode(AIC_I2S_MASTER_MODE); 48 48 audiohw_set_frequency(HW_FREQ_48); 49 49 50 + aic_set_play_last_sample(true); 50 51 aic_enable_i2s_master_clock(true); 51 52 aic_enable_i2s_bit_clock(true); 52 53 ··· 59 60 60 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 79 /* unmute - attempt to make power-on pop-free */ 63 80 gpio_set_level(GPIO_ISL54405_SEL, 0); 64 81 gpio_set_level(GPIO_MAX97220_SHDN, 1);