summaryrefslogtreecommitdiff
path: root/src/mainboard
diff options
context:
space:
mode:
authorJeremy Soller <jeremy@system76.com>2020-07-20 12:31:07 -0600
committerPhilipp Deppenwiese <zaolin.daisuki@gmail.com>2020-07-23 09:30:22 +0000
commit0de0fe110468cfd609a0aaa42ea9a4c29740e507 (patch)
treed44cc7211e9e44a6fd2712cfaf25b0db761ed6a0 /src/mainboard
parentb8d6af9569632745966199a21833f0ad426ca140 (diff)
ec/system76_ec: add support for System76 EC
This adds ACPI code for System76 EC and converts system76/lemp9 to use EC_SYSTEM76_EC. Tested on system76/lemp9. Signed-off-by: Jeremy Soller <jeremy@system76.com> Change-Id: I1f693268d94b693b6764e4a3baf4c3180689f3be Reviewed-on: https://review.coreboot.org/c/coreboot/+/43612 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com> Reviewed-by: Michael Niewöhner
Diffstat (limited to 'src/mainboard')
-rw-r--r--src/mainboard/system76/lemp9/Kconfig2
-rw-r--r--src/mainboard/system76/lemp9/acpi/ac.asl22
-rw-r--r--src/mainboard/system76/lemp9/acpi/battery.asl170
-rw-r--r--src/mainboard/system76/lemp9/acpi/buttons.asl13
-rw-r--r--src/mainboard/system76/lemp9/acpi/ec.asl218
-rw-r--r--src/mainboard/system76/lemp9/acpi/ec_ram.asl175
-rw-r--r--src/mainboard/system76/lemp9/acpi/hid.asl50
-rw-r--r--src/mainboard/system76/lemp9/acpi/lid.asl23
-rw-r--r--src/mainboard/system76/lemp9/acpi/mainboard.asl11
-rw-r--r--src/mainboard/system76/lemp9/acpi/s76.asl84
-rw-r--r--src/mainboard/system76/lemp9/devicetree.cb12
-rw-r--r--src/mainboard/system76/lemp9/dsdt.asl1
12 files changed, 12 insertions, 769 deletions
diff --git a/src/mainboard/system76/lemp9/Kconfig b/src/mainboard/system76/lemp9/Kconfig
index b2ce9e3edf..3431de1988 100644
--- a/src/mainboard/system76/lemp9/Kconfig
+++ b/src/mainboard/system76/lemp9/Kconfig
@@ -3,7 +3,7 @@ if BOARD_SYSTEM76_LEMP9
config BOARD_SPECIFIC_OPTIONS
def_bool y
select BOARD_ROMSIZE_KB_16384
- select EC_ACPI
+ select EC_SYSTEM76_EC
select HAVE_ACPI_RESUME
select HAVE_ACPI_TABLES
select HAVE_SMI_HANDLER
diff --git a/src/mainboard/system76/lemp9/acpi/ac.asl b/src/mainboard/system76/lemp9/acpi/ac.asl
deleted file mode 100644
index 7326676198..0000000000
--- a/src/mainboard/system76/lemp9/acpi/ac.asl
+++ /dev/null
@@ -1,22 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-Device (AC)
-{
- Name (_HID, "ACPI0003" /* Power Source Device */) // _HID: Hardware ID
- Name (_PCL, Package (0x01) // _PCL: Power Consumer List
- {
- _SB
- })
-
- Name (ACFG, One)
-
- Method (_PSR, 0, NotSerialized) // _PSR: Power Source
- {
- Return (ACFG)
- }
-
- Method (_STA, 0, NotSerialized) // _STA: Status
- {
- Return (0x0F)
- }
-}
diff --git a/src/mainboard/system76/lemp9/acpi/battery.asl b/src/mainboard/system76/lemp9/acpi/battery.asl
deleted file mode 100644
index bc239dd9c0..0000000000
--- a/src/mainboard/system76/lemp9/acpi/battery.asl
+++ /dev/null
@@ -1,170 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-Device (BAT0)
-{
- Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */) // _HID: Hardware ID
- Name (_UID, Zero) // _UID: Unique ID
- Name (_PCL, Package (0x01) // _PCL: Power Consumer List
- {
- _SB
- })
- Name (BFCC, Zero)
- Method (_STA, 0, NotSerialized) // _STA: Status
- {
- If (^^PCI0.LPCB.EC0.ECOK)
- {
- If (^^PCI0.LPCB.EC0.BAT0)
- {
- Return (0x1F)
- }
- Else
- {
- Return (0x0F)
- }
- }
- Else
- {
- Return (0x0F)
- }
- }
-
- Name (PBIF, Package (0x0D)
- {
- One,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- One,
- 0x39D0,
- Zero,
- Zero,
- 0x40,
- 0x40,
- "BAT",
- "0001",
- "LION",
- "Notebook"
- })
- Method (IVBI, 0, NotSerialized)
- {
- PBIF [One] = 0xFFFFFFFF
- PBIF [0x02] = 0xFFFFFFFF
- PBIF [0x04] = 0xFFFFFFFF
- PBIF [0x09] = " "
- PBIF [0x0A] = " "
- PBIF [0x0B] = " "
- PBIF [0x0C] = " "
- BFCC = Zero
- }
-
- Method (UPBI, 0, NotSerialized)
- {
- If (^^PCI0.LPCB.EC0.BAT0)
- {
- Local0 = (^^PCI0.LPCB.EC0.BDC0 & 0xFFFF)
- PBIF [One] = Local0
- Local0 = (^^PCI0.LPCB.EC0.BFC0 & 0xFFFF)
- PBIF [0x02] = Local0
- BFCC = Local0
- Local0 = (^^PCI0.LPCB.EC0.BDV0 & 0xFFFF)
- PBIF [0x04] = Local0
- Local0 = (^^PCI0.LPCB.EC0.BCW0 & 0xFFFF)
- PBIF [0x05] = Local0
- Local0 = (^^PCI0.LPCB.EC0.BCL0 & 0xFFFF)
- PBIF [0x06] = Local0
- PBIF [0x09] = "BAT"
- PBIF [0x0A] = "0001"
- PBIF [0x0B] = "LION"
- PBIF [0x0C] = "Notebook"
- }
- Else
- {
- IVBI ()
- }
- }
-
- Method (_BIF, 0, NotSerialized) // _BIF: Battery Information
- {
- If (^^PCI0.LPCB.EC0.ECOK)
- {
- UPBI ()
- }
- Else
- {
- IVBI ()
- }
-
- Return (PBIF) /* \_SB_.BAT0.PBIF */
- }
-
- Name (PBST, Package (0x04)
- {
- Zero,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- 0x3D90
- })
- Method (IVBS, 0, NotSerialized)
- {
- PBST [Zero] = Zero
- PBST [One] = 0xFFFFFFFF
- PBST [0x02] = 0xFFFFFFFF
- PBST [0x03] = 0x2710
- }
-
- Method (UPBS, 0, NotSerialized)
- {
- If (^^PCI0.LPCB.EC0.BAT0)
- {
- Local0 = Zero
- Local1 = Zero
- If (^^AC.ACFG)
- {
- If (((^^PCI0.LPCB.EC0.BST0 & 0x02) == 0x02))
- {
- Local0 |= 0x02
- Local1 = (^^PCI0.LPCB.EC0.BPR0 & 0xFFFF)
- }
- }
- Else
- {
- Local0 |= One
- Local1 = (^^PCI0.LPCB.EC0.BPR0 & 0xFFFF)
- }
-
- Local7 = (Local1 & 0x8000)
- If ((Local7 == 0x8000))
- {
- Local1 ^= 0xFFFF
- }
-
- Local2 = (^^PCI0.LPCB.EC0.BRC0 & 0xFFFF)
- Local3 = (^^PCI0.LPCB.EC0.BPV0 & 0xFFFF)
- PBST [Zero] = Local0
- PBST [One] = Local1
- PBST [0x02] = Local2
- PBST [0x03] = Local3
- If ((BFCC != ^^PCI0.LPCB.EC0.BFC0))
- {
- Notify (BAT0, 0x81) // Information Change
- }
- }
- Else
- {
- IVBS ()
- }
- }
-
- Method (_BST, 0, NotSerialized) // _BST: Battery Status
- {
- If (^^PCI0.LPCB.EC0.ECOK)
- {
- UPBS ()
- }
- Else
- {
- IVBS ()
- }
-
- Return (PBST) /* \_SB_.BAT0.PBST */
- }
-}
diff --git a/src/mainboard/system76/lemp9/acpi/buttons.asl b/src/mainboard/system76/lemp9/acpi/buttons.asl
deleted file mode 100644
index 81e61242bf..0000000000
--- a/src/mainboard/system76/lemp9/acpi/buttons.asl
+++ /dev/null
@@ -1,13 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-Device (PWRB)
-{
- Name (_HID, EisaId ("PNP0C0C"))
- Name (_PRW, Package () { 0x29 /* GPP_D9 */, 3 })
-}
-
-Device (SLPB)
-{
- Name (_HID, EisaId ("PNP0C0E"))
- Name (_PRW, Package () { 0x29 /* GPP_D9 */, 3 })
-}
diff --git a/src/mainboard/system76/lemp9/acpi/ec.asl b/src/mainboard/system76/lemp9/acpi/ec.asl
deleted file mode 100644
index f8496aed8c..0000000000
--- a/src/mainboard/system76/lemp9/acpi/ec.asl
+++ /dev/null
@@ -1,218 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-Device (EC0)
-{
- Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */) // _HID: Hardware ID
- Name (_GPE, 0x50 /* GPP_E16 */) // _GPE: General Purpose Events
- Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
- {
- IO (Decode16,
- 0x0062, // Range Minimum
- 0x0062, // Range Maximum
- 0x00, // Alignment
- 0x01, // Length
- )
- IO (Decode16,
- 0x0066, // Range Minimum
- 0x0066, // Range Maximum
- 0x00, // Alignment
- 0x01, // Length
- )
- })
-
- #include "acpi/ec_ram.asl"
-
- Name (ECOK, Zero)
- Method (_REG, 2, Serialized) // _REG: Region Availability
- {
- Debug = Concatenate("EC: _REG", Concatenate(ToHexString(Arg0), Concatenate(" ", ToHexString(Arg1))))
- If (((Arg0 == 0x03) && (Arg1 == One))) {
- // Enable hardware touchpad lock, airplane mode, and keyboard backlight keys
- ECOS = 1
-
- // Enable software display brightness keys
- WINF = 1
-
- // Set current AC state
- ^^^^AC.ACFG = ADP
- // Update battery information and status
- ^^^^BAT0.UPBI()
- ^^^^BAT0.UPBS()
-
- PNOT ()
-
- // EC is now available
- ECOK = Arg1
-
- // Reset System76 Device
- ^^^^S76D.RSET()
- }
- }
-
- Method (PTS, 1, Serialized) {
- Debug = Concatenate("EC: PTS: ", ToHexString(Arg0))
- If (ECOK) {
- // Clear wake cause
- WFNO = Zero
- }
- }
-
- Method (WAK, 1, Serialized) {
- Debug = Concatenate("EC: WAK: ", ToHexString(Arg0))
- If (ECOK) {
- // Set current AC state
- ^^^^AC.ACFG = ADP
-
- // Update battery information and status
- ^^^^BAT0.UPBI()
- ^^^^BAT0.UPBS()
-
- // Notify of changes
- Notify(^^^^AC, Zero)
- Notify(^^^^BAT0, Zero)
-
- Sleep (1000)
-
- // Reset System76 Device
- ^^^^S76D.RSET()
- }
- }
-
- Method (_Q0A, 0, NotSerialized) // Touchpad Toggle
- {
- Debug = "EC: Touchpad Toggle"
- }
-
- Method (_Q0B, 0, NotSerialized) // Screen Toggle
- {
- Debug = "EC: Screen Toggle"
- }
-
- Method (_Q0C, 0, NotSerialized) // Mute
- {
- Debug = "EC: Mute"
- }
-
- Method (_Q0D, 0, NotSerialized) // Keyboard Backlight
- {
- Debug = "EC: Keyboard Backlight"
- }
-
- Method (_Q0E, 0, NotSerialized) // Volume Down
- {
- Debug = "EC: Volume Down"
- }
-
- Method (_Q0F, 0, NotSerialized) // Volume Up
- {
- Debug = "EC: Volume Up"
- }
-
- Method (_Q10, 0, NotSerialized) // Switch Video Mode
- {
- Debug = "EC: Switch Video Mode"
- }
-
- Method (_Q11, 0, NotSerialized) // Brightness Down
- {
- Debug = "EC: Brightness Down"
- ^^^^HIDD.HPEM (20)
- }
-
- Method (_Q12, 0, NotSerialized) // Brightness Up
- {
- Debug = "EC: Brightness Up"
- ^^^^HIDD.HPEM (19)
- }
-
- Method (_Q13, 0, NotSerialized) // Camera Toggle
- {
- Debug = "EC: Camera Toggle"
- }
-
- Method (_Q14, 0, NotSerialized) // Airplane Mode
- {
- Debug = "EC: Airplane Mode"
- // Only send HIDD message when hardware airplane mode not in use
- If (ECOS == 2) {
- ^^^^HIDD.HPEM (8)
- }
- }
-
- Method (_Q15, 0, NotSerialized) // Suspend Button
- {
- Debug = "EC: Suspend Button"
- Notify (SLPB, 0x80)
- }
-
- Method (_Q16, 0, NotSerialized) // AC Detect
- {
- Debug = "EC: AC Detect"
- ^^^^AC.ACFG = ADP
- Notify (AC, 0x80) // Status Change
- Sleep (0x01F4)
- If (BAT0)
- {
- Notify (^^^^BAT0, 0x81) // Information Change
- Sleep (0x32)
- Notify (^^^^BAT0, 0x80) // Status Change
- Sleep (0x32)
- }
- }
-
- Method (_Q17, 0, NotSerialized) // BAT0 Update
- {
- Debug = "EC: BAT0 Update (17)"
- Notify (^^^^BAT0, 0x81) // Information Change
- }
-
- Method (_Q19, 0, NotSerialized) // BAT0 Update
- {
- Debug = "EC: BAT0 Update (19)"
- Notify (^^^^BAT0, 0x81) // Information Change
- }
-
- Method (_Q1B, 0, NotSerialized) // Lid Close
- {
- Debug = "EC: Lid Close"
- Notify (LID0, 0x80)
- }
-
- Method (_Q1C, 0, NotSerialized) // Thermal Trip
- {
- Debug = "EC: Thermal Trip"
- /* TODO
- Notify (\_TZ.TZ0, 0x81) // Thermal Trip Point Change
- Notify (\_TZ.TZ0, 0x80) // Thermal Status Change
- */
- }
-
- Method (_Q1D, 0, NotSerialized) // Power Button
- {
- Debug = "EC: Power Button"
- Notify (PWRB, 0x80)
- }
-
- Method (_Q50, 0, NotSerialized) // Other Events
- {
- Local0 = OEM4
- If (Local0 == 0x8A) {
- Debug = "EC: White Keyboard Backlight"
- Notify (^^^^S76D, 0x80)
- } ElseIf (Local0 == 0x9F) {
- Debug = "EC: Color Keyboard Toggle"
- Notify (^^^^S76D, 0x81)
- } ElseIf (Local0 == 0x81) {
- Debug = "EC: Color Keyboard Down"
- Notify (^^^^S76D, 0x82)
- } ElseIf (Local0 == 0x82) {
- Debug = "EC: Color Keyboard Up"
- Notify (^^^^S76D, 0x83)
- } ElseIf (Local0 == 0x80) {
- Debug = "EC: Color Keyboard Color Change"
- Notify (^^^^S76D, 0x84)
- } Else {
- Debug = Concatenate("EC: Other: ", ToHexString(Local0))
- }
- }
-}
diff --git a/src/mainboard/system76/lemp9/acpi/ec_ram.asl b/src/mainboard/system76/lemp9/acpi/ec_ram.asl
deleted file mode 100644
index d5f97edbd7..0000000000
--- a/src/mainboard/system76/lemp9/acpi/ec_ram.asl
+++ /dev/null
@@ -1,175 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
-Field (ERAM, ByteAcc, Lock, Preserve)
-{
- NMSG, 8,
- SLED, 4,
- Offset (0x02),
- MODE, 1,
- FAN0, 1,
- TME0, 1,
- TME1, 1,
- FAN1, 1,
- , 2,
- Offset (0x03),
- LSTE, 1,
- LSW0, 1,
- LWKE, 1,
- WAKF, 1,
- , 2,
- PWKE, 1,
- MWKE, 1,
- AC0, 8,
- PSV, 8,
- CRT, 8,
- TMP, 8,
- AC1, 8,
- BBST, 8,
- Offset (0x0B),
- Offset (0x0C),
- Offset (0x0D),
- Offset (0x0E),
- SLPT, 8,
- SWEJ, 1,
- SWCH, 1,
- Offset (0x10),
- ADP, 1,
- AFLT, 1,
- BAT0, 1,
- BAT1, 1,
- , 3,
- PWOF, 1,
- WFNO, 8,
- BPU0, 32,
- BDC0, 32,
- BFC0, 32,
- BTC0, 32,
- BDV0, 32,
- BST0, 32,
- BPR0, 32,
- BRC0, 32,
- BPV0, 32,
- BTP0, 16,
- BRS0, 16,
- BCW0, 32,
- BCL0, 32,
- BCG0, 32,
- BG20, 32,
- BMO0, 64,
- BIF0, 64,
- BSN0, 32,
- BTY0, 64,
- Offset (0x67),
- Offset (0x68),
- ECOS, 8,
- LNXD, 8,
- ECPS, 8,
- Offset (0x6C),
- BTMP, 16,
- EVTN, 8,
- Offset (0x72),
- PRCL, 8,
- PRC0, 8,
- PRC1, 8,
- PRCM, 8,
- PRIN, 8,
- PSTE, 8,
- PCAD, 8,
- PEWL, 8,
- PWRL, 8,
- PECD, 8,
- PEHI, 8,
- PECI, 8,
- PEPL, 8,
- PEPM, 8,
- PWFC, 8,
- PECC, 8,
- PDT0, 8,
- PDT1, 8,
- PDT2, 8,
- PDT3, 8,
- PRFC, 8,
- PRS0, 8,
- PRS1, 8,
- PRS2, 8,
- PRS3, 8,
- PRS4, 8,
- PRCS, 8,
- PEC0, 8,
- PEC1, 8,
- PEC2, 8,
- PEC3, 8,
- CMDR, 8,
- CVRT, 8,
- GTVR, 8,
- FANT, 8,
- SKNT, 8,
- AMBT, 8,
- MCRT, 8,
- DIM0, 8,
- DIM1, 8,
- PMAX, 8,
- PPDT, 8,
- PECH, 8,
- PMDT, 8,
- TSD0, 8,
- TSD1, 8,
- TSD2, 8,
- TSD3, 8,
- CPUP, 16,
- MCHP, 16,
- SYSP, 16,
- CPAP, 16,
- MCAP, 16,
- SYAP, 16,
- CFSP, 16,
- CPUE, 16,
- Offset (0xC6),
- Offset (0xC7),
- VGAT, 8,
- OEM1, 8,
- OEM2, 8,
- OEM3, 16,
- OEM4, 8,
- Offset (0xCE),
- DUT1, 8,
- DUT2, 8,
- RPM1, 16,
- RPM2, 16,
- RPM4, 16,
- Offset (0xD7),
- DTHL, 8,
- DTBP, 8,
- AIRP, 8,
- WINF, 8,
- RINF, 8,
- Offset (0xDD),
- INF2, 8,
- MUTE, 1,
- Offset (0xE0),
- RPM3, 16,
- ECKS, 8,
- Offset (0xE4),
- , 4,
- XTUF, 1,
- EP12, 1,
- Offset (0xE5),
- INF3, 8,
- Offset (0xE7),
- GFOF, 8,
- Offset (0xE9),
- KPCR, 1,
- Offset (0xEA),
- Offset (0xF0),
- PL1T, 16,
- PL2T, 16,
- TAUT, 8,
- Offset (0xF8),
- FCMD, 8,
- FDAT, 8,
- FBUF, 8,
- FBF1, 8,
- FBF2, 8,
- FBF3, 8
-}
diff --git a/src/mainboard/system76/lemp9/acpi/hid.asl b/src/mainboard/system76/lemp9/acpi/hid.asl
deleted file mode 100644
index ce8fd3f28b..0000000000
--- a/src/mainboard/system76/lemp9/acpi/hid.asl
+++ /dev/null
@@ -1,50 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-Device (HIDD)
-{
- Name (_HID, "INT33D5")
- Name (HBSY, Zero)
- Name (HIDX, Zero)
- Name (HRDY, Zero)
-
- Method (HDEM, 0, Serialized)
- {
- HBSY = Zero
- Return (HIDX)
- }
-
- Method (HDMM, 0, Serialized)
- {
- Return (Zero)
- }
-
- Method (HDSM, 1, Serialized)
- {
- HRDY = Arg0
- }
-
- Method (HPEM, 1, Serialized)
- {
- HBSY = One
- HIDX = Arg0
-
- Notify (HIDD, 0xC0)
- Local0 = Zero
- While (((Local0 < 0xFA) && HBSY))
- {
- Sleep (0x04)
- Local0++
- }
-
- If ((HBSY == One))
- {
- HBSY = Zero
- HIDX = Zero
- Return (One)
- }
- Else
- {
- Return (Zero)
- }
- }
-}
diff --git a/src/mainboard/system76/lemp9/acpi/lid.asl b/src/mainboard/system76/lemp9/acpi/lid.asl
deleted file mode 100644
index ea382eb045..0000000000
--- a/src/mainboard/system76/lemp9/acpi/lid.asl
+++ /dev/null
@@ -1,23 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-Device (LID0)
-{
- Name (_HID, EisaId ("PNP0C0D"))
- Name (_PRW, Package () { 0x29 /* GPP_D9 */, 3 })
-
- Method (_LID, 0, NotSerialized) {
- DEBUG = "LID: _LID"
- If (^^PCI0.LPCB.EC0.ECOK) {
- Return (^^PCI0.LPCB.EC0.LSTE)
- } Else {
- Return (One)
- }
- }
-
- Method (_PSW, 1, NotSerialized) {
- DEBUG = Concatenate("LID: _PSW: ", ToHexString(Arg0))
- If (^^PCI0.LPCB.EC0.ECOK) {
- ^^PCI0.LPCB.EC0.LWKE = Arg0
- }
- }
-}
diff --git a/src/mainboard/system76/lemp9/acpi/mainboard.asl b/src/mainboard/system76/lemp9/acpi/mainboard.asl
index 11735e8e01..4e8691d3d5 100644
--- a/src/mainboard/system76/lemp9/acpi/mainboard.asl
+++ b/src/mainboard/system76/lemp9/acpi/mainboard.asl
@@ -1,12 +1,11 @@
/* SPDX-License-Identifier: GPL-2.0-only */
+#define EC_GPE_SCI 0x50 /* GPP_E16 */
+#define EC_GPE_SWI 0x29 /* GPP_D9 */
+#define EC_COLOR_KEYBOARD 0
+#include <ec/system76/ec/acpi/ec.asl>
+
Scope (\_SB) {
- #include "ac.asl"
- #include "battery.asl"
- #include "buttons.asl"
- #include "hid.asl"
- #include "lid.asl"
- #include "s76.asl"
#include "sleep.asl"
}
diff --git a/src/mainboard/system76/lemp9/acpi/s76.asl b/src/mainboard/system76/lemp9/acpi/s76.asl
deleted file mode 100644
index 399e569734..0000000000
--- a/src/mainboard/system76/lemp9/acpi/s76.asl
+++ /dev/null
@@ -1,84 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-// Notifications:
-// 0x80 - hardware backlight toggle
-// 0x81 - backlight toggle
-// 0x82 - backlight down
-// 0x83 - backlight up
-// 0x84 - backlight color change
-Device (S76D) {
- Name (_HID, "17761776")
- Name (_UID, 0)
-
- Method (RSET, 0, Serialized) {
- Debug = "S76D: RSET"
- SAPL(0)
- SKBL(0)
- }
-
- Method (INIT, 0, Serialized) {
- Debug = "S76D: INIT"
- RSET()
- If (^^PCI0.LPCB.EC0.ECOK) {
- // Set flags to use software control
- ^^PCI0.LPCB.EC0.ECOS = 2
- Return (0)
- } Else {
- Return (1)
- }
- }
-
- Method (FINI, 0, Serialized) {
- Debug = "S76D: FINI"
- RSET()
- If (^^PCI0.LPCB.EC0.ECOK) {
- // Set flags to use hardware control
- ^^PCI0.LPCB.EC0.ECOS = 1
- Return (0)
- } Else {
- Return (1)
- }
- }
-
- // Get Airplane LED
- Method (GAPL, 0, Serialized) {
- If (^^PCI0.LPCB.EC0.ECOK) {
- If (^^PCI0.LPCB.EC0.AIRP & 0x40) {
- Return (1)
- }
- }
- Return (0)
- }
-
- // Set Airplane LED
- Method (SAPL, 1, Serialized) {
- If (^^PCI0.LPCB.EC0.ECOK) {
- If (Arg0) {
- ^^PCI0.LPCB.EC0.AIRP |= 0x40
- } Else {
- ^^PCI0.LPCB.EC0.AIRP &= 0xBF
- }
- }
- }
-
- // Get KB LED
- Method (GKBL, 0, Serialized) {
- Local0 = 0
- If (^^PCI0.LPCB.EC0.ECOK) {
- ^^PCI0.LPCB.EC0.FDAT = One
- ^^PCI0.LPCB.EC0.FCMD = 0xCA
- Local0 = ^^PCI0.LPCB.EC0.FBUF
- ^^PCI0.LPCB.EC0.FCMD = Zero
- }
- Return (Local0)
- }
-
- // Set KB Led
- Method (SKBL, 1, Serialized) {
- If (^^PCI0.LPCB.EC0.ECOK) {
- ^^PCI0.LPCB.EC0.FDAT = Zero
- ^^PCI0.LPCB.EC0.FBUF = Arg0
- ^^PCI0.LPCB.EC0.FCMD = 0xCA
- }
- }
-}
diff --git a/src/mainboard/system76/lemp9/devicetree.cb b/src/mainboard/system76/lemp9/devicetree.cb
index 4c6c866440..25ae62febf 100644
--- a/src/mainboard/system76/lemp9/devicetree.cb
+++ b/src/mainboard/system76/lemp9/devicetree.cb
@@ -147,14 +147,14 @@ chip soc/intel/cannonlake
# LPC (soc/intel/cannonlake/lpc.c)
# LPC configuration from lspci -s 1f.0 -xxx
- # Address 0x84: Decode 0x80 - 0x8F
+ # Address 0x84: Decode 0x80 - 0x8F (Port 80)
register "gen1_dec" = "0x000c0081"
- # Address 0x88: Decode 0x68 - 0x6F
+ # Address 0x88: Decode 0x68 - 0x6F (PMC)
register "gen2_dec" = "0x00040069"
- # Address 0x8C: Decode 0x3320 - 0x332F
- register "gen3_dec" = "0x000c3321"
- # Address 0x90: Disabled
- register "gen4_dec" = "0x00000000"
+ # Address 0x8C: Decode 0xE00 - 0xEFF (AP/EC command)
+ register "gen3_dec" = "0x00fc0E01"
+ # Address 0x90: Decode 0xF00 - 0xFFF (AP/EC debug)
+ register "gen4_dec" = "0x00fc0F01"
# PMC (soc/intel/cannonlake/pmc.c)
# Enable deep Sx states
diff --git a/src/mainboard/system76/lemp9/dsdt.asl b/src/mainboard/system76/lemp9/dsdt.asl
index 7ae8ac4394..eac27b56f1 100644
--- a/src/mainboard/system76/lemp9/dsdt.asl
+++ b/src/mainboard/system76/lemp9/dsdt.asl
@@ -25,7 +25,6 @@ DefinitionBlock(
Scope (\_SB.PCI0.LPCB)
{
#include <drivers/pc80/pc/ps2_controller.asl>
- #include "acpi/ec.asl"
}
#include "acpi/mainboard.asl"