[Intel DZ77SL-50K, Intel PantherPoint HDMI, Digital Out, HDMI] No sound at all

Bug #1155202 reported by Kyle Richey on 2013-03-14
20
This bug affects 3 people
Affects Status Importance Assigned to Milestone
alsa-driver (Ubuntu)
Undecided
Unassigned

Bug Description

I am using ubuntu 10.04

I expected sound

Got no sound at all

I am very new to ubuntu so I have no idea how to find the version of the package I am using

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: alsa-base 1.0.25+dfsg-0ubuntu1.1
ProcVersionSignature: Ubuntu 3.2.0-38.61-generic-pae 3.2.37
Uname: Linux 3.2.0-38-generic-pae i686
AlsaVersion: Advanced Linux Sound Architecture Driver Version 1.0.24.
AplayDevices:
 **** List of PLAYBACK Hardware Devices ****
 card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
   Subdevices: 1/1
   Subdevice #0: subdevice #0
ApportVersion: 2.0.1-0ubuntu17.1
Architecture: i386
ArecordDevices: **** List of CAPTURE Hardware Devices ****
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC0: jan 1750 F.... pulseaudio
Card0.Amixer.info:
 Card hw:0 'PCH'/'HDA Intel PCH at 0xf7c30000 irq 45'
   Mixer name : 'Intel PantherPoint HDMI'
   Components : 'HDA:80862806,80860101,00100000'
   Controls : 7
   Simple ctrls : 2
CurrentDmesg: [ 24.291482] eth0: no IPv6 routers present
Date: Thu Mar 14 08:53:13 2013
InstallationMedia: Ubuntu 12.04.1 LTS "Precise Pangolin" - Release i386 (20120817.3)
MarkForUpload: True
PackageArchitecture: all
ProcEnviron:
 TERM=xterm
 PATH=(custom, no user)
 LANG=en_US.UTF-8
 SHELL=/bin/bash
SourcePackage: alsa-driver
Symptom: audio
Symptom_AlsaPlaybackTest: ALSA playback test through plughw:PCH failed
Symptom_Card: Built-in Audio - HDA Intel PCH
Symptom_DevicesInUse:
 1750 jan F.... pulseaudio
     PID ACCESS COMMAND
Symptom_Jack: Digital Out, HDMI
Symptom_Type: No sound at all
Title: [, Intel PantherPoint HDMI, Digital Out, HDMI] No sound at all
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 03/19/2012
dmi.bios.vendor: Intel Corporation
dmi.bios.version: SLZ7710H.86A.0055.2012.0319.2140
dmi.board.name: DZ77SL-50K
dmi.board.vendor: Intel Corporation
dmi.board.version: AAG55115-300
dmi.chassis.type: 3
dmi.modalias: dmi:bvnIntelCorporation:bvrSLZ7710H.86A.0055.2012.0319.2140:bd03/19/2012:svn:pn:pvr:rvnIntelCorporation:rnDZ77SL-50K:rvrAAG55115-300:cvn:ct3:cvr:

Kyle Richey (richey-kyle-i) wrote :

Kyle, I'd suggest trying the latest ALSA driver for Precise since this is a fairly new chipset: https://wiki.ubuntu.com/Audio/UpgradingAlsa/DKMS

summary: - [, Intel PantherPoint HDMI, Digital Out, HDMI] No sound at all
+ [Intel DZ77SL-50K, Intel PantherPoint HDMI, Digital Out, HDMI] No sound
+ at all
Download full text (3.3 KiB)

I just got done installing the driver followed the instructions and I am
still getting no sound. But this is only the case in uBuntu it works just
fine in Windows 7

On Fri, Mar 15, 2013 at 2:19 AM, Dave Lentz <email address hidden>wrote:

