summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcoen Hirschberg <marcoen@gmail.com>2005-06-14 00:15:16 +0000
committerMarcoen Hirschberg <marcoen@gmail.com>2005-06-14 00:15:16 +0000
commit37f59a0f6f824d1b92a0d7893982660cb0cf1f6f (patch)
treef8fd5399a571bd08c97dfec36dad2f767e0c3023
parent24394b3316aa52cb91d52b304552ee0a54b565c5 (diff)
downloadrockbox-37f59a0f6f824d1b92a0d7893982660cb0cf1f6f.tar.gz
rockbox-37f59a0f6f824d1b92a0d7893982660cb0cf1f6f.zip
- add Andy Young's patch to make sound init more quiet
- add myself to the credits at the spot of my first commit git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6704 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--docs/CREDITS1
-rw-r--r--firmware/drivers/uda1380.c19
2 files changed, 17 insertions, 3 deletions
diff --git a/docs/CREDITS b/docs/CREDITS
index d531078910..226013ce6e 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -100,6 +100,7 @@ Jonas Häggqvist
100Thom Johansen 100Thom Johansen
101Rinat Zakirov 101Rinat Zakirov
102Manuel Dejonghe 102Manuel Dejonghe
103Marcoen Hirschberg
103Michiel van der Kolk 104Michiel van der Kolk
104Tony Motakis 105Tony Motakis
105Andy Young 106Andy Young
diff --git a/firmware/drivers/uda1380.c b/firmware/drivers/uda1380.c
index 67f8a6dc10..67479fd92e 100644
--- a/firmware/drivers/uda1380.c
+++ b/firmware/drivers/uda1380.c
@@ -47,12 +47,12 @@ unsigned short uda1380_defaults[2*NUM_DEFAULT_REGS] =
47{ 47{
48 REG_0, EN_DAC | EN_INT | EN_DEC | SYSCLK_256FS | WSPLL_25_50, 48 REG_0, EN_DAC | EN_INT | EN_DEC | SYSCLK_256FS | WSPLL_25_50,
49 REG_I2S, I2S_IFMT_IIS, 49 REG_I2S, I2S_IFMT_IIS,
50 REG_PWR, PON_PLL | PON_HP | PON_DAC | EN_AVC | PON_AVC | PON_BIAS, 50 REG_PWR, PON_PLL | PON_DAC | PON_BIAS, /* PON_HP is enabled later */
51 REG_AMIX, AMIX_RIGHT(0x10) | AMIX_LEFT(0x10), /* 00=max, 3f=mute */ 51 REG_AMIX, AMIX_RIGHT(0x10) | AMIX_LEFT(0x10), /* 00=max, 3f=mute */
52 REG_MASTER_VOL, MASTER_VOL_LEFT(0x20) | MASTER_VOL_RIGHT(0x20), /* 00=max, ff=mute */ 52 REG_MASTER_VOL, MASTER_VOL_LEFT(0x20) | MASTER_VOL_RIGHT(0x20), /* 00=max, ff=mute */
53 REG_MIX_VOL, MIX_VOL_CHANNEL_1(0) | MIX_VOL_CHANNEL_2(0xff), /* 00=max, ff=mute */ 53 REG_MIX_VOL, MIX_VOL_CHANNEL_1(0) | MIX_VOL_CHANNEL_2(0xff), /* 00=max, ff=mute */
54 REG_EQ, 0, 54 REG_EQ, 0,
55 REG_MUTE, MUTE_CH2, /* Mute channel 2 (digital decimation filter) */ 55 REG_MUTE, MUTE_MASTER, /* Mute everything to start with */
56 REG_MIX_CTL, 0, 56 REG_MIX_CTL, 0,
57 REG_DEC_VOL, 0, 57 REG_DEC_VOL, 0,
58 REG_PGA, MUTE_ADC, 58 REG_PGA, MUTE_ADC,
@@ -134,12 +134,25 @@ int uda1380_init(void)
134 if (uda1380_set_regs() == -1) 134 if (uda1380_set_regs() == -1)
135 return -1; 135 return -1;
136 136
137 /* Sleep a while, then power on headphone amp */
138 sleep(HZ/8);
139 uda1380_write_reg(REG_PWR, uda1380_regs[REG_PWR] | PON_HP);
140
141 /* Sleep a little more, then disable the master mute */
142 sleep(HZ/8);
143 uda1380_write_reg(REG_MUTE, MUTE_CH2);
144
137 return 0; 145 return 0;
138} 146}
139 147
140/* Nice shutdown of UDA1380 codec */ 148/* Nice shutdown of UDA1380 codec */
141void uda1380_close(void) 149void uda1380_close(void)
142{ 150{
143 uda1380_write_reg(REG_PWR, 0); /* Disable power */ 151 /* First enable mute and sleep a while */
152 uda1380_write_reg(REG_MUTE, MUTE_MASTER);
153 sleep(HZ/8);
154
155 /* Then power off the rest of the chip */
156 uda1380_write_reg(REG_PWR, 0);
144 uda1380_write_reg(REG_0, 0); /* Disable codec */ 157 uda1380_write_reg(REG_0, 0); /* Disable codec */
145} 158}