diff options
author | Takashi Iwai <tiwai@suse.de> | 2005-05-27 06:10:40 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2005-05-29 04:15:24 -0400 |
commit | 8cfbbac6ad024c3dc749ff20d7c308794da6e370 (patch) | |
tree | ea9ca27d2c57e16d88ca6fd8add787d0682a36de /sound | |
parent | 11ca9afcfee3e6667a498b702642b09ac7312a8a (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')
-rw-r--r-- | sound/pci/ice1712/amp.c | 30 | ||||
-rw-r--r-- | sound/pci/ice1712/amp.h | 16 |
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 | ||
36 | static 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 | ||
36 | static int __devinit snd_vt1724_amp_init(ice1712_t *ice) | 43 | static 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 */ |
55 | struct snd_ice1712_card_info snd_vt1724_amp_cards[] __devinitdata = { | 78 | struct 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 | ||
31 | extern struct snd_ice1712_card_info snd_vt1724_amp_cards[]; | 45 | extern struct snd_ice1712_card_info snd_vt1724_amp_cards[]; |
32 | 46 | ||