[alsa-devel] Problem setting mixer switch with amixer/alsactl.
Mark Brown
broonie at sirena.org.uk
Fri Oct 24 01:54:48 CEST 2008
On 23 Oct 2008, at 23:12, Oliver Ford <oliford at oliford.co.uk> wrote:
> Oliver Ford wrote:
>
>>> name 'Speaker Playback Volume'
>>> value 1
>>> }
>>>
> This is unrelated, I have just left it there from playing around.
>
>
>>
>>> One other thing that would be useful would be to put trace which
>>> logs
>>> the register writes in ac97_write() in the driver and then try
>>> testing
>>> both using alsamixer and then amixer to do the final enable of the
>>> Speaker Mixer PCM Playback Switch.
>>>
> Well...
>
> In terms of the control's direct effect, setting it in alsamixer
> gives:
> pxa2xx_ac97_write: 0c = af08
>
> setting it in amixer:
> pxa2xx_ac97_write: 0c = af09
>
>
>
> Am I right in understanding that setting all the controls in amixer
> doesn't actually enable the control in the codec chip at that time
> but that the powering on/off is done by soc-dapm.c when the the DAC
> is actually enabled when playing some audio? This appears to be what
> is happening when it does work (looking at the log). I hadn't
> realised this.
>
> However, after running the offending amixer command this no longer
> happens. It seems that the dapm_power_widgets() function determines
> that the DAC is off and so doesn't power any widgets on at all.
>
> I've put some debugging in pxa2xx-ac97-write and in
> dapm_power_widgets() and the log is attached (stripped of non-audio
> stuff).
>
>
>
> Oliver
>
> Clean boot...
>
>
> ** run speaker.sh setup without PCM->speaker setting... **
> pxa2xx_ac97_write: 000c = ef08
> pxa2xx_ac97_write: 001c = 0002
> pxa2xx_ac97_write: 001c = 1802
> pxa2xx_ac97_write: 001e = 0800
> pxa2xx_ac97_write: 0006 = 0081
> pxa2xx_ac97_write: 0002 = 0080
>
> ** run alsamixer, set PCM->speaker on: **
> pxa2xx_ac97_write: 000c = af08
>
>
> # aplay /stuff/400Hz-wav.wav
> +hpipaq214_startup()
> hpipaq214-audio: Enabling iPAQ Speaker...
> hpipaq214_startup, gpio96 -> on
> -hpipaq214_startup()
>
> Playing WAVE '/stuff/400Hz-wav.wav' : Signed 16 bit Little Endian,
> Rate 44100 Hz, Mono
> pxa2xx_ac97_write: 002a = 0411
> pxa2xx_ac97_write: 002c = ac44
> DAPM: Path Widget 'DAC Inv Mux 2': off --> on
> DAPM: Path Widget 'Out 4 Mux': off --> on
> DAPM: Path Widget 'Left Speaker Out Mux': off --> on
> DAPM: DAC Widget 'Right DAC': off --> on (w->active==1)
> pxa2xx_ac97_write: 003c = 3abf
> DAPM: DAC Widget 'Left DAC': off --> on (w->active==1)
> pxa2xx_ac97_write: 003c = 3a3f
> DAPM: Path Widget 'AC97 Mixer': off --> on
> DAPM: Path Widget 'Speaker Mixer': off --> on
> pxa2xx_ac97_write: 003c = 3a3d
> DAPM: Path Widget 'Out 4': off --> on
> pxa2xx_ac97_write: 003e = efff
> DAPM: Path Widget 'Left Speaker': off --> on
> pxa2xx_ac97_write: 003e = eeff
> freq changed, set PCD to 5 (LCCR3 = 04700005, LCCR4 = 80000000)
> DAPM: Path Widget 'iPAQ Speaker': off --> on
> pxa2xx_ac97_write: 003c = 1a3d
> hpipaq214_shutdown, gpio96 -> off
>
> ** aplay exits. **
>
> ** ... few seconds delay ... **
>
> DAPM: Path Widget 'iPAQ Speaker': on --> off
> DAPM: Path Widget 'Out 4': on --> off
> pxa2xx_ac97_write: 003e = feff
> DAPM: Path Widget 'Left Speaker': on --> off
> pxa2xx_ac97_write: 003e = ffff
> DAPM: Path Widget 'AC97 Mixer': on --> off
> DAPM: Path Widget 'Speaker Mixer': on --> off
> pxa2xx_ac97_write: 003c = 1a3f
> DAPM: Path Widget 'Right DAC': on --> off
> pxa2xx_ac97_write: 003c = 1a7f
> DAPM: Path Widget 'Left DAC': on --> off
> pxa2xx_ac97_write: 003c = 1aff
> DAPM: Path Widget 'DAC Inv Mux 2': on --> off
> DAPM: Path Widget 'Out 4 Mux': on --> off
> DAPM: Path Widget 'Left Speaker Out Mux': on --> off
> pxa2xx_ac97_write: 003c = 1aff
> pxa2xx_ac97_write: 0026 = 0000
>
>
> ** all quiet **
>
> #
> #
> # amixer cset numid=62 1
> pxa2xx_ac97_write: 000c = af09
> numid=62,iface=MIXER,name='Speaker Mixer PCM Playback Swit'
> ; type=BOOLEAN,access=rw---,values=1
> : values=on
>
>
>
> # aplay /stuff/400Hz-wav.wav
> +hpipaq214_startup()
> hpipaq214-audio: Enabling iPAQ Speaker...
> hpipaq214_startup, gpio96 -> on
> -hpipaq214_startup()
>
> Playing WAVE '/stuff/400Hz-wav.wav' : Signed 16 bit Little Endian,
> Rate 44100 Hz, Mono
> freq changed, set PCD to 5 (LCCR3 = 04700005, LCCR4 = 80000000)
> pxa2xx_ac97_write: 002a = 0411
> pxa2xx_ac97_write: 002c = ac44
> DAPM: DAC Widget 'Right DAC': off --> off (w->active==1)
> DAPM: DAC Widget 'Left DAC': off --> off (w->active==1)
> pxa2xx_ac97_write: 003c = 1aff
> hpipaq214_shutdown, gpio96 -> off
> #
> #
> pxa2xx_ac97_write: 003c = 1aff
> pxa2xx_ac97_write: 0026 = 0000
More information about the Alsa-devel
mailing list