> Kyle, I'd suggest trying the latest ALSA driver for Precise since this
> is a fairly new chipset:
> https://wiki.ubuntu.com/Audio/UpgradingAlsa/DKMS
>
> ** Summary changed:
>
> - [, Intel PantherPoint HDMI, Digital Out, HDMI] No sound at all
> + [Intel DZ77SL-50K, Intel PantherPoint HDMI, Digital Out, HDMI] No sound
> at all
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1155202
>
> Title:
> [Intel DZ77SL-50K, Intel PantherPoint HDMI, Digital Out, HDMI] No
> sound at all
>
> Status in “alsa-driver” package in Ubuntu:
> New
>
> Bug description:
> I am using ubuntu 10.04
>
> I expected sound
>
> Got no sound at all
>
> I am very new to ubuntu so I have no idea how to find the version of
> the package I am using
>
> ProblemType: Bug
> DistroRelease: Ubuntu 12.04
> Package: alsa-base 1.0.25+dfsg-0ubuntu1.1
> ProcVersionSignature: Ubuntu 3.2.0-38.61-generic-pae 3.2.37
> Uname: Linux 3.2.0-38-generic-pae i686
> AlsaVersion: Advanced Linux Sound Architecture Driver Version 1.0.24.
> AplayDevices:
> **** List of PLAYBACK Hardware Devices ****
> card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> ApportVersion: 2.0.1-0ubuntu17.1
> Architecture: i386
> ArecordDevices: **** List of CAPTURE Hardware Devices ****
> AudioDevicesInUse:
> USER PID ACCESS COMMAND
> /dev/snd/controlC0: jan 1750 F.... pulseaudio
> Card0.Amixer.info:
> Card hw:0 'PCH'/'HDA Intel PCH at 0xf7c30000 irq 45'
> Mixer name : 'Intel PantherPoint HDMI'
> Components : 'HDA:80862806,80860101,00100000'
> Controls : 7
> Simple ctrls : 2
> CurrentDmesg: [ 24.291482] eth0: no IPv6 routers present
> Date: Thu Mar 14 08:53:13 2013
> InstallationMedia: Ubuntu 12.04.1 LTS "Precise Pangolin" - Release i386
> (20120817.3)
> MarkForUpload: True
> PackageArchitecture: all
> ProcEnviron:
> TERM=xterm
> PATH=(custom, no user)
> LANG=en_US.UTF-8
> SHELL=/bin/bash
> SourcePackage: alsa-driver
> Symptom: audio
> Symptom_AlsaPlaybackTest: ALSA playback test through plughw:PCH failed
> Symptom_Card: Built-in Audio - HDA Intel PCH
> Symptom_DevicesInUse:
> 1750 jan F.... pulseaudio
> PID ACCESS COMMAND
> Symptom_Jack: Digital Out, HDMI
> Symptom_Type: No sound at all
> Title: [, Intel PantherPoint HDMI, Digital Out, HDMI] No sound at all
> UpgradeStatus: No upgrade log present (probably fresh install)
> dmi.bios.date: 03/19/2012
> dmi.bios.vendor: Intel Corporation
> dmi.bios.version: SLZ7710H.86A.0055.2012.0319.2140
> dmi.board.name: DZ77SL-50K
> dmi.board.vendor: Intel Corporation
> dmi.board.version: AAG55115-300
> dmi.chassis.type: 3
> dmi.modalias:
> dmi:bvnIntelCorporation:bvrSLZ7710H.86A.0055.2012.0319.2140:bd03/19/2012:svn:pn:pvr:rvnIntelCorporatio...

Read more...

Raymond (superquad-vortex2) wrote :

post the output put of alsa-info.sh

Default sample spec: s16le 2ch 44100Hz
Default channel map: front-left,front-right
Default sink name: alsa_output.pci-0000_00_1b.0.hdmi-stereo
Default source name: alsa_output.pci-0000_00_1b.0.hdmi-stereo.monitor

Yes, please post link to your alsa-info now that you've installed latest driver: https://wiki.ubuntu.com/Audio/AlsaInfo

Changed in alsa-driver (Ubuntu):
status: New → Incomplete
Kyle Richey (richey-kyle-i) wrote :
Download full text (3.3 KiB)

Sorry it is taking so long between responses I only have time once a week
to work on this and as I said I don't know a whole lot about ubuntu so this
whole terminal thing is brand new to me. Here is where my new alsa driver
info is located.

http://www.alsa-project.org/db/?f=d9ccbf83d8fda74e5ba607f3e8924847b6181cea

Kyle

On Sat, Mar 30, 2013 at 3:08 AM, Dave Lentz <email address hidden>wrote:

