blob: 622d5910bcfae004d494fbc2eb94d3f05cda1cf3 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Intel Virtual Button driver compatible with the driver found in
* the Linux kernel at drivers/platform/x86/intel-vbtn.c
*
* For tablet/laptop and dock/undock events to work the board must
* have SMBIOS_ENCLOSURE_CONVERTIBLE for the SMBIOS enclosure type to
* indicate the device is a convertible.
*/
Name (FLAP, 0x40) /* Flag indicating device is in laptop mode */
/* Virtual events */
Name (VPPB, 0xc0) /* Power Button press */
Name (VRPB, 0xc1) /* Power Button release */
Name (VPSP, 0xc2) /* Special key press (LEFTMETA in Linux) */
Name (VRSP, 0xc3) /* Special key release (LEFTMETA in Linux) */
Name (VPVU, 0xc4) /* Volume Up press */
Name (VRVU, 0xc5) /* Volume Up release */
Name (VPVD, 0xc6) /* Volume Down press */
Name (VRVD, 0xc7) /* Volume Down release */
Name (VPRL, 0xc8) /* Rotate Lock press */
Name (VRRL, 0xc9) /* Rotate Lock release */
Name (VDOC, 0xca) /* Docked */
Name (VUND, 0xcb) /* Undocked */
Name (VTBL, 0xcc) /* Tablet Mode */
Name (VLAP, 0xcd) /* Laptop Mode */
Device (VBTN)
{
Name (_HID, "INT33D6")
Name (_UID, 1)
Name (_DDN, "Intel Virtual Button Driver")
/*
* This method is called at driver probe time and must exist or
* the driver will not load.
*/
Method (VBDL)
{
}
/*
* This method returns flags indicating tablet and dock modes.
* It is called at driver probe time so the OS knows what the
* state of the device is at boot.
*/
Method (VGBS)
{
Local0 = Zero
/* Check EC orientation for tablet mode flag */
If (R (OTBL)) {
Printf ("EC reports tablet mode at boot")
} Else {
Printf ("EC reports laptop mode at boot")
Local0 |= ^^FLAP
}
Return (Local0)
}
Method(_STA, 0)
{
Return (0xF)
}
}
Device (VBTO)
{
Name (_HID, "INT33D3")
Name (_CID, "PNP0C60")
Name (_UID, 1)
Name (_DDN, "Laptop/tablet mode indicator driver")
Method (_STA, 0)
{
Return (0xF)
}
}