Takashi Iwai schrieb, Am 14.08.2008 15:47:
Pass model=phase22 module option to snd-ice1724 driver. Then it handles the card as if it's phase22.
Thanks for this hin. Unfortunately it changes nothing - still kernel error message, still no usable sound device.
I also tried the following kernel patch, which gives me an accessible sound device and usable mixer (and no kernel error), but recording does not work (just noise). The patch is quite simple - it just adds the subvendor ID of the Swissonic card and adds all phase22 functionality to it.
Manuel
--- -:[/usr/src/linux/sound/pci/ice1712]#> diff -uN phase.h.bak phase.h --- phase.h.bak 2008-08-12 10:13:49.000000000 +0200 +++ phase.h 2008-08-12 09:49:23.000000000 +0200 @@ -25,9 +25,11 @@ */
#define PHASE_DEVICE_DESC "{Terratec,Phase 22},"\ + "{Swissonic,TS22PCI},"\ "{Terratec,Phase 28},"
#define VT1724_SUBDEVICE_PHASE22 0x3b155011 +#define VT1724_SUBDEVICE_TS22PCI 0x3b157b11 #define VT1724_SUBDEVICE_PHASE28 0x3b154911
/* entry point */ ---
--- -:[/usr/src/linux/sound/pci/ice1712]#> diff -uN phase.c.bak phase.c --- phase.c.bak 2008-08-12 09:51:28.000000000 +0200 +++ phase.c 2008-08-12 09:51:28.000000000 +0200 @@ -124,6 +124,11 @@ ice->num_total_adcs = 2; ice->vt1720 = 1; // Envy24HT-S have 16 bit wide GPIO break; + case VT1724_SUBDEVICE_TS22PCI: + ice->num_total_dacs = 2; + ice->num_total_adcs = 2; + ice->vt1720 = 1; // Envy24HT-S have 16 bit wide GPIO + break; default: snd_BUG(); return -EINVAL; @@ -139,6 +144,10 @@ if ((err = snd_ice1712_akm4xxx_init(ak, &akm_phase22, &akm_phase22_priv, ice)) < 0) return err; break; + case VT1724_SUBDEVICE_TS22PCI: + if ((err = snd_ice1712_akm4xxx_init(ak, &akm_phase22, &akm_phase22_priv, ice)) < 0) + return err; + break; }
return 0; @@ -153,6 +162,10 @@ err = snd_ice1712_akm4xxx_build_controls(ice); if (err < 0) return err; + case VT1724_SUBDEVICE_TS22PCI: + err = snd_ice1712_akm4xxx_build_controls(ice); + if (err < 0) + return err; } return 0; } @@ -896,6 +909,15 @@ .eeprom_data = phase22_eeprom, }, { + .subvendor = VT1724_SUBDEVICE_TS22PCI, + .name = "Swissonic TS22PCI", + .model = "phase22", + .chip_init = phase22_init, + .build_controls = phase22_add_controls, + .eeprom_size = sizeof(phase22_eeprom), + .eeprom_data = phase22_eeprom, + }, + { .subvendor = VT1724_SUBDEVICE_PHASE28, .name = "Terratec PHASE 28", .model = "phase28", ---