> Yes, please post link to your alsa-info now that you've installed latest
> driver: https://wiki.ubuntu.com/Audio/AlsaInfo
>
> ** Changed in: alsa-driver (Ubuntu)
> Status: New => Incomplete
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1155202
>
> Title:
> [Intel DZ77SL-50K, Intel PantherPoint HDMI, Digital Out, HDMI] No
> sound at all
>
> Status in “alsa-driver” package in Ubuntu:
> Incomplete
>
> Bug description:
> I am using ubuntu 10.04
>
> I expected sound
>
> Got no sound at all
>
> I am very new to ubuntu so I have no idea how to find the version of
> the package I am using
>
> ProblemType: Bug
> DistroRelease: Ubuntu 12.04
> Package: alsa-base 1.0.25+dfsg-0ubuntu1.1
> ProcVersionSignature: Ubuntu 3.2.0-38.61-generic-pae 3.2.37
> Uname: Linux 3.2.0-38-generic-pae i686
> AlsaVersion: Advanced Linux Sound Architecture Driver Version 1.0.24.
> AplayDevices:
> **** List of PLAYBACK Hardware Devices ****
> card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> ApportVersion: 2.0.1-0ubuntu17.1
> Architecture: i386
> ArecordDevices: **** List of CAPTURE Hardware Devices ****
> AudioDevicesInUse:
> USER PID ACCESS COMMAND
> /dev/snd/controlC0: jan 1750 F.... pulseaudio
> Card0.Amixer.info:
> Card hw:0 'PCH'/'HDA Intel PCH at 0xf7c30000 irq 45'
> Mixer name : 'Intel PantherPoint HDMI'
> Components : 'HDA:80862806,80860101,00100000'
> Controls : 7
> Simple ctrls : 2
> CurrentDmesg: [ 24.291482] eth0: no IPv6 routers present
> Date: Thu Mar 14 08:53:13 2013
> InstallationMedia: Ubuntu 12.04.1 LTS "Precise Pangolin" - Release i386
> (20120817.3)
> MarkForUpload: True
> PackageArchitecture: all
> ProcEnviron:
> TERM=xterm
> PATH=(custom, no user)
> LANG=en_US.UTF-8
> SHELL=/bin/bash
> SourcePackage: alsa-driver
> Symptom: audio
> Symptom_AlsaPlaybackTest: ALSA playback test through plughw:PCH failed
> Symptom_Card: Built-in Audio - HDA Intel PCH
> Symptom_DevicesInUse:
> 1750 jan F.... pulseaudio
> PID ACCESS COMMAND
> Symptom_Jack: Digital Out, HDMI
> Symptom_Type: No sound at all
> Title: [, Intel PantherPoint HDMI, Digital Out, HDMI] No sound at all
> UpgradeStatus: No upgrade log present (probably fresh install)
> dmi.bios.date: 03/19/2012
> dmi.bios.vendor: Intel Corporation
> dmi.bios.version: SLZ7710H.86A.0055.2012.0319.2140
> dmi.board.name: DZ77SL-50K
> dmi.board.vendor: Intel Corporation
> dmi.board.version: AAG55115-300
> dmi.chassis.type: 3
> dmi.modalias:
> dmi:bvnIntelCorporation:bvrSLZ7710H.86A.0055.2012.0319.2140:bd03/19...

Read more...

Niraj (kulkarniniraj) wrote :

I am suffering from same problem. So when I looked at motherboard technical specs, it says there are two separate audio interfaces. One for 7.1 HDMI and other 5+1 HD audio via Realtek ALC662 codec.

Accordingly I tried inserting snd_hda_intel with model=asus-mode1 to asus-mode-8 as specified in http://lxr.linux.no/#linux+v3.2.19/Documentation/sound/alsa/HD-Audio-Models.txt but aplay -l still shows only HDMI audio sink.

My question is does 2 sound interfaces mean 2 separate entries in lspci? If yes, then in my lspci -vvvnn (output attched) it shows only one entry, which must be one for HDMI sound. Could that be the problem?

Also, lshw (output attached) shows one unclaimed entry, does it have anything to do with this problem?

Regards
Niraj

Niraj (kulkarniniraj) wrote :
David Henningsson (diwic) wrote :

The analog audio does not show up at all, it's not being probed correctly.

First try the latest drivers: https://wiki.ubuntu.com/Audio/UpgradingAlsa/DKMS

If this does not help, with the drivers installed also try add the following to /etc/modprobe.d/alsa-base.conf :

options snd_hda_intel probe_mask=0x1ff

See if this gives a difference. In either case, please post a new alsa-info when you booted with this probe_mask. Thanks!

