aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/ice1712
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2005-05-27 06:10:40 -0400
committerJaroslav Kysela <perex@suse.cz>2005-05-29 04:15:24 -0400
commit8cfbbac6ad024c3dc749ff20d7c308794da6e370 (patch)
treeea9ca27d2c57e16d88ca6fd8add787d0682a36de /sound/pci/ice1712
parent11ca9afcfee3e6667a498b702642b09ac7312a8a (diff)
[ALSA] ice1724 - Add support of Chaintech AV-710
Documentation,ICE1724 driver Add the support of Chaintech AV-710 to ice1724 driver. The patch includes the WM-codec initialization fix by Jaanus Kivistik <jaanus@no.spam.ee>. Since both AV-710 and AMP Audio2000 have the same SSID, initialize WM codecs as default for both devices. In case it breaks Audio2000, you can pass 'model=amp2000' option to avoid WM codec initialization. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/ice1712')
-rw-r--r--sound/pci/ice1712/amp.c30
-rw-r--r--sound/pci/ice1712/amp.h16
2 files changed, 45 insertions, 1 deletions
diff --git a/sound/pci/ice1712/amp.c b/sound/pci/ice1712/amp.c
index 779951725e1e..289b0b5711e4 100644
--- a/sound/pci/ice1712/amp.c
+++ b/sound/pci/ice1712/amp.c
@@ -30,16 +30,39 @@
30#include <sound/core.h> 30#include <sound/core.h>
31 31
32#include "ice1712.h" 32#include "ice1712.h"
33#include "envy24ht.h"
33#include "amp.h" 34#include "amp.h"
34 35
36static void wm_put(ice1712_t *ice, int reg, unsigned short val)
37{
38 unsigned short cval;
39 cval = (reg << 9) | val;
40 snd_vt1724_write_i2c(ice, WM_DEV, cval >> 8, cval & 0xff);
41}
35 42
36static int __devinit snd_vt1724_amp_init(ice1712_t *ice) 43static int __devinit snd_vt1724_amp_init(ice1712_t *ice)
37{ 44{
45 static unsigned short wm_inits[] = {
46 WM_ATTEN_L, 0x0000, /* 0 db */
47 WM_ATTEN_R, 0x0000, /* 0 db */
48 WM_DAC_CTRL, 0x0008, /* 24bit I2S */
49 WM_INT_CTRL, 0x0001, /* 24bit I2S */
50 };
51
52 unsigned int i;
53
38 /* only use basic functionality for now */ 54 /* only use basic functionality for now */
39 55
40 ice->num_total_dacs = 2; /* only PSDOUT0 is connected */ 56 ice->num_total_dacs = 2; /* only PSDOUT0 is connected */
41 ice->num_total_adcs = 2; 57 ice->num_total_adcs = 2;
42 58
59 /* Chaintech AV-710 has another codecs, which need initialization */
60 /* initialize WM8728 codec */
61 if (ice->eeprom.subvendor == VT1724_SUBDEVICE_AV710) {
62 for (i = 0; i < ARRAY_SIZE(wm_inits); i += 2)
63 wm_put(ice, wm_inits[i], wm_inits[i+1]);
64 }
65
43 return 0; 66 return 0;
44} 67}
45 68
@@ -54,6 +77,13 @@ static int __devinit snd_vt1724_amp_add_controls(ice1712_t *ice)
54/* entry point */ 77/* entry point */
55struct snd_ice1712_card_info snd_vt1724_amp_cards[] __devinitdata = { 78struct snd_ice1712_card_info snd_vt1724_amp_cards[] __devinitdata = {
56 { 79 {
80 .subvendor = VT1724_SUBDEVICE_AV710,
81 .name = "Chaintech AV-710",
82 .model = "av710",
83 .chip_init = snd_vt1724_amp_init,
84 .build_controls = snd_vt1724_amp_add_controls,
85 },
86 {
57 .subvendor = VT1724_SUBDEVICE_AUDIO2000, 87 .subvendor = VT1724_SUBDEVICE_AUDIO2000,
58 .name = "AMP Ltd AUDIO2000", 88 .name = "AMP Ltd AUDIO2000",
59 .model = "amp2000", 89 .model = "amp2000",
diff --git a/sound/pci/ice1712/amp.h b/sound/pci/ice1712/amp.h
index d58d43383e83..a0fc89b48122 100644
--- a/sound/pci/ice1712/amp.h
+++ b/sound/pci/ice1712/amp.h
@@ -24,9 +24,23 @@
24 * 24 *
25 */ 25 */
26 26
27#define AMP_AUDIO2000_DEVICE_DESC "{AMP Ltd,AUDIO2000}," 27#define AMP_AUDIO2000_DEVICE_DESC "{AMP Ltd,AUDIO2000},"\
28 "{Chaintech,AV-710},"
28 29
30#if 0
29#define VT1724_SUBDEVICE_AUDIO2000 0x12142417 /* Advanced Micro Peripherals Ltd AUDIO2000 */ 31#define VT1724_SUBDEVICE_AUDIO2000 0x12142417 /* Advanced Micro Peripherals Ltd AUDIO2000 */
32#else
33#define VT1724_SUBDEVICE_AUDIO2000 0x00030003 /* a dummy ID for AMP Audio2000 */
34#endif
35#define VT1724_SUBDEVICE_AV710 0x12142417 /* AV710 - the same ID with Audio2000! */
36
37/* WM8728 on I2C for AV710 */
38#define WM_DEV 0x36
39
40#define WM_ATTEN_L 0x00
41#define WM_ATTEN_R 0x01
42#define WM_DAC_CTRL 0x02
43#define WM_INT_CTRL 0x03
30 44
31extern struct snd_ice1712_card_info snd_vt1724_amp_cards[]; 45extern struct snd_ice1712_card_info snd_vt1724_amp_cards[];
32 46