kbl-u: Sync some changes from whl-u

This commit is contained in:
Jeremy Soller 2020-06-04 08:56:09 -06:00
parent 5c6c34c32b
commit 37dc6de31d
No known key found for this signature in database
GPG Key ID: E988B49EE78A7FB1
20 changed files with 906 additions and 1160 deletions

View File

@ -2,27 +2,26 @@ if BOARD_SYSTEM76_GALP2 || BOARD_SYSTEM76_GALP3 || BOARD_SYSTEM76_GALP3_B
config BOARD_SPECIFIC_OPTIONS config BOARD_SPECIFIC_OPTIONS
def_bool y def_bool y
select ADD_FSP_BINARIES
select BOARD_ROMSIZE_KB_8192 select BOARD_ROMSIZE_KB_8192
select EC_ACPI select EC_ACPI
select EXCLUDE_EMMC_INTERFACE
select FSP_USE_REPO
select HAVE_ACPI_RESUME select HAVE_ACPI_RESUME
select HAVE_ACPI_TABLES select HAVE_ACPI_TABLES
select HAVE_CMOS_DEFAULT select HAVE_CMOS_DEFAULT
select HAVE_OPTION_TABLE select HAVE_OPTION_TABLE
select HAVE_SMI_HANDLER select HAVE_SMI_HANDLER
select INTEL_GMA_HAVE_VBT select INTEL_GMA_HAVE_VBT
select INTEL_LPSS_UART_FOR_CONSOLE
select MAINBOARD_HAS_LPC_TPM select MAINBOARD_HAS_LPC_TPM
select MAINBOARD_HAS_TPM2 select MAINBOARD_HAS_TPM2
select MAINBOARD_USES_FSP2_0 select MAINBOARD_USES_FSP2_0
select NO_UART_ON_SUPERIO select NO_UART_ON_SUPERIO
select PCIEXP_HOTPLUG
select SOC_INTEL_COMMON_ACPI_EC_PTS_WAK select SOC_INTEL_COMMON_ACPI_EC_PTS_WAK
select SOC_INTEL_COMMON_BLOCK_HDA
select SOC_INTEL_COMMON_BLOCK_HDA_VERB select SOC_INTEL_COMMON_BLOCK_HDA_VERB
select SOC_INTEL_KABYLAKE select SOC_INTEL_KABYLAKE
select SPD_READ_BY_WORD select SPD_READ_BY_WORD
select SYSTEM_TYPE_LAPTOP select SYSTEM_TYPE_LAPTOP
select USE_BLOBS
select USE_OPTION_TABLE select USE_OPTION_TABLE
select USE_LEGACY_8254_TIMER # Fix failure to boot GRUB select USE_LEGACY_8254_TIMER # Fix failure to boot GRUB

View File

@ -1,35 +1,22 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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 (AC) Device (AC)
{ {
Name (_HID, "ACPI0003" /* Power Source Device */) // _HID: Hardware ID Name (_HID, "ACPI0003" /* Power Source Device */) // _HID: Hardware ID
Name (_PCL, Package (0x01) // _PCL: Power Consumer List Name (_PCL, Package (0x01) // _PCL: Power Consumer List
{ {
_SB _SB
}) })
Name (ACFG, One) Name (ACFG, One)
Method (_PSR, 0, NotSerialized) // _PSR: Power Source Method (_PSR, 0, NotSerialized) // _PSR: Power Source
{ {
Return (ACFG) Return (ACFG)
} }
Method (_STA, 0, NotSerialized) // _STA: Status Method (_STA, 0, NotSerialized) // _STA: Status
{ {
Return (0x0F) Return (0x0F)
} }
} }

View File

@ -1,183 +1,170 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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 (BAT0) Device (BAT0)
{ {
Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */) // _HID: Hardware ID Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */) // _HID: Hardware ID
Name (_UID, Zero) // _UID: Unique ID Name (_UID, Zero) // _UID: Unique ID
Name (_PCL, Package (0x01) // _PCL: Power Consumer List Name (_PCL, Package (0x01) // _PCL: Power Consumer List
{ {
_SB _SB
}) })
Name (BFCC, Zero) Name (BFCC, Zero)
Method (_STA, 0, NotSerialized) // _STA: Status Method (_STA, 0, NotSerialized) // _STA: Status
{ {
If (^^PCI0.LPCB.EC0.ECOK) If (^^PCI0.LPCB.EC0.ECOK)
{ {
If (^^PCI0.LPCB.EC0.BAT0) If (^^PCI0.LPCB.EC0.BAT0)
{ {
Return (0x1F) Return (0x1F)
} }
Else Else
{ {
Return (0x0F) Return (0x0F)
} }
} }
Else Else
{ {
Return (0x0F) Return (0x0F)
} }
} }
Name (PBIF, Package (0x0D) Name (PBIF, Package (0x0D)
{ {
One, One,
0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF,
One, One,
0x39D0, 0x39D0,
Zero, Zero,
Zero, Zero,
0x40, 0x40,
0x40, 0x40,
"BAT", "BAT",
"0001", "0001",
"LION", "LION",
"Notebook" "Notebook"
}) })
Method (IVBI, 0, NotSerialized) Method (IVBI, 0, NotSerialized)
{ {
PBIF [One] = 0xFFFFFFFF PBIF [One] = 0xFFFFFFFF
PBIF [0x02] = 0xFFFFFFFF PBIF [0x02] = 0xFFFFFFFF
PBIF [0x04] = 0xFFFFFFFF PBIF [0x04] = 0xFFFFFFFF
PBIF [0x09] = " " PBIF [0x09] = " "
PBIF [0x0A] = " " PBIF [0x0A] = " "
PBIF [0x0B] = " " PBIF [0x0B] = " "
PBIF [0x0C] = " " PBIF [0x0C] = " "
BFCC = Zero BFCC = Zero
} }
Method (UPBI, 0, NotSerialized) Method (UPBI, 0, NotSerialized)
{ {
If (^^PCI0.LPCB.EC0.BAT0) If (^^PCI0.LPCB.EC0.BAT0)
{ {
Local0 = (^^PCI0.LPCB.EC0.BDC0 & 0xFFFF) Local0 = (^^PCI0.LPCB.EC0.BDC0 & 0xFFFF)
PBIF [One] = Local0 PBIF [One] = Local0
Local0 = (^^PCI0.LPCB.EC0.BFC0 & 0xFFFF) Local0 = (^^PCI0.LPCB.EC0.BFC0 & 0xFFFF)
PBIF [0x02] = Local0 PBIF [0x02] = Local0
BFCC = Local0 BFCC = Local0
Local0 = (^^PCI0.LPCB.EC0.BDV0 & 0xFFFF) Local0 = (^^PCI0.LPCB.EC0.BDV0 & 0xFFFF)
PBIF [0x04] = Local0 PBIF [0x04] = Local0
Local0 = (^^PCI0.LPCB.EC0.BCW0 & 0xFFFF) Local0 = (^^PCI0.LPCB.EC0.BCW0 & 0xFFFF)
PBIF [0x05] = Local0 PBIF [0x05] = Local0
Local0 = (^^PCI0.LPCB.EC0.BCL0 & 0xFFFF) Local0 = (^^PCI0.LPCB.EC0.BCL0 & 0xFFFF)
PBIF [0x06] = Local0 PBIF [0x06] = Local0
PBIF [0x09] = "BAT" PBIF [0x09] = "BAT"
PBIF [0x0A] = "0001" PBIF [0x0A] = "0001"
PBIF [0x0B] = "LION" PBIF [0x0B] = "LION"
PBIF [0x0C] = "Notebook" PBIF [0x0C] = "Notebook"
} }
Else Else
{ {
IVBI () IVBI ()
} }
} }
Method (_BIF, 0, NotSerialized) // _BIF: Battery Information Method (_BIF, 0, NotSerialized) // _BIF: Battery Information
{ {
If (^^PCI0.LPCB.EC0.ECOK) If (^^PCI0.LPCB.EC0.ECOK)
{ {
UPBI () UPBI ()
} }
Else Else
{ {
IVBI () IVBI ()
} }
Return (PBIF) /* \_SB_.BAT0.PBIF */ Return (PBIF) /* \_SB_.BAT0.PBIF */
} }
Name (PBST, Package (0x04) Name (PBST, Package (0x04)
{ {
Zero, Zero,
0xFFFFFFFF, 0xFFFFFFFF,
0xFFFFFFFF, 0xFFFFFFFF,
0x3D90 0x3D90
}) })
Method (IVBS, 0, NotSerialized) Method (IVBS, 0, NotSerialized)
{ {
PBST [Zero] = Zero PBST [Zero] = Zero
PBST [One] = 0xFFFFFFFF PBST [One] = 0xFFFFFFFF
PBST [0x02] = 0xFFFFFFFF PBST [0x02] = 0xFFFFFFFF
PBST [0x03] = 0x2710 PBST [0x03] = 0x2710
} }
Method (UPBS, 0, NotSerialized) Method (UPBS, 0, NotSerialized)
{ {
If (^^PCI0.LPCB.EC0.BAT0) If (^^PCI0.LPCB.EC0.BAT0)
{ {
Local0 = Zero Local0 = Zero
Local1 = Zero Local1 = Zero
If (^^AC.ACFG) If (^^AC.ACFG)
{ {
If (((^^PCI0.LPCB.EC0.BST0 & 0x02) == 0x02)) If (((^^PCI0.LPCB.EC0.BST0 & 0x02) == 0x02))
{ {
Local0 |= 0x02 Local0 |= 0x02
Local1 = (^^PCI0.LPCB.EC0.BPR0 & 0xFFFF) Local1 = (^^PCI0.LPCB.EC0.BPR0 & 0xFFFF)
} }
} }
Else Else
{ {
Local0 |= One Local0 |= One
Local1 = (^^PCI0.LPCB.EC0.BPR0 & 0xFFFF) Local1 = (^^PCI0.LPCB.EC0.BPR0 & 0xFFFF)
} }
Local7 = (Local1 & 0x8000) Local7 = (Local1 & 0x8000)
If ((Local7 == 0x8000)) If ((Local7 == 0x8000))
{ {
Local1 ^= 0xFFFF Local1 ^= 0xFFFF
} }
Local2 = (^^PCI0.LPCB.EC0.BRC0 & 0xFFFF) Local2 = (^^PCI0.LPCB.EC0.BRC0 & 0xFFFF)
Local3 = (^^PCI0.LPCB.EC0.BPV0 & 0xFFFF) Local3 = (^^PCI0.LPCB.EC0.BPV0 & 0xFFFF)
PBST [Zero] = Local0 PBST [Zero] = Local0
PBST [One] = Local1 PBST [One] = Local1
PBST [0x02] = Local2 PBST [0x02] = Local2
PBST [0x03] = Local3 PBST [0x03] = Local3
If ((BFCC != ^^PCI0.LPCB.EC0.BFC0)) If ((BFCC != ^^PCI0.LPCB.EC0.BFC0))
{ {
Notify (BAT0, 0x81) // Information Change Notify (BAT0, 0x81) // Information Change
} }
} }
Else Else
{ {
IVBS () IVBS ()
} }
} }
Method (_BST, 0, NotSerialized) // _BST: Battery Status Method (_BST, 0, NotSerialized) // _BST: Battery Status
{ {
If (^^PCI0.LPCB.EC0.ECOK) If (^^PCI0.LPCB.EC0.ECOK)
{ {
UPBS () UPBS ()
} }
Else Else
{ {
IVBS () IVBS ()
} }
Return (PBST) /* \_SB_.BAT0.PBST */ Return (PBST) /* \_SB_.BAT0.PBST */
} }
} }

