On Tue, Feb 23, 2016 at 12:32:23PM +0900, Toyo Abe wrote:
Hi,
I'd struggled a similar underrun problem on my baytrail device. The dmesg showed the following warnings.
[15356.757938] had: Driver detected 2 missed buffer done interrupt(s)!!!! [15356.761594] had: Driver detected 1 missed buffer done interrupt(s)!!!! [15356.774775] had: Unable to clear UNDERRUN bits [15356.791312] had: Driver detected 1 missed buffer done interrupt(s)!!!! [15356.808148] had: Unable to clear UNDERRUN bits [15356.824692] had: Driver detected 2 missed buffer done interrupt(s)!!!!
After some investigation, I found some problems on the driver and fixed a few of them. I pushed the fix to my github. I hope it might help you. https://raw.githubusercontent.com/toyoabe/baytrailaudio/fix-underrun/hdmi_au...
Best Regards, -toyo
Hi, that was it!. I added your changes and now the audio works. I'm happy. I got finally every subsystem of the Compute Stick working. I have a minor question tought. Alsamixer says: This sound device does not have any controls. Is there a way to change the volume without enabling pulseaudio?
Just for documentation, here is the small change that Toyo did to make the underrun disappear:
diff -Nraub a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c --- a/drivers/gpu/drm/i915/i915_irq.c 2016-02-23 08:03:42.406016576 -0400 +++ b/drivers/gpu/drm/i915/i915_irq.c 2016-02-23 08:03:58.714016576 -0400 @@ -2717,11 +2717,14 @@ int pipe = 1;
spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + i915_enable_lpe_pipestat(dev_priv, pipe); + imr = I915_READ(VLV_IMR); /* Audio is on Stream A */ imr &= ~I915_LPE_PIPE_A_INTERRUPT; I915_WRITE(VLV_IMR, imr); - i915_enable_lpe_pipestat(dev_priv, pipe); + I915_WRITE(VLV_IER, ~imr); + POSTING_READ(VLV_IER); spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
return 0; @@ -2769,7 +2772,10 @@ spin_lock_irqsave(&dev_priv->irq_lock, irqflags); imr = I915_READ(VLV_IMR); imr |= I915_LPE_PIPE_A_INTERRUPT; + I915_WRITE(VLV_IER, ~imr); I915_WRITE(VLV_IMR, imr); + POSTING_READ(VLV_IMR); + i915_disable_lpe_pipestat(dev_priv, pipe); spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
diff -Nraub a/sound/hdmi_audio/intel_mid_hdmi_audio.c b/sound/hdmi_audio/intel_mid_hdmi_audio.c --- a/sound/hdmi_audio/intel_mid_hdmi_audio.c 2016-02-23 08:03:42.414016576 -0400 +++ b/sound/hdmi_audio/intel_mid_hdmi_audio.c 2016-02-23 08:03:58.722016576 -0400 @@ -1128,7 +1128,6 @@ pr_debug("HDMI status =0x%x\n", hdmi_status); if (hdmi_status & AUD_CONFIG_MASK_UNDERRUN) { i++; - hdmi_status &= ~AUD_CONFIG_MASK_UNDERRUN; had_write_register(AUD_HDMI_STATUS_v2, hdmi_status); } else break;
Thanks again. Giacomo
Pierre-Louis Bossart wrote:
On 02/19/2016 02:39 PM, Giacomo Comes wrote:
Hi, I have recently bought a Intel Compute Stick and I am having trouble with=
the audio.
Intel provides a custom Ubuntu release that support audio, but I want to =
run the
linux distribution of my choice on it (openSUSE 13.2 for the moment).
In order to have HDMI audio support it is necessary to compile a kernel w=
ith this patch
(https://raw.githubusercontent.com/01org/baytrailaudio/master/hdmi_audio_=
20150319.patch)
provided by Intel for kernel 3.16.7 (https://01.org/ubuntu-hdmi)
I compiled the openSUSE kernel using the default openSUSE .config plus th=
e following:
CONFIG_SUPPORT_HDMI=3Dy CONFIG_SND_SOC=3Dm CONFIG_SND_SOC_INTEL_SST=3Dm CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=3Dm
I booted the new kernel and aplay -l gives this output: **** List of PLAYBACK Hardware Devices **** card 0: IntelHDMI [IntelHDMI], device 0: IntelHDMI [IntelHDMI] Subdevices: 0/1 Subdevice #0: subdevice #0
but when I run: aplay /usr/share/sounds/alsa/test.wav the audio plays for .2 seconds and then nothing more. Sometime it will play later a little bit more and stop again. At some point these messages appears: underrun!!! (at least 29325.946 ms long) underrun!!! (at least 1535.889 ms long) underrun!!! (at least 3196.213 ms long)
I have looked around on google for a hint on how to fix this issue but I =
found nothing.
Any idea where to look for a solution?
Attached there are the dmesg and lsmod output for ubuntu with the working audio and openSUSE 13.2 plus patch without the working audio. I can provide any other information you need.
There are enough messages that make me believe something is very wrong from the start
19.664486] had: ******** HAD DRIVER loading.. Ver: 0.01.003 [ 19.664549] hdmi_audio_probe dma_mask: 0 [ 19.664937] card->dev is NULL!!!!! Should not be this case [ 19.668176] [drm] mid_hdmi_audio_register: Scheduling HDMI audio work qu= eue [ 19.670745] [drm:i915_had_wq] *ERROR* Checking for HDMI connection at bo= ot
Some of us at Intel are trying to clean this up but it'll take time.
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel