My laptop sound hasn't worked with my home-rolled kernels for a while. I found the solution in this article about the IBM X31 laptop under Debian Intel 3.0, kernel 2.6:

amixer set 'Line Jack Sense' off
amixer set 'Headphone Jack Sense' off
alsactl store

I can't find a bug report or whatever explaining why this has happened, but apparently it effects 2.6.x where x > 10 and x < 12.2. This is quite a popular chipset, so hopefully re-iterating the solution here will help someone.