View File

@ -1,26 +1,13 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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 (PWRB) Device (PWRB)
{ {
Name (_HID, EisaId ("PNP0C0C")) Name (_HID, EisaId ("PNP0C0C"))
Name (_PRW, Package () { 0x13 /* GPP_C19 */, 3 }) Name (_PRW, Package () { 0x13 /* GPP_C19 */, 3 })
} }
Device (SLPB) Device (SLPB)
{ {
Name (_HID, EisaId ("PNP0C0E")) Name (_HID, EisaId ("PNP0C0E"))
Name (_PRW, Package () { 0x13 /* GPP_C19 */, 3 }) Name (_PRW, Package () { 0x13 /* GPP_C19 */, 3 })
} }

View File

@ -1,231 +1,222 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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 (EC0) Device (EC0)
{ {
Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */) // _HID: Hardware ID Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */) // _HID: Hardware ID
Name (_GPE, 0x50 /* GPP_E16 */) // _GPE: General Purpose Events Name (_GPE, 0x50 /* GPP_E16 */) // _GPE: General Purpose Events
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{ {
IO (Decode16, IO (Decode16,
0x0062, // Range Minimum 0x0062, // Range Minimum
0x0062, // Range Maximum 0x0062, // Range Maximum
0x00, // Alignment 0x00, // Alignment
0x01, // Length 0x01, // Length
) )
IO (Decode16, IO (Decode16,
0x0066, // Range Minimum 0x0066, // Range Minimum
0x0066, // Range Maximum 0x0066, // Range Maximum
0x00, // Alignment 0x00, // Alignment
0x01, // Length 0x01, // Length
) )
}) })
#include "acpi/ec_ram.asl" #include "acpi/ec_ram.asl"
Name (ECOK, Zero) Name (ECOK, Zero)
Method (_REG, 2, Serialized) // _REG: Region Availability Method (_REG, 2, Serialized) // _REG: Region Availability
{ {
Debug = Concatenate("EC: _REG", Concatenate(ToHexString(Arg0), Concatenate(" ", ToHexString(Arg1)))) Debug = Concatenate("EC: _REG", Concatenate(ToHexString(Arg0), Concatenate(" ", ToHexString(Arg1))))
If (((Arg0 == 0x03) && (Arg1 == One))) { If (((Arg0 == 0x03) && (Arg1 == One))) {
// Enable hardware touchpad lock, airplane mode, and keyboard backlight keys // Enable hardware touchpad lock, airplane mode, and keyboard backlight keys
ECOS = 1 ECOS = 1
// Enable software display brightness keys // Enable software display brightness keys
WINF = 1 WINF = 1
// Set current AC state // Set current AC state
^^^^AC.ACFG = ADP ^^^^AC.ACFG = ADP
// Update battery information and status // Update battery information and status
^^^^BAT0.UPBI() ^^^^BAT0.UPBI()
^^^^BAT0.UPBS() ^^^^BAT0.UPBS()
PNOT () PNOT ()
// EC is now available // EC is now available
ECOK = Arg1 ECOK = Arg1
// Reset System76 Device // Reset System76 Device
^^^^S76D.RSET() ^^^^S76D.RSET()
} }
} }
Method (PTS, 1, Serialized) { Method (PTS, 1, Serialized) {
Debug = Concatenate("EC: PTS: ", ToHexString(Arg0)) Debug = Concatenate("EC: PTS: ", ToHexString(Arg0))
If (ECOK) { If (ECOK) {
// Clear wake cause // Clear wake cause
WFNO = Zero WFNO = Zero
} }
} }
Method (WAK, 1, Serialized) { Method (WAK, 1, Serialized) {
Debug = Concatenate("EC: WAK: ", ToHexString(Arg0)) Debug = Concatenate("EC: WAK: ", ToHexString(Arg0))
If (ECOK) { If (ECOK) {
// Set current AC state // Set current AC state
^^^^AC.ACFG = ADP ^^^^AC.ACFG = ADP
// Update battery information and status // Update battery information and status
^^^^BAT0.UPBI() ^^^^BAT0.UPBI()
^^^^BAT0.UPBS() ^^^^BAT0.UPBS()
// Notify of changes // Notify of changes
Notify(^^^^AC, Zero) Notify(^^^^AC, Zero)
Notify(^^^^BAT0, Zero) Notify(^^^^BAT0, Zero)
Sleep (1000) Sleep (1000)
// Reset System76 Device // Reset System76 Device
^^^^S76D.RSET() ^^^^S76D.RSET()
} }
} }
Method (_Q0A, 0, NotSerialized) // Touchpad Toggle Method (_Q0A, 0, NotSerialized) // Touchpad Toggle
{ {
Debug = "EC: Touchpad Toggle" Debug = "EC: Touchpad Toggle"
} }
Method (_Q0B, 0, NotSerialized) // Screen Toggle Method (_Q0B, 0, NotSerialized) // Screen Toggle
{ {
Debug = "EC: Screen Toggle" Debug = "EC: Screen Toggle"
} }
Method (_Q0C, 0, NotSerialized) // Mute Method (_Q0C, 0, NotSerialized) // Mute
{ {
Debug = "EC: Mute" Debug = "EC: Mute"
} }
Method (_Q0D, 0, NotSerialized) // Keyboard Backlight Method (_Q0D, 0, NotSerialized) // Keyboard Backlight
{ {
Debug = "EC: Keyboard Backlight" Debug = "EC: Keyboard Backlight"
} }
Method (_Q0E, 0, NotSerialized) // Volume Down Method (_Q0E, 0, NotSerialized) // Volume Down
{ {
Debug = "EC: Volume Down" Debug = "EC: Volume Down"
} }
Method (_Q0F, 0, NotSerialized) // Volume Up Method (_Q0F, 0, NotSerialized) // Volume Up
{ {
Debug = "EC: Volume Up" Debug = "EC: Volume Up"
} }
Method (_Q10, 0, NotSerialized) // Switch Video Mode Method (_Q10, 0, NotSerialized) // Switch Video Mode
{ {
Debug = "EC: Switch Video Mode" Debug = "EC: Switch Video Mode"
} }
Method (_Q11, 0, NotSerialized) // Brightness Down Method (_Q11, 0, NotSerialized) // Brightness Down
{ {
Debug = "EC: Brightness Down" Debug = "EC: Brightness Down"
^^^^HIDD.HPEM (20) if (^^^^HIDD.HRDY) {
} ^^^^HIDD.HPEM (20)
}
}
Method (_Q12, 0, NotSerialized) // Brightness Up Method (_Q12, 0, NotSerialized) // Brightness Up
{ {
Debug = "EC: Brightness Up" Debug = "EC: Brightness Up"
^^^^HIDD.HPEM (19) if (^^^^HIDD.HRDY) {
} ^^^^HIDD.HPEM (19)
}
}
Method (_Q13, 0, NotSerialized) // Camera Toggle Method (_Q13, 0, NotSerialized) // Camera Toggle
{ {
Debug = "EC: Camera Toggle" Debug = "EC: Camera Toggle"
} }
Method (_Q14, 0, NotSerialized) // Airplane Mode Method (_Q14, 0, NotSerialized) // Airplane Mode
{ {
Debug = "EC: Airplane Mode" Debug = "EC: Airplane Mode"
// Only send HIDD message when hardware airplane mode not in use if (^^^^HIDD.HRDY) {
If (ECOS == 2) { ^^^^HIDD.HPEM (8)
^^^^HIDD.HPEM (8) }
} // TODO: hardware airplane mode
} }
Method (_Q15, 0, NotSerialized) // Suspend Button Method (_Q15, 0, NotSerialized) // Suspend Button
{ {
Debug = "EC: Suspend Button" Debug = "EC: Suspend Button"
Notify (SLPB, 0x80) Notify (SLPB, 0x80)
} }
Method (_Q16, 0, NotSerialized) // AC Detect Method (_Q16, 0, NotSerialized) // AC Detect
{ {
Debug = "EC: AC Detect" Debug = "EC: AC Detect"
^^^^AC.ACFG = ADP ^^^^AC.ACFG = ADP
Notify (AC, 0x80) // Status Change Notify (AC, 0x80) // Status Change
Sleep (0x01F4) Sleep (0x01F4)
If (BAT0) If (BAT0)
{ {
Notify (^^^^BAT0, 0x81) // Information Change Notify (^^^^BAT0, 0x81) // Information Change
Sleep (0x32) Sleep (0x32)
Notify (^^^^BAT0, 0x80) // Status Change Notify (^^^^BAT0, 0x80) // Status Change
Sleep (0x32) Sleep (0x32)
} }
} }
Method (_Q17, 0, NotSerialized) // BAT0 Update Method (_Q17, 0, NotSerialized) // BAT0 Update
{ {
Debug = "EC: BAT0 Update (17)" Debug = "EC: BAT0 Update (17)"
Notify (^^^^BAT0, 0x81) // Information Change Notify (^^^^BAT0, 0x81) // Information Change
} }
Method (_Q19, 0, NotSerialized) // BAT0 Update Method (_Q19, 0, NotSerialized) // BAT0 Update
{ {
Debug = "EC: BAT0 Update (19)" Debug = "EC: BAT0 Update (19)"
Notify (^^^^BAT0, 0x81) // Information Change Notify (^^^^BAT0, 0x81) // Information Change
} }
Method (_Q1B, 0, NotSerialized) // Lid Close Method (_Q1B, 0, NotSerialized) // Lid Close
{ {
Debug = "EC: Lid Close" Debug = "EC: Lid Close"
Notify (LID0, 0x80) Notify (LID0, 0x80)
} }
Method (_Q1C, 0, NotSerialized) // Thermal Trip Method (_Q1C, 0, NotSerialized) // Thermal Trip
{ {
Debug = "EC: Thermal Trip" Debug = "EC: Thermal Trip"
/* TODO /* TODO
Notify (\_TZ.TZ0, 0x81) // Thermal Trip Point Change Notify (\_TZ.TZ0, 0x81) // Thermal Trip Point Change
Notify (\_TZ.TZ0, 0x80) // Thermal Status Change Notify (\_TZ.TZ0, 0x80) // Thermal Status Change
*/ */
} }
Method (_Q1D, 0, NotSerialized) // Power Button Method (_Q1D, 0, NotSerialized) // Power Button
{ {
Debug = "EC: Power Button" Debug = "EC: Power Button"
Notify (PWRB, 0x80) Notify (PWRB, 0x80)
} }
Method (_Q50, 0, NotSerialized) // Other Events Method (_Q50, 0, NotSerialized) // Other Events
{ {
Local0 = OEM4 Local0 = OEM4
If (Local0 == 0x8A) { If (Local0 == 0x8A) {
Debug = "EC: White Keyboard Backlight" Debug = "EC: White Keyboard Backlight"
Notify (^^^^S76D, 0x80) Notify (^^^^S76D, 0x80)
} ElseIf (Local0 == 0x9F) { } ElseIf (Local0 == 0x9F) {
Debug = "EC: Color Keyboard Toggle" Debug = "EC: Color Keyboard Toggle"
Notify (^^^^S76D, 0x81) Notify (^^^^S76D, 0x81)
} ElseIf (Local0 == 0x81) { } ElseIf (Local0 == 0x81) {
Debug = "EC: Color Keyboard Down" Debug = "EC: Color Keyboard Down"
Notify (^^^^S76D, 0x82) Notify (^^^^S76D, 0x82)
} ElseIf (Local0 == 0x82) { } ElseIf (Local0 == 0x82) {
Debug = "EC: Color Keyboard Up" Debug = "EC: Color Keyboard Up"
Notify (^^^^S76D, 0x83) Notify (^^^^S76D, 0x83)
} ElseIf (Local0 == 0x80) { } ElseIf (Local0 == 0x80) {
Debug = "EC: Color Keyboard Color Change" Debug = "EC: Color Keyboard Color Change"
Notify (^^^^S76D, 0x84) Notify (^^^^S76D, 0x84)
} Else { } Else {
Debug = Concatenate("EC: Other: ", ToHexString(Local0)) Debug = Concatenate("EC: Other: ", ToHexString(Local0))
} }
} }
} }

