From owner-freebsd-mobile@FreeBSD.ORG Fri Oct 19 15:32:33 2012 Return-Path: Delivered-To: mobile@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BF18AD2; Fri, 19 Oct 2012 15:32:33 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigknife-pt.tunnel.tserv9.chi1.ipv6.he.net [IPv6:2001:470:1f10:75::2]) by mx1.freebsd.org (Postfix) with ESMTP id 8F8098FC18; Fri, 19 Oct 2012 15:32:33 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id E090EB91C; Fri, 19 Oct 2012 11:32:32 -0400 (EDT) From: John Baldwin To: Juergen Lock Subject: Re: Dell acpi_video patch Date: Fri, 19 Oct 2012 11:14:10 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p20; KDE/4.5.5; amd64; ; ) References: <20121005215316.GA38707@triton8.kn-bremen.de> <201210180859.14457.jhb@freebsd.org> <20121018195723.GA10042@triton8.kn-bremen.de> In-Reply-To: <20121018195723.GA10042@triton8.kn-bremen.de> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201210191114.10340.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Fri, 19 Oct 2012 11:32:33 -0400 (EDT) Cc: avilla@freebsd.org, freebsd-acpi@freebsd.org, mobile@freebsd.org X-BeenThere: freebsd-mobile@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Mobile computing with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Oct 2012 15:32:33 -0000 On Thursday, October 18, 2012 3:57:23 pm Juergen Lock wrote: > On Thu, Oct 18, 2012 at 08:59:14AM -0400, John Baldwin wrote: > > On Friday, October 12, 2012 12:33:49 pm Juergen Lock wrote: > > > On Fri, Oct 12, 2012 at 10:06:17AM -0400, John Baldwin wrote: > > > > On Friday, October 05, 2012 5:53:16 pm Juergen Lock wrote: > > > > > Hi! > > > > > > > > > > I finally took a closer look why acpi_video found nothing on my > > > > > Dell laptop (Precision M4500), and came up with this patch: > > > > > > > > > > --- sys/dev/acpica/acpi_video.c.orig > > > > > +++ sys/dev/acpica/acpi_video.c > > > > > @@ -906,7 +906,7 @@ 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 | 0x80000000)) == adr) { > > > > > argset->callback(handle, val, argset->context); > > > > > argset->count++; > > > > > } > > > > > > > > > > which gives me: > > > > > > > > I think this is correct, but in we need to do more to properly handle that > > > > flag (DOD_DEVID_SCHEME_STD). Specifically, we shouldn't trust any bits in the > > > > device ID unless that bit is set (except for the special case of > > > > DOD_DEVID_LCD) as per my reading of the _DOD description in the ACPI 3.0b > > > > spec. I think this larger patch will do that while also fixing your case: > > > > > > Thank you, yes that still works for me the same as my original patch: > > > > Can you please test this updated patch as well: Sorry, one more request. I think I want to commit just your fix separately, but I have a slightly different version of it. Can you just double check this version: Index: acpi_video.c =================================================================== --- acpi_video.c (revision 241688) +++ acpi_video.c (working copy) @@ -906,7 +906,8 @@ vid_enum_outputs_subr(ACPI_HANDLE handle, UINT32 l 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++; } -- John Baldwin