Linux ALSA driver
This sound chip is supported by the snd-cs4236 kernel module. Use the following options line when loading this module:
options snd-cs4236 index=0 port=0x530 cport=0x538 isapnp=0 dma1=1 dma2=0 irq=5
One 600E running Debian Etch with vanilla 2.6.28 kernel failed to produce sound with snd-cs4236, but the sound works with driver snd-cs4232 loaded. Instructions for Ubuntu suggest to blacklist this driver which in this case was wrong. With standard Debian etch and etchnhalf kernels the snd-cs4236 did not work and snd-cs4232 got stuck on device initialisation or crashed the kernel. Working set of ALSA modules for this 600E on 2.6.28 is:
# lsmod | grep snd snd_cs4232 11764 1 snd_opl3_lib 8928 1 snd_cs4232 snd_hwdep 6084 1 snd_opl3_lib snd_wss_lib 22400 1 snd_cs4232 snd_pcm 60072 2 snd_wss_lib snd_timer 16708 3 snd_opl3_lib,snd_wss_lib,snd_pcm snd_page_alloc 8008 2 snd_wss_lib,snd_pcm snd_mpu401_uart 5824 1 snd_cs4232 snd_rawmidi 17728 1 snd_mpu401_uart snd_seq_device 6284 2 snd_opl3_lib,snd_rawmidi snd 44580 10 snd_cs4232,snd_opl3_lib,snd_hwdep,snd_wss_lib,snd_pcm,snd_timer,snd_mpu401_uart,snd_rawmidi,snd_seq_device soundcore 6016 1 snd
Vanilla Linux ALSA driver >linux-2.6.26
linux-22.214.171.124 was the last release which contained the snd_cs4232 module which worked smooth on the 770/770x laptops e.g.
modprobe snd-cs4232 enable=1 isapnp=0 port=0x530 cport=0x538 fm_port=388 sb_port=0x220 irq=5 dma1=1 dma2=0
After linux-2.6.26 support for the 770 sound chip moved into the snd-cs4236 driver. Using this driver as a module caused frequent Oops, e.g. when trying to unload the module or using APM suspend. As a workaround I build the driver into the kernel:
and provide the configuration via kernel command line e.g. in lilo.conf:
append="snd-cs4236.isapnp=0 snd-cs4236.enable=1 snd-cs4236.port=0x530 snd-cs4236.cport=0x538 snd-cs4236.fmport=0x388 snd-cs4236.sb_port=0x220 snd-cs4236.irq=5 snd-cs4236.dma1=1 snd-cs4236.dma2=0"
This works at least, but still fills logfiles with warnings from kernel/time/timekeeping.c on APM suspend. Tested with debian stable + vanilla linux-126.96.36.199 on a 770x (9549-7BO).
CS4236 vs. CS4232
On at least one 600E, with kernels up to 2.6.24.x and ALSA versions up to 1.0.17 (compiled and installed out-of-kernel), one of the working setups was:
options snd-cs4236 port=0x530 cport=0x538 isapnp=0 dma1=1 dma2=2 irq=5
Curiously, these parameters appeared to change with each kernel update and would seemingly at random be either correctly detected by alsaconfig or need to be manually tweaked until some lucky combination was found.
Luckily, on this same 600E, with kernels starting at 2.6.27.x, the in-kernel ALSA driver CS4232 'just works' without passing any special parameters.
This chip is software configurable. In Thinkpads, the BIOS sets up the chip if fast boot is disabled. If fast boot is enabled, the chip is disabled until a PnP driver enables it. As both the OSS and the ALSA module do not support PnP discovering of this chip in a ThinkPad, a configuration script like this one may be used. See also this page for more information.
I loaded the cs4242 module and on my Gnome Desktop (Ubuntu) and the sound work, but was too low when I play music and with the mixer of Gnome was not possible to modify the volume. I fixed the problem installing the mixer of KDE (kmix) and I use PCM to modify the volume.