View File

@ -1,185 +1,172 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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.
*/
OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF) OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
Field (ERAM, ByteAcc, Lock, Preserve) Field (ERAM, ByteAcc, Lock, Preserve)
{ {
NMSG, 8, NMSG, 8,
SLED, 4, SLED, 4,
Offset (0x02), Offset (0x02),
MODE, 1, MODE, 1,
FAN0, 1, FAN0, 1,
TME0, 1, TME0, 1,
TME1, 1, TME1, 1,
FAN1, 1, FAN1, 1,
, 2, , 2,
Offset (0x03), Offset (0x03),
LSTE, 1, LSTE, 1,
LSW0, 1, LSW0, 1,
LWKE, 1, LWKE, 1,
WAKF, 1, WAKF, 1,
, 2, , 2,
PWKE, 1, PWKE, 1,
MWKE, 1, MWKE, 1,
AC0, 8, AC0, 8,
PSV, 8, PSV, 8,
CRT, 8, CRT, 8,
TMP, 8, TMP, 8,
AC1, 8, AC1, 8,
BBST, 8, BBST, 8,
Offset (0x0B), Offset (0x0B),
Offset (0x0C), Offset (0x0C),
Offset (0x0D), Offset (0x0D),
Offset (0x0E), Offset (0x0E),
SLPT, 8, SLPT, 8,
SWEJ, 1, SWEJ, 1,
SWCH, 1, SWCH, 1,
Offset (0x10), Offset (0x10),
ADP, 1, ADP, 1,
AFLT, 1, AFLT, 1,
BAT0, 1, BAT0, 1,
BAT1, 1, BAT1, 1,
, 3, , 3,
PWOF, 1, PWOF, 1,
WFNO, 8, WFNO, 8,
BPU0, 32, BPU0, 32,
BDC0, 32, BDC0, 32,
BFC0, 32, BFC0, 32,
BTC0, 32, BTC0, 32,
BDV0, 32, BDV0, 32,
BST0, 32, BST0, 32,
BPR0, 32, BPR0, 32,
BRC0, 32, BRC0, 32,
BPV0, 32, BPV0, 32,
BTP0, 16, BTP0, 16,
BRS0, 16, BRS0, 16,
BCW0, 32, BCW0, 32,
BCL0, 32, BCL0, 32,
BCG0, 32, BCG0, 32,
BG20, 32, BG20, 32,
BMO0, 64, BMO0, 64,
BIF0, 64, BIF0, 64,
BSN0, 32, BSN0, 32,
BTY0, 64, BTY0, 64,
Offset (0x67), Offset (0x67),
Offset (0x68), Offset (0x68),
ECOS, 8, ECOS, 8,
LNXD, 8, LNXD, 8,
ECPS, 8, ECPS, 8,
Offset (0x6C), Offset (0x6C),
BTMP, 16, BTMP, 16,
EVTN, 8, EVTN, 8,
Offset (0x72), Offset (0x72),
PRCL, 8, PRCL, 8,
PRC0, 8, PRC0, 8,
PRC1, 8, PRC1, 8,
PRCM, 8, PRCM, 8,
PRIN, 8, PRIN, 8,
PSTE, 8, PSTE, 8,
PCAD, 8, PCAD, 8,
PEWL, 8, PEWL, 8,
PWRL, 8, PWRL, 8,
PECD, 8, PECD, 8,
PEHI, 8, PEHI, 8,
PECI, 8, PECI, 8,
PEPL, 8, PEPL, 8,
PEPM, 8, PEPM, 8,
PWFC, 8, PWFC, 8,
PECC, 8, PECC, 8,
PDT0, 8, PDT0, 8,
PDT1, 8, PDT1, 8,
PDT2, 8, PDT2, 8,
PDT3, 8, PDT3, 8,
PRFC, 8, PRFC, 8,
PRS0, 8, PRS0, 8,
PRS1, 8, PRS1, 8,
PRS2, 8, PRS2, 8,
PRS3, 8, PRS3, 8,
PRS4, 8, PRS4, 8,
PRCS, 8, PRCS, 8,
PEC0, 8, PEC0, 8,
PEC1, 8, PEC1, 8,
PEC2, 8, PEC2, 8,
PEC3, 8, PEC3, 8,
CMDR, 8, CMDR, 8,
CVRT, 8, CVRT, 8,
GTVR, 8, GTVR, 8,
FANT, 8, FANT, 8,
SKNT, 8, SKNT, 8,
AMBT, 8, AMBT, 8,
MCRT, 8, MCRT, 8,
DIM0, 8, DIM0, 8,
DIM1, 8, DIM1, 8,
PMAX, 8, PMAX, 8,
PPDT, 8, PPDT, 8,
PECH, 8, PECH, 8,
PMDT, 8, PMDT, 8,
TSD0, 8, TSD0, 8,
TSD1, 8, TSD1, 8,
TSD2, 8, TSD2, 8,
TSD3, 8, TSD3, 8,
CPUP, 16, CPUP, 16,
MCHP, 16, MCHP, 16,
SYSP, 16, SYSP, 16,
CPAP, 16, CPAP, 16,
MCAP, 16, MCAP, 16,
SYAP, 16, SYAP, 16,
CFSP, 16, CFSP, 16,
CPUE, 16, CPUE, 16,
Offset (0xC6), Offset (0xC6),
Offset (0xC7), Offset (0xC7),
VGAT, 8, VGAT, 8,
OEM1, 8, OEM1, 8,
OEM2, 8, OEM2, 8,
OEM3, 16, OEM3, 16,
OEM4, 8, OEM4, 8,
Offset (0xCE), Offset (0xCE),
DUT1, 8, DUT1, 8,
DUT2, 8, DUT2, 8,
RPM1, 16, RPM1, 16,
RPM2, 16, RPM2, 16,
RPM4, 16, RPM4, 16,
Offset (0xD7), Offset (0xD7),
DTHL, 8, DTHL, 8,
DTBP, 8, DTBP, 8,
AIRP, 8, AIRP, 8,
WINF, 8, WINF, 8,
RINF, 8, RINF, 8,
Offset (0xDD), Offset (0xDD),
INF2, 8, INF2, 8,
MUTE, 1, MUTE, 1,
Offset (0xE0), Offset (0xE0),
RPM3, 16, RPM3, 16,
ECKS, 8, ECKS, 8,
Offset (0xE4), Offset (0xE4),
, 4, , 4,
XTUF, 1, XTUF, 1,
EP12, 1, EP12, 1,
Offset (0xE5), Offset (0xE5),
INF3, 8, INF3, 8,
Offset (0xE7), Offset (0xE7),
GFOF, 8, GFOF, 8,
Offset (0xF0), Offset (0xF0),
PL1T, 16, PL1T, 16,
PL2T, 16, PL2T, 16,
TAUT, 8, TAUT, 8,
Offset (0xF8), Offset (0xF8),
FCMD, 8, FCMD, 8,
FDAT, 8, FDAT, 8,
FBUF, 8, FBUF, 8,
FBF1, 8, FBF1, 8,
FBF2, 8, FBF2, 8,
FBF3, 8 FBF3, 8
} }

