[alsa-devel] Compute Stick baytrail audio problem
Giacomo Comes
comes at naic.edu
Tue Feb 23 15:34:43 CET 2016
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_audio_20150319.patch
>
> 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 at alsa-project.org
> > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> >
More information about the Alsa-devel
mailing list