Mark Brown wrote: > On Tue, Oct 28, 2008 at 01:10:31PM +0000, Mark Brown wrote: > > >> It looks like you might've been right after all. I still can't see >> where this makes a difference to the speaker paths but the patch below >> seems to resolve the issues I'm seeing here. >> > > >> Oliver, could you test the patch below please? >> > > Gah, sorry - it doesn't help, I was masking the problem another way. > Ok, well I tried it anyway and it doesn't solve the problem. I've done a lot more tracing and think I may have found something relevant. I'm not entirely sure what is supposed to be happening so can't figure it out myself, but maybe you will know... When turning the PCM->Speaker mixer on and off in alsamixer (before its broken) the mixer's widget->value seems to flick between 0x4000 and 0x0000. After breaking it with amixer it flicks between 0x4001 and 0x4000, both of which fire the lines: if (val) /* new connection */ path->connect = invert ? 0:1; in dapm_mixer_update_power(). I've put some debugging to report whats happening to path->connect in dapm_mixer_update_power() and this is what happens: ON in alsamixer when working: +dapm_mixer_update_power(kcontrol=Speaker Mixer PCM Playback Switch, reg=0000000c, val=00000000, val_mask=00004001, invert=00000001) found path for kcontrol: name='PCM Playback Switch', long_name='Speaker Mixer PCM Playback Switch' val=false: path->connect: 0 --> 1 -dapm_mixer_update_power() OFF in alsamixer when working: +dapm_mixer_update_power(kcontrol=Speaker Mixer PCM Playback Switch, reg=0000000c, val=00004000, val_mask=00004001, invert=00000001) found path for kcontrol: name='PCM Playback Switch', long_name='Speaker Mixer PCM Playback Switch' val=true: path->connect: 1 --> 0 -dapm_mixer_update_power() Leaving it on in alsamixer and running the amixer on command. This happens: +dapm_mixer_update_power(kcontrol=Speaker Mixer PCM Playback Switch, reg=0000000c, val=00000001, val_mask=00004001, invert=00000001) found path for kcontrol: name='PCM Playback Switch', long_name='Speaker Mixer PCM Playback Switch' val=true: path->connect: 1 --> 0 +dapm_power_widgets() i.e it seems to turn it off? From then on, any further attempts to turn it on in amixer give: +dapm_mixer_update_power(kcontrol=Speaker Mixer PCM Playback Switch, reg=0000000c, val=00004001, val_mask=00004001, invert=00000001) found path for kcontrol: name='PCM Playback Switch', long_name='Speaker Mixer PCM Playback Switch' val=true: path->connect: 0 --> 0 +dapm_power_widgets() Any further off/on toggling in alsamixer once broken just results in: +dapm_mixer_update_power(kcontrol=Speaker Mixer PCM Playback Switch, reg=0000000c, val=00004001, val_mask=00004001, invert=00000001) found path for kcontrol: name='PCM Playback Switch', long_name='Speaker Mixer PCM Playback Switch' val=true: path->connect: 0 --> 0 +dapm_power_widgets() +dapm_mixer_update_power(kcontrol=Speaker Mixer PCM Playback Switch, reg=0000000c, val=00000001, val_mask=00004001, invert=00000001) found path for kcontrol: name='PCM Playback Switch', long_name='Speaker Mixer PCM Playback Switch' val=true: path->connect: 0 --> 0 +dapm_power_widgets() Does that give you any ideas of what happening on my system? Thanks, Oliver _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel