Brightness change on notebook that follow ACPI specification
(par. B.7)
Dan Lukes
dan at obluda.cz
Wed Mar 31 01:31:28 UTC 2010
On 03/31/10 01:32, Jung-uk Kim:
>> --- 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).
>
> I didn't think it was necessary because ACPI will not define
> overlapping events, AFAIK.
Of course. Language problem. I'm speaking about the meaning of the
event. We are speaking about range of "device specific" events and they
are different meaning for every type of devices.
>> 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.
>
> B.6.2 _BCL (Query List of Brightness Control Levels Supported)
>
> The first number in the package is the level of the panel when full
> power is connected to the machine. The second number in the package is
> the level of the panel when the machine is on batteries. All other
> numbers are treated as a list of levels OSPM will cycle through when
> the user toggles (via a keystroke) the brightness level of the
> display.
>
> Please note the last sentence. I know a lot of BIOSes do not follow
> the rule but I wanted to implement it as close as possible.
There is no "only" word in mentioned sequence. They are list of levels
the OSPM will cycle through when ..., but sentence doesn't say that the
levels come from such list only. It's sounds like your over-assumption
of text rather than "close as possible" implementation. Or, in the world
of mathematics symbols, '=>' operator is not '<=>'.
I interpret whole _BCL list as list of levels. Yes, first two levels
have additional meaning, but it doesn't mean they lost the basic attribute.
You should look into description of event, e.g. table B-7 which sounds
very clear to me. It doesn't distinquish between first two levels in the
list and other levels in the list.
But I'm not native english speaker, so it's hard to dispute about exact
meaning of the specification text and meaning of wording in the
sentences for me.
In the fact, I can say for sure only I see nothing in the specification,
that can be interpret as "with only three levels in _BCL you can't cycle
trough it".
>> 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]).
>
> It was intentional, i.e., I didn't want to implement increase/decrease
> via cycle up/down or to miss the first two levels. The spec. was
> little vague about those cases and I abused it. :-)
I'm sayed the actual implementation looks to me like not to be optimal
approach. Nothing more...
>> The 0x88 handling is duplicate implementation of
>> acpi_video_vo_check_level instead just calling the already
>> implemented function.
>
> Again, it was intentional, i.e., to mimic the style of other cases in
> the switch statement and to avoid an unnecessary assertion.
So you implemented the functionality you already have just few lines
above because it looks more uniform when printed on paper ? Well, it's
not my way, but it's your code and it works, so it's between you and
comitter - and because you are comitter, then it's between you and you ;-)
Dan
P.S. Don't forget the english is not my native language. It doesn't
affect my interpertation of the specification text only but such
disputation as well.
More information about the freebsd-acpi
mailing list