RE: [PATCH] [RESEND] Add Dell laptop backlight brightness display

From: Michael_E_Brown
Date: Tue Feb 07 2006 - 11:32:35 EST


You can get and set laptop brighness on Dell with the proper SMI call.

To do the proper SMI call requires parsing SMBIOS structure 0xDA, a
vendor-proprietary structure, and getting the SMI index and io port and
magic values. Then, you need to know how to setup the registers and
input/output buffers for the call. All of this is already present in
libsmbios.

Reading nvram is not a valid way to get brighness unless you also do
similar work (parse specific vendor-proprietary SMBIOS structures) to
ensure that you are reading the correct location. This location is
subject to change from BIOS to BIOS and machine to machine. The fact
that you may have observed it in the same location on a few laptops does
not change this fact.

In fact, I have the same objection to the I8K driver in the kernel. It
has hardcoded SMI calls, that are subject to change. There is a proper
way to get the correct IO ports to make this safe, but it is not
currently being done.
--
Michael

-----Original Message-----
From: Matthew Garrett [mailto:mjg59@xxxxxxxxxxxxx]
Sent: Monday, February 06, 2006 10:10 PM
To: Brown, Michael E
Cc: Andrew Morton; Domsch, Matt; linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH] [RESEND] Add Dell laptop backlight brightness
display

On Mon, Feb 06, 2006 at 09:43:16PM -0600, Michael E Brown wrote:

> I would _strongly_ suggest that this patch _not_ go in. This
driver
> uses hardcoded values that are subject to change without notice. It is

> perfectly legitimate for future versions of Dell BIOS to interpret
> pokes to cmos location 0x99 as the command to format your hard drive.

I managed to send the wrong patch - the Dell one only reads from nvram.
If nvram reads are likely to reformat your hard drive, I think Dell
needs to reconsider its BIOS design :)

More seriously, a quick scan of libsmbios hasn't revealed any method for
obtaining the screen brightness. It's possible that I'm blind (I'm
certainly slightly drunk), but can you give a pointer to the correct
mechanism for making this call?

Thanks,
--
Matthew Garrett | mjg59@xxxxxxxxxxxxx
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/