We don't get any sound output on the OLPC although the mixer looks like it has appropriate volume knobs and they're all on and unmuted (and I've also tried muted just for kicks)
I dont know if this matters, but I see this in the dmesg file. ALSA sound/pci/cs5535audio/cs5535audio.c:113: Failure reading codec reg 0x7e,Last value=0x7e805368 ALSA sound/pci/cs5535audio/cs5535audio.c:113: Failure reading codec reg 0x7e,Last value=0x7e805368
(In reply to comment #1) > I dont know if this matters, but I see this in the dmesg file. > > ALSA sound/pci/cs5535audio/cs5535audio.c:113: Failure reading codec reg > 0x7e,Last value=0x7e805368 > > ALSA sound/pci/cs5535audio/cs5535audio.c:113: Failure reading codec reg > 0x7e,Last value=0x7e805368 It turns out that these codec error msgs occur with OLPC's own kernel in 767, which has working sound. Also, I do get sound with F10 snapshot1, but only on the headphones. I was only able to test without X running due to memory issues. Repeat by: 1) Boot F10 snapshot1 on XO in run-level 3 (by editing /boot/olpc.fth to include "3" in the kernel args) 2) At console, start pulseaudio: # pulseaudio > /dev/null 2>&1 & 3) aplay /usr/share/sounds/startup3.wav *hear no sound on speakers* 4) plug in headphones 5) aplay /usr/share/sounds/startup3.wav *hear sound on headphones*
Indeed, headphones do work. Adjusting the summary accordingly; thanks for the catch!
You can get sound out of the speakers if you disable the "external amplifier" mixer setting. (It's not displayed by default via the mixer applet, but has to be enabled via the mixer preferences).
It looks like we probably just need something like diff --git a/sound/pci/cs5535audio/cs5535audio.c b/sound/pci/cs5535audio/cs5535a index 1d8b160..5982a47 100644 --- a/sound/pci/cs5535audio/cs5535audio.c +++ b/sound/pci/cs5535audio/cs5535audio.c @@ -163,6 +163,9 @@ static int __devinit snd_cs5535audio_mixer(struct cs5535audi ac97.private_data = cs5535au; ac97.pci = cs5535au->pci; + if (machine_is_olpc()) + ac97->scaps |= AC97_SCAP_INV_EAPD; + if ((err = snd_ac97_mixer(pbus, &ac97, &cs5535au->ac97)) < 0) { snd_printk(KERN_ERR "mixer failed\n"); return err; I'll try to get an image built with a test kernel over the next couple of days
Applied the above with its compile fixes for the next build