diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2003-11-03 23:36:36 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2003-11-03 23:36:36 +0000 |
commit | c22b411731b0a743382d7d7146e8ab59172ac764 (patch) | |
tree | b338bae2b270f819219ace242001f5872d1815db /firmware | |
parent | 51d962f99b997aaed509c24daf15e25f8069fc47 (diff) | |
download | rockbox-c22b411731b0a743382d7d7146e8ab59172ac764.tar.gz rockbox-c22b411731b0a743382d7d7146e8ab59172ac764.zip |
Patch #798050 by Leslie Donaldson, activates Line In on Player models
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4008 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/drivers/dac.c | 27 | ||||
-rw-r--r-- | firmware/drivers/dac.h | 5 | ||||
-rw-r--r-- | firmware/mpeg.c | 2 |
3 files changed, 28 insertions, 6 deletions
diff --git a/firmware/drivers/dac.c b/firmware/drivers/dac.c index c8a5414611..4212b322f0 100644 --- a/firmware/drivers/dac.c +++ b/firmware/drivers/dac.c @@ -24,6 +24,10 @@ #ifdef HAVE_DAC3550A +static bool line_in_enabled = false; +static bool dac_enabled = false; + + int dac_volume(unsigned int left, unsigned int right, bool deemph) { int ret = 0; @@ -54,12 +58,16 @@ int dac_volume(unsigned int left, unsigned int right, bool deemph) ** Bit6: 0 = 3V 1 = 5V ** Bit5: 0 = normal 1 = low power ** Bit4: 0 = AUX2 off 1 = AUX2 on -** Bit3: 0 = AUX1 off 1 = AUX2 on +** Bit3: 0 = AUX1 off 1 = AUX1 on ** Bit2: 0 = DAC off 1 = DAC on ** Bit1: 0 = stereo 1 = mono ** Bit0: 0 = normal right amp 1 = inverted right amp ******************************************************************/ -int dac_config(int value) +/* dac_config is called once to initialize it. we will apply + our static settings because of the init flow. + dac_init -> dac_line_in -> mpeg_init -> dac_config +*/ +static int dac_config(void) { int ret = 0; unsigned char buf[2]; @@ -67,7 +75,8 @@ int dac_config(int value) i2c_begin(); buf[0] = DAC_REG_WRITE | DAC_GCFG; - buf[1] = value; + buf[1] = (dac_enabled ? 0x04 : 0) | + (line_in_enabled ? 0x08 : 0); /* send write command */ if (i2c_write(DAC_DEV_WRITE,buf,2)) @@ -79,6 +88,18 @@ int dac_config(int value) return ret; } +void dac_enable(bool enable) +{ + dac_enabled = enable; + dac_config(); +} + +void dac_line_in(bool enable) +{ + line_in_enabled = enable; + dac_config(); +} + void dac_init(void) { unsigned char buf[2]; diff --git a/firmware/drivers/dac.h b/firmware/drivers/dac.h index ef5e4e992d..dc953c1420 100644 --- a/firmware/drivers/dac.h +++ b/firmware/drivers/dac.h @@ -36,8 +36,9 @@ #define DAC_AVOL 2 #define DAC_GCFG 3 -extern int dac_volume(unsigned int left, unsigned int right, bool deemph); -extern int dac_config(int value); +extern int dac_volume(unsigned int left, unsigned int right, bool deemph); +extern void dac_enable(bool enable); +extern void dac_line_in(bool enable); extern void dac_init(void); #endif diff --git a/firmware/mpeg.c b/firmware/mpeg.c index 24b3a68008..ef6972f3e4 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c @@ -3212,7 +3212,7 @@ void mpeg_init(int volume, int bass, int treble, int balance, int loudness, mas_poll_start(1); mas_writereg(MAS_REG_KPRESCALE, 0xe9400); - dac_config(0x04); /* DAC on, all else off */ + dac_enable(true); mpeg_sound_channel_config(channel_config); #endif |