Niraj (kulkarniniraj) wrote :

Thanks for your reply. I tried both these suggestions but none of them worked.

My Alsa info is located at http://www.alsa-project.org/db/?f=661aa91faf8c9cf4b6b7726b0a3cceefab46876b

From windows 7 I found out that realtec ALC662 codec is located at location 0 on HD Audio bus. But as alsa-info shows, system does not detect any codec at that location.

Is it possible to know whether windows driver finds codec at location 0 by usual method or it has some workaround for this bug?

Regards
Niraj

Kyle Richey (richey-kyle-i) wrote :
Download full text (3.4 KiB)

I upgraded the Alsa driver and still no sound at all. but I have no idea
how to try the second thing you suggested. could you explain to me how to
do this.

Kyle

On Tue, Jun 4, 2013 at 1:16 AM, David Henningsson <
<email address hidden>> wrote:

> The analog audio does not show up at all, it's not being probed
> correctly.
>
> First try the latest drivers:
> https://wiki.ubuntu.com/Audio/UpgradingAlsa/DKMS
>
> If this does not help, with the drivers installed also try add the
> following to /etc/modprobe.d/alsa-base.conf :
>
> options snd_hda_intel probe_mask=0x1ff
>
> See if this gives a difference. In either case, please post a new alsa-
> info when you booted with this probe_mask. Thanks!
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1155202
>
> Title:
> [Intel DZ77SL-50K, Intel PantherPoint HDMI, Digital Out, HDMI] No
> sound at all
>
> Status in “alsa-driver” package in Ubuntu:
> Incomplete
>
> Bug description:
> I am using ubuntu 10.04
>
> I expected sound
>
> Got no sound at all
>
> I am very new to ubuntu so I have no idea how to find the version of
> the package I am using
>
> ProblemType: Bug
> DistroRelease: Ubuntu 12.04
> Package: alsa-base 1.0.25+dfsg-0ubuntu1.1
> ProcVersionSignature: Ubuntu 3.2.0-38.61-generic-pae 3.2.37
> Uname: Linux 3.2.0-38-generic-pae i686
> AlsaVersion: Advanced Linux Sound Architecture Driver Version 1.0.24.
> AplayDevices:
> **** List of PLAYBACK Hardware Devices ****
> card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> ApportVersion: 2.0.1-0ubuntu17.1
> Architecture: i386
> ArecordDevices: **** List of CAPTURE Hardware Devices ****
> AudioDevicesInUse:
> USER PID ACCESS COMMAND
> /dev/snd/controlC0: jan 1750 F.... pulseaudio
> Card0.Amixer.info:
> Card hw:0 'PCH'/'HDA Intel PCH at 0xf7c30000 irq 45'
> Mixer name : 'Intel PantherPoint HDMI'
> Components : 'HDA:80862806,80860101,00100000'
> Controls : 7
> Simple ctrls : 2
> CurrentDmesg: [ 24.291482] eth0: no IPv6 routers present
> Date: Thu Mar 14 08:53:13 2013
> InstallationMedia: Ubuntu 12.04.1 LTS "Precise Pangolin" - Release i386
> (20120817.3)
> MarkForUpload: True
> PackageArchitecture: all
> ProcEnviron:
> TERM=xterm
> PATH=(custom, no user)
> LANG=en_US.UTF-8
> SHELL=/bin/bash
> SourcePackage: alsa-driver
> Symptom: audio
> Symptom_AlsaPlaybackTest: ALSA playback test through plughw:PCH failed
> Symptom_Card: Built-in Audio - HDA Intel PCH
> Symptom_DevicesInUse:
> 1750 jan F.... pulseaudio
> PID ACCESS COMMAND
> Symptom_Jack: Digital Out, HDMI
> Symptom_Type: No sound at all
> Title: [, Intel PantherPoint HDMI, Digital Out, HDMI] No sound at all
> UpgradeStatus: No upgrade log present (probably fresh install)
> dmi.bios.date: 03/19/2012
> dmi.bios.vendor: Intel Corporation
> dmi.bios.version: SLZ7710H.86A.0055.2012.0319.2140
> dmi.board.name: DZ77SL-50K
> dmi.board.vendor: Intel Corporation
> dmi.board.version: AAG55115-300
> dmi...

Read more...

Kyle, in terminal:
echo "options snd_hda_intel probe_mask=0x1ff" | sudo tee -a /etc/modprobe.d/alsa-base.conf

