[alsa-devel] No sound with C-Media CMI8788
Hi,
I have two bug reports about the $subject. One of the users had tested it with 1.0.21 and still can get no sound with it. I'm attaching the alsa-info output + relevant dmesg lines:
[ 7.797723] CMI8788 0000:05:06.0: PCI INT A -> Link[APC1] -> GSI 16 (level, low) -> IRQ 16 [ 7.797794] CMI8788 0000:05:06.0: PCI INT A disabled [ 7.941267] AV200 0000:05:06.0: PCI INT A -> Link[APC1] -> GSI 16 (level, low) -> IRQ 16 [ 7.941335] AV200 0000:05:06.0: PCI INT A disabled [ 8.020782] CMI8787HiFier 0000:05:06.0: PCI INT A -> Link[APC1] -> GSI 16 (level, low) -> IRQ 16 [ 8.020849] CMI8787HiFier 0000:05:06.0: PCI INT A disabled
!!################################ !!ALSA Information Script v 0.4.56 !!################################
!!Script ran on: Tue Sep 1 15:56:18 UTC 2009
!!Linux Distribution !!------------------
Pardus 2009
!!DMI Information !!---------------
Manufacturer: Not provided Product Name: Not provided
!!Kernel Information !!------------------
Kernel release: 2.6.30.1-123 Operating System: GNU/Linux Architecture: i686 Processor: AMD Athlon(tm) 64 FX-57 Processor SMP Enabled: Yes
!!ALSA Version !!------------
Driver version: 1.0.20 Library version: 1.0.20 Utilities version: 1.0.20
!!Loaded ALSA modules !!-------------------
snd_mpu401
!!Sound Servers on this system !!----------------------------
Pulseaudio: Installed - Yes (/usr/bin/pulseaudio) Running - Yes
Jack: Installed - Yes (/usr/bin/jackd) Running - No !!Soundcards recognised by ALSA !!-----------------------------
1 [UART ]: MPU-401 UART - MPU-401 UART MPU-401 UART at 0x330, irq 10
!!PCI Soundcards installed in the system !!--------------------------------------
05:06.0 Multimedia audio controller: C-Media Electronics Inc CMI8788 [Oxygen HD Audio]
!!Advanced information - PCI Vendor/Device/Susbsystem ID's !!--------------------------------------------------------
05:06.0 0401: 13f6:8788 Subsystem: 13f6:8788
!!Loaded sound module options !!--------------------------
!!Module: snd_mpu401 enable : Y,N,N,N,N,N,N,N id : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> index : -2,-2,-2,-2,-2,-2,-2,-2 irq : 10,65535,65535,65535,65535,65535,65535,65535 pnp : Y,Y,Y,Y,Y,Y,Y,Y port : 816,1,1,1,1,1,1,1 uart_enter : Y,Y,Y,Y,Y,Y,Y,Y
!!ALSA Device nodes !!-----------------
crw-rw---- 1 root audio 116, 32 Sep 1 04:22 /dev/snd/controlC1 crw-rw---- 1 root audio 116, 40 Sep 1 04:22 /dev/snd/midiC1D0 crw-rw---- 1 root audio 116, 1 Sep 1 04:22 /dev/snd/seq crw-rw---- 1 root audio 116, 33 Sep 1 04:22 /dev/snd/timer
!!ALSA configuration files !!------------------------
!!System wide config file (/etc/asound.conf)
# PulseAudio plugin configuration
# Let's create a virtual device "pulse" for mixer and PCM
pcm.pulse { type pulse hint { description "PulseAudio Sound Server" } }
ctl.pulse { type pulse hint { description "PulseAudio Sound Server" } }
# Let's make it the default!
pcm.!default { type pulse hint { description "Default" } }
ctl.!default { type pulse hint { description "Default" } }
!!Aplay/Arecord output !!------------
APLAY
**** List of PLAYBACK Hardware Devices ****
ARECORD
**** List of CAPTURE Hardware Devices ****
!!Amixer output !!-------------
!!-------Mixer controls for card 1 [UART]
Card hw:1 'UART'/'MPU-401 UART at 0x330, irq 10' Mixer name : '' Components : '' Controls : 0 Simple ctrls : 0
!!Alsactl output !!-------------
--startcollapse-- state.UART { control { } } --endcollapse--
!!All Loaded Modules !!------------------
Module ppp_deflate zlib_deflate ppp_async crc_ccitt ppp_generic slhc ipv6 snd_hifier snd_virtuoso snd_cs4236 snd_oxygen snd_oxygen_lib snd_wavefront snd_wss_lib nouveau ppdev snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_opl3_lib snd_hwdep snd_pcm_oss snd_mixer_oss snd_pcm snd_mpu401 snd_mpu401_uart parport_pc drm snd_rawmidi snd_seq_device snd_timer snd pcspkr agpgart k8temp snd_page_alloc lp ns558 i2c_algo_bit soundcore gameport parport i2c_nforce2 cdc_acm asus_atk0110 brd ata_generic sata_nv pata_amd pata_acpi libata
Ozan Çağlayan wrote:
I have two bug reports about the $subject. One of the users had tested it with 1.0.21 and still can get no sound with it.
CMI8788 0000:05:06.0: PCI INT A -> Link[APC1] -> GSI 16 (level, low) -> IRQ 16 CMI8788 0000:05:06.0: PCI INT A disabled AV200 0000:05:06.0: PCI INT A -> Link[APC1] -> GSI 16 (level, low) -> IRQ 16 AV200 0000:05:06.0: PCI INT A disabled CMI8787HiFier 0000:05:06.0: PCI INT A -> Link[APC1] -> GSI 16 (level, low) -> IRQ 16 CMI8787HiFier 0000:05:06.0: PCI INT A disabled
This looks as if none of the drivers manages to detect a valid PCI subvendor/device ID.
In the file sound/pci/oxygen/oxygen_lib.c, after the line containing "subdevice = oxygen_read_eeprom(chip, 2);" (about line number 262), please add the line
printk(KERN_INFO "subdevice ID: %04x\n", subdevice);
and recompile the driver. This should show what the actual subdevice ID of your card is.
Best regards, Clemens
I wrote:
In the file sound/pci/oxygen/oxygen_lib.c, after the line containing "subdevice = oxygen_read_eeprom(chip, 2);" (about line number 262), please add the line
printk(KERN_INFO "subdevice ID: %04x\n", subdevice);
I think the cause for your unknown subdevice ID is that your card does not have an EEPROM chip. (This is a feature, it saves you $0.25!) In this case, adding the following lines at that place should make the driver load correctly:
if (subdevice == 0xffff) subdevice = 0x8788;
HTH Clemens
Clemens Ladisch wrote On 02-09-2009 15:23:
I wrote:
In the file sound/pci/oxygen/oxygen_lib.c, after the line containing "subdevice = oxygen_read_eeprom(chip, 2);" (about line number 262), please add the line
printk(KERN_INFO "subdevice ID: %04x\n", subdevice);
I think the cause for your unknown subdevice ID is that your card does not have an EEPROM chip. (This is a feature, it saves you $0.25!) In this case, adding the following lines at that place should make the driver load correctly:
if (subdevice == 0xffff) subdevice = 0x8788;
Hi,
I'll prepare patched drivers and try to get feedback from the complaining users. Just a side note: Both user confirms that the cards was working when they were using the 20081203 snapshot. So it should have been broken between that one and May 09.
Thanks!
Clemens Ladisch wrote:
I wrote:
In the file sound/pci/oxygen/oxygen_lib.c, after the line containing "subdevice = oxygen_read_eeprom(chip, 2);" (about line number 262), please add the line
printk(KERN_INFO "subdevice ID: %04x\n", subdevice);
I think the cause for your unknown subdevice ID is that your card does not have an EEPROM chip. (This is a feature, it saves you $0.25!) In this case, adding the following lines at that place should make the driver load correctly:
if (subdevice == 0xffff) subdevice = 0x8788;
Okay, that worked. But I assume that this is a device specific solution right? If there are other cards without an EEPROM chip, forcing them to 0x8788 shouldn't make sense? How should this be correctly handled?
Thanks!
Ozan Çağlayan wrote:
Clemens Ladisch wrote:
if (subdevice == 0xffff) subdevice = 0x8788;
Okay, that worked.
Applied, should soon appear in the stable 2.6.30.x kernel.
But I assume that this is a device specific solution right?
If the CMI8788 chip does not find an EEPROM, it reports the default ID.
If there are other cards without an EEPROM chip, forcing them to 0x8788 shouldn't make sense?
The Windows driver treats such a card as the reference design. Only such cards can omit the EEPROM and expect to be treated correctly.
Best regards, Clemens
participants (2)
-
Clemens Ladisch
-
Ozan Çağlayan