On Sun, May 09, 2010 at 11:34:28PM +0800, Wan ZongShun wrote:
here, I used the file named ac97.c which is located in linux-2.6\sound\soc\codecs. I am sure that it can call the '\sound\pci\ac97ac97_codec.c' file and identify the ALC203 (like the log file shows 'nuc900 AC'97 codec is ALC203',but sometimes the return value by reading one AC97 register, which is not same as the writing value to the AC97 register, that is not my expected result, but sometimes they are same.
any suggestions?
Not all AC97 registers are writable so check that you're writing to registers that the CODEC supports writing to but in general you're going to need to debug your controller driver here. Make sure you're interacting well with any cache the controller has and that you are properly synchronising with the controller during reads (which are fairly slow operations on AC97).
Also make sure that the CODEC is properly clocked.