also, pls get the ALSA drivers and review the lines referring to 'enabling alice3'
alsa-driver/alsa-kernel/pci/emu10k1/emu10k1_main.c:
find the function snd_emu10k1_init()
and check (emu->card_capabilities->ca0151_chip) /* audigy2 */
initialization code
in their previous version (released 2 years ago or so), there was a message from CL:
//Hacks to work independent of haP16V driver
CTDWORD dwTemp;
//Setup SRCMulti_I2S SamplingRate
dwTemp = crOsReadPtrDword(m_crosid, EHC);
dwTemp &= 0xfffff1ff;
dwTemp |= (0x2<<9);
crOsWritePtrDword(m_crosid, EHC, dwTemp);
(this corresponds to iKX:
tr_write(0x76,0,...)
//Setup SRCSel (Enable Spdif,I2S SRCMulti)
crOsWriteDword(m_crosid, 0x20, 0x600000);
crOsWriteDword(m_crosid, 0x24, 0x14);
this correponds to iKX:
16v_write(0x60,0x14);
//Setup SRCMulti Input Audio Enable
crOsWriteDword(m_crosid, 0x20, 0x6E0000);
crOsWriteDword(m_crosid, 0x24, 0xFF00FF00);
note: kX uses differen value
//Setup I2S ASRC Enable
dwTemp = crOsReadDword(m_crosid, HC);
dwTemp |= 0x00000070;
crOsWriteDword(m_crosid, HC, dwTemp);
// Unmute Analog now. Set GPO6 to 1.
// This has to be done after init I2SOut beyond 48KHz.
// So, sequence is important.
CTDWORD dwValue = crOsReadDword(m_crosid, GPIO);
dwValue |= 0x0040;
crOsWriteDword(m_crosid, GPIO, dwValue);
this corresponds to iKX::fn0_write(0x18,value);
kX does always set GPIO the very last register in the initialization sequence...
----
by using kX API, you can re-set GPIO, I2SOut etc. registers to their power-on values and try to initialize the registers in some particular order...
E.