Raymond (superquad-vortex2) wrote :

try probe mask which exclude address 3 of the HDMI codec

Raymond (superquad-vortex2) wrote :

17.488737] hda_intel: codec_mask forced to 0xff
[ 17.488806] snd_hda_intel 0000:00:1b.0: irq 47 for MSI/MSI-X
[ 18.298173] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
--
[ 19.045957] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 20.505231] hda-intel 0000:00:1b.0: azx_get_response timeout, switching to polling mode: last cmd=0x000f0000
[ 20.563903] e1000e: eth0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx
--
[ 20.564115] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 21.510358] hda-intel 0000:00:1b.0: No response from codec, disabling MSI: last cmd=0x000f0000
[ 22.515466] hda-intel 0000:00:1b.0: Codec #0 probe error; disabling it...
[ 23.524600] hda-intel 0000:00:1b.0: Codec #1 probe error; disabling it...
[ 24.533714] hda-intel 0000:00:1b.0: Codec #2 probe error; disabling it...
[ 24.561849] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input5

Niraj (kulkarniniraj) wrote :

I've tried disabling probe_mask for HDMI. It results in no sound device being available in aplay. Interestingly BIOS during boot is able to detect this codec and play a boot-up tune.

Regards
Niraj

David Henningsson (diwic) wrote :

> From windows 7 I found out that realtec ALC662 codec is located at location 0 on HD Audio bus.

Is there any more information here that could be relevant, such as the PCI bus address of the ALC662 codec as well as the HDMI codec?

Launchpad Janitor (janitor) wrote :

[Expired for alsa-driver (Ubuntu) because there has been no activity for 60 days.]

Changed in alsa-driver (Ubuntu):
status: Incomplete → Expired
Niraj (kulkarniniraj) wrote :

I finally have some good news. I installed Win7 guest using qemu and passed pci card to it. Win7 was able to detect it. I closed Win7, and reinserted snd_hda_intel, and now it detects both analog and digital devices. I tried it couple of times and it worked. So and ugly hack to get it working.

I am willing to find problem by capturing PCI messages during device init by Win7. Can someone help me here?

Niraj (kulkarniniraj) on 2013-12-31
Changed in alsa-driver (Ubuntu):
status: Expired → Incomplete
Niraj (kulkarniniraj) wrote :

Attaching IOMMU read/write traces for both win7 and ubuntu12.10 guest machines.

Niraj (kulkarniniraj) wrote :
David Henningsson (diwic) wrote :

Cool stuff. I've never looked at PCI IOMMU traces before.

I don't see anything obvious when looking at those traces though, so we're probably looking at some type of chipset bug here.

I guess we're down to trial and error then? I e, try random changes to stuff that win7 does but we don't (or the other way around), and see if it helps?

E g, try don't enable unsol before probing (win 7 does not do that), or don't write 0xff to STATETS, etc...and see if anything of that makes STATETS detect the codec.

Niraj (kulkarniniraj) wrote :

Ok, here's a good news. I believe I have a code change to overcome chip bug.

A bit of debug description:

I collected couple of more win7 IOMMU traces. It turns out even win7 sometimes does not detect mask in first place. It did about 20 read/writes before reading mask again.

I mirrored those r/w in hda driver, which enabled the mask for me, and selectively removed unneeded I/Os by trial and error.

The code is in azx_reset function. In my inference, it simply resets the chip, but the exact timing between resetting the chip, polling reset bit and setting reset bit is important. I tried playing with the delays, but found only this combo to be working.

Added code it pretty crude, but I'd like to see a revised version of it in ubuntu as well as upstream driver. Here is the code added:

        snd_printk(KERN_ERR SFX "GCTL read %x\n",azx_readl(chip, GCTL));
 azx_writel(chip, GCTL, 0x100);

 do{
  mytemp = azx_readl(chip, GCTL); /* mytemp delacred as int, just a temperory to hold reads */
  snd_printk(KERN_ERR SFX "GCTL read %x\n",mytemp);
 }while(mytemp != 0x0);

 azx_writel(chip, GCTL, 0x1);
 usleep_range(1000, 1200);

 mytemp = azx_readw(chip, STATESTS);

David Henningsson (diwic) wrote :

Ok. So to try to get this into upstream, you need to test this with the latest upstream driver, and I need to know *where* this code was added, too.

