summaryrefslogtreecommitdiffstats
path: root/sys/dev/acpica
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2012-10-19 19:17:43 +0000
committerjhb <jhb@FreeBSD.org>2012-10-19 19:17:43 +0000
commitb0521992440a239ebfce14ddadc395b3cf6c553b (patch)
tree795fd4d0a0c52b734fdaab1f87e4380f3625dbbf /sys/dev/acpica
parent74011e5f91ae35d7d0a47389d406a2d6dd7fcbc6 (diff)
downloadFreeBSD-src-b0521992440a239ebfce14ddadc395b3cf6c553b.zip
FreeBSD-src-b0521992440a239ebfce14ddadc395b3cf6c553b.tar.gz
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
Diffstat (limited to 'sys/dev/acpica')
-rw-r--r--sys/dev/acpica/acpi_video.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/acpica/acpi_video.c b/sys/dev/acpica/acpi_video.c
index 3954892..cda45db 100644
--- a/sys/dev/acpica/acpi_video.c
+++ b/sys/dev/acpica/acpi_video.c
@@ -906,7 +906,8 @@ vid_enum_outputs_subr(ACPI_HANDLE handle, UINT32 level __unused,
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++;
}
OpenPOWER on IntegriCloud