Hello Jaroslav and Takashi,

may be I finally nailed down the SPDIF problem with the TerraTec EWX 24/96. The problem is caused by the execution of a second CS8427 reset in the snd_cs8427_iec958_pcm() function in the cs8427.c file, exactly in the following lines of code:

...
reset = chip->rate != rate;
snd_i2c_unlock(cs8427->bus);
if (reset)
        snd_cs8427_reset(cs8427);
...

Anyway, I think the problem arise elsewhere, within the ice1712.c file, in the snd_ice1712_playback_pro_hw_params(), where there are the following lines of code:

...
if (ice->spdif.ops.setup_rate)
        ice->spdif.ops.setup_rate(ice, params_rate(hw_params));
...

where the spdif rate is changed without checking if the rate is locked or not, i.e. without verifying if the is_pro_rate_locked() function returns true. Attached to this e-mail there's the obvious patch for this problem, changing the previous line into:

...
if (ice->spdif.ops.setup_rate && !is_pro_rate_locked(ice))
        ice->spdif.ops.setup_rate(ice, params_rate(hw_params));
...

With this patch my EWX works flawless with ALSA 0.9.7, anyway I can't check if it is going to cause problems with other ICE1712 based soundcards. I hope this change is the right one, and not something that makes just my soundcard work.

Bye,

Attachment: ice1712.dif
Description: Binary data

--
        Denis Sbragion
        InfoTecna
        Tel: +39 0362 805396, Fax: +39 0362 805404
        URL: http://www.infotecna.it

Reply via email to