Add System76 ACPI device to kabylake

This commit is contained in:
Jeremy Soller
2019-03-01 19:37:08 -07:00
parent a8c7e5dc0b
commit ae5e3b5202
5 changed files with 83 additions and 10 deletions

View File

@ -36,18 +36,23 @@ Device (EC)
#include "acpi/ec_ram.asl"
Name (ECOK, Zero)
Method (_REG, 2, NotSerialized) // _REG: Region Availability
Method (_REG, 2, Serialized) // _REG: Region Availability
{
Store ("EC: _REG", Debug)
If (((Arg0 == 0x03) && (Arg1 == One)))
{
ECOK = Arg1
ECOS = One
WINF = One
If (((Arg0 == 0x03) && (Arg1 == One))) {
// Enable software touchpad lock and airplane mode keys
ECOS = 2
// Enable software backlight keys
WINF = 1
// Set current AC state
^^^^AC.ACFG = ADP
PNOT ()
// EC is now available
ECOK = Arg1
}
}
@ -163,8 +168,15 @@ Device (EC)
Notify (PWRB, 0x80)
}
Method (_Q50, 0, NotSerialized) // TODO
Method (_Q50, 0, NotSerialized) // Other Events
{
Store ("EC: 50", Debug)
Local0 = OEM4
If (Local0 == 0x8A) { // White Keyboard Backlight
Store ("EC: White Keyboard Backlight", Debug)
Notify (^^^^S76D, 0x80)
} Else {
Store ("EC: Other", Debug)
Store (Local0, Debug)
}
}
}

View File

@ -22,7 +22,7 @@ Device (LID0)
{
If (^^PCI0.LPCB.EC.ECOK)
{
Return (\_SB.PCI0.LPCB.EC.LSTE)
Return (^^PCI0.LPCB.EC.LSTE)
}
Else
{

View File

@ -20,4 +20,5 @@ Scope (\_SB)
#include "buttons.asl"
#include "hid.asl"
#include "lid.asl"
#include "s76.asl"
}

View File

@ -0,0 +1,61 @@
/*
* This file is part of the coreboot project.
*
* Copyright (C) 2019 System76
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
Device (S76D) {
Name (_HID, "17761776")
Name (_UID, 0)
// Get Airplane LED
Method (GAPL, 0, Serialized) {
If (^^PCI0.LPCB.EC.ECOK) {
If (^^PCI0.LPCB.EC.AIRP & 0x40) {
Return (1)
}
}
Return (0)
}
// Set Airplane LED
Method (SAPL, 1, Serialized) {
If (^^PCI0.LPCB.EC.ECOK) {
If (Arg0) {
^^PCI0.LPCB.EC.AIRP |= 0x40
} Else {
^^PCI0.LPCB.EC.AIRP &= 0xBF
}
}
}
// Get KB LED
Method (GKBL, 0, Serialized) {
Local0 = 0
If (^^PCI0.LPCB.EC.ECOK) {
^^PCI0.LPCB.EC.FDAT = One
^^PCI0.LPCB.EC.FCMD = 0xCA
Local0 = ^^PCI0.LPCB.EC.FBUF
^^PCI0.LPCB.EC.FCMD = Zero
}
Return (Local0)
}
// Set KB Led
Method (SKBL, 1, Serialized) {
If (^^PCI0.LPCB.EC.ECOK) {
^^PCI0.LPCB.EC.FDAT = Zero
^^PCI0.LPCB.EC.FBUF = Arg0
^^PCI0.LPCB.EC.FCMD = 0xCA
}
}
}

View File

@ -36,7 +36,6 @@ Device (EC)
#include "acpi/ec_ram.asl"
Name (ECOK, Zero)
Name (TPSE, Zero)
Method (_REG, 2, Serialized) // _REG: Region Availability
{
Store ("EC: _REG", Debug)