On Fri, 2008-03-07 at 16:28 +0100, Alexandre BOUIN wrote:
Can you describe 'bad values' in a little more detail.
You're right, some details are missing.
For example, for first control, a playback volume control, value can go from 0 to 63. Before "store" command, I'd set it to 20. I've check that in "/var/lib/alsa/asound/state", I had the same value. Here is a part of this file :
state.codec { control.1 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 63' iface MIXER name 'HP Playback Volume' value.0 20 value.1 20 }
So saved value seems ok.
After "restore" command, I get this :
$amixer cget numid=1 numid=1,iface=MIXER,name='HP Playback Volume' ; type=INTEGER,access=rw------,values=2,min=0,max=63,step=0 : values=45,45
That's why I say that values are not correct. I'm currently using debian alsa-utils_1.0.16-1_arm package.
It's possible that your codec drivers register caching is borked. This can be easily confirmed with debug in your driver kcontrol code.
If your driver looks ok, then I'd suggest looking into your alsa-lib cross build. There have been some problems with it being incorrectly cross compiled for ARM in the past (pls search the list for details). Fwiw, I use OpenEmbedded to build ALSA for ARM and I've never ran into this issue.
Liam