* Chaintech ZNF3-150
                        * Chaintech ZNF3-250
                        * Chaintech 9CJS
+                       * Chaintech AV-710
                        * Shuttle SN25P
 
     model       - Use the given board model, one of the following:
                  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.
 
 
 #include <sound/core.h>
 
 #include "ice1712.h"
+#include "envy24ht.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 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 */
 
        ice->num_total_dacs = 2;        /* only PSDOUT0 is connected */
        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;
 }
 
 
 /* entry point */
 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,
                .name = "AMP Ltd AUDIO2000",
 
  *
  */      
 
-#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 */
+#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[];