Re: Dell acpi_video patch

John Baldwin <[email protected]>
Newsgroups gmane.os.freebsd.devel.mobile
Message-ID <201210191114.10340.jhb__28573.830475989$1350660804$gmane$org@freebsd.org>
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
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.