[alsa-devel] Specific question about ICE1724 + AK4114

Pavel Hofman pavel.hofman at insite.cz
Thu Jan 24 00:09:35 CET 2008


I would like to add support for automatic detection of incoming SPDIF
sample rate for ICE cards with AK4114 DIR, specifically ESI Juli and
Prodigy192 with MI/IODI/O card.

Juli windows drivers support the detection, Prodigy drivers don't 
(broken in some other way too), but the hardware is basically identical.

AK4114 support detection by comparing the recovered clock from SPDIF 
with another clock of 11, 12 or 24MHz, supplied by a crystal, or externally.

In both cards this functionality seems to be provided by Xilinx XC9536 
CPLD, together with PLL frequency multiplier MK73-1. It all fits 
together, the CPLD provides the freqency division for PLL feedback of 
the multiplier. External reference clock input of AK4114 is connected to 
CPLD, as well as setup pins XTL0/1. Output frequency of MK73-1 specified 
in datasheet is in the range of 10-50MHz

Here is my question: For the PLL multiplier to work, its datasheet says 
it must be fed with input pulses of 20-50kHz. This frequency could be 
easily provided by ICE1724, BUT in master mode only. When in slave mode 
(which is the case for active SPDIF input - clock provided by AK4114), 
all the clocks are derived from the external clock. This signal 
obviously cannot be used as reference for the sample rate detection in 
AK4114 - i.e. basically of itself.

According to the ICE1724 datasheet, only I2C and MIDI clocks are derived 
from the 48kHz mode crystal in slave mode. The datasheed says I2C clock 
is output only during I2C read/write activity, MIDI clock is not 
directly output at all.

The cards have no other visible crystals/clock modules apart of those 
two connected directly to ICE1724. I could not trace any connections 
from the actual crystals to CPLD.

Now here I am, absolutely wondering where the CPLD gets its low 
frequency stable signal for the PLL multiplier, to provide reference 
clock for SPDIF rate detection. I am afraid without this knowledge I 
cannot make the detection work in the alsa driver.

Hopefully someone experienced in this area will throw a ray of light 
upon this mystery.

Thanks in advance for any ideas, information, suggestions.

Best regards,

Pavel Hofman.

More information about the Alsa-devel mailing list