Brightness change on notebook that follow ACPI specification
(par. B.7)
John Baldwin
jhb at freebsd.org
Tue Mar 30 20:12:31 UTC 2010
On Tuesday 30 March 2010 3:30:37 pm Dan Lukes wrote:
> On 03/30/10 16:11, John Baldwin:
> >> Most notebooks have special keys (mostly Fn+something) to change
> >> brightness of LCD display.
> >>
> >> Some of them (my notebok, for example) follows the ACPI specification
> >> (paragraph B.7) how to announce the user request for brightness change
> >> to OS.
> >>
> >> I implemented such handling as part of acpi-video module.
> >>
> >> It's verified to work on my HP Mini 5101& FreeBSD 8.0.
> >>
> >> No test on other notebook done as I have no other notebook.
>
> > A patch to implement the brightness controls was already committed to HEAD a
> > while ago and have already been merged to 8-stable and 7-stable. Can you test
> > the a kernel from 8-stable to ensure it works ok on your machine? The patches
> > in HEAD work fine on an HP Mini 2140 that I have here.
>
> I'm sure there has been a regular PR before commitment assigned to ACPI
> group for review, but I missed them. It resulted in waste of time. My fault.
I'm not sure if there was a PR. I do recall a thread on the acpi@ mailing
list when the patch was first submitted.
> I will test it later (I have no 8-STABLE here), I'm almost sure it will
> work (based on code review).
>
> There are several notices related to coding of the committed patch:
>
> --- 1 ---------------
> /* events */
> #define VID_NOTIFY_SWITCHED 0x80
> #define VID_NOTIFY_REPROBE 0x81
> #define VID_NOTIFY_CYCLE_BRN 0x85
> #define VID_NOTIFY_INC_BRN 0x86
> #define VID_NOTIFY_DEC_BRN 0x87
> #define VID_NOTIFY_ZERO_BRN 0x88
>
> The events 0x80 and 0x81 are "Display Devices" device specific
> notifications (according ACPI specification B.5), but events 0x85-0x88
> are "Output devices" device specific notification (ACPI spec. B.7). The
> common name VID_NOTIFY_* for values that come from different domains is
> confusing. Note that future versions of ACPI specification may overlaps
> (there may be defined 0x80 event for Output device or event 0x85 event
> for Display device).
>
> --- 2 ---------------
> The code of acpi_video_vo_notify_handler():
>
> Handling of event 0x85 refuse do anything when there are less than four
> levels. I see no reason for such limitation - we can safely cycle
> trougth three or even trougth two levels as well.
>
> It advance, the 0x85 handling assume the _BCL list is sorted and ignores
> vo_levels[0] and vo_levels[1] (note that handling of 0x86/0x87 just few
> lines bellow doesn't assume sorted levels nor ignore levels [0] and [1]).
>
> The 0x88 handling is duplicate implementation of
> acpi_video_vo_check_level instead just calling the already implemented
> function.
> ------------------------
>
> Such notices should not be considered offence against the autor nor
> committer in any way. Just my $0.02 related to the code.
These all sound like good fixes to me. If you can code up a patch that
implements them I would be happy to test it. (My netbook only has keys
for up and down, so I can't test changes for 0x85 and 0x88.)
--
John Baldwin
More information about the freebsd-acpi
mailing list