Subject: Re: kern/33741: MCP55 azalia
To: None <kent@NetBSD.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org,>
From: TAMURA Kent <kent@NetBSD.org>
List: netbsd-bugs
Date: 06/29/2006 06:45:02
The following reply was made to PR kern/33741; it has been noted by GNATS.

From: TAMURA Kent <kent@NetBSD.org>
To: gnats-bugs@NetBSD.org, rillig@NetBSD.org
Cc: 
Subject: Re: kern/33741: MCP55 azalia
Date: Thu, 29 Jun 2006 15:44:08 +0900 (JST)

 >  I've done that, and here is the result: The kernel boots with revision 
 >  1.36, but there is no audio0. :(
 
 Thank you for the work.
 Well, the next step is to make MCP55 work.  Would test the
 following patch?
 
 
 Index: azalia.c
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/pci/azalia.c,v
 retrieving revision 1.36
 diff -u -r1.36 azalia.c
 --- azalia.c	27 Jun 2006 22:02:14 -0000	1.36
 +++ azalia.c	29 Jun 2006 06:41:56 -0000
 @@ -119,6 +119,7 @@
  	bus_space_handle_t ioh;
  	bus_size_t map_size;
  	bus_dma_tag_t dmat;
 +	pcireg_t pciid;
  	uint32_t subid;
  
  	codec_t codecs[15];
 @@ -269,6 +270,9 @@
   * PCI functions
   * ================================================================ */
  
 +#define PCI_ID_CODE0(v, p)	PCI_ID_CODE(PCI_VENDOR_##v, PCI_PRODUCT_##v##_##p)
 +#define PCIID_MCP55		PCI_ID_CODE0(NVIDIA, MCP55_HDA)
 +
  static int
  azalia_pci_match(struct device *parent, struct cfdata *match, void *aux)
  {
 @@ -328,6 +332,7 @@
  	}
  	aprint_normal("%s: interrupting at %s\n", XNAME(sc), intrrupt_str);
  
 +	sc->pciid = pa->pa_id;
  	vendor = pci_findvendor(pa->pa_id);
  	name = pci_findproduct(pa->pa_id);
  	if (vendor != NULL && name != NULL) {
 @@ -625,7 +630,7 @@
  		if (corbrp & HDA_CORBRP_CORBRPRST)
  			break;
  	}
 -	if (i <= 0) {
 +	if (i <= 0 && az->pciid != PCIID_MCP55) {
  		aprint_error("%s: CORBRP reset failure\n", XNAME(az));
  		return -1;
  	}