So, the patch needs to apply to:

http://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/pci/hda/hda_intel.c

This code is the same as you get when you install: https://wiki.ubuntu.com/Audio/UpgradingAlsa/DKMS

I can help out with writing the final patch if you like, but I need your input on exactly *where* the code you quote above should be added.

Niraj (kulkarniniraj) wrote :

Attaching a revised patch. Tested on Linux 3.5.0-45-generic kernel using DKMS source and 3.12.6 kernel. Please see anything needs to be changed to fit coding standards.

The attachment "patch" seems to be a patch. If it isn't, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are a member of the ~ubuntu-reviewers, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issues please contact him.]

tags: added: patch

From: Niraj <email address hidden>

Apparently this board seems to need some extra initialization before a proper
codec probe value can be read.

BugLink: https://bugs.launchpad.net/bugs/1155202
Signed-off-by: David Henningsson <email address hidden>
---
 sound/pci/hda/hda_intel.c | 6 ++++++
 1 file changed, 6 insertions(+)

Hi Takashi,

Here's a patch from Niraj, which has found this code below to make audio work
on the Intel DZ77SL-50K board. Without it, no codecs will be detected.

I'm not sure if you like it this way or if you want me or Niraj to change
anything, or debug further. Or maybe add a new quirk for this particular device?

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index fa2879a..2bf46e9 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -1306,6 +1306,12 @@ static void azx_init_chip(struct azx *chip, int full_reset)

  /* reset controller */
  azx_reset(chip, full_reset);
+ if (!chip->codec_mask) {
+ azx_writel(chip, GCTL, 0x100);
+ while(azx_readl(chip, GCTL) != 0x0);
+ azx_writel(chip, GCTL, 0x1);
+ azx_reset(chip, full_reset);
+ }

  /* initialize interrupts */
  azx_int_clear(chip);
--
1.7.9.5

Takashi Iwai (tiwai) wrote :

At Wed, 22 Jan 2014 12:32:28 +0100,
David Henningsson wrote:
>
> From: Niraj <email address hidden>
>
> Apparently this board seems to need some extra initialization before a proper
> codec probe value can be read.
>
> BugLink: https://bugs.launchpad.net/bugs/1155202
> Signed-off-by: David Henningsson <email address hidden>
> ---
> sound/pci/hda/hda_intel.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> Hi Takashi,
>
> Here's a patch from Niraj, which has found this code below to make audio work
> on the Intel DZ77SL-50K board. Without it, no codecs will be detected.
>
> I'm not sure if you like it this way or if you want me or Niraj to change
> anything, or debug further. Or maybe add a new quirk for this particular device?

Of course, I don't like this :)

The patch essentially disables the codec reset in *all* cases after a
codec is probed. This smells badly of a future regression.

FWIW, you can set a forced codec probe mask in probe_mask_list[].
The bit 0x100 means to force the detection.

But, before going that direction, could you clarify how this fixes the
probing at all? Which azx_init_chip() calls hinders the probing of an
active codec?

thanks,

Takashi

>
> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> index fa2879a..2bf46e9 100644
> --- a/sound/pci/hda/hda_intel.c
> +++ b/sound/pci/hda/hda_intel.c
> @@ -1306,6 +1306,12 @@ static void azx_init_chip(struct azx *chip, int full_reset)
>
> /* reset controller */
> azx_reset(chip, full_reset);
> + if (!chip->codec_mask) {
> + azx_writel(chip, GCTL, 0x100);
> + while(azx_readl(chip, GCTL) != 0x0);
> + azx_writel(chip, GCTL, 0x1);
> + azx_reset(chip, full_reset);
> + }
>
> /* initialize interrupts */
> azx_int_clear(chip);
> --
> 1.7.9.5
>

David Henningsson (diwic) wrote :

On 01/22/2014 12:40 PM, Takashi Iwai wrote:
> At Wed, 22 Jan 2014 12:32:28 +0100,
> David Henningsson wrote:
>>
>> From: Niraj <email address hidden>
>>
>> Apparently this board seems to need some extra initialization before a proper
>> codec probe value can be read.
>>
>> BugLink: https://bugs.launchpad.net/bugs/1155202
>> Signed-off-by: David Henningsson <email address hidden>
>> ---
>> sound/pci/hda/hda_intel.c | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> Hi Takashi,
>>
>> Here's a patch from Niraj, which has found this code below to make audio work
>> on the Intel DZ77SL-50K board. Without it, no codecs will be detected.
>>
>> I'm not sure if you like it this way or if you want me or Niraj to change
>> anything, or debug further. Or maybe add a new quirk for this particular device?
>
> Of course, I don't like this :)
>
> The patch essentially disables the codec reset in *all* cases after a
> codec is probed. This smells badly of a future regression.

