Bug 28030 - HDMI audio does not work with HD4200 IGP but does work with radeonhd
HDMI audio does not work with HD4200 IGP but does work with radeonhd
Status: NEW
Product: DRI
Classification: Unclassified
Component: DRM/Radeon
XOrg git
x86-64 (AMD64) Linux (All)
: medium normal
Assigned To: Default DRI bug account
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-05-08 04:16 UTC by sean finney
Modified: 2010-05-10 13:26 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
Patch against 2.6.34-rc6 to fix the problem (3.06 KB, patch)
2010-05-09 11:53 UTC, Christian König
no flags Details | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description sean finney 2010-05-08 04:16:47 UTC
I've been using the radeonhd driver for some time due to the fact that it supports audio over HDMI, so i can have everything routed to my HDMI receiver over one cable.

I read that recently the radeon driver was supposed to offer support for this as well, and since it's otherwise a better driver i thought i'd give it a go.  unfortunately, i am greeted with the sound of silence, and not hte simon and garfunkel version (which would equally be surprising, but...).  if i switch my xorg config to use the radonhd driver audio still works on this machine, but without running x or with x running and radeon driver loaded, nothing.

alsa sees the devices, and I can play to it via sox, but I don't hear anything.

here's some info that might be useful, please let me know if you need anything else.

lspci:

01:05.0 VGA compatible controller: ATI Technologies Inc RS880 [Radeon HD 4200]
01:05.1 Audio device: ATI Technologies Inc RS880 Audio Device [Radeon HD 4200]

kernel:

Linux htpc 2.6.34-rc6 #1 SMP Fri Apr 30 18:58:36 CEST 2010 x86_64 GNU/Linux

dmesg | grep -i radeon:

[   28.209345] [drm] radeon kernel modesetting enabled.
[   28.209617] radeon 0000:01:05.0: setting latency timer to 64
[   28.216607] [drm] radeon: power management initialized
[   28.216623] radeon 0000:01:05.0: VRAM: 256M 0xC0000000 - 0xCFFFFFFF (256M used)
[   28.216630] radeon 0000:01:05.0: GTT: 512M 0xA0000000 - 0xBFFFFFFF
[   28.219976] [drm] radeon: 256M of VRAM memory ready
[   28.219980] [drm] radeon: 512M of GTT memory ready.
[   28.220065] [drm] radeon: irq initialized.
[   28.221688] platform radeon_cp.0: firmware: requesting radeon/RS780_pfp.bin
[   28.273545] platform radeon_cp.0: firmware: requesting radeon/RS780_me.bin
[   28.280034] platform radeon_cp.0: firmware: requesting radeon/R600_rlc.bin
[   28.320843] [drm] radeon: ib pool ready.
[   28.321217] [drm] Radeon Display Connectors
[   28.650110] fb0: radeondrmfb frame buffer device
[   28.650115] [drm] Initialized radeon 2.3.0 20080528 for 0000:01:05.0 on minor 0


kernel options:

options radeon modeset=1 audio=1 (also tried with modeset=0)

aplay -L:

null
    Discard all samples (playback) or generate zero samples (capture)
front:CARD=SB,DEV=0
    HDA ATI SB, ALC889A Analog
    Front speakers
surround40:CARD=SB,DEV=0
    HDA ATI SB, ALC889A Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=SB,DEV=0
    HDA ATI SB, ALC889A Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=SB,DEV=0
    HDA ATI SB, ALC889A Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=SB,DEV=0
    HDA ATI SB, ALC889A Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=SB,DEV=0
    HDA ATI SB, ALC889A Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=SB,DEV=0
    HDA ATI SB, ALC889A Digital
    IEC958 (S/PDIF) Digital Audio Output
hdmi:CARD=HDMI
    HDA ATI HDMI, ATI HDMI
    HDMI Audio Output


lsmod:

