Comment 40 for bug 95444

BINGO! As I am writing to you, my LCD brightness is set to a comfortable low level and my battery time is 2+ hours! The physical address for the register is 0xCE61C084 for the 8400M, if it means anything to you. I did a quick and dirty hack on nvclock to set the register and it worked. Possible values are from 0x0 to 0x401. To set the brightness you have to bitwise-OR the value with 0x80000000. The max value for my panel is 0x401. This means that you have to write 0x80000401 to 0xCE61C084 in order to set the brightness to full. 0x80000100 is ok for something relatively low. All values in-between are working. Implementing the nice backlight fade-in and fade-out effect from Vista should be easily doable.

Have in mind that when you are reading the value of the register the leading 8 does not appear. It is needed when you set the brightness though. The register eats it and is left with the least significant part which is the real value (i.e. 0x00000401).

For those that are going to incorporate this to smartdimmer and/or nvclock, have in mind that this physical address is outside of the ranges that are mmap-ped in the backend code, so you possibly need to add a new pointer member in the NVCard struct.