Hmm, but I don't see how the patch *disables* any codec reset. It only
does an *extra* controller reset in some cases.

> FWIW, you can set a forced codec probe mask in probe_mask_list[].
> The bit 0x100 means to force the detection.

Yes, we tried this and it did not help. If the codecs do not show up
naturally in STATETS, then they cannot be communicated with either.

> But, before going that direction, could you clarify how this fixes the
> probing at all? Which azx_init_chip() calls hinders the probing of an
> active codec?

It seems more like, the particular chip or board requires a special
quirky initialization sequence.

>
>
> thanks,
>
> Takashi
>
>>
>> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
>> index fa2879a..2bf46e9 100644
>> --- a/sound/pci/hda/hda_intel.c
>> +++ b/sound/pci/hda/hda_intel.c
>> @@ -1306,6 +1306,12 @@ static void azx_init_chip(struct azx *chip, int full_reset)
>>
>> /* reset controller */
>> azx_reset(chip, full_reset);
>> + if (!chip->codec_mask) {
>> + azx_writel(chip, GCTL, 0x100);
>> + while(azx_readl(chip, GCTL) != 0x0);
>> + azx_writel(chip, GCTL, 0x1);
>> + azx_reset(chip, full_reset);
>> + }
>>
>> /* initialize interrupts */
>> azx_int_clear(chip);
>> --
>> 1.7.9.5
>>
>

--
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic

Takashi Iwai (tiwai) wrote :

At Wed, 22 Jan 2014 13:25:34 +0100,
David Henningsson wrote:
>
> On 01/22/2014 12:40 PM, Takashi Iwai wrote:
> > At Wed, 22 Jan 2014 12:32:28 +0100,
> > David Henningsson wrote:
> >>
> >> From: Niraj <email address hidden>
> >>
> >> Apparently this board seems to need some extra initialization before a proper
> >> codec probe value can be read.
> >>
> >> BugLink: https://bugs.launchpad.net/bugs/1155202
> >> Signed-off-by: David Henningsson <email address hidden>
> >> ---
> >> sound/pci/hda/hda_intel.c | 6 ++++++
> >> 1 file changed, 6 insertions(+)
> >>
> >> Hi Takashi,
> >>
> >> Here's a patch from Niraj, which has found this code below to make audio work
> >> on the Intel DZ77SL-50K board. Without it, no codecs will be detected.
> >>
> >> I'm not sure if you like it this way or if you want me or Niraj to change
> >> anything, or debug further. Or maybe add a new quirk for this particular device?
> >
> > Of course, I don't like this :)
> >
> > The patch essentially disables the codec reset in *all* cases after a
> > codec is probed. This smells badly of a future regression.
>
> Hmm, but I don't see how the patch *disables* any codec reset. It only
> does an *extra* controller reset in some cases.

Ah, yes. I misread the code.

> > FWIW, you can set a forced codec probe mask in probe_mask_list[].
> > The bit 0x100 means to force the detection.
>
> Yes, we tried this and it did not help. If the codecs do not show up
> naturally in STATETS, then they cannot be communicated with either.

OK.

> > But, before going that direction, could you clarify how this fixes the
> > probing at all? Which azx_init_chip() calls hinders the probing of an
> > active codec?
>
> It seems more like, the particular chip or board requires a special
> quirky initialization sequence.

The problem is that it doesn't explain exactly what this special
initialization does. How does this magic sequence come? For example,
why does it need to set UNSOL flag at first? Is the while loop
guaranteed to quit for a reasonable time? Can't it be simply calling
azx_reset() twice?

And, yet another question comes up: doesn't S4 need the similar
workaround? If S4 works, what's the difference?

Takashi

