[alsa-devel] v3.15-rc1: CORB reset timeout#1, CORBRP = 0

Ronald ronald645 at gmail.com
Tue Apr 29 18:31:44 CEST 2014


It 'works' as in: the message did not reappear. Thanks a ton!

2014-04-29 17:24 GMT+02:00 Takashi Iwai <tiwai at suse.de>:
> At Tue, 29 Apr 2014 17:08:25 +0200,
> Ronald wrote:
>>
>> I take it you want the vendor:device id, but since you have requested
>> additional info I have provided some more data. Please let me know if
>> I missed anything you require. Thank you.
>>
>> Below you will find lspci. I have used the alsa-info.sh script for the
>> rest (how convenient!):
>>
>> http://www.alsa-project.org/db/?f=daf13e17122d2db2851591b4d79d3ac34fabf864
>>
>> 00:10.1 Audio device [0403]: NVIDIA Corporation MCP51 High Definition
>> Audio [10de:026c] (rev a2)
>>     Subsystem: Hewlett-Packard Company Presario V6133CL [103c:30b7]
>>     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 (500ns min, 1250ns max)
>>     Interrupt: pin B routed to IRQ 21
>>     Region 0: Memory at b0000000 (32-bit, non-prefetchable) [size=16K]
>>     Capabilities: [44] Power Management version 2
>>         Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
>> PME(D0-,D1-,D2-,D3hot+,D3cold+)
>>         Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>>     Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
>>         Address: 0000000000000000  Data: 0000
>>         Masking: 00000000  Pending: 00000000
>>     Capabilities: [6c] HyperTransport: MSI Mapping Enable- Fixed+
>>     Kernel driver in use: snd_hda_intel
>
> Thanks.  Could you check whether the patch below works?
>
>
> Takashi
>
> ---
> diff --git a/sound/pci/hda/hda_controller.c b/sound/pci/hda/hda_controller.c
> index 248b90abb882..480bbddbd801 100644
> --- a/sound/pci/hda/hda_controller.c
> +++ b/sound/pci/hda/hda_controller.c
> @@ -1059,24 +1059,26 @@ static void azx_init_cmd_io(struct azx *chip)
>
>         /* reset the corb hw read pointer */
>         azx_writew(chip, CORBRP, ICH6_CORBRP_RST);
> -       for (timeout = 1000; timeout > 0; timeout--) {
> -               if ((azx_readw(chip, CORBRP) & ICH6_CORBRP_RST) == ICH6_CORBRP_RST)
> -                       break;
> -               udelay(1);
> -       }
> -       if (timeout <= 0)
> -               dev_err(chip->card->dev, "CORB reset timeout#1, CORBRP = %d\n",
> -                       azx_readw(chip, CORBRP));
> +       if (!(chip->driver_caps & AZX_DCAPS_CORBRP_SELF_CLEAR)) {
> +               for (timeout = 1000; timeout > 0; timeout--) {
> +                       if ((azx_readw(chip, CORBRP) & ICH6_CORBRP_RST) == ICH6_CORBRP_RST)
> +                               break;
> +                       udelay(1);
> +               }
> +               if (timeout <= 0)
> +                       dev_err(chip->card->dev, "CORB reset timeout#1, CORBRP = %d\n",
> +                               azx_readw(chip, CORBRP));
>
> -       azx_writew(chip, CORBRP, 0);
> -       for (timeout = 1000; timeout > 0; timeout--) {
> -               if (azx_readw(chip, CORBRP) == 0)
> -                       break;
> -               udelay(1);
> +               azx_writew(chip, CORBRP, 0);
> +               for (timeout = 1000; timeout > 0; timeout--) {
> +                       if (azx_readw(chip, CORBRP) == 0)
> +                               break;
> +                       udelay(1);
> +               }
> +               if (timeout <= 0)
> +                       dev_err(chip->card->dev, "CORB reset timeout#2, CORBRP = %d\n",
> +                               azx_readw(chip, CORBRP));
>         }
> -       if (timeout <= 0)
> -               dev_err(chip->card->dev, "CORB reset timeout#2, CORBRP = %d\n",
> -                       azx_readw(chip, CORBRP));
>
>         /* enable corb dma */
>         azx_writeb(chip, CORBCTL, ICH6_CORBCTL_RUN);
> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> index d6bca62ef387..b540ad71eb0d 100644
> --- a/sound/pci/hda/hda_intel.c
> +++ b/sound/pci/hda/hda_intel.c
> @@ -249,7 +249,8 @@ enum {
>  /* quirks for Nvidia */
>  #define AZX_DCAPS_PRESET_NVIDIA \
>         (AZX_DCAPS_NVIDIA_SNOOP | AZX_DCAPS_RIRB_DELAY | AZX_DCAPS_NO_MSI |\
> -        AZX_DCAPS_ALIGN_BUFSIZE | AZX_DCAPS_NO_64BIT)
> +        AZX_DCAPS_ALIGN_BUFSIZE | AZX_DCAPS_NO_64BIT |\
> +        AZX_DCAPS_CORBRP_SELF_CLEAR)
>
>  #define AZX_DCAPS_PRESET_CTHDA \
>         (AZX_DCAPS_NO_MSI | AZX_DCAPS_POSFIX_LPIB | AZX_DCAPS_4K_BDLE_BOUNDARY)
> diff --git a/sound/pci/hda/hda_priv.h b/sound/pci/hda/hda_priv.h
> index ba38b819f984..4a7cb01fa912 100644
> --- a/sound/pci/hda/hda_priv.h
> +++ b/sound/pci/hda/hda_priv.h
> @@ -189,6 +189,7 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 };
>  #define AZX_DCAPS_COUNT_LPIB_DELAY  (1 << 25)  /* Take LPIB as delay */
>  #define AZX_DCAPS_PM_RUNTIME   (1 << 26)       /* runtime PM support */
>  #define AZX_DCAPS_I915_POWERWELL (1 << 27)     /* HSW i915 powerwell support */
> +#define AZX_DCAPS_CORBRP_SELF_CLEAR (1 << 28)  /* CORBRP clears itself after reset */
>
>  /* position fix mode */
>  enum {


More information about the Alsa-devel mailing list