Output Device-specific Methods¶
The methods in this section are methods associated with the display output device.
_ADR (Return the Unique ID for this Device)¶
This method returns a unique ID representing the display output device. All output devices must have a unique hardware ID. This method is required for all The IDs returned by this method will appear in the list of hardware IDs returned by the _DOD method.
Arguments:
None
Return Value:
An Integer containing the device ID (32 bits)
Example:
Method (_ADR, 0) {
return(0x0100) // device ID for this CRT
}
This method is required for all output display devices.
_BCL (Query List of Brightness Control Levels Supported)¶
This method allows the OS to query a list of brightness level supported by built-in display output devices. (This method in not allowed for externally connected displays.) This method is required if an integrated LCD is present and supports brightness levels.
Each brightness level is represented by a number between 0 and 100, and can be thought of as a percentage. For example, 50 can be 50% power consumption or 50% brightness, as defined by the OEM.
The OEM may define the number 0 as “Zero brightness” that can mean to turn off the lighting (e.g. LCD panel backlight) in the device. This may be useful in the case of an output device that can still be viewed using only ambient light, for example, a transflective LCD. If Notify(Output Device, 0x85) for “Zero brightness” is issued, OSPM may be able to turn off the lighting by calling _BCM(0).
Arguments:
None
Return Value:
A variable-length Package containing a list of Integers representing the the supported brightness levels. Each integer has 8 bits of significant data.
Example:
Method (_BCL, 0) {
// List of supported brightness levels
Return (Package(7){
80, // level when machine has full power
50, // level when machine is on batteries
// other supported levels:
20, 40, 60, 80, 100}
}
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.
These levels will be set using the _BCM method described in the following section.
_BCM (Set the Brightness Level)¶
This method allows OSPM to set the brightness level of a built-in display output device.
The OS will only set levels that were reported via the _BCL method. This method is required if _BCL is implemented.
Arguments:(1)
Arg0 - An Integer containing the new brightness level
Return Value:
None
Example:
Method (_BCM, 1) { // Set the requested level }
The method will be called in response to a power source change or at the specific request of the end user, for example, when the user presses a function key that represents brightness control.
_BQC (Brightness Query Current level)¶
This optional method returns the current brightness level of a built-in display output device. If present, it must be set by the platform for initial brightness.
Arguments:
None
Return Value:
An Integer containing the current brightness level (must be one of the values returned from the _BCL method)
_DDC (Return the EDID for this Device)¶
This method returns an EDID (Extended Display Identification Data) structure that represents the display output device. This method is required for integrated LCDs that do not have another standard mechanism for returning EDID data.
Arguments:
Arg0 - An Integer containing a code for the return data length:
1 - Return 128 bytes of data 2 - Return 256 bytes of data 3 – Return 384 bytes of data 4 – Return 512 bytes of data
Return Value:
Either a Buffer containing the requested data (of the length specified in Arg0), or an Integer (value 0) if Arg0 was invalid
Example:
Method (_DDC, 2) {
(LEqual (Arg0, 1)) { Return (Buffer(128){ ,,,, }) }
If (LEqual (Arg0, 2)) { Return (Buffer(256){ ,,,, }) }
Return (0)
}
The buffer will later be interpreted as an EDID data block. The format of this data is defined by the VESA EDID specification.
_DCS (Return the Status of Output Device)¶
This method is required if hotkey display switching is supported.
Arguments:
None
Return Value:
An Integer containing the device status (32 bits) (see Table B-5 below).
Table B-5: Output Device Status
Bits |
Definition |
---|---|
0 |
Output connector exists in the system now |
1 |
Output is activated |
2 |
Output is ready to switch |
3 |
Output is not defective (it is functioning properly) |
4 |
Device is attached (this is optional) |
31:5 |
Reserved (must be zero) |
Example:
If the output signal is activated by _DSS, _DCS returns 0x1F or 0x0F.
If the output signal is inactivated by _DSS, _DCS returns 0x1D or 0x0D.
If the device is not attached or cannot be detected, _DCS returns 0x0xxxx and should return 0x1xxxx if it is attached.
If the output signal cannot be activated, _ DCS returns 0x1B or 0x0B.
If the output connector does not exist (when undocked), _DCS returns 0x00.
_DGS (Query Graphics State)¶
This method is used to query the state (active or inactive) of the output device. This method is required if hotkey display switching is supported.
Arguments:
None
Return Value:
An Integer containing the device state (32 bits) (see Table B-6 below)
Table B-6: Device State for _DGS
Bits |
Definition |
---|---|
0 |
0 - Next desired state is inactive / 1 - Next desired state is active |
31:1 |
Reserved (must be zero) |
The desired state represents what the user wants to activate or deactivate, based on the special function keys the user pressed. OSPM will query the desired state when it receives the display toggle event (described earlier).
_DSS (Device Set State)¶
OSPM will call this method when it determines the outputs can be activated or deactivated. OSPM will manage this to avoid flickering as much as possible. This method is required if hotkey display switching is supported.
Arguments:(1)
Arg0 - An Integer containing the new device state (32 bits) (see Table B-7 below)
Return Value:
None
Table B-7: Device State for _DSS
Bits |
Definition |
---|---|
0 |
0 - Set output device to inactive state 1 - Set output device to active state |
30 |
0 - Do whatever Bit [31] requires 1 - Don’t do actual switching, but need to change _DGS to next state |
31 |
0 - Don’t do actual switching, just cache the change 1 - If Bit [30] = 0, commit actual switching, including any _DSS with MSB=0 called before If Bit [30] = 1, don’t do actual switching, change _DGS to next state |
29:1 |
Reserved (must be zero) |
Example Usage:
OS may call in such an order to turn off CRT, and turn on LCD:
CRT._DSS(0);
LCD._DSS(80000001L);
or:
LCD._DSS(1);
CRT._DSS(80000000L);
OS may call in such an order to force platform runtime firmware to make _DGS jump to next state without actual CRT, LCD switching:
CRT._DSS(40000000L);
LCD._DSS(C0000001L);