From d7170b7542f9a593377f2f36e3d1f933681af718 Mon Sep 17 00:00:00 2001 From: Miika Pekkarinen Date: Sun, 28 Aug 2005 15:33:37 +0000 Subject: iRiver: Reduced pops from the line out connector. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7411 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/uda1380.c | 6 +++--- firmware/pcm_playback.c | 10 ++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/firmware/drivers/uda1380.c b/firmware/drivers/uda1380.c index 8accdc46b3..c0ff0c7ceb 100644 --- a/firmware/drivers/uda1380.c +++ b/firmware/drivers/uda1380.c @@ -48,7 +48,7 @@ unsigned short uda1380_defaults[2*NUM_DEFAULT_REGS] = { REG_0, EN_DAC | EN_INT | EN_DEC | SYSCLK_256FS | WSPLL_25_50, REG_I2S, I2S_IFMT_IIS, - REG_PWR, PON_PLL | PON_DAC | PON_BIAS, /* PON_HP is enabled later */ + REG_PWR, PON_PLL | PON_BIAS, /* PON_HP & PON_DAC is enabled later */ REG_AMIX, AMIX_RIGHT(0x3f) | AMIX_LEFT(0x3f), /* 00=max, 3f=mute */ REG_MASTER_VOL, MASTER_VOL_LEFT(0x20) | MASTER_VOL_RIGHT(0x20), /* 00=max, ff=mute */ REG_MIX_VOL, MIX_VOL_CH_1(0) | MIX_VOL_CH_2(0xff), /* 00=max, ff=mute */ @@ -157,10 +157,10 @@ int uda1380_set_regs(void) void uda1380_enable_output(bool enable) { if (enable) { - uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] | PON_HP); + uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] | PON_DAC | PON_HP); } else { uda1380_write_reg(REG_MUTE, MUTE_MASTER); - uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] & ~PON_HP); + uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] & ~PON_DAC); } } diff --git a/firmware/pcm_playback.c b/firmware/pcm_playback.c index 5e2ba07b18..f75ec69857 100644 --- a/firmware/pcm_playback.c +++ b/firmware/pcm_playback.c @@ -307,14 +307,16 @@ void pcm_init(void) /* Initialize default register values. */ uda1380_init(); - /* Turn on headphone power */ - uda1380_enable_output(true); + /* Sleep a while so the power can stabilize (especially a long + delay is needed for the line out connector). */ + sleep(HZ); - /* Sleep a little so the power can stabilize. */ - sleep(HZ/4); + /* Power on FSDAC and HP amp. */ + uda1380_enable_output(true); /* Unmute the master channel (DAC should be at zero point now). */ uda1380_mute(false); + #elif defined(HAVE_TLV320) tlv320_init(); tlv320_enable_output(true); -- cgit v1.2.3