Difference between revisions of "CS4239"

From ThinkWiki
Jump to: navigation, search
(Added PnP information)
(switched categorization)
 
(13 intermediate revisions by 9 users not shown)
Line 6: Line 6:
 
This is a Cirrus Logic Audio controller
 
This is a Cirrus Logic Audio controller
  
Note: This sound chip is paired with a PCI [[CS4610]] audio controller, only one sound driver should be loaded, preferably the PCI driver.
+
Note: This sound adapter is paired with a PCI [[CS4610]] audio controller.
  
 
=== Features ===
 
=== Features ===
Line 15: Line 15:
 
|}
 
|}
  
=== Linux OSS driver ===
 
This sound chip is supported by the cs4232 kernel module. Use the following options line when loading this module:
 
  
options cs4232 io=0x530 irq=5 dma=1 dma2=0
+
 
 
=== Linux ALSA driver ===
 
=== Linux ALSA driver ===
 
This sound chip is supported by the snd-cs4236 kernel module. Use the following options line when loading this module:
 
This sound chip is supported by the snd-cs4236 kernel module. Use the following options line when loading this module:
  
  options snd-cs4236 snd_index=0 snd_port=0x530 snd_cport=0x538 snd_isapnp=0 snd_dma1=1 snd_dma2=0 snd_irq=5
+
  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-2.6.26.8 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:
 +
CONFIG_SND_CS4236=y
 +
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-2.6.32.7 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.
  
 
=== PnP issues ===
 
=== PnP issues ===
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 chips in thinkpad, a isapnptools like user space configuration approach described in [[CS4239 in PnP mode]] could be used.
+
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 [[Script for configuring the CS4239 sound chip in PnP mode|this one]] may be used.  See also [[Problem with broken sound on some ThinkPads|this page]] for more information.
 +
 
 +
=== Mixer ===
 +
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.
  
 
=== ThinkPads this chip may be found in ===
 
=== ThinkPads this chip may be found in ===
Line 31: Line 70:
 
* {{770X}}, {{770Z}}
 
* {{770X}}, {{770Z}}
  
[[Category:Components]]
+
[[Category:Audio Devices]]

Latest revision as of 14:21, 15 November 2020

CS4239

This is a Cirrus Logic Audio controller

Note: This sound adapter is paired with a PCI CS4610 audio controller.

Features

  • Chipset: CS4239
  • Interface: ISA 16bit


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-2.6.26.8 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:

CONFIG_SND_CS4236=y

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-2.6.32.7 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.

PnP issues

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.

Mixer

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.

ThinkPads this chip may be found in