summaryrefslogtreecommitdiffstats
path: root/sound/pci/ice1712/ice1712.h
diff options
context:
space:
mode:
authorMaximilian Rehkopf <otakon@gmx.net>2006-03-31 13:10:35 +0200
committerJaroslav Kysela <perex@suse.cz>2006-03-31 17:59:01 +0200
commitaf9b70ac0044d126b28d28894cd890447c0a9dc1 (patch)
treebec3aed3a66239889500208eb578cfe222c921b3 /sound/pci/ice1712/ice1712.h
parent[ALSA] pcxhr - Fix the crash with REV01 board (diff)
downloadlinux-af9b70ac0044d126b28d28894cd890447c0a9dc1.tar.xz
linux-af9b70ac0044d126b28d28894cd890447c0a9dc1.zip
[ALSA] Add Aux input switch control for Aureon Universe
This patch adds a mixer control which allows the user to switch the Aux playback between the internal Aux jack, Wavetable, and Rear Line-In on Aureon Universe cards. For switching, a PCA9554 (8-line GPIO with I2C interface) and a 74HC4052 (dual 4-way mux/demux) are used. Output 0 and 1 of the PCA9554 are connected to the select pins of the 74HC4052. The I2C interface of the PCA9554 is connected to the card's internal SPI bus which is also used to control the WM8770 and CS8415. SPI and I2C on the same lines... To communicate with the PCA9554 the WM8770 and CS8415 are disabled and an I2C Stop Condition is generated before the Start Condition (needed for synchronisation because other SPI traffic appear to confuse the PCA9554). Then a normal I2C data transfer takes place. Programming must be done ridiculously slow; in theory, 4.7us is the minimum delay time for normal-speed I2C according to the datasheet, but even with 10us switching was unreliable. The Windows driver from Terratec does the programming very slowly, too (checked with an oscilloscope). PCA9554 datasheet: http://www.semiconductors.philips.com/acrobat/datasheets/PCA9554_9554A_6.pdf 74HC4052 datasheet: http://www.semiconductors.philips.com/acrobat/datasheets/74HC_HCT4052_4.pdf Signed-off-by: Maximilian Rehkopf <otakon@gmx.net> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/ice1712/ice1712.h')
-rw-r--r--sound/pci/ice1712/ice1712.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/pci/ice1712/ice1712.h b/sound/pci/ice1712/ice1712.h
index f9b22d4a3932..053f8e56fd68 100644
--- a/sound/pci/ice1712/ice1712.h
+++ b/sound/pci/ice1712/ice1712.h
@@ -373,6 +373,7 @@ struct snd_ice1712 {
unsigned int cs8415_mux;
unsigned short master[2];
unsigned short vol[8];
+ unsigned char pca9554_out;
} aureon;
/* AC97 register cache for Phase28 */
struct phase28_spec {