View File

@ -1,24 +1,11 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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.
*/
// GPP_C19 SCI // GPP_C19 SCI
Method (_L13, 0, Serialized) { Method (_L13, 0, Serialized) {
Debug = Concatenate("GPE _L13: ", ToHexString(\_SB.PCI0.LPCB.EC0.WFNO)) Debug = Concatenate("GPE _L13: ", ToHexString(\_SB.PCI0.LPCB.EC0.WFNO))
If (\_SB.PCI0.LPCB.EC0.ECOK) { If (\_SB.PCI0.LPCB.EC0.ECOK) {
If (\_SB.PCI0.LPCB.EC0.WFNO == One) { If (\_SB.PCI0.LPCB.EC0.WFNO == One) {
Notify(\_SB.LID0, 0x80) Notify(\_SB.LID0, 0x80)
} }
} }
} }

View File

@ -1,63 +1,50 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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 (HIDD) Device (HIDD)
{ {
Name (_HID, "INT33D5") Name (_HID, "INT33D5")
Name (HBSY, Zero) Name (HBSY, Zero)
Name (HIDX, Zero) Name (HIDX, Zero)
Name (HRDY, Zero) Name (HRDY, Zero)
Method (HDEM, 0, Serialized) Method (HDEM, 0, Serialized)
{ {
HBSY = Zero HBSY = Zero
Return (HIDX) Return (HIDX)
} }
Method (HDMM, 0, Serialized) Method (HDMM, 0, Serialized)
{ {
Return (Zero) Return (Zero)
} }
Method (HDSM, 1, Serialized) Method (HDSM, 1, Serialized)
{ {
HRDY = Arg0 HRDY = Arg0
} }
Method (HPEM, 1, Serialized) Method (HPEM, 1, Serialized)
{ {
HBSY = One HBSY = One
HIDX = Arg0 HIDX = Arg0
Notify (HIDD, 0xC0) Notify (HIDD, 0xC0)
Local0 = Zero Local0 = Zero
While (((Local0 < 0xFA) && HBSY)) While (((Local0 < 0xFA) && HBSY))
{ {
Sleep (0x04) Sleep (0x04)
Local0++ Local0++
} }
If ((HBSY == One)) If ((HBSY == One))
{ {
HBSY = Zero HBSY = Zero
HIDX = Zero HIDX = Zero
Return (One) Return (One)
} }
Else Else
{ {
Return (Zero) Return (Zero)
} }
} }
} }