> >
> > thanks,
> >
> > Takashi
> >
> >>
> >> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> >> index fa2879a..2bf46e9 100644
> >> --- a/sound/pci/hda/hda_intel.c
> >> +++ b/sound/pci/hda/hda_intel.c
> >> @@ -1306,6 +1306,12 @@ static void azx_init_chip(struct azx *chip, int full_reset)
> >>
> >> /* reset controller */
> >> azx_reset(chip, full_reset);
> >> + if (!chip->codec_mask) {
> >> + azx_writel(chip, GCTL, 0x100);
> >> + while(azx_readl(chip, GCTL) != 0x0);
> >> + azx_writel(chip, GCTL, 0x1);
> >> + azx_reset(chip, full_reset);
> >> + }
> >>
> >> /* initialize interrupts */
> >> azx_int_clear(chip);
> >> --
> >> 1.7.9.5
> >>
> >
>
>
>
> --
> David Henningsson, Canonical Ltd.
> https://launchpad.net/~diwic
>

Niraj (kulkarniniraj) wrote :

Let me try to explain my findings:

> How does this magic sequence come?
By dumping Win7 driver's init sequence and reproducing it through ALSA driver.

>why does it need to set UNSOL flag at first?
No such need, I've put it after regular init so that only affected chipsets are reset again. Putting this anywhere around init code works (tried it).

>Is the while loop guaranteed to quit for a reasonable time?
Being household user, I can only confirm on my chipset. Only a thorough testing may ensure sanity.

>Can't it be simply calling azx_reset() twice?
It is interesting hardware bug which kicks in only during first init after power-on. So if Win7 driver in qemu inits the board, and I simply plugin "unchanged" hda_intel afterwards, it still detects codecs. But multiple normal resets do not have any effect. Being no hardware expert, I can only speculate that tight spin loop after reset has the crux. A normal delay call there does not detect codec.

>And, yet another question comes up: doesn't S4 need the similar workaround? If S4 works, what's the difference?
Haven't tried with sleep-wake or hibernate-restore sequence yet.

Raymond (superquad-vortex2) wrote :

you have to provide output of alsa-info.sh when both codecs are detected

Niraj (kulkarniniraj) wrote :

http://www.alsa-project.org/db/?f=34678ff26afafe9cc9c69457ac45bc551ca33b34

Interestingly driver does not detect HDMI codec now

Raymond (superquad-vortex2) wrote :

are you using latest alsa driver ?

most likely the digital spdif is conflicct with hdmi codec when both try to create those IEC958 controls

https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/?id=dcda5806165c155d90b9aa466a1602cf4726012b

Node 0x10 [Audio Output] wcaps 0x611: Stereo Digital
  Control: name="IEC958 Playback Con Mask", index=0, device=0
  Control: name="IEC958 Playback Pro Mask", index=0, device=0
  Control: name="IEC958 Playback Default", index=0, device=0
  Control: name="IEC958 Playback Switch", index=0, device=0
  Control: name="IEC958 Default PCM Playback Switch", index=0, device=0
  Device: name="ALC892 Digital", type="SPDIF", device=1
  Converter: stream=8, channel=0
  Digital: Non-Copyright
  Digital category: 0x12
  IEC Coding Type: 0x0
  PCM:
    rates [0x5f0]: 32000 44100 48000 88200 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states: D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0

Niraj (kulkarniniraj) wrote :

My bad. I had disabled HDMI codecs through BIOS. When enabled, current patch fails because it detects non zero probe mask(only for HDMI though). Will attach modified patch soon.

Niraj (kulkarniniraj) wrote :

Attaching revised patch with new alsa-info. This patch doesn't look so good because codec-to-be-probed is assumed at location 0 and other discovered codecs are not considered. But if this bug is only present in this chipset, in my opinion this should be good enough.

http://www.alsa-project.org/db/?f=a26b5f7fee83162bc08e08d53613cf3b17827b9a

Raymond (superquad-vortex2) wrote :

but your kernel 3.5 still have

[ 14.820143] DRHD: handling fault status reg 3
--
[ 14.821504] DMAR:[fault reason 06] PTE Read access is not set

Niraj (kulkarniniraj) wrote :

I don't have much technical depth in it. So please explain what does it mean, and how can it be avoided.

Niraj (kulkarniniraj) wrote :

But I am not observing any problem related to working of sound card. Obviously sound after sleep and hibernate is broken, but patch needs to be modified for that. Can you explain any not so obvious problem due to this fault?

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Patches

Remote bug watches

Bug watches keep track of this bug in other bug trackers.