On Tue, Aug 10, 2010 at 09:09:58AM +0000, Jacob Meuser wrote:
> On Mon, Aug 09, 2010 at 09:28:34PM -0700, Luis Cortes wrote:

> > azalia0 at pci0 dev 27 function 0 "Intel 82801I HD Audio" rev 0x03:
> > apic 1 int 22 (irq 255)
> > azalia0: invalid CORBSZCAP: 0x 0
> > azalia0: initialization failure, detaching
> 
> don't think I've ever seen that one before.

linux always uses 256 CORB/RIRB entries for all controllers, and intel
docs say intel controllers always use 256 entries, so it's likely the
following will work (assuming the controller isn't just foobarred in
some other way).

if this doesn't work, I'd like a dmesg from a kernel with
AZALIA_DEBUG defined.

-- 
jake...@sdf.lonestar.org
SDF Public Access UNIX System - http://sdf.lonestar.org

Index: azalia.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/azalia.c,v
retrieving revision 1.183
diff -u -p azalia.c
--- azalia.c    8 Aug 2010 05:25:30 -0000       1.183
+++ azalia.c    10 Aug 2010 17:34:47 -0000
@@ -775,8 +775,10 @@ azalia_get_ctrlr_caps(azalia_t *az)
                az->corb_entries = 2;
                az->corbsize |= HDA_CORBSIZE_CORBSIZE_2;
        } else {
-               printf("%s: invalid CORBSZCAP: 0x%2x\n", XNAME(az), cap);
-               return(-1);
+               DPRINTF(("%s: invalid CORBSZCAP: 0x%02x, using 256 entries\n",
+                   XNAME(az), cap));
+               az->corb_entries = 256;
+               az->corbsize |= HDA_CORBSIZE_CORBSIZE_256;
        }
 
        /* determine RIRB size */
@@ -793,8 +795,10 @@ azalia_get_ctrlr_caps(azalia_t *az)
                az->rirb_entries = 2;
                az->rirbsize |= HDA_RIRBSIZE_RIRBSIZE_2;
        } else {
-               printf("%s: invalid RIRBSZCAP: 0x%2x\n", XNAME(az), cap);
-               return(-1);
+               DPRINTF(("%s: invalid RIRBSZCAP: 0x%02x, using 256 entries\n",
+                   XNAME(az), cap));
+               az->rirb_entries = 256;
+               az->rirbsize |= HDA_RIRBSIZE_RIRBSIZE_256;
        }
 
        return(0);

Reply via email to