View File

@ -1,36 +1,23 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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 (LID0) Device (LID0)
{ {
Name (_HID, EisaId ("PNP0C0D")) Name (_HID, EisaId ("PNP0C0D"))
Name (_PRW, Package () { 0x13 /* GPP_C19 */, 3 }) Name (_PRW, Package () { 0x13 /* GPP_C19 */, 3 })
Method (_LID, 0, NotSerialized) { Method (_LID, 0, NotSerialized) {
DEBUG = "LID: _LID" DEBUG = "LID: _LID"
If (^^PCI0.LPCB.EC0.ECOK) { If (^^PCI0.LPCB.EC0.ECOK) {
Return (^^PCI0.LPCB.EC0.LSTE) Return (^^PCI0.LPCB.EC0.LSTE)
} Else { } Else {
Return (One) Return (One)
} }
} }
Method (_PSW, 1, NotSerialized) { Method (_PSW, 1, NotSerialized) {
DEBUG = Concatenate("LID: _PSW: ", ToHexString(Arg0)) DEBUG = Concatenate("LID: _PSW: ", ToHexString(Arg0))
If (^^PCI0.LPCB.EC0.ECOK) { If (^^PCI0.LPCB.EC0.ECOK) {
^^PCI0.LPCB.EC0.LWKE = Arg0 ^^PCI0.LPCB.EC0.LWKE = Arg0
} }
} }
} }

View File

@ -1,30 +1,15 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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.
*/
#define COLOR_KEYBOARD 0
Scope (\_SB) { Scope (\_SB) {
#include "ac.asl" #include "ac.asl"
#include "battery.asl" #include "battery.asl"
#include "buttons.asl" #include "buttons.asl"
#include "hid.asl" #include "hid.asl"
#include "lid.asl" #include "lid.asl"
#include "s76.asl" #include "s76.asl"
#include "sleep.asl" #include "sleep.asl"
} }
Scope (_GPE) { Scope (_GPE) {
#include "gpe.asl" #include "gpe.asl"
} }

View File

@ -1,17 +1,4 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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.
*/
// Notifications: // Notifications:
// 0x80 - hardware backlight toggle // 0x80 - hardware backlight toggle
@ -20,108 +7,78 @@
// 0x83 - backlight up // 0x83 - backlight up
// 0x84 - backlight color change // 0x84 - backlight color change
Device (S76D) { Device (S76D) {
Name (_HID, "17761776") Name (_HID, "17761776")
Name (_UID, 0) Name (_UID, 0)
Method (RSET, 0, Serialized) { Method (RSET, 0, Serialized) {
Debug = "S76D: RSET" Debug = "S76D: RSET"
SAPL(0) SAPL(0)
SKBL(0) SKBL(0)
#if COLOR_KEYBOARD }
SKBC(0xFFFFFF)
#endif
}
Method (INIT, 0, Serialized) { Method (INIT, 0, Serialized) {
Debug = "S76D: INIT" Debug = "S76D: INIT"
RSET() RSET()
If (^^PCI0.LPCB.EC0.ECOK) { If (^^PCI0.LPCB.EC0.ECOK) {
// Set flags to use software control // Set flags to use software control
^^PCI0.LPCB.EC0.ECOS = 2 ^^PCI0.LPCB.EC0.ECOS = 2
Return (0) Return (0)
} Else { } Else {
Return (1) Return (1)
} }
} }
Method (FINI, 0, Serialized) { Method (FINI, 0, Serialized) {
Debug = "S76D: FINI" Debug = "S76D: FINI"
RSET() RSET()
If (^^PCI0.LPCB.EC0.ECOK) { If (^^PCI0.LPCB.EC0.ECOK) {
// Set flags to use hardware control // Set flags to use hardware control
^^PCI0.LPCB.EC0.ECOS = 1 ^^PCI0.LPCB.EC0.ECOS = 1
Return (0) Return (0)
} Else { } Else {
Return (1) Return (1)
} }
} }
// Get Airplane LED // Get Airplane LED
Method (GAPL, 0, Serialized) { Method (GAPL, 0, Serialized) {
If (^^PCI0.LPCB.EC0.ECOK) { If (^^PCI0.LPCB.EC0.ECOK) {
If (^^PCI0.LPCB.EC0.AIRP & 0x40) { If (^^PCI0.LPCB.EC0.AIRP & 0x40) {
Return (1) Return (1)
} }
} }
Return (0) Return (0)
} }
// Set Airplane LED // Set Airplane LED
Method (SAPL, 1, Serialized) { Method (SAPL, 1, Serialized) {
If (^^PCI0.LPCB.EC0.ECOK) { If (^^PCI0.LPCB.EC0.ECOK) {
If (Arg0) { If (Arg0) {
^^PCI0.LPCB.EC0.AIRP |= 0x40 ^^PCI0.LPCB.EC0.AIRP |= 0x40
} Else { } Else {
^^PCI0.LPCB.EC0.AIRP &= 0xBF ^^PCI0.LPCB.EC0.AIRP &= 0xBF
} }
} }
} }
#if COLOR_KEYBOARD // Get KB LED
// Set KB LED Brightness Method (GKBL, 0, Serialized) {
Method (SKBL, 1, Serialized) { Local0 = 0
If (^^PCI0.LPCB.EC0.ECOK) { If (^^PCI0.LPCB.EC0.ECOK) {
^^PCI0.LPCB.EC0.FDAT = 6 ^^PCI0.LPCB.EC0.FDAT = One
^^PCI0.LPCB.EC0.FBUF = Arg0 ^^PCI0.LPCB.EC0.FCMD = 0xCA
^^PCI0.LPCB.EC0.FBF1 = 0 Local0 = ^^PCI0.LPCB.EC0.FBUF
^^PCI0.LPCB.EC0.FBF2 = Arg0 ^^PCI0.LPCB.EC0.FCMD = Zero
^^PCI0.LPCB.EC0.FCMD = 0xCA }
} Return (Local0)
} }
// Set Keyboard Color // Set KB Led
Method (SKBC, 1, Serialized) { Method (SKBL, 1, Serialized) {
If (^^PCI0.LPCB.EC0.ECOK) { If (^^PCI0.LPCB.EC0.ECOK) {
^^PCI0.LPCB.EC0.FDAT = 0x3 ^^PCI0.LPCB.EC0.FDAT = Zero
^^PCI0.LPCB.EC0.FBUF = (Arg0 & 0xFF) ^^PCI0.LPCB.EC0.FBUF = Arg0
^^PCI0.LPCB.EC0.FBF1 = ((Arg0 >> 16) & 0xFF) ^^PCI0.LPCB.EC0.FCMD = 0xCA
^^PCI0.LPCB.EC0.FBF2 = ((Arg0 >> 8) & 0xFF) }
^^PCI0.LPCB.EC0.FCMD = 0xCA }
Return (Arg0)
} Else {
Return (0)
}
}
#else
// 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
}
}
#endif
} }

