Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Oct 2012 11:14:10 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Juergen Lock <nox@jelal.kn-bremen.de>
Cc:        avilla@freebsd.org, freebsd-acpi@freebsd.org, mobile@freebsd.org
Subject:   Re: Dell acpi_video patch
Message-ID:  <201210191114.10340.jhb@freebsd.org>
In-Reply-To: <20121018195723.GA10042@triton8.kn-bremen.de>
References:  <20121005215316.GA38707@triton8.kn-bremen.de> <201210180859.14457.jhb@freebsd.org> <20121018195723.GA10042@triton8.kn-bremen.de>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201210191114.10340.jhb>