kern/53264: PCM interrupt not routed on Sony VAIO laptop

Pete Carah pete at ns.altadena.net
Thu Jun 12 18:10:17 PDT 2003


>Number:         53264
>Category:       kern
>Synopsis:       PCM interrupt not routed on Sony VAIO laptop
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jun 12 18:10:15 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Pete Carah
>Release:        FreeBSD 5.1-CURRENT i386
>Organization:
Altadena Internet
>Environment:
System: FreeBSD port2.altadena.net 5.1-CURRENT FreeBSD 5.1-CURRENT #6: Wed Jun 11 19:47:51 CDT 2003     pete at port2.altadena.net:/d/obj-c/usr/src/sys/PORT2  i386

>Description:
	Sound doesn't work unless something else using irq 9 is kicked
	(e.g. USB mouse)

>How-To-Repeat:
	See description.  Originated by Chuck McCrobie.  Patch from his
	web site, but I can't get to the site anymore.  (his comment about
	GRX670 also applies to Vaio R505E models and probably others.)

>Fix:
*** sys/dev/pci/pci.c.orig	Thu Mar 20 23:42:29 2003
--- sys/dev/pci/pci.c	Sat Mar  8 00:42:07 2003
***************
*** 168,179 ****
--- 168,186 ----
  SYSCTL_NODE(_hw, OID_AUTO, pci, CTLFLAG_RD, 0, "PCI bus tuning parameters");
  
  static int pci_enable_io_modes = 1;
+ static int pci_route_existing = 1;
  TUNABLE_INT("hw.pci.enable_io_modes", (int *)&pci_enable_io_modes);
+ TUNABLE_INT("hw.pci.route.existing", (int *)&pci_route_existing);
  SYSCTL_INT(_hw_pci, OID_AUTO, enable_io_modes, CTLFLAG_RW,
      &pci_enable_io_modes, 1,
      "Enable I/O and memory bits in the config register.  Some BIOSes do not\n\
  enable these bits correctly.  We'd like to do this all the time, but there\n\
  are some peripherals that this causes problems with.");
+ SYSCTL_INT(_hw_pci, OID_AUTO, route_existing, CTLFLAG_RW,
+     &pci_route_existing, 1,
+     "Perform interrupt routing for devices with wired PCI interrupt pins\n\
+ and legacy interrupt lines.  Sony VAIO GRX670 requires this for audio\n\
+ interrupts.");
  
  /* Find a device_t by bus/slot/function */
  
***************
*** 768,773 ****
--- 775,786 ----
  		 * PIC interrupt numbers in the intline registers).
  		 */
  		cfg->intline = PCIB_ROUTE_INTERRUPT(pcib, dev, cfg->intpin);
+ #else
+                 /*
+                  * XXX: Do we need to re-program the device's PCIREG intline?
+                  */
+                 if (pci_route_existing)
+                         cfg->intline = PCIB_ROUTE_INTERRUPT(pcib, dev, cfg->intpin);
  #endif
  		resource_list_add(rl, SYS_RES_IRQ, 0, cfg->intline,
  		  cfg->intline, 1);
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list