View File

@ -1,17 +1,4 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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.
*/
/* Method called from _PTS prior to enter sleep state */ /* Method called from _PTS prior to enter sleep state */
Method (MPTS, 1) { Method (MPTS, 1) {

View File

@ -1,16 +0,0 @@
/*
* This file is part of the coreboot project.
*
* Copyright (C) 2016 Google Inc.
*
* 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.
*/
#include <drivers/pc80/pc/ps2_controller.asl>

View File

@ -1,22 +1,10 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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.
*/
#include <bootblock_common.h> #include <bootblock_common.h>
#include <gpio.h> #include <gpio.h>
#include "gpio.h" #include "gpio.h"
void bootblock_mainboard_init(void) { void bootblock_mainboard_init(void)
{
gpio_configure_pads(early_gpio_table, ARRAY_SIZE(early_gpio_table)); gpio_configure_pads(early_gpio_table, ARRAY_SIZE(early_gpio_table));
} }

View File

@ -1,250 +1,250 @@
chip soc/intel/skylake chip soc/intel/skylake
# Enable deep Sx states # Enable deep Sx states
register "deep_s3_enable_ac" = "0" register "deep_s3_enable_ac" = "0"
register "deep_s3_enable_dc" = "0" register "deep_s3_enable_dc" = "0"
register "deep_s5_enable_ac" = "0" register "deep_s5_enable_ac" = "0"
register "deep_s5_enable_dc" = "0" register "deep_s5_enable_dc" = "0"
register "deep_sx_config" = "DSX_EN_LAN_WAKE_PIN" register "deep_sx_config" = "DSX_EN_LAN_WAKE_PIN"
register "eist_enable" = "1" register "eist_enable" = "1"
# GPE configuration # GPE configuration
# Note that GPE events called out in ASL code rely on this # Note that GPE events called out in ASL code rely on this
# route. i.e. If this route changes then the affected GPE # route. i.e. If this route changes then the affected GPE
# offset bits also need to be changed. # offset bits also need to be changed.
register "gpe0_dw0" = "GPP_C" register "gpe0_dw0" = "GPP_C"
register "gpe0_dw1" = "GPP_D" register "gpe0_dw1" = "GPP_D"
register "gpe0_dw2" = "GPP_E" register "gpe0_dw2" = "GPP_E"
register "gen1_dec" = "0x000c0681" register "gen1_dec" = "0x000c0681"
register "gen2_dec" = "0x000c1641" register "gen2_dec" = "0x000c1641"
register "gen3_dec" = "0x000c0081" register "gen3_dec" = "0x000c0081"
register "gen4_dec" = "0x00040069" register "gen4_dec" = "0x00040069"
# Enable "Intel Speed Shift Technology" # Enable "Intel Speed Shift Technology"
register "speed_shift_enable" = "1" register "speed_shift_enable" = "1"
# Disable DPTF # Disable DPTF
register "dptf_enable" = "0" register "dptf_enable" = "0"
# FSP Configuration # FSP Configuration
register "ProbelessTrace" = "0" register "ProbelessTrace" = "0"
register "EnableLan" = "0" register "EnableLan" = "0"
register "EnableSata" = "1" register "EnableSata" = "1"
register "SataSalpSupport" = "0" register "SataSalpSupport" = "0"
register "SataMode" = "0" register "SataMode" = "0"
register "SataPortsEnable[0]" = "1" register "SataPortsEnable[0]" = "1"
register "SataPortsEnable[1]" = "0" register "SataPortsEnable[1]" = "0"
register "SataPortsEnable[2]" = "1" register "SataPortsEnable[2]" = "1"
register "SataPortsDevSlp[0]" = "0" register "SataPortsDevSlp[0]" = "0"
register "SataPortsDevSlp[2]" = "0" register "SataPortsDevSlp[2]" = "0"
register "SataSpeedLimit" = "2" register "SataSpeedLimit" = "2"
register "EnableAzalia" = "1" register "EnableAzalia" = "1"
register "DspEnable" = "0" register "DspEnable" = "0"
register "IoBufferOwnership" = "0" register "IoBufferOwnership" = "0"
register "EnableTraceHub" = "0" register "EnableTraceHub" = "0"
register "SsicPortEnable" = "0" register "SsicPortEnable" = "0"
register "SmbusEnable" = "1" register "SmbusEnable" = "1"
register "Cio2Enable" = "0" register "Cio2Enable" = "0"
register "ScsEmmcEnabled" = "0" register "ScsEmmcEnabled" = "0"
register "ScsEmmcHs400Enabled" = "0" register "ScsEmmcHs400Enabled" = "0"
register "ScsSdCardEnabled" = "0" register "ScsSdCardEnabled" = "0"
register "PttSwitch" = "0" register "PttSwitch" = "0"
register "SkipExtGfxScan" = "1" register "SkipExtGfxScan" = "1"
register "Device4Enable" = "1" register "Device4Enable" = "1"
register "HeciEnabled" = "1" register "HeciEnabled" = "1"
register "SaGv" = "3" register "SaGv" = "3"
register "serirq_mode" = "SERIRQ_CONTINUOUS" register "serirq_mode" = "SERIRQ_CONTINUOUS"
register "PmConfigSlpS3MinAssert" = "2" # 50ms register "PmConfigSlpS3MinAssert" = "2" # 50ms
register "PmConfigSlpS4MinAssert" = "1" # 1s register "PmConfigSlpS4MinAssert" = "1" # 1s
register "PmConfigSlpSusMinAssert" = "3" # 500ms register "PmConfigSlpSusMinAssert" = "3" # 500ms
register "PmConfigSlpAMinAssert" = "3" # 2s register "PmConfigSlpAMinAssert" = "3" # 2s
register "PmTimerDisabled" = "0" register "PmTimerDisabled" = "0"
register "pirqa_routing" = "PCH_IRQ11" register "pirqa_routing" = "PCH_IRQ11"
register "pirqb_routing" = "PCH_IRQ10" register "pirqb_routing" = "PCH_IRQ10"
register "pirqc_routing" = "PCH_IRQ11" register "pirqc_routing" = "PCH_IRQ11"
register "pirqd_routing" = "PCH_IRQ11" register "pirqd_routing" = "PCH_IRQ11"
register "pirqe_routing" = "PCH_IRQ11" register "pirqe_routing" = "PCH_IRQ11"
register "pirqf_routing" = "PCH_IRQ11" register "pirqf_routing" = "PCH_IRQ11"
register "pirqg_routing" = "PCH_IRQ11" register "pirqg_routing" = "PCH_IRQ11"
register "pirqh_routing" = "PCH_IRQ11" register "pirqh_routing" = "PCH_IRQ11"
# Root port #1 x4 (TBT) # Root port #1 x4 (TBT)
register "PcieRpEnable[0]" = "1" register "PcieRpEnable[0]" = "1"
register "PcieRpClkReqSupport[0]" = "1" register "PcieRpClkReqSupport[0]" = "1"
register "PcieRpClkReqNumber[0]" = "4" register "PcieRpClkReqNumber[0]" = "4"
register "PcieRpClkSrcNumber[0]" = "4" register "PcieRpClkSrcNumber[0]" = "4"
register "PcieRpAdvancedErrorReporting[0]" = "1" register "PcieRpAdvancedErrorReporting[0]" = "1"
register "PcieRpLtrEnable[0]" = "1" register "PcieRpLtrEnable[0]" = "1"
register "PcieRpHotPlug[0]" = "1" register "PcieRpHotPlug[0]" = "1"
# Root port #5 x1 (LAN) # Root port #5 x1 (LAN)
register "PcieRpEnable[4]" = "1" register "PcieRpEnable[4]" = "1"
register "PcieRpClkReqSupport[4]" = "1" register "PcieRpClkReqSupport[4]" = "1"
register "PcieRpClkReqNumber[4]" = "3" register "PcieRpClkReqNumber[4]" = "3"
register "PcieRpClkSrcNumber[4]" = "3" register "PcieRpClkSrcNumber[4]" = "3"
register "PcieRpAdvancedErrorReporting[4]" = "1" register "PcieRpAdvancedErrorReporting[4]" = "1"
register "PcieRpLtrEnable[4]" = "1" register "PcieRpLtrEnable[4]" = "1"
# Root port #6 x1 (WLAN) # Root port #6 x1 (WLAN)
register "PcieRpEnable[5]" = "1" register "PcieRpEnable[5]" = "1"
register "PcieRpClkReqSupport[5]" = "1" register "PcieRpClkReqSupport[5]" = "1"
register "PcieRpClkReqNumber[5]" = "2" register "PcieRpClkReqNumber[5]" = "2"
register "PcieRpClkSrcNumber[5]" = "2" register "PcieRpClkSrcNumber[5]" = "2"
register "PcieRpAdvancedErrorReporting[5]" = "1" register "PcieRpAdvancedErrorReporting[5]" = "1"
register "PcieRpLtrEnable[5]" = "1" register "PcieRpLtrEnable[5]" = "1"
# Root port #9 x4 (NVMe) # Root port #9 x4 (NVMe)
register "PcieRpEnable[8]" = "1" register "PcieRpEnable[8]" = "1"
register "PcieRpClkReqSupport[8]" = "1" register "PcieRpClkReqSupport[8]" = "1"
register "PcieRpClkReqNumber[8]" = "5" register "PcieRpClkReqNumber[8]" = "5"
register "PcieRpClkSrcNumber[8]" = "5" register "PcieRpClkSrcNumber[8]" = "5"
register "PcieRpAdvancedErrorReporting[8]" = "1" register "PcieRpAdvancedErrorReporting[8]" = "1"
register "PcieRpLtrEnable[8]" = "1" register "PcieRpLtrEnable[8]" = "1"
# Configure USB2 ports # Configure USB2 ports
register "usb2_ports[0]" = "USB2_PORT_MID(OC_SKIP)" # Type-A port right register "usb2_ports[0]" = "USB2_PORT_MID(OC_SKIP)" # Type-A port right
register "usb2_ports[1]" = "USB2_PORT_FLEX(OC_SKIP)" # 3G / LTE register "usb2_ports[1]" = "USB2_PORT_FLEX(OC_SKIP)" # 3G / LTE
register "usb2_ports[2]" = "USB2_PORT_TYPE_C(OC_SKIP)" # Type-C port right register "usb2_ports[2]" = "USB2_PORT_TYPE_C(OC_SKIP)" # Type-C port right
register "usb2_ports[3]" = "USB2_PORT_FLEX(OC_SKIP)" # Camera register "usb2_ports[3]" = "USB2_PORT_FLEX(OC_SKIP)" # Camera
register "usb2_ports[4]" = "USB2_PORT_FLEX(OC_SKIP)" # Bluetooth register "usb2_ports[4]" = "USB2_PORT_FLEX(OC_SKIP)" # Bluetooth
register "usb2_ports[5]" = "USB2_PORT_EMPTY" # NC register "usb2_ports[5]" = "USB2_PORT_EMPTY" # NC
register "usb2_ports[6]" = "USB2_PORT_FLEX(OC_SKIP)" # Type-A port left register "usb2_ports[6]" = "USB2_PORT_FLEX(OC_SKIP)" # Type-A port left
register "usb2_ports[7]" = "USB2_PORT_TYPE_C(OC_SKIP)" # Type-C port right register "usb2_ports[7]" = "USB2_PORT_TYPE_C(OC_SKIP)" # Type-C port right
register "usb2_ports[8]" = "USB2_PORT_EMPTY" # NC register "usb2_ports[8]" = "USB2_PORT_EMPTY" # NC
register "usb2_ports[9]" = "USB2_PORT_EMPTY" # NC register "usb2_ports[9]" = "USB2_PORT_EMPTY" # NC
# Configure USB3 ports # Configure USB3 ports
register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type-A port right register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type-A port right
register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC_SKIP)" # 4G register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC_SKIP)" # 4G
register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type C port right register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type C port right
register "usb3_ports[3]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type-A port left register "usb3_ports[3]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type-A port left
# PL2 override 44W # PL2 override 44W
register "tdp_pl2_override" = "40" register "tdp_pl2_override" = "40"
# Send an extra VR mailbox command for the PS4 exit issue # Send an extra VR mailbox command for the PS4 exit issue
register "SendVrMbxCmd" = "2" register "SendVrMbxCmd" = "2"
# Lock Down # Lock Down
register "common_soc_config" = "{ register "common_soc_config" = "{
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT, .chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
}" }"
device cpu_cluster 0 on device cpu_cluster 0 on
device lapic 0 on end device lapic 0 on end
end end
# VR Settings Configuration for 4 Domains # VR Settings Configuration for 4 Domains
#+----------------+-----------+-----------+-------------+----------+ #+----------------+-----------+-----------+-------------+----------+
#| Domain/Setting | SA | IA | GT Unsliced | GT | #| Domain/Setting | SA | IA | GT Unsliced | GT |
#+----------------+-----------+-----------+-------------+----------+ #+----------------+-----------+-----------+-------------+----------+
#| Psi1Threshold | 20A | 20A | 20A | 20A | #| Psi1Threshold | 20A | 20A | 20A | 20A |
#| Psi2Threshold | 4A | 5A | 5A | 5A | #| Psi2Threshold | 4A | 5A | 5A | 5A |
#| Psi3Threshold | 1A | 1A | 1A | 1A | #| Psi3Threshold | 1A | 1A | 1A | 1A |
#| Psi3Enable | 1 | 1 | 1 | 1 | #| Psi3Enable | 1 | 1 | 1 | 1 |
#| Psi4Enable | 1 | 1 | 1 | 1 | #| Psi4Enable | 1 | 1 | 1 | 1 |
#| ImonSlope | 0 | 0 | 0 | 0 | #| ImonSlope | 0 | 0 | 0 | 0 |
#| ImonOffset | 0 | 0 | 0 | 0 | #| ImonOffset | 0 | 0 | 0 | 0 |
#| IccMax | 5A | 64A | 31A | 31A | #| IccMax | 5A | 64A | 31A | 31A |
#| VrVoltageLimit | 1.52V | 1.52V | 1.52V | 1.52V | #| VrVoltageLimit | 1.52V | 1.52V | 1.52V | 1.52V |
#+----------------+-----------+-----------+-------------+----------+ #+----------------+-----------+-----------+-------------+----------+
register "domain_vr_config[VR_SYSTEM_AGENT]" = "{ register "domain_vr_config[VR_SYSTEM_AGENT]" = "{
.vr_config_enable = 1, .vr_config_enable = 1,
.psi1threshold = VR_CFG_AMP(20), .psi1threshold = VR_CFG_AMP(20),
.psi2threshold = VR_CFG_AMP(4), .psi2threshold = VR_CFG_AMP(4),
.psi3threshold = VR_CFG_AMP(1), .psi3threshold = VR_CFG_AMP(1),
.psi3enable = 0, .psi3enable = 0,
.psi4enable = 0, .psi4enable = 0,
.imon_slope = 0x0, .imon_slope = 0x0,
.imon_offset = 0x0, .imon_offset = 0x0,
.icc_max = VR_CFG_AMP(5), .icc_max = VR_CFG_AMP(5),
.voltage_limit = 1520, .voltage_limit = 1520,
.ac_loadline = 1030, .ac_loadline = 1030,
.dc_loadline = 1030, .dc_loadline = 1030,
}" }"
register "domain_vr_config[VR_IA_CORE]" = "{ register "domain_vr_config[VR_IA_CORE]" = "{
.vr_config_enable = 1, .vr_config_enable = 1,
.psi1threshold = VR_CFG_AMP(20), .psi1threshold = VR_CFG_AMP(20),
.psi2threshold = VR_CFG_AMP(5), .psi2threshold = VR_CFG_AMP(5),
.psi3threshold = VR_CFG_AMP(1), .psi3threshold = VR_CFG_AMP(1),
.psi3enable = 0, .psi3enable = 0,
.psi4enable = 0, .psi4enable = 0,
.imon_slope = 0x0, .imon_slope = 0x0,
.imon_offset = 0x0, .imon_offset = 0x0,
.icc_max = VR_CFG_AMP(64), .icc_max = VR_CFG_AMP(64),
.voltage_limit = 1520, .voltage_limit = 1520,
.ac_loadline = 240, .ac_loadline = 240,
.dc_loadline = 240, .dc_loadline = 240,
}" }"
register "domain_vr_config[VR_GT_UNSLICED]" = "{ register "domain_vr_config[VR_GT_UNSLICED]" = "{
.vr_config_enable = 1, .vr_config_enable = 1,
.psi1threshold = VR_CFG_AMP(20), .psi1threshold = VR_CFG_AMP(20),
.psi2threshold = VR_CFG_AMP(5), .psi2threshold = VR_CFG_AMP(5),
.psi3threshold = VR_CFG_AMP(1), .psi3threshold = VR_CFG_AMP(1),
.psi3enable = 0, .psi3enable = 0,
.psi4enable = 0, .psi4enable = 0,
.imon_slope = 0x0, .imon_slope = 0x0,
.imon_offset = 0x0, .imon_offset = 0x0,
.icc_max = VR_CFG_AMP(31), .icc_max = VR_CFG_AMP(31),
.voltage_limit = 1520, .voltage_limit = 1520,
.ac_loadline = 310, .ac_loadline = 310,
.dc_loadline = 310, .dc_loadline = 310,
}" }"
register "domain_vr_config[VR_GT_SLICED]" = "{ register "domain_vr_config[VR_GT_SLICED]" = "{
.vr_config_enable = 1, .vr_config_enable = 1,
.psi1threshold = VR_CFG_AMP(20), .psi1threshold = VR_CFG_AMP(20),
.psi2threshold = VR_CFG_AMP(5), .psi2threshold = VR_CFG_AMP(5),
.psi3threshold = VR_CFG_AMP(1), .psi3threshold = VR_CFG_AMP(1),
.psi3enable = 0, .psi3enable = 0,
.psi4enable = 0, .psi4enable = 0,
.imon_slope = 0x0, .imon_slope = 0x0,
.imon_offset = 0x0, .imon_offset = 0x0,
.icc_max = VR_CFG_AMP(31), .icc_max = VR_CFG_AMP(31),
.voltage_limit = 1520, .voltage_limit = 1520,
.ac_loadline = 310, .ac_loadline = 310,
.dc_loadline = 310, .dc_loadline = 310,
}" }"
device domain 0 on device domain 0 on
device pci 00.0 on end # Host Bridge device pci 00.0 on end # Host Bridge
device pci 02.0 on end # Integrated Graphics Device device pci 02.0 on end # Integrated Graphics Device
device pci 14.0 on end # USB xHCI device pci 14.0 on end # USB xHCI
device pci 14.1 off end # USB xDCI (OTG) device pci 14.1 off end # USB xDCI (OTG)
device pci 14.2 on end # Thermal Subsystem device pci 14.2 on end # Thermal Subsystem
device pci 16.0 off end # Management Engine Interface 1 device pci 16.0 off end # Management Engine Interface 1
device pci 16.1 off end # Management Engine Interface 2 device pci 16.1 off end # Management Engine Interface 2
device pci 16.2 off end # Management Engine IDE-R device pci 16.2 off end # Management Engine IDE-R
device pci 16.3 off end # Management Engine KT Redirection device pci 16.3 off end # Management Engine KT Redirection
device pci 16.4 off end # Management Engine Interface 3 device pci 16.4 off end # Management Engine Interface 3
device pci 17.0 on end # SATA device pci 17.0 on end # SATA
device pci 1c.0 on end # PCI Express Port 1 device pci 1c.0 on end # PCI Express Port 1
device pci 1c.1 off end # PCI Express Port 2 device pci 1c.1 off end # PCI Express Port 2
device pci 1c.2 off end # PCI Express Port 3 device pci 1c.2 off end # PCI Express Port 3
device pci 1c.3 off end # PCI Express Port 4 device pci 1c.3 off end # PCI Express Port 4
device pci 1c.4 on end # PCI Express Port 5 device pci 1c.4 on end # PCI Express Port 5
device pci 1c.5 on end # PCI Express Port 6 device pci 1c.5 on end # PCI Express Port 6
device pci 1c.6 off end # PCI Express Port 7 device pci 1c.6 off end # PCI Express Port 7
device pci 1c.7 off end # PCI Express Port 8 device pci 1c.7 off end # PCI Express Port 8
device pci 1d.0 on end # PCI Express Port 9 device pci 1d.0 on end # PCI Express Port 9
device pci 1d.1 off end # PCI Express Port 10 device pci 1d.1 off end # PCI Express Port 10
device pci 1d.2 off end # PCI Express Port 11 device pci 1d.2 off end # PCI Express Port 11
device pci 1d.3 off end # PCI Express Port 12 device pci 1d.3 off end # PCI Express Port 12
device pci 1f.0 on device pci 1f.0 on
chip drivers/pc80/tpm chip drivers/pc80/tpm
device pnp 0c31.0 on end device pnp 0c31.0 on end
end end
end # LPC Interface end # LPC Interface
device pci 1f.1 off end # P2SB device pci 1f.1 off end # P2SB
device pci 1f.2 on end # Power Management Controller device pci 1f.2 on end # Power Management Controller
device pci 1f.3 on end # Intel HDA device pci 1f.3 on end # Intel HDA
device pci 1f.4 on end # SMBus device pci 1f.4 on end # SMBus
device pci 1f.5 on end # PCH SPI device pci 1f.5 on end # PCH SPI
device pci 1f.6 off end # GbE device pci 1f.6 off end # GbE
end end
end end

View File

@ -1,19 +1,4 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* This file is part of the coreboot project.
*
* Copyright (C) 2007-2009 coresystems GmbH
* Copyright (C) 2015 Google Inc.
* Copyright (C) 2015 Intel Corporation
*
* 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.
*/
#include <acpi/acpi.h> #include <acpi/acpi.h>
DefinitionBlock( DefinitionBlock(

View File

@ -1,17 +1,4 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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.
*/
#ifndef MAINBOARD_GPIO_H #ifndef MAINBOARD_GPIO_H
#define MAINBOARD_GPIO_H #define MAINBOARD_GPIO_H

View File

@ -1,17 +1,4 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* 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.
*/
#include <console/console.h> #include <console/console.h>
#include <device/device.h> #include <device/device.h>

View File

@ -1,17 +1,4 @@
/* /* SPDX-License-Identifier: GPL-2.0-only */
* This file is part of the coreboot project.
*
* Copyright (C) 2009 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.
*/
#include <string.h> #include <string.h>
#include <assert.h> #include <assert.h>