diff options
author | Jochen Voss <voss@seehuhn.de> | 2006-10-04 20:08:43 +0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2007-02-09 11:00:05 +0300 |
commit | feaa6a74d852be40c0e717471aa92eead012052c (patch) | |
tree | 9ad326bb90037ebc10375e75f6b86c6ab74a0d2c /sound/pci/ice1712/ice1712.h | |
parent | a58e7cb16dfae8a3c1c98a7ab7ca02a9e9b38921 (diff) | |
download | linux-feaa6a74d852be40c0e717471aa92eead012052c.tar.xz |
[ALSA] Enable the analog loopback of the Revolution 5.1
Enable the analog loopback of the Revolution 5.1 card.
This patch adds support for the PT2258 volume controller and modifies
the Revolution 5.1 driver to make use of this facility. This allows
to control the analog loopback of the card.
Signed-off-by: Jochen Voss <voss@seehuhn.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/pci/ice1712/ice1712.h')
-rw-r--r-- | sound/pci/ice1712/ice1712.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/sound/pci/ice1712/ice1712.h b/sound/pci/ice1712/ice1712.h index ce27eac40d4e..064542bf3af8 100644 --- a/sound/pci/ice1712/ice1712.h +++ b/sound/pci/ice1712/ice1712.h @@ -28,6 +28,7 @@ #include <sound/i2c.h> #include <sound/ak4xxx-adda.h> #include <sound/ak4114.h> +#include <sound/pt2258.h> #include <sound/pcm.h> #include <sound/mpu401.h> @@ -381,6 +382,11 @@ struct snd_ice1712 { unsigned short master[2]; unsigned short vol[8]; } phase28; + /* a non-standard I2C device for revo51 */ + struct revo51_spec { + struct snd_i2c_device *dev; + struct snd_pt2258 *pt2258; + } revo51; /* Hoontech-specific setting */ struct hoontech_spec { unsigned char boxbits[4]; @@ -462,6 +468,14 @@ static inline void snd_ice1712_gpio_write_bits(struct snd_ice1712 *ice, snd_ice1712_gpio_write(ice, mask & bits); } +static inline int snd_ice1712_gpio_read_bits(struct snd_ice1712 *ice, + unsigned int mask) +{ + ice->gpio.direction &= ~mask; + snd_ice1712_gpio_set_dir(ice, ice->gpio.direction); + return (snd_ice1712_gpio_read(ice) & mask); +} + int snd_ice1712_spdif_build_controls(struct snd_ice1712 *ice); int snd_ice1712_akm4xxx_init(struct snd_akm4xxx *ak, const struct snd_akm4xxx *template, |