Module                  Size  Used by
nls_utf8                1240  0 
nls_cp437               5825  0 
btrfs                 375614  0 
zlib_deflate           17634  1 btrfs
crc32c                  2584  1 
libcrc32c                986  1 btrfs
ufs                    57094  0 
qnx4                    6345  0 
hfsplus                64974  0 
hfs                    37094  0 
minix                  21517  0 
ntfs                  158011  0 
vfat                    7832  0 
msdos                   6265  0 
fat                    39741  2 vfat,msdos
jfs                   137530  0 
xfs                   736926  0 
exportfs                3066  1 xfs
reiserfs              193312  0 
ext4                  273039  0 
jbd2                   61357  1 ext4
crc16                   1311  1 ext4
ext2                   53155  0 
cryptd                  5422  0 
aes_x86_64              7380  2 
aes_generic            26090  1 aes_x86_64
ppdev                   5299  0 
lp                      8078  0 
parport                25598  2 ppdev,lp
acpi_cpufreq            5673  0 
cpufreq_stats           2649  0 
cpufreq_conservative     7886  0 
cpufreq_powersave        926  0 
cpufreq_userspace       1904  0 
binfmt_misc             6446  1 
uinput                  6654  1 
fuse                   50041  5 
loop                   12218  0 
joydev                  8344  0 
snd_hda_codec_idt      44345  1 
arc4                    1314  2 
snd_hda_intel          19402  1 
ecb                     1865  2 
snd_hda_codec          64924  2 snd_hda_codec_idt,snd_hda_intel
snd_hwdep               5468  1 snd_hda_codec
snd_pcm_oss            31980  0 
snd_mixer_oss          12687  1 snd_pcm_oss
pcmcia                 29415  0 
snd_pcm                61553  3 snd_hda_intel,snd_hda_codec,snd_pcm_oss
snd_seq_midi            4454  0 
snd_rawmidi            15945  1 snd_seq_midi
snd_seq_midi_event      4738  1 snd_seq_midi
iwl3945                51692  0 
snd_seq                42374  2 snd_seq_midi,snd_seq_midi_event
iwlcore                84262  1 iwl3945
nouveau               366209  3 
snd_timer              16288  2 snd_pcm,snd_seq
snd_seq_device          4515  3 snd_seq_midi,snd_rawmidi,snd_seq
mac80211              148124  2 iwl3945,iwlcore
dell_wmi                2579  0 
ttm                    39325  1 nouveau
drm_kms_helper         19995  1 nouveau
cfg80211              114001  3 iwl3945,iwlcore,mac80211
yenta_socket           18897  0 
rsrc_nonstatic          6873  1 yenta_socket
psmouse                44995  0 
dell_laptop             5040  0 
video                  18189  0 
tpm_tis                 7349  0 
tpm                     9843  1 tpm_tis
tpm_bios                4629  1 tpm
dcdbas                  4992  1 dell_laptop
evdev                   7426  24 
pcmcia_core            11412  3 pcmcia,yenta_socket,rsrc_nonstatic
serio_raw               3726  0 
snd                    46659  13 snd_hda_codec_idt,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
wmi                     5443  1 dell_wmi
i2c_i801                7822  0 
rfkill                 13314  3 cfg80211,dell_laptop
output                  1732  1 video
battery                 5518  0 
ac                      2200  0 
drm                   143465  5 nouveau,ttm,drm_kms_helper
i2c_algo_bit            4297  1 nouveau
rng_core                3166  0 
processor              28802  3 acpi_cpufreq
i2c_core               15804  5 nouveau,drm_kms_helper,i2c_i801,drm,i2c_algo_bit
button                  4706  1 nouveau
soundcore               4726  1 snd
snd_page_alloc          6097  2 snd_hda_intel,snd_pcm
intel_agp              25635  0 
dm_snapshot            24498  0 
dm_mirror              11626  0 
dm_region_hash          6640  1 dm_mirror
dm_log                  7645  2 dm_mirror,dm_region_hash
ext3                  105714  3 
jbd                    36203  1 ext3
mbcache                 5152  3 ext4,ext2,ext3
dm_mod                 54789  9 dm_snapshot,dm_mirror,dm_log
raid1                  18423  0 
md_mod                 76980  1 raid1
sg                     19029  0 
sr_mod                 12711  0 
sd_mod                 30243  5 
crc_t10dif              1284  1 sd_mod
cdrom                  29769  1 sr_mod
ata_generic             3023  0 
ata_piix               20556  5 
libata                132830  2 ata_generic,ata_piix
uhci_hcd               18218  0 
scsi_mod              124407  4 sg,sr_mod,sd_mod,libata
tg3                   104200  0 
ide_pci_generic         2828  0 
ehci_hcd               29920  0 
libphy                 14000  1 tg3
ide_core               76791  1 ide_pci_generic
usbcore               124669  3 uhci_hcd,ehci_hcd
nls_base                6369  9 nls_utf8,nls_cp437,hfsplus,hfs,ntfs,vfat,fat,jfs,usbcore
thermal                12046  0 
thermal_sys            12036  3 video,processor,thermal
Comment 1 Christian König 2010-05-09 11:53:30 UTC
Created attachment 35528 [details] [review]
Patch against 2.6.34-rc6 to fix the problem
Comment 2 Christian König 2010-05-09 11:56:10 UTC
The initialisation path for the IGP version of the chipset is missing a call to r600_audio_init, so audio isn't enabled on those chipsets.

I've attached a patch to fix the problem, but beside from a compile check its completely untestet since i don't have access to an IGP version of the chipset.
Comment 3 sean finney 2010-05-09 14:31:46 UTC
(In reply to comment #2)
> The initialisation path for the IGP version of the chipset is missing a call to
> r600_audio_init, so audio isn't enabled on those chipsets.
> 
> I've attached a patch to fix the problem, but beside from a compile check its
> completely untestet since i don't have access to an IGP version of the chipset.

awesome.  i'll give it a whirl and get back to you.
Comment 4 sean finney 2010-05-09 15:23:38 UTC
(In reply to comment #3)
> (In reply to comment #2)
> > The initialisation path for the IGP version of the chipset is missing a call to
> > r600_audio_init, so audio isn't enabled on those chipsets.
> > 
> > I've attached a patch to fix the problem, but beside from a compile check its
> > completely untestet since i don't have access to an IGP version of the chipset.
> 
> awesome.  i'll give it a whirl and get back to you.

sadly, no love, still silence.  thsi is the last i see in dmesg:

[   29.907791] [drm] Setting GART location based on new memory map
[   29.908307] [drm] Loading RS780 CP Microcode
[   29.908314] platform r600_cp.0: firmware: requesting radeon/RS780_pfp.bin
[   30.039783] platform r600_cp.0: firmware: requesting radeon/RS780_me.bin
[   30.083629] [drm] Resetting GPU
[   30.083688] [drm] writeback test succeeded in 1 usecs
[  109.590761] hda-intel: IRQ timing workaround is activated for card #1. Suggest a bigger bdl_pos_adj.
Comment 5 sean finney 2010-05-10 13:26:13 UTC
okay, this is really interesting... when the system starts up after booting/rebooting, the audio does not work.  attempting to play to the alsa audio device will result in various errors having to do with sysctl requests *but*, if i restart the graphical user session (i.e. /etc/init.d/gdm restart), the audio works!

it only seems to be in 2-channel stereo though, but i'm not sure if that's just me needing to find the right modprobe option foo to snd-hda-intel.