// Configure DAC/ADC description for generic part of ice1724
        switch (ice->eeprom.subvendor) {
        case VT1724_SUBDEVICE_PHASE22:
+       case VT1724_SUBDEVICE_TS22:
                ice->num_total_dacs = 2;
                ice->num_total_adcs = 2;
                ice->vt1720 = 1; // Envy24HT-S have 16 bit wide GPIO
        ice->akm_codecs = 1;
        switch (ice->eeprom.subvendor) {
        case VT1724_SUBDEVICE_PHASE22:
+       case VT1724_SUBDEVICE_TS22:
                if ((err = snd_ice1712_akm4xxx_init(ak, &akm_phase22, &akm_phase22_priv, ice)) < 0)
                        return err;
                break;
 
        switch (ice->eeprom.subvendor) {
        case VT1724_SUBDEVICE_PHASE22:
+       case VT1724_SUBDEVICE_TS22:
                err = snd_ice1712_akm4xxx_build_controls(ice);
                if (err < 0)
                        return err;
                .eeprom_size = sizeof(phase28_eeprom),
                .eeprom_data = phase28_eeprom,
        },
+       {
+               .subvendor = VT1724_SUBDEVICE_TS22,
+               .name = "Terrasoniq TS22 PCI",
+               .model = "TS22",
+               .chip_init = phase22_init,
+               .build_controls = phase22_add_controls,
+               .eeprom_size = sizeof(phase22_eeprom),
+               .eeprom_data = phase22_eeprom,
+       },
        { } /* terminator */
 };
 
  */      
 
 #define PHASE_DEVICE_DESC "{Terratec,Phase 22},"\
-                          "{Terratec,Phase 28},"
+                          "{Terratec,Phase 28},"\
+                          "{Terrasoniq,TS22},"
 
 #define VT1724_SUBDEVICE_PHASE22       0x3b155011
 #define VT1724_SUBDEVICE_PHASE28       0x3b154911
+#define VT1724_SUBDEVICE_TS22          0x3b157b11
 
 /* entry point */
 extern struct snd_ice1712_card_info snd_vt1724_phase_cards[];