2 days ago I bought a P7P55 LX motherboard because my old one broke, and the only thing that was still missing till a few minutes ago was sound. For some reason, when doing 'soundon' the system hanged completely and I had to do a hard reset.
I'm using ArchLinux (64 bit) (kernel 2.6.32)
My brother is using gentoo (also with kernel 2.6.32) and has a P7P55 D. He had the very same problem.

I tried enabling and disabling the different drivers, and found that it hanged in oss_hdaudio.

More specifically, after adding debug prints and using netconsole to debug what happens, I found that the problem was kernel/drv/oss_hdaudio/oss_hdaudio.c line 1091:
devc->codecmask = PCI_READL (devc->osdev, devc->azbar + HDA_STATESTS);

This line was the one where all my debug prints stopped.

I cross-compared the function to the ALSA equivalend and found that they were using different sizes in their read and write operations and thought I'd give it a try and change PCI_READL to PCI_READW.

With this change the problem was gone, and sound actually works now.

Although the dmesg output complains about an unknown codec :P
oss_hdaudio 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
oss_hdaudio: HDA codec 0x11060397 not known yet
oss_hdaudio: HDA codec 0x11060397 not known yet
usbcore: registered new interface driver oss_usb

I'm attaching a diff, and the output of device's output `lspci -vv`

Bye,
Blub
--- original-oss-v4.2-build2002-src-gpl/kernel/drv/oss_hdaudio/oss_hdaudio.c	2009-11-13 16:23:23.000000000 +0100
+++ oss-v4.2-build2002-src-gpl/kernel/drv/oss_hdaudio/oss_hdaudio.c	2010-02-27 15:16:06.000000000 +0100
@@ -1091,7 +1091,7 @@ reset_controller (hda_devc_t * devc)
 
   if (!devc->codecmask)
     {
-      devc->codecmask = PCI_READL (devc->osdev, devc->azbar + HDA_STATESTS);
+      devc->codecmask = PCI_READW (devc->osdev, devc->azbar + HDA_STATESTS);
       DDB (cmn_err (CE_CONT, "Codec mask %x\n", devc->codecmask));
     }
 
00:1b.0 Audio device: Intel Corporation Ibex Peak High Definition Audio (rev 05)
        Subsystem: ASUSTeK Computer Inc. Device 836c
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 22
        Region 0: Memory at fbaf8000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA 
PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, 
L1 <1us
                        ExtTag- RBE- FLReset+
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal- 
Unsupported-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 128 bytes, MaxReadReq 128 bytes
                DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ 
TransPend-
                LnkCap: Port #0, Speed unknown, Width x0, ASPM unknown, Latency 
L0 <64ns, L1 <1us
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; Disabled- Retrain- CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed unknown, Width x0, TrErr- Train- SlotClk- 
DLActive- BWMgmt- ABWMgmt-
        Capabilities: [100] Virtual Channel <?>
        Capabilities: [130] Root Complex Link <?>
        Kernel driver in use: oss_hdaudio
        Kernel modules: snd-hda-intel
_______________________________________________
oss-devel mailing list
oss-devel@mailman.opensound.com
http://mailman.opensound.com/mailman/listinfo/oss-devel

Reply via email to