svn commit: r241748 - head/sys/dev/acpica

John Baldwin jhb at FreeBSD.org
Fri Oct 19 19:17:44 UTC 2012


Author: jhb
Date: Fri Oct 19 19:17:43 2012
New Revision: 241748
URL: http://svn.freebsd.org/changeset/base/241748

Log:
  When checking to see if a video output's _ADR matches an entry in the
  parent adapter's _DOD list, only check the low 16 bits of both _ADR and
  _DOD.  The language in the ACPI spec seems to indicate that the _ADR values
  should exactly match the entries in _DOD.  However, I assume that the
  masking added to _DOD values was added to work around some known busted
  machines (the commit history doesn't indicate either way), and the ACPI
  spec does require that the low 16 bits are unique for all video outputs,
  so only check the low 16 bits should be fine.
  
  This fixes recognition of video outputs that use the new standardized
  device ID scheme in ACPI 3.0 that set bit 31 such as certain Dell laptops.
  
  Tested by:	Juergen Lock  nox  jelal kn-bremen de
  MFC after:	3 days

Modified:
  head/sys/dev/acpica/acpi_video.c

Modified: head/sys/dev/acpica/acpi_video.c
==============================================================================
--- head/sys/dev/acpica/acpi_video.c	Fri Oct 19 18:50:19 2012	(r241747)
+++ head/sys/dev/acpica/acpi_video.c	Fri Oct 19 19:17:43 2012	(r241748)
@@ -906,7 +906,8 @@ vid_enum_outputs_subr(ACPI_HANDLE handle
 
 	for (i = 0; i < argset->dod_pkg->Package.Count; i++) {
 		if (acpi_PkgInt32(argset->dod_pkg, i, &val) == 0 &&
-		    (val & DOD_DEVID_MASK_FULL) == adr) {
+		    (val & DOD_DEVID_MASK_FULL) ==
+		    (adr & DOD_DEVID_MASK_FULL)) {
 			argset->callback(handle, val, argset->context);
 			argset->count++;
 		}


More information about the svn-src-all mailing list