[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>
This commit is contained in:
parent
11ca9afcfe
commit
8cfbbac6ad
3 changed files with 48 additions and 2 deletions
|
@ -733,11 +733,13 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
* Chaintech ZNF3-150
|
* Chaintech ZNF3-150
|
||||||
* Chaintech ZNF3-250
|
* Chaintech ZNF3-250
|
||||||
* Chaintech 9CJS
|
* Chaintech 9CJS
|
||||||
|
* Chaintech AV-710
|
||||||
* Shuttle SN25P
|
* Shuttle SN25P
|
||||||
|
|
||||||
model - Use the given board model, one of the following:
|
model - Use the given board model, one of the following:
|
||||||
revo71, amp2000, prodigy71, prodigy192, aureon51,
|
revo71, amp2000, prodigy71, prodigy192, aureon51,
|
||||||
aureon71, universe, k8x800, phase22, phase28, ms300
|
aureon71, universe, k8x800, phase22, phase28, ms300,
|
||||||
|
av710
|
||||||
|
|
||||||
Module supports up to 8 cards and autoprobe.
|
Module supports up to 8 cards and autoprobe.
|
||||||
|
|
||||||
|
|
|
@ -30,16 +30,39 @@
|
||||||
#include <sound/core.h>
|
#include <sound/core.h>
|
||||||
|
|
||||||
#include "ice1712.h"
|
#include "ice1712.h"
|
||||||
|
#include "envy24ht.h"
|
||||||
#include "amp.h"
|
#include "amp.h"
|
||||||
|
|
||||||
|
static void wm_put(ice1712_t *ice, int reg, unsigned short val)
|
||||||
|
{
|
||||||
|
unsigned short cval;
|
||||||
|
cval = (reg << 9) | val;
|
||||||
|
snd_vt1724_write_i2c(ice, WM_DEV, cval >> 8, cval & 0xff);
|
||||||
|
}
|
||||||
|
|
||||||
static int __devinit snd_vt1724_amp_init(ice1712_t *ice)
|
static int __devinit snd_vt1724_amp_init(ice1712_t *ice)
|
||||||
{
|
{
|
||||||
|
static unsigned short wm_inits[] = {
|
||||||
|
WM_ATTEN_L, 0x0000, /* 0 db */
|
||||||
|
WM_ATTEN_R, 0x0000, /* 0 db */
|
||||||
|
WM_DAC_CTRL, 0x0008, /* 24bit I2S */
|
||||||
|
WM_INT_CTRL, 0x0001, /* 24bit I2S */
|
||||||
|
};
|
||||||
|
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
/* only use basic functionality for now */
|
/* only use basic functionality for now */
|
||||||
|
|
||||||
ice->num_total_dacs = 2; /* only PSDOUT0 is connected */
|
ice->num_total_dacs = 2; /* only PSDOUT0 is connected */
|
||||||
ice->num_total_adcs = 2;
|
ice->num_total_adcs = 2;
|
||||||
|
|
||||||
|
/* Chaintech AV-710 has another codecs, which need initialization */
|
||||||
|
/* initialize WM8728 codec */
|
||||||
|
if (ice->eeprom.subvendor == VT1724_SUBDEVICE_AV710) {
|
||||||
|
for (i = 0; i < ARRAY_SIZE(wm_inits); i += 2)
|
||||||
|
wm_put(ice, wm_inits[i], wm_inits[i+1]);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,6 +76,13 @@ static int __devinit snd_vt1724_amp_add_controls(ice1712_t *ice)
|
||||||
|
|
||||||
/* entry point */
|
/* entry point */
|
||||||
struct snd_ice1712_card_info snd_vt1724_amp_cards[] __devinitdata = {
|
struct snd_ice1712_card_info snd_vt1724_amp_cards[] __devinitdata = {
|
||||||
|
{
|
||||||
|
.subvendor = VT1724_SUBDEVICE_AV710,
|
||||||
|
.name = "Chaintech AV-710",
|
||||||
|
.model = "av710",
|
||||||
|
.chip_init = snd_vt1724_amp_init,
|
||||||
|
.build_controls = snd_vt1724_amp_add_controls,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.subvendor = VT1724_SUBDEVICE_AUDIO2000,
|
.subvendor = VT1724_SUBDEVICE_AUDIO2000,
|
||||||
.name = "AMP Ltd AUDIO2000",
|
.name = "AMP Ltd AUDIO2000",
|
||||||
|
|
|
@ -24,9 +24,23 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define AMP_AUDIO2000_DEVICE_DESC "{AMP Ltd,AUDIO2000},"
|
#define AMP_AUDIO2000_DEVICE_DESC "{AMP Ltd,AUDIO2000},"\
|
||||||
|
"{Chaintech,AV-710},"
|
||||||
|
|
||||||
|
#if 0
|
||||||
#define VT1724_SUBDEVICE_AUDIO2000 0x12142417 /* Advanced Micro Peripherals Ltd AUDIO2000 */
|
#define VT1724_SUBDEVICE_AUDIO2000 0x12142417 /* Advanced Micro Peripherals Ltd AUDIO2000 */
|
||||||
|
#else
|
||||||
|
#define VT1724_SUBDEVICE_AUDIO2000 0x00030003 /* a dummy ID for AMP Audio2000 */
|
||||||
|
#endif
|
||||||
|
#define VT1724_SUBDEVICE_AV710 0x12142417 /* AV710 - the same ID with Audio2000! */
|
||||||
|
|
||||||
|
/* WM8728 on I2C for AV710 */
|
||||||
|
#define WM_DEV 0x36
|
||||||
|
|
||||||
|
#define WM_ATTEN_L 0x00
|
||||||
|
#define WM_ATTEN_R 0x01
|
||||||
|
#define WM_DAC_CTRL 0x02
|
||||||
|
#define WM_INT_CTRL 0x03
|
||||||
|
|
||||||
extern struct snd_ice1712_card_info snd_vt1724_amp_cards[];
|
extern struct snd_ice1712_card_info snd_vt1724_amp_cards[];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue