Compare commits
19 Commits
system76
...
wip/nvidia
Author | SHA1 | Date | |
---|---|---|---|
|
2d743165e7 | ||
|
75468a84c0 | ||
|
865292a883 | ||
|
87aaef8d1a | ||
|
182adc61a2 | ||
|
1b49402e33 | ||
|
8138513b35 | ||
|
ba0100f010 | ||
|
72cd47f9ba | ||
|
8b8a831699 | ||
|
fb352b86fc | ||
|
084e54522a | ||
|
8d28bd2c9f | ||
|
9747417290 | ||
|
2a0ab9f8cf | ||
|
5ff2a1548f | ||
|
ad3eee8f83 | ||
|
90176c56f4 | ||
|
cb8a72cace |
32
.gitmodules
vendored
32
.gitmodules
vendored
@ -1,62 +1,62 @@
|
||||
[submodule "3rdparty/blobs"]
|
||||
path = 3rdparty/blobs
|
||||
url = ../blobs.git
|
||||
url = https://review.coreboot.org/blobs.git
|
||||
update = none
|
||||
ignore = dirty
|
||||
[submodule "util/nvidia-cbootimage"]
|
||||
path = util/nvidia/cbootimage
|
||||
url = ../nvidia-cbootimage.git
|
||||
url = https://review.coreboot.org/nvidia-cbootimage.git
|
||||
[submodule "vboot"]
|
||||
path = 3rdparty/vboot
|
||||
url = ../vboot.git
|
||||
url = https://review.coreboot.org/vboot.git
|
||||
branch = main
|
||||
[submodule "arm-trusted-firmware"]
|
||||
path = 3rdparty/arm-trusted-firmware
|
||||
url = ../arm-trusted-firmware.git
|
||||
url = https://review.coreboot.org/arm-trusted-firmware.git
|
||||
[submodule "3rdparty/chromeec"]
|
||||
path = 3rdparty/chromeec
|
||||
url = ../chrome-ec.git
|
||||
url = https://review.coreboot.org/chrome-ec.git
|
||||
[submodule "libhwbase"]
|
||||
path = 3rdparty/libhwbase
|
||||
url = ../libhwbase.git
|
||||
url = https://review.coreboot.org/libhwbase.git
|
||||
[submodule "libgfxinit"]
|
||||
path = 3rdparty/libgfxinit
|
||||
url = ../libgfxinit.git
|
||||
url = https://review.coreboot.org/libgfxinit.git
|
||||
[submodule "3rdparty/fsp"]
|
||||
path = 3rdparty/fsp
|
||||
url = ../fsp.git
|
||||
url = https://review.coreboot.org/fsp.git
|
||||
update = none
|
||||
ignore = dirty
|
||||
[submodule "opensbi"]
|
||||
path = 3rdparty/opensbi
|
||||
url = ../opensbi.git
|
||||
url = https://review.coreboot.org/opensbi.git
|
||||
[submodule "intel-microcode"]
|
||||
path = 3rdparty/intel-microcode
|
||||
url = ../intel-microcode.git
|
||||
url = https://review.coreboot.org/intel-microcode.git
|
||||
update = none
|
||||
ignore = dirty
|
||||
branch = main
|
||||
[submodule "3rdparty/ffs"]
|
||||
path = 3rdparty/ffs
|
||||
url = ../ffs.git
|
||||
url = https://review.coreboot.org/ffs.git
|
||||
[submodule "3rdparty/amd_blobs"]
|
||||
path = 3rdparty/amd_blobs
|
||||
url = ../amd_blobs
|
||||
url = https://review.coreboot.org/amd_blobs
|
||||
update = none
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/cmocka"]
|
||||
path = 3rdparty/cmocka
|
||||
url = ../cmocka.git
|
||||
url = https://review.coreboot.org/cmocka.git
|
||||
update = none
|
||||
[submodule "3rdparty/qc_blobs"]
|
||||
path = 3rdparty/qc_blobs
|
||||
url = ../qc_blobs.git
|
||||
url = https://review.coreboot.org/qc_blobs.git
|
||||
update = none
|
||||
ignore = dirty
|
||||
[submodule "3rdparty/intel-sec-tools"]
|
||||
path = 3rdparty/intel-sec-tools
|
||||
url = ../9esec-security-tooling.git
|
||||
url = https://review.coreboot.org/9esec-security-tooling.git
|
||||
[submodule "3rdparty/stm"]
|
||||
path = 3rdparty/stm
|
||||
url = ../STM
|
||||
url = https://review.coreboot.org/STM
|
||||
branch = stmpe
|
||||
|
10
src/drivers/gfx/nvidia/Kconfig
Normal file
10
src/drivers/gfx/nvidia/Kconfig
Normal file
@ -0,0 +1,10 @@
|
||||
config DRIVERS_GFX_NVIDIA
|
||||
bool
|
||||
default n
|
||||
help
|
||||
Support for NVIDIA Optimus with GC6 3.0
|
||||
|
||||
config DRIVERS_GFX_NVIDIA_BRIDGE
|
||||
hex "PCI bridge for the GPU device"
|
||||
default 0x01
|
||||
depends on DRIVERS_GFX_NVIDIA
|
5
src/drivers/gfx/nvidia/Makefile.inc
Normal file
5
src/drivers/gfx/nvidia/Makefile.inc
Normal file
@ -0,0 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
romstage-$(CONFIG_DRIVERS_GFX_NVIDIA) += romstage.c
|
||||
|
||||
ramstage-$(CONFIG_DRIVERS_GFX_NVIDIA) += nvidia.c
|
37
src/drivers/gfx/nvidia/acpi/advanced_optimus.asl
Normal file
37
src/drivers/gfx/nvidia/acpi/advanced_optimus.asl
Normal file
@ -0,0 +1,37 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
// NVIDIA Advanced Optimus
|
||||
|
||||
#define NVOP_FUNC_SUPPORT 0
|
||||
#define NVOP_FUNC_DISPLAYSTATUS 5
|
||||
#define NVOP_FUNC_MDTL 6
|
||||
#define NVOP_FUNC_GETOBJBYTYPE 16
|
||||
#define NVOP_FUNC_GETALLOBJS 17
|
||||
#define NVOP_FUNC_OPTIMUSCAPS 26
|
||||
#define NVOP_FUNC_OPTIMUSFLAGS 27
|
||||
|
||||
Method (NVOP, 2, Serialized)
|
||||
{
|
||||
Printf("NVOP {")
|
||||
Local0 = NVIDIA_ERROR_UNSUPPORTED
|
||||
|
||||
Switch (ToInteger(Arg0)) {
|
||||
Case (NVOP_FUNC_SUPPORT) {
|
||||
}
|
||||
|
||||
Case (NVOP_FUNC_OPTIMUSCAPS) {
|
||||
CreateField (Arg1, 0, 1, FLGS) // Flag updates
|
||||
CreateField (Arg1, 1, 1, PCOT) // PCIe Configuration Space Owner Target
|
||||
CreateField (Arg1, 2, 1, PCOW) // PCIe Configuration Space Owner Write
|
||||
CreateField (Arg1, 24, 2, OPCE) // Optimus Power Control Enable
|
||||
}
|
||||
|
||||
Default {
|
||||
Printf(" Unsupported NVOP_FUNC: %o", ToInteger(Arg0))
|
||||
Local0 = NVIDIA_ERROR_UNSUPPORTED
|
||||
}
|
||||
}
|
||||
|
||||
Printf("} NVOP")
|
||||
Return(Local0)
|
||||
}
|
83
src/drivers/gfx/nvidia/acpi/boost.asl
Normal file
83
src/drivers/gfx/nvidia/acpi/boost.asl
Normal file
@ -0,0 +1,83 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
// NVIDIA GPU Boost for Notebook and All-In-One-Projects
|
||||
|
||||
#define GPS_FUNC_SUPPORT 0
|
||||
#define GPS_FUNC_GETOBJBYTYPE 16
|
||||
#define GPS_FUNC_GETALLOBJS 17
|
||||
#define GPS_FUNC_GETCALLBACKS 19
|
||||
#define GPS_FUNC_PCONTROL 28
|
||||
#define GPS_FUNC_PSHARESTATUS 32
|
||||
#define GPS_FUNC_PSHAREPARAMS 42
|
||||
|
||||
Method (GPS, 2, Serialized)
|
||||
{
|
||||
Printf("GPS {")
|
||||
|
||||
Switch (ToInteger(Arg0)) {
|
||||
// Bit list of supported functions
|
||||
Case (GPS_FUNC_SUPPORT) {
|
||||
Printf(" GPS_FUNC_SUPPORT")
|
||||
// Functions supported: 0, 32, 42
|
||||
Local0 = Buffer () {0x01, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00}
|
||||
}
|
||||
|
||||
// Get current platform status, thermal budget
|
||||
Case (GPS_FUNC_PSHARESTATUS) {
|
||||
Printf(" GPS_FUNC_PSHARESTATUS: %o", ToHexString(Arg1))
|
||||
Local0 = Buffer (4) { 0 }
|
||||
}
|
||||
|
||||
// Get GPU Boost platform parameters
|
||||
Case (GPS_FUNC_PSHAREPARAMS) {
|
||||
Printf(" GPS_FUNC_PSHAREPARAMS: %o", ToHexString(Arg1))
|
||||
CreateField (Arg1, 0, 3, QTYP) // Query Type
|
||||
CreateField (Arg1, 8, 1, GTMP) // GPU temperature status
|
||||
CreateField (Arg1, 9, 1, CTMP) // CPU temperature status
|
||||
|
||||
Local0 = Buffer (36) { 0 }
|
||||
CreateDWordField (Local0, 0, STAT) // Status
|
||||
CreateDWordField (Local0, 4, VERS) // Version
|
||||
CreateDWordField (Local0, 8, TGPU) // GPU temperature (C)
|
||||
CreateDWordField (Local0, 12, PDTS) // CPU package temperature (C)
|
||||
|
||||
VERS = 0x00010000
|
||||
STAT = QTYP
|
||||
|
||||
Printf(" Query Type = %o", ToInteger(QTYP))
|
||||
|
||||
Switch (ToInteger(QTYP)) {
|
||||
// Get current status
|
||||
Case (0) {
|
||||
// TGPU must be 0.
|
||||
}
|
||||
|
||||
// Get supported fields
|
||||
Case (1) {
|
||||
STAT |= 0x100
|
||||
// TGPU must be 0.
|
||||
}
|
||||
|
||||
// Get current operating limits
|
||||
Case (2) {
|
||||
// GPU temperature status must be 1.
|
||||
STAT |= 0x100
|
||||
// TGPU should be 0. GPU will use its own default.
|
||||
}
|
||||
|
||||
Default {
|
||||
Printf(" Unsupported Query Type: %o", ToInteger(QTYP))
|
||||
Local0 = NVIDIA_ERROR_UNSUPPORTED
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Default {
|
||||
Printf(" Unsupported GPS_FUNC: %o", ToInteger(Arg0))
|
||||
Local0 = NVIDIA_ERROR_UNSUPPORTED
|
||||
}
|
||||
}
|
||||
|
||||
Printf("} GPS")
|
||||
Return(Local0)
|
||||
}
|
197
src/drivers/gfx/nvidia/acpi/gpu.asl
Normal file
197
src/drivers/gfx/nvidia/acpi/gpu.asl
Normal file
@ -0,0 +1,197 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#define NVIDIA_ERROR_UNSPECIFIED 0x80000001
|
||||
#define NVIDIA_ERROR_UNSUPPORTED 0x80000002
|
||||
|
||||
#define NBCI_DSM_GUID "D4A50B75-65C7-46F7-BFB7-41514CEA0244"
|
||||
#define NBCI_REVISION_ID 0x102
|
||||
|
||||
#define GPS_DSM_GUID "A3132D01-8CDA-49BA-A52E-BC9D46DF6B81"
|
||||
#define GPS_REVISION_ID 0x200
|
||||
|
||||
#define JT_DSM_GUID "CBECA351-067B-4924-9CBD-B46B00B86F34"
|
||||
#define JT_REVISION_ID 0x103
|
||||
|
||||
#define NVOP_DSM_GUID "A486D8F8-0BDA-471B-A72B-6042A6B5BEE0"
|
||||
#define NVOP_REVISION_ID 0x100
|
||||
|
||||
// 00:01.0
|
||||
Device (\_SB.PCI0.PEG0)
|
||||
{
|
||||
Name (_ADR, CONFIG_DRIVERS_GFX_NVIDIA_BRIDGE << 16)
|
||||
|
||||
PowerResource (PWRR, 0, 0) {
|
||||
Name (_STA, 1)
|
||||
|
||||
Method (_ON)
|
||||
{
|
||||
Printf("PEG0._ON {")
|
||||
// TODO: Check for deferred GCx action
|
||||
\_SB.PCI0.PEG0.DGPU._ON()
|
||||
_STA = 1
|
||||
Printf("} PEG0._ON")
|
||||
}
|
||||
|
||||
Method (_OFF)
|
||||
{
|
||||
Printf("PEG0._OFF {")
|
||||
// TODO: Check for deferred GCx action
|
||||
\_SB.PCI0.PEG0.DGPU._OFF()
|
||||
_STA = 0
|
||||
Printf("} PEG0._OFF")
|
||||
}
|
||||
}
|
||||
|
||||
Name (_PR0, Package () { PWRR })
|
||||
Name (_PR2, Package () { PWRR })
|
||||
Name (_PR3, Package () { PWRR })
|
||||
}
|
||||
|
||||
// 01:00.0
|
||||
Device (\_SB.PCI0.PEG0.DGPU)
|
||||
{
|
||||
Name(_ADR, 0x00000000)
|
||||
|
||||
Name (GPWR, 0) // GPU Power
|
||||
Name (GCST, 6) // GCx State
|
||||
|
||||
Name (DPC, 0) // Deferred power control
|
||||
Name (DPCX, 0) // Deferred power control on exit
|
||||
|
||||
|
||||
Name (NVID, 0x00000000)
|
||||
|
||||
OperationRegion (PCIM, SystemMemory, 0x0E010000, 0xF0)
|
||||
Field (PCIM, AnyAcc, Lock, Preserve)
|
||||
{
|
||||
Offset(0x2c),
|
||||
SSID, 32,
|
||||
}
|
||||
|
||||
// For supporting Hybrid Graphics, the package refers to the PCIe controller
|
||||
// itself, which leverages GC6 Control methods under the dGPU namespace.
|
||||
Name (_PR0, Package() { \_SB.PCI0.PEG0 })
|
||||
Name (_PR3, Package() { \_SB.PCI0.PEG0 })
|
||||
|
||||
Method (_STA)
|
||||
{
|
||||
Printf("DGPU._STA")
|
||||
/*
|
||||
* Only return "On" when:
|
||||
* - GPU power is good
|
||||
* - GPU has completed return to GC0
|
||||
*
|
||||
* In all other cases, return "Off".
|
||||
*/
|
||||
If ((GPWR == 1) && (GCST == 0)) {
|
||||
Return (0xF)
|
||||
} Else {
|
||||
Return (0)
|
||||
}
|
||||
}
|
||||
|
||||
Method (_ON)
|
||||
{
|
||||
Printf("DGPU._ON {")
|
||||
Printf(" Enable GPU power")
|
||||
STXS(DGPU_PWR_EN)
|
||||
Sleep(10)
|
||||
|
||||
Printf(" Take GPU out of reset")
|
||||
STXS(DGPU_RST_N)
|
||||
Sleep(10)
|
||||
|
||||
GPWR = 1
|
||||
GCST = 0
|
||||
|
||||
/*
|
||||
// TODO: Actually check link status
|
||||
Printf("Wait for PCIe link")
|
||||
Sleep(100)
|
||||
|
||||
Printf("Restore SSID: %o", NVID)
|
||||
SSID = NVID
|
||||
*/
|
||||
|
||||
Printf("} DGPU._ON")
|
||||
}
|
||||
|
||||
Method (_OFF)
|
||||
{
|
||||
Printf("DGPU._OFF {")
|
||||
|
||||
/*
|
||||
Printf("Save SSID: %o", SSID)
|
||||
NVID = SSID
|
||||
|
||||
// TODO: Actually check link status
|
||||
Printf("Wait for PCIe link")
|
||||
Sleep(100)
|
||||
*/
|
||||
|
||||
Printf("DGPU._OFF {")
|
||||
Printf(" Put GPU in reset")
|
||||
CTXS(DGPU_RST_N)
|
||||
Sleep(10)
|
||||
|
||||
Printf(" Disable GPU power")
|
||||
CTXS(DGPU_PWR_EN)
|
||||
|
||||
GPWR = 0
|
||||
GCST = 6
|
||||
Printf("} DGPU._OFF")
|
||||
}
|
||||
|
||||
Method (_PS0)
|
||||
{
|
||||
// XGXS, XGIS, XCLM
|
||||
Printf("_PS0 {}")
|
||||
}
|
||||
|
||||
Method (_PS3)
|
||||
{
|
||||
// EGNS, EGIS, EGIN
|
||||
Printf("_PS3 {}")
|
||||
}
|
||||
|
||||
Method (_DSM, 4, Serialized)
|
||||
{
|
||||
// Notebook Common Interface
|
||||
If (Arg0 == ToUUID(NBCI_DSM_GUID)) {
|
||||
Printf("NBCI_DSM_GUID")
|
||||
If (Arg1 <= NBCI_REVISION_ID) {
|
||||
Printf(" TODO: Unimplemented!")
|
||||
}
|
||||
}
|
||||
|
||||
// NVIDIA GPU Boost
|
||||
If (Arg0 == ToUUID(GPS_DSM_GUID)) {
|
||||
Printf("GPS_DSM_GUID")
|
||||
If (Arg1 <= GPS_REVISION_ID) {
|
||||
Return(GPS(Arg2, Arg3))
|
||||
}
|
||||
}
|
||||
|
||||
// NVIDIA Low Power States
|
||||
If (Arg0 == ToUUID(JT_DSM_GUID)) {
|
||||
Printf("JT_DSM_GUID")
|
||||
If (Arg1 <= JT_REVISION_ID) {
|
||||
Return(NVJT(Arg2, Arg3))
|
||||
}
|
||||
}
|
||||
|
||||
// Advanced Optimus
|
||||
If (Arg0 == ToUUID(NVOP_DSM_GUID)) {
|
||||
Printf("NVOP_DSM_GUID")
|
||||
If (Arg1 <= NVOP_REVISION_ID) {
|
||||
Printf(" TODO: Unimplemented!")
|
||||
}
|
||||
}
|
||||
|
||||
Printf("Unsupported GUID: %o", ToHexString(Arg0))
|
||||
Return(NVIDIA_ERROR_UNSUPPORTED)
|
||||
}
|
||||
|
||||
#include "boost.asl"
|
||||
#include "low_power_states.asl"
|
||||
}
|
169
src/drivers/gfx/nvidia/acpi/low_power_states.asl
Normal file
169
src/drivers/gfx/nvidia/acpi/low_power_states.asl
Normal file
@ -0,0 +1,169 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
// NVIDIA Low Power States
|
||||
|
||||
#define JT_FUNC_SUPPORT 0
|
||||
#define JT_FUNC_CAPS 1
|
||||
#define JT_FUNC_POWERCONTROL 3
|
||||
#define JT_FUNC_PLATPOLICY 4
|
||||
|
||||
Method (NVJT, 2, Serialized)
|
||||
{
|
||||
Printf("NVJT {")
|
||||
|
||||
Switch (ToInteger(Arg0)) {
|
||||
Case (JT_FUNC_SUPPORT) {
|
||||
Printf(" JT_FUNC_SUPPORT");
|
||||
// Functions supported: 0, 1, 3, 4
|
||||
//Local0 = Buffer() { 0x1B, 0, 0, 0 }
|
||||
Local0 = Buffer() { 0x13, 0, 0, 0 }
|
||||
}
|
||||
|
||||
Case (JT_FUNC_CAPS) {
|
||||
Printf(" JT_FUNC_CAPS");
|
||||
Local0 = Buffer(4) { 0 }
|
||||
|
||||
// G-SYNC NVSR Power Features
|
||||
CreateField (Local0, 0, 1, JTEN)
|
||||
JTEN = 0
|
||||
|
||||
// NVSR
|
||||
CreateField (Local0, 1, 2, NVSE)
|
||||
NVSE = 1
|
||||
|
||||
// Panel Power Rail
|
||||
CreateField (Local0, 3, 2, PPR)
|
||||
PPR = 2
|
||||
|
||||
// Self-Refresh Control (SRC) Power Rail
|
||||
CreateField (Local0, 5, 1, SRPR)
|
||||
SRPR = 0
|
||||
|
||||
// FB Power Rail
|
||||
CreateField (Local0, 6, 2, FBPR)
|
||||
FBPR = 0
|
||||
|
||||
// GPU Power Rail
|
||||
CreateField (Local0, 8, 2, GPR)
|
||||
GPR = 0
|
||||
|
||||
// GC6 ROM
|
||||
CreateField (Local0, 10, 1, GCR)
|
||||
GCR = 0
|
||||
|
||||
// Panic Trap Handler
|
||||
CreateField (Local0, 11, 1, PTH)
|
||||
PTH = 1
|
||||
|
||||
// Supports Notify
|
||||
CreateField (Local0, 12, 1, NOTS)
|
||||
NOTS = 0
|
||||
|
||||
// MS Hybrid Support
|
||||
CreateField (Local0, 13, 1, MHYB)
|
||||
MHYB = 1
|
||||
|
||||
// Root Port Control
|
||||
CreateField (Local0, 14, 1, RPC)
|
||||
RPC = 1
|
||||
|
||||
// GC6 Version
|
||||
CreateField (Local0, 15, 2, GC6V)
|
||||
GC6V = 2
|
||||
|
||||
// GC6 Exit ISR Support
|
||||
CreateField (Local0, 17, 1, GEI)
|
||||
GEI = 0
|
||||
|
||||
// GC6 Self Wakeup Support
|
||||
CreateField (Local0, 18, 1, GSW)
|
||||
GSW = 0
|
||||
|
||||
// Maximum Revision Supported
|
||||
CreateField (Local0, 20, 12, MXRV)
|
||||
MXRV = JT_REVISION_ID
|
||||
}
|
||||
|
||||
Case (JT_FUNC_POWERCONTROL) {
|
||||
Printf(" JT_FUNC_POWERCONTROL: %o", ToHexString(Arg1));
|
||||
// TODO
|
||||
Local0 = NVIDIA_ERROR_UNSUPPORTED
|
||||
|
||||
/*
|
||||
CreateField (Arg1, 0, 3, GPC) // GPU Power Control
|
||||
CreateField (Arg1, 3, 1, GGP) // Global GPU Power
|
||||
CreateField (Arg1, 4, 1, PPC) // Panel Power Control
|
||||
CreateField (Arg1, 6, 2, NOC) // Notify on complete
|
||||
CreateField (Arg1, 8, 2, PRGX) // PCIe Root Power GC6 Exit Sequence
|
||||
CreateField (Arg1, 10, 2, PRGE) // PCIe Root Power GC6 Entry Sequence
|
||||
CreateField (Arg1, 12, 1, PRPC) // Poll for Root Port Completion
|
||||
CreateField (Arg1, 13, 1, PLON) // PCIe Root Port Control
|
||||
CreateField (Arg1, 14, 2, DFGC) // Defer GC6 Enter/Exit until D3cold
|
||||
CreateField (Arg1, 16, 3, GPCX) // Deferred GC6 Exit Control
|
||||
CreateField (Arg1, 19, 1, EGEI) // Enable GC6 Exit ISR
|
||||
CreateField (Arg1, 20, 2, PLCM) // PCIe Root Port Control Method for PLON
|
||||
|
||||
Local0 = Buffer(4) {0, 0, 0, 0}
|
||||
CreateField (Local0, 0, 3, GCS) // GC State
|
||||
CreateField (Local0, 3, 1, GPS) // GPU Power Status
|
||||
CreateField (Local0, 7, 1, PSS) // Panel and SRC State
|
||||
*/
|
||||
|
||||
/*
|
||||
* DFGC
|
||||
* 0: Perform request immediately
|
||||
* 1: Defer GPC and GPCX to be processed when setting Device Power State
|
||||
* 2: Clear any pending deferred requests
|
||||
*/
|
||||
/*
|
||||
If (DFGC == 2) {
|
||||
DPC = 0
|
||||
DPCX = 0
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
* GPC
|
||||
* 0 GSS) Get current GPU GCx Sleep Status
|
||||
* 1 EGNS: Entery GC6 only. No SMI trap, No Self-Refresh. Panel
|
||||
* and GPU will be powred down as normal. FB will remain powered.
|
||||
* 2 EGIS: Enter GC6, keep Panel in Self-Refresh. Enable SMI trap on
|
||||
* VGA I/O regiters. Control of screen is transitioned to the SRC and
|
||||
* then the GPU is powered down. Panel and FB remain powered while
|
||||
* the GPU is off.
|
||||
* 3 XGXS: Exit GC6. Exit Panel Self-Refresh (Sparse). GPU is powered on.
|
||||
* Disable SMI traps.
|
||||
* 4 XGIS: Exit GC6 for Self-Refresh Update (Burst). GPU is powered on, but
|
||||
* the SRC continues to retain control of screen refresh, while the
|
||||
* GPU sends an update to SRC for display. Disable SMI traps.
|
||||
* 5 EGIN: Enter GC6, keep Pnael in Self-Refresh. No SMI trap on VGA I/O
|
||||
* registers. Control of screen is transitioned to SRC and then
|
||||
* GPU is powred down. Panel and FB remain powered while the GPU is off.
|
||||
* 6 XCLM: Trigger GPU_EVENT only. GPU_EVENT would be assered and de-asserted,
|
||||
* regardless of GPU power state, without waiting for any GPU-side
|
||||
* signaling. No change in GPU power state is made. SMI traps disabled.
|
||||
*/
|
||||
}
|
||||
|
||||
Case (JT_FUNC_PLATPOLICY) {
|
||||
Printf(" JT_FUNC_PLATPOLICY: %o", ToHexString(Arg1));
|
||||
//CreateField (Arg1, 2, 1, AUD) // Azalia Audio Device
|
||||
//CreateField (Arg1, 3, 1, ADM) // Audio Disable Mask
|
||||
//CreateField (Arg1, 4, 4, DGS) // Driver expected State Mask
|
||||
|
||||
// TODO: Save policy settings to NV CMOS?
|
||||
|
||||
Local0 = Buffer(4) { 0, 0, 0, 0 }
|
||||
//CreateField (Local0, 2, 1, AUD) // Audio Device status
|
||||
//CreateField (Local0, 4, 3, GRE) // SBIOS requested GPU state
|
||||
}
|
||||
|
||||
Default {
|
||||
Printf(" Unsupported JT_FUNC: %o", ToInteger(Arg0))
|
||||
Local0 = NVIDIA_ERROR_UNSUPPORTED
|
||||
}
|
||||
}
|
||||
|
||||
Printf("} NVJT")
|
||||
Return(Local0)
|
||||
}
|
90
src/drivers/gfx/nvidia/acpi/nbci.asl
Normal file
90
src/drivers/gfx/nvidia/acpi/nbci.asl
Normal file
@ -0,0 +1,90 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
// Notebook Common Interface
|
||||
|
||||
#define NBCI_FUNC_SUPPORT 0
|
||||
#define NBCI_FUNC_PLATCAPS 1
|
||||
#define NBCI_FUNC_PLATPOLICY 4
|
||||
#define NBCI_FUNC_DISPLAYSTATUS 5
|
||||
#define NBCI_FUNC_GETOBJBYTYPE 16
|
||||
#define NBCI_FUNC_GETALLOBJS 17
|
||||
#define NBCI_FUNC_GETEVENTLIST 18
|
||||
#define NBCI_FUNC_CALLBACKS 29
|
||||
#define NBCI_FUNC_GETBACKLIGHT 20
|
||||
#define NBCI_FUNC_GETLICENSE 22
|
||||
#define NBCI_FUNC_GETEFITABLE 23
|
||||
|
||||
Scope (\_SB.PCI0.PEG0.DGPU)
|
||||
{
|
||||
Method (NBCI, 2, NotSerialized)
|
||||
{
|
||||
Printf("NBCI {")
|
||||
Local0 = NVIDIA_ERROR_UNSUPPORTED
|
||||
|
||||
Switch (ToInteger(Arg0)) {
|
||||
// Bit list of supported functions
|
||||
Case (NBCI_FUNC_SUPPORT) {
|
||||
// Supported functions: 0
|
||||
Local0 = Buffer() {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
|
||||
}
|
||||
|
||||
// Query Plaform Capabilities
|
||||
Case (NBCI_FUNC_PLATCAPS) {
|
||||
Printf(" NBCI_FUNC_PLATCAPS: Unimplemented!")
|
||||
}
|
||||
|
||||
// Query Platform Policies
|
||||
Case (NBCI_FUNC_PLATPOLICY) {
|
||||
Printf(" NBCI_FUNC_PLATPOLICY: Unimplemented!")
|
||||
}
|
||||
|
||||
// Query Display status
|
||||
Case (NBCI_FUNC_DISPLAYSTATUS) {
|
||||
Printf(" NBCI_FUNC_DISPLAYSTATUS: Unimplemented!")
|
||||
}
|
||||
|
||||
// Fetch and specific Object by Type
|
||||
Case (NBCI_FUNC_GETOBJBYTYPE) {
|
||||
Printf(" NBCI_FUNC_GETOBJBYTYPE: Unimplemented!")
|
||||
}
|
||||
|
||||
// Fetch all Objects
|
||||
Case (NBCI_FUNC_GETALLOBJS) {
|
||||
Printf(" NBCI_FUNC_GETALLOBJS: Unimplemented!")
|
||||
}
|
||||
|
||||
// Get list of Notify events and their meaning
|
||||
Case (NBCI_FUNC_GETEVENTLIST) {
|
||||
Printf(" NBCI_FUNC_GETEVENTLIST: Unimplemented!")
|
||||
}
|
||||
|
||||
// Get list of system-required callbacks
|
||||
Case (NBCI_FUNC_CALLBACKS) {
|
||||
Printf(" NBCI_FUNC_CALLBACKS: Unimplemented!")
|
||||
}
|
||||
|
||||
// Get the Backlight setup settings
|
||||
Case (NBCI_FUNC_GETBACKLIGHT) {
|
||||
Printf(" NBCI_FUNC_GETBACKLIGHT: Unimplemented!")
|
||||
}
|
||||
|
||||
// Get Software License Number
|
||||
Case (NBCI_FUNC_GETLICENSE) {
|
||||
Printf(" NBCI_FUNC_GETLICENSE: Unimplemented!")
|
||||
}
|
||||
|
||||
// Get EFI System Table
|
||||
Case (NBCI_FUNC_GETEFITABLE) {
|
||||
Printf(" NBCI_FUNC_GETEFITABLE: Unimplemented!")
|
||||
}
|
||||
|
||||
Default {
|
||||
Printf(" Unsupported NBCI_FUNC: %o", ToInteger(Arg0))
|
||||
Local0 = NVIDIA_ERROR_UNSUPPORTED
|
||||
}
|
||||
}
|
||||
|
||||
Printf("} NBCI")
|
||||
Return(Local0)
|
||||
}
|
||||
}
|
10
src/drivers/gfx/nvidia/chip.h
Normal file
10
src/drivers/gfx/nvidia/chip.h
Normal file
@ -0,0 +1,10 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#ifndef _DRIVERS_GFX_NVIDIA_CHIP_H_
|
||||
#define _DRIVERS_GFX_NVIDIA_CHIP_H_
|
||||
|
||||
struct drivers_gfx_nvidia_config {
|
||||
/* TODO: Set GPIOs in devicetree? */
|
||||
};
|
||||
|
||||
#endif /* _DRIVERS_GFX_NVIDIA_CHIP_H_ */
|
19
src/drivers/gfx/nvidia/gpu.h
Normal file
19
src/drivers/gfx/nvidia/gpu.h
Normal file
@ -0,0 +1,19 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#ifndef _DRIVERS_GFX_NVIDIA_GPU_H_
|
||||
#define _DRIVERS_GFX_NVIDIA_GPU_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
struct nvidia_gpu_config {
|
||||
/* GPIO for GPU_PWR_EN */
|
||||
unsigned int power_gpio;
|
||||
/* GPIO for GPU_RST# */
|
||||
unsigned int reset_gpio;
|
||||
/* Enable or disable GPU power */
|
||||
bool enable;
|
||||
};
|
||||
|
||||
void nvidia_set_power(const struct nvidia_gpu_config *config);
|
||||
|
||||
#endif /* _DRIVERS_NVIDIA_GPU_H_ */
|
67
src/drivers/gfx/nvidia/nvidia.c
Normal file
67
src/drivers/gfx/nvidia/nvidia.c
Normal file
@ -0,0 +1,67 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include "chip.h"
|
||||
#include <console/console.h>
|
||||
#include <device/device.h>
|
||||
#include <device/pci.h>
|
||||
|
||||
#define NVIDIA_SUBSYSTEM_ID_OFFSET 0x40
|
||||
|
||||
static void nvidia_read_resources(struct device *dev)
|
||||
{
|
||||
printk(BIOS_DEBUG, "%s: %s\n", __func__, dev_path(dev));
|
||||
|
||||
pci_dev_read_resources(dev);
|
||||
|
||||
// Find all BARs on GPU, mark them above 4g if prefetchable
|
||||
for (int bar = PCI_BASE_ADDRESS_0; bar <= PCI_BASE_ADDRESS_5; bar += 4) {
|
||||
struct resource *res = probe_resource(dev, bar);
|
||||
|
||||
if (res) {
|
||||
if (res->flags & IORESOURCE_PREFETCH) {
|
||||
printk(BIOS_INFO, " BAR at 0x%02x marked above 4g\n", bar);
|
||||
res->flags |= IORESOURCE_ABOVE_4G;
|
||||
} else {
|
||||
printk(BIOS_DEBUG, " BAR at 0x%02x not prefetch\n", bar);
|
||||
}
|
||||
} else {
|
||||
printk(BIOS_DEBUG, " BAR at 0x%02x not found\n", bar);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void nvidia_set_subsystem(struct device *dev, unsigned int vendor, unsigned int device)
|
||||
{
|
||||
pci_write_config32(dev, NVIDIA_SUBSYSTEM_ID_OFFSET,
|
||||
((device & 0xffff) << 16) | (vendor & 0xffff));
|
||||
}
|
||||
|
||||
static struct pci_operations nvidia_device_ops_pci = {
|
||||
.set_subsystem = nvidia_set_subsystem,
|
||||
};
|
||||
|
||||
static struct device_operations nvidia_device_ops = {
|
||||
.read_resources = nvidia_read_resources,
|
||||
.set_resources = pci_dev_set_resources,
|
||||
.enable_resources = pci_dev_enable_resources,
|
||||
#if CONFIG(HAVE_ACPI_TABLES)
|
||||
.write_acpi_tables = pci_rom_write_acpi_tables,
|
||||
.acpi_fill_ssdt = pci_rom_ssdt,
|
||||
#endif
|
||||
.init = pci_dev_init,
|
||||
.ops_pci = &nvidia_device_ops_pci,
|
||||
|
||||
};
|
||||
|
||||
static void nvidia_enable(struct device *dev)
|
||||
{
|
||||
if (!dev->enabled || dev->path.type != DEVICE_PATH_PCI)
|
||||
return;
|
||||
|
||||
dev->ops = &nvidia_device_ops;
|
||||
}
|
||||
|
||||
struct chip_operations drivers_gfx_nvidia_ops = {
|
||||
CHIP_NAME("NVIDIA Optimus graphics device")
|
||||
.enable_dev = nvidia_enable
|
||||
};
|
33
src/drivers/gfx/nvidia/romstage.c
Normal file
33
src/drivers/gfx/nvidia/romstage.c
Normal file
@ -0,0 +1,33 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <console/console.h>
|
||||
#include <delay.h>
|
||||
#include <device/device.h>
|
||||
#include <device/pci.h>
|
||||
#include <gpio.h>
|
||||
#include "chip.h"
|
||||
#include "gpu.h"
|
||||
|
||||
void nvidia_set_power(const struct nvidia_gpu_config *config)
|
||||
{
|
||||
if (!config->power_gpio || !config->reset_gpio) {
|
||||
printk(BIOS_ERR, "%s: GPU_PWR_EN and GPU_RST# must be set\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
printk(BIOS_DEBUG, "%s: GPU_PWR_EN = %d\n", __func__, config->power_gpio);
|
||||
printk(BIOS_DEBUG, "%s: GPU_RST# = %d\n", __func__, config->reset_gpio);
|
||||
|
||||
gpio_set(config->reset_gpio, 0);
|
||||
mdelay(4);
|
||||
|
||||
if (config->enable) {
|
||||
gpio_set(config->power_gpio, 1);
|
||||
mdelay(4);
|
||||
gpio_set(config->reset_gpio, 1);
|
||||
} else {
|
||||
gpio_set(config->power_gpio, 0);
|
||||
}
|
||||
|
||||
mdelay(4);
|
||||
}
|
@ -13,6 +13,11 @@ config EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||
bool
|
||||
default n
|
||||
|
||||
config EC_SYSTEM76_EC_DGPU
|
||||
depends on EC_SYSTEM76_EC
|
||||
bool
|
||||
default n
|
||||
|
||||
config EC_SYSTEM76_EC_OLED
|
||||
depends on EC_SYSTEM76_EC
|
||||
bool
|
||||
|
@ -117,6 +117,9 @@ Device (S76D) {
|
||||
Method (NFAN, 0, Serialized) {
|
||||
Return (Package() {
|
||||
"CPU fan",
|
||||
#if CONFIG(EC_SYSTEM76_EC_DGPU)
|
||||
"GPU fan",
|
||||
#endif
|
||||
})
|
||||
}
|
||||
|
||||
@ -144,6 +147,9 @@ Device (S76D) {
|
||||
Method (NTMP, 0, Serialized) {
|
||||
Return (Package() {
|
||||
"CPU temp",
|
||||
#if CONFIG(EC_SYSTEM76_EC_DGPU)
|
||||
"GPU temp",
|
||||
#endif
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,8 @@
|
||||
#define CPUID_COMETLAKE_H_S_6_2_G0 0xa0650
|
||||
#define CPUID_COMETLAKE_H_S_6_2_G1 0xa0653
|
||||
#define CPUID_COMETLAKE_H_S_10_2_P0 0xa0651
|
||||
#define CPUID_COMETLAKE_H_S_10_2_Q0_P1 0xa0654
|
||||
#define CPUID_COMETLAKE_H_S_10_2_P1 0xa0654
|
||||
#define CPUID_COMETLAKE_H_S_10_2_Q0 0xa0655
|
||||
#define CPUID_TIGERLAKE_A0 0x806c0
|
||||
#define CPUID_TIGERLAKE_B0 0x806c1
|
||||
#define CPUID_TIGERLAKE_R0 0x806d1
|
||||
|
@ -3,11 +3,13 @@ if BOARD_SYSTEM76_ADDW1 || BOARD_SYSTEM76_ADDW2
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_16384
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_I2C_HID
|
||||
select DRIVERS_I2C_TAS5825M
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_BAT_THRESHOLDS
|
||||
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select EC_SYSTEM76_EC_OLED
|
||||
select HAVE_ACPI_RESUME
|
||||
select HAVE_ACPI_TABLES
|
||||
@ -60,6 +62,9 @@ config ONBOARD_VGA_IS_PRIMARY
|
||||
config UART_FOR_CONSOLE
|
||||
default 2
|
||||
|
||||
config MAX_CPUS
|
||||
default 16
|
||||
|
||||
config DIMM_MAX
|
||||
default 2
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <variant/gpio.h>
|
||||
#include <drivers/gfx/nvidia/acpi/gpu.asl>
|
||||
|
||||
#define EC_GPE_SCI 0x03 /* GPP_K3 */
|
||||
#define EC_GPE_SWI 0x06 /* GPP_K6 */
|
||||
#include <ec/system76/ec/acpi/ec.asl>
|
||||
|
@ -1,2 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Disable
|
||||
|
@ -12,10 +12,15 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
984 16 h 0 check_sum
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
976 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
|
||||
2 0 Enable
|
||||
2 1 Disable
|
||||
|
||||
4 0 Fallback
|
||||
4 1 Normal
|
||||
|
||||
@ -31,4 +36,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 975 976
|
||||
|
@ -58,6 +58,13 @@ chip soc/intel/cannonlake
|
||||
# PCI Express Graphics #0 x16, Clock 8 (NVIDIA GPU)
|
||||
register "PcieClkSrcUsage[8]" = "0x40"
|
||||
register "PcieClkSrcClkReq[8]" = "8"
|
||||
|
||||
chip drivers/gfx/nvidia
|
||||
device pci 00.0 on end # VGA controller
|
||||
device pci 00.1 on end # Audio device
|
||||
device pci 00.2 on end # USB xHCI Host controller
|
||||
device pci 00.3 on end # USB Type-C UCSI controller
|
||||
end
|
||||
end
|
||||
device pci 02.0 on end # Integrated Graphics Device
|
||||
device pci 04.0 on # SA Thermal device
|
||||
|
@ -3,7 +3,15 @@
|
||||
#ifndef VARIANT_GPIO_H
|
||||
#define VARIANT_GPIO_H
|
||||
|
||||
#include <soc/gpio.h>
|
||||
|
||||
#define DGPU_RST_N GPP_F22
|
||||
#define DGPU_PWR_EN GPP_F23
|
||||
#define DGPU_GC6 GPP_C12
|
||||
|
||||
#ifndef __ACPI__
|
||||
void variant_configure_early_gpios(void);
|
||||
void variant_configure_gpios(void);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,7 +1,9 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/gfx/nvidia/gpu.h>
|
||||
#include <soc/cnl_memcfg_init.h>
|
||||
#include <soc/romstage.h>
|
||||
#include <variant/gpio.h>
|
||||
|
||||
static const struct cnl_mb_cfg memcfg = {
|
||||
.spd[0] = {
|
||||
@ -20,6 +22,18 @@ static const struct cnl_mb_cfg memcfg = {
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *memupd)
|
||||
{
|
||||
const struct nvidia_gpu_config config = {
|
||||
.power_gpio = DGPU_PWR_EN,
|
||||
.reset_gpio = DGPU_RST_N,
|
||||
.enable = true,
|
||||
};
|
||||
|
||||
// Enable dGPU power
|
||||
nvidia_set_power(&config);
|
||||
|
||||
// Set primary display to internal graphics
|
||||
memupd->FspmConfig.PrimaryDisplay = 0;
|
||||
|
||||
// Allow higher memory speeds
|
||||
memupd->FspmConfig.SaOcSupport = 1;
|
||||
|
||||
|
@ -3,10 +3,12 @@ if BOARD_SYSTEM76_BONW14
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_16384
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_I2C_HID
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_BAT_THRESHOLDS
|
||||
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select HAVE_ACPI_RESUME
|
||||
select HAVE_ACPI_TABLES
|
||||
select HAVE_CMOS_DEFAULT
|
||||
|
@ -1,2 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Disable
|
||||
|
@ -12,10 +12,15 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
984 16 h 0 check_sum
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
976 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
|
||||
2 0 Enable
|
||||
2 1 Disable
|
||||
|
||||
4 0 Fallback
|
||||
4 1 Normal
|
||||
|
||||
@ -31,4 +36,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 975 976
|
||||
|
@ -62,10 +62,12 @@ chip soc/intel/cannonlake
|
||||
register "PcieClkSrcUsage[7]" = "0x40"
|
||||
register "PcieClkSrcClkReq[7]" = "7"
|
||||
|
||||
device pci 00.0 on end # VGA controller
|
||||
device pci 00.1 on end # Audio device
|
||||
device pci 00.2 on end # USB xHCI Host controller
|
||||
device pci 00.3 on end # USB Type-C UCSI controller
|
||||
chip drivers/gfx/nvidia
|
||||
device pci 00.0 on end # VGA controller
|
||||
device pci 00.1 on end # Audio device
|
||||
device pci 00.2 on end # USB xHCI Host controller
|
||||
device pci 00.3 on end # USB Type-C UCSI controller
|
||||
end
|
||||
end
|
||||
# TODO: is this enough to disable iGPU?
|
||||
device pci 02.0 off end # Integrated Graphics Device
|
||||
|
@ -22,6 +22,7 @@ config BOARD_SPECIFIC_OPTIONS
|
||||
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
|
||||
select SPD_READ_BY_WORD
|
||||
select SYSTEM_TYPE_LAPTOP
|
||||
select TPM_RDRESP_NEED_DELAY
|
||||
|
||||
config MAINBOARD_DIR
|
||||
default "system76/cml-u"
|
||||
|
31
src/mainboard/system76/cml-u/acpi/backlight.asl
Normal file
31
src/mainboard/system76/cml-u/acpi/backlight.asl
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/intel/gma/acpi/gma.asl>
|
||||
|
||||
Scope (GFX0)
|
||||
{
|
||||
Name (BRIG, Package (22) {
|
||||
40, /* default AC */
|
||||
40, /* default Battery */
|
||||
5,
|
||||
10,
|
||||
15,
|
||||
20,
|
||||
25,
|
||||
30,
|
||||
35,
|
||||
40,
|
||||
45,
|
||||
50,
|
||||
55,
|
||||
60,
|
||||
65,
|
||||
70,
|
||||
75,
|
||||
80,
|
||||
85,
|
||||
90,
|
||||
95,
|
||||
100
|
||||
})
|
||||
}
|
@ -6,6 +6,9 @@
|
||||
|
||||
Scope (\_SB) {
|
||||
#include "sleep.asl"
|
||||
Scope (PCI0) {
|
||||
#include "backlight.asl"
|
||||
}
|
||||
}
|
||||
|
||||
Scope (\_GPE) {
|
||||
|
@ -1,2 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Disable
|
||||
|
@ -12,10 +12,15 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
984 16 h 0 check_sum
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
976 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
|
||||
2 0 Enable
|
||||
2 1 Disable
|
||||
|
||||
4 0 Fallback
|
||||
4 1 Normal
|
||||
|
||||
@ -31,4 +36,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 975 976
|
||||
|
@ -19,7 +19,6 @@ DefinitionBlock(
|
||||
{
|
||||
#include <soc/intel/common/block/acpi/acpi/northbridge.asl>
|
||||
#include <soc/intel/cannonlake/acpi/southbridge.asl>
|
||||
#include <drivers/intel/gma/acpi/default_brightness_levels.asl>
|
||||
}
|
||||
|
||||
#include <southbridge/intel/common/acpi/sleepstates.asl>
|
||||
|
31
src/mainboard/system76/darp7/acpi/backlight.asl
Normal file
31
src/mainboard/system76/darp7/acpi/backlight.asl
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/intel/gma/acpi/gma.asl>
|
||||
|
||||
Scope (GFX0)
|
||||
{
|
||||
Name (BRIG, Package (22) {
|
||||
40, /* default AC */
|
||||
40, /* default Battery */
|
||||
5,
|
||||
10,
|
||||
15,
|
||||
20,
|
||||
25,
|
||||
30,
|
||||
35,
|
||||
40,
|
||||
45,
|
||||
50,
|
||||
55,
|
||||
60,
|
||||
65,
|
||||
70,
|
||||
75,
|
||||
80,
|
||||
85,
|
||||
90,
|
||||
95,
|
||||
100
|
||||
})
|
||||
}
|
@ -6,4 +6,7 @@
|
||||
|
||||
Scope (\_SB) {
|
||||
#include "sleep.asl"
|
||||
Scope (PCI0) {
|
||||
#include "backlight.asl"
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Enable
|
||||
|
@ -12,10 +12,15 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
984 16 h 0 check_sum
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
976 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
|
||||
2 0 Enable
|
||||
2 1 Disable
|
||||
|
||||
4 0 Fallback
|
||||
4 1 Normal
|
||||
|
||||
@ -31,4 +36,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 975 976
|
||||
|
@ -20,7 +20,6 @@ DefinitionBlock(
|
||||
#include <soc/intel/common/block/acpi/acpi/northbridge.asl>
|
||||
#include <soc/intel/tigerlake/acpi/southbridge.asl>
|
||||
#include <soc/intel/tigerlake/acpi/tcss.asl>
|
||||
#include <drivers/intel/gma/acpi/default_brightness_levels.asl>
|
||||
}
|
||||
|
||||
#include <southbridge/intel/common/acpi/sleepstates.asl>
|
||||
|
@ -3,11 +3,13 @@ if BOARD_SYSTEM76_GALP5
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_16384
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_I2C_HID
|
||||
select DRIVERS_INTEL_PMC
|
||||
select DRIVERS_INTEL_USB4_RETIMER
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_BAT_THRESHOLDS
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select HAVE_ACPI_TABLES
|
||||
select HAVE_CMOS_DEFAULT
|
||||
select HAVE_OPTION_TABLE
|
||||
@ -22,6 +24,7 @@ config BOARD_SPECIFIC_OPTIONS
|
||||
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
|
||||
select SPD_READ_BY_WORD
|
||||
select SYSTEM_TYPE_LAPTOP
|
||||
select TPM_RDRESP_NEED_DELAY
|
||||
|
||||
config MAINBOARD_DIR
|
||||
default "system76/galp5"
|
||||
@ -57,4 +60,7 @@ config UART_FOR_CONSOLE
|
||||
config USE_PM_ACPI_TIMER
|
||||
default n
|
||||
|
||||
config DRIVERS_GFX_NVIDIA_BRIDGE
|
||||
default 0x1c
|
||||
|
||||
endif
|
||||
|
31
src/mainboard/system76/galp5/acpi/backlight.asl
Normal file
31
src/mainboard/system76/galp5/acpi/backlight.asl
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/intel/gma/acpi/gma.asl>
|
||||
|
||||
Scope (GFX0)
|
||||
{
|
||||
Name (BRIG, Package (22) {
|
||||
40, /* default AC */
|
||||
40, /* default Battery */
|
||||
5,
|
||||
10,
|
||||
15,
|
||||
20,
|
||||
25,
|
||||
30,
|
||||
35,
|
||||
40,
|
||||
45,
|
||||
50,
|
||||
55,
|
||||
60,
|
||||
65,
|
||||
70,
|
||||
75,
|
||||
80,
|
||||
85,
|
||||
90,
|
||||
95,
|
||||
100
|
||||
})
|
||||
}
|
40
src/mainboard/system76/galp5/acpi/dgpu.asl
Normal file
40
src/mainboard/system76/galp5/acpi/dgpu.asl
Normal file
@ -0,0 +1,40 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
Scope (\_SB.PCI0.RP05)
|
||||
{
|
||||
Device (DEV0)
|
||||
{
|
||||
Name(_ADR, 0x00000000)
|
||||
|
||||
// Fix SSID being lost across sleep by saving it
|
||||
Name(NVSS, 0x00000000)
|
||||
|
||||
OperationRegion (PCIC, PCI_Config, 0x00, 0x50)
|
||||
Field (PCIC, DwordAcc, NoLock, Preserve)
|
||||
{
|
||||
Offset (0x40),
|
||||
SSID, 32,
|
||||
}
|
||||
|
||||
Name (_PR0, Package () { PWRR })
|
||||
Name (_PR3, Package () { PWRR })
|
||||
PowerResource (PWRR, 0, 0)
|
||||
{
|
||||
Name (_STA, 1)
|
||||
|
||||
Method (_ON)
|
||||
{
|
||||
^^SSID = ^^NVSS
|
||||
Printf("GPU _ON %o", ToHexString(^^SSID))
|
||||
_STA = 1
|
||||
}
|
||||
|
||||
Method (_OFF)
|
||||
{
|
||||
^^NVSS = ^^SSID
|
||||
Printf("GPU _OFF %o", ToHexString(^^SSID))
|
||||
_STA = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +1,14 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include "dgpu.asl"
|
||||
|
||||
#define EC_GPE_SCI 0x6E
|
||||
#define EC_GPE_SWI 0x6B
|
||||
#include <ec/system76/ec/acpi/ec.asl>
|
||||
|
||||
Scope (\_SB) {
|
||||
#include "sleep.asl"
|
||||
Scope (PCI0) {
|
||||
#include "backlight.asl"
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Enable
|
||||
|
@ -12,10 +12,15 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
984 16 h 0 check_sum
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
976 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
|
||||
2 0 Enable
|
||||
2 1 Disable
|
||||
|
||||
4 0 Fallback
|
||||
4 1 Normal
|
||||
|
||||
@ -31,4 +36,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 975 976
|
||||
|
@ -278,6 +278,13 @@ chip soc/intel/tigerlake
|
||||
register "srcclk_pin" = "2" # PEG_CLKREQ#
|
||||
device generic 0 on end
|
||||
end
|
||||
|
||||
chip drivers/gfx/nvidia
|
||||
device pci 00.0 on end # VGA controller
|
||||
device pci 00.1 on end # Audio device
|
||||
device pci 00.2 on end # USB xHCI Host controller
|
||||
device pci 00.3 on end # USB Type-C UCSI controller
|
||||
end
|
||||
end
|
||||
device ref pcie_rp9 on
|
||||
# PCIe root port #9 x1, Clock 3 (CARD)
|
||||
|
@ -20,7 +20,6 @@ DefinitionBlock(
|
||||
#include <soc/intel/common/block/acpi/acpi/northbridge.asl>
|
||||
#include <soc/intel/tigerlake/acpi/southbridge.asl>
|
||||
#include <soc/intel/tigerlake/acpi/tcss.asl>
|
||||
#include <drivers/intel/gma/acpi/default_brightness_levels.asl>
|
||||
}
|
||||
|
||||
#include <southbridge/intel/common/acpi/sleepstates.asl>
|
||||
|
@ -5,6 +5,12 @@
|
||||
|
||||
#include <soc/gpio.h>
|
||||
|
||||
#define DGPU_RST_N GPP_U4
|
||||
#define DGPU_PWR_EN GPP_U5
|
||||
#define DGPU_GC6 GPP_D2
|
||||
|
||||
#ifndef __ACPI__
|
||||
|
||||
static const struct pad_config early_gpio_table[] = {
|
||||
PAD_CFG_NF(GPP_C20, UP_20K, DEEP, NF1), // UART2_RXD
|
||||
PAD_CFG_NF(GPP_C21, UP_20K, DEEP, NF1), // UART2_TXD
|
||||
@ -222,4 +228,6 @@ static const struct pad_config gpio_table[] = {
|
||||
//PAD_CFG_GPO(GPP_U5, 0, DEEP), // DGPU_PWR_EN
|
||||
};
|
||||
|
||||
#endif /* __ACPI__ */
|
||||
|
||||
#endif /* MAINBOARD_GPIO_H */
|
||||
|
@ -1,5 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include "gpio.h"
|
||||
#include <drivers/gfx/nvidia/gpu.h>
|
||||
#include <fsp/util.h>
|
||||
#include <soc/meminit.h>
|
||||
#include <soc/romstage.h>
|
||||
@ -18,5 +20,20 @@ void mainboard_memory_init_params(FSPM_UPD *mupd)
|
||||
};
|
||||
const bool half_populated = false;
|
||||
|
||||
const struct nvidia_gpu_config config = {
|
||||
.power_gpio = DGPU_PWR_EN,
|
||||
.reset_gpio = DGPU_RST_N,
|
||||
.enable = true,
|
||||
};
|
||||
|
||||
// Enable dGPU power
|
||||
nvidia_set_power(&config);
|
||||
|
||||
// Set primary display to internal graphics
|
||||
mupd->FspmConfig.PrimaryDisplay = 0;
|
||||
|
||||
// Allow memory clocks higher than 2933 MHz
|
||||
mupd->FspmConfig.SaOcSupport = 1;
|
||||
|
||||
memcfg_init(&mupd->FspmConfig, &board_cfg, &spd_info, half_populated);
|
||||
}
|
||||
|
@ -3,10 +3,12 @@ if BOARD_SYSTEM76_GAZE14 || BOARD_SYSTEM76_GAZE15
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_16384
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_I2C_HID
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_BAT_THRESHOLDS
|
||||
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select HAVE_ACPI_RESUME
|
||||
select HAVE_ACPI_TABLES
|
||||
select HAVE_CMOS_DEFAULT
|
||||
|
31
src/mainboard/system76/gaze15/acpi/backlight.asl
Normal file
31
src/mainboard/system76/gaze15/acpi/backlight.asl
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/intel/gma/acpi/gma.asl>
|
||||
|
||||
Scope (GFX0)
|
||||
{
|
||||
Name (BRIG, Package (22) {
|
||||
40, /* default AC */
|
||||
40, /* default Battery */
|
||||
5,
|
||||
10,
|
||||
15,
|
||||
20,
|
||||
25,
|
||||
30,
|
||||
35,
|
||||
40,
|
||||
45,
|
||||
50,
|
||||
55,
|
||||
60,
|
||||
65,
|
||||
70,
|
||||
75,
|
||||
80,
|
||||
85,
|
||||
90,
|
||||
95,
|
||||
100
|
||||
})
|
||||
}
|
@ -1,11 +1,17 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <variant/gpio.h>
|
||||
#include <drivers/gfx/nvidia/acpi/gpu.asl>
|
||||
|
||||
#define EC_GPE_SCI 0x03 /* GPP_K3 */
|
||||
#define EC_GPE_SWI 0x06 /* GPP_K6 */
|
||||
#include <ec/system76/ec/acpi/ec.asl>
|
||||
|
||||
Scope (\_SB) {
|
||||
#include "sleep.asl"
|
||||
Scope (PCI0) {
|
||||
#include "backlight.asl"
|
||||
}
|
||||
}
|
||||
|
||||
Scope (\_GPE) {
|
||||
|
@ -1,2 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Disable
|
||||
|
@ -12,10 +12,15 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
984 16 h 0 check_sum
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
976 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
|
||||
2 0 Enable
|
||||
2 1 Disable
|
||||
|
||||
4 0 Fallback
|
||||
4 1 Normal
|
||||
|
||||
@ -31,4 +36,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 975 976
|
||||
|
@ -57,6 +57,13 @@ chip soc/intel/cannonlake
|
||||
# PCI Express Graphics #0 x16, Clock 8 (NVIDIA GPU)
|
||||
register "PcieClkSrcUsage[8]" = "0x40"
|
||||
register "PcieClkSrcClkReq[8]" = "8"
|
||||
|
||||
chip drivers/gfx/nvidia
|
||||
device pci 00.0 on end # VGA controller
|
||||
device pci 00.1 on end # Audio device
|
||||
device pci 00.2 on end # USB xHCI Host controller
|
||||
device pci 00.3 on end # USB Type-C UCSI controller
|
||||
end
|
||||
end
|
||||
device pci 02.0 on # Integrated Graphics Device
|
||||
register "gfx" = "GMA_DEFAULT_PANEL(0)"
|
||||
|
@ -18,7 +18,6 @@ DefinitionBlock(
|
||||
Device (\_SB.PCI0) {
|
||||
#include <soc/intel/common/block/acpi/acpi/northbridge.asl>
|
||||
#include <soc/intel/cannonlake/acpi/southbridge.asl>
|
||||
#include <drivers/intel/gma/acpi/default_brightness_levels.asl>
|
||||
}
|
||||
|
||||
#include <southbridge/intel/common/acpi/sleepstates.asl>
|
||||
|
@ -3,7 +3,15 @@
|
||||
#ifndef VARIANT_GPIO_H
|
||||
#define VARIANT_GPIO_H
|
||||
|
||||
#include <soc/gpio.h>
|
||||
|
||||
#define DGPU_RST_N GPP_F22
|
||||
#define DGPU_PWR_EN GPP_F23
|
||||
#define DGPU_GC6 GPP_K21
|
||||
|
||||
#ifndef __ACPI__
|
||||
void variant_configure_early_gpios(void);
|
||||
void variant_configure_gpios(void);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,7 +1,9 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/gfx/nvidia/gpu.h>
|
||||
#include <soc/cnl_memcfg_init.h>
|
||||
#include <soc/romstage.h>
|
||||
#include <variant/gpio.h>
|
||||
|
||||
static const struct cnl_mb_cfg memcfg = {
|
||||
.spd[0] = {
|
||||
@ -20,5 +22,17 @@ static const struct cnl_mb_cfg memcfg = {
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *memupd)
|
||||
{
|
||||
const struct nvidia_gpu_config config = {
|
||||
.power_gpio = DGPU_PWR_EN,
|
||||
.reset_gpio = DGPU_RST_N,
|
||||
.enable = true,
|
||||
};
|
||||
|
||||
// Enable dGPU power
|
||||
nvidia_set_power(&config);
|
||||
|
||||
// Set primary display to internal graphics
|
||||
memupd->FspmConfig.PrimaryDisplay = 0;
|
||||
|
||||
cannonlake_memcfg_init(&memupd->FspmConfig, &memcfg);
|
||||
}
|
||||
|
@ -3,10 +3,12 @@ if BOARD_SYSTEM76_GAZE16_3050 || BOARD_SYSTEM76_GAZE16_3060 || BOARD_SYSTEM76_GA
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_16384
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_I2C_HID
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_BAT_THRESHOLDS
|
||||
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select HAVE_ACPI_RESUME
|
||||
select HAVE_ACPI_TABLES
|
||||
select HAVE_CMOS_DEFAULT
|
||||
@ -19,6 +21,7 @@ config BOARD_SPECIFIC_OPTIONS
|
||||
select NO_UART_ON_SUPERIO
|
||||
select SOC_INTEL_TIGERLAKE
|
||||
select SOC_INTEL_TIGERLAKE_PCH_H
|
||||
select SOC_INTEL_TIGERLAKE_S3
|
||||
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
|
||||
select SPD_READ_BY_WORD
|
||||
select SYSTEM_TYPE_LAPTOP
|
||||
|
31
src/mainboard/system76/gaze16/acpi/backlight.asl
Normal file
31
src/mainboard/system76/gaze16/acpi/backlight.asl
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/intel/gma/acpi/gma.asl>
|
||||
|
||||
Scope (GFX0)
|
||||
{
|
||||
Name (BRIG, Package (22) {
|
||||
40, /* default AC */
|
||||
40, /* default Battery */
|
||||
5,
|
||||
10,
|
||||
15,
|
||||
20,
|
||||
25,
|
||||
30,
|
||||
35,
|
||||
40,
|
||||
45,
|
||||
50,
|
||||
55,
|
||||
60,
|
||||
65,
|
||||
70,
|
||||
75,
|
||||
80,
|
||||
85,
|
||||
90,
|
||||
95,
|
||||
100
|
||||
})
|
||||
}
|
40
src/mainboard/system76/gaze16/acpi/dgpu.asl
Normal file
40
src/mainboard/system76/gaze16/acpi/dgpu.asl
Normal file
@ -0,0 +1,40 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
Scope (\_SB.PCI0.PEG1)
|
||||
{
|
||||
Device (DEV0)
|
||||
{
|
||||
Name(_ADR, 0x00000000)
|
||||
|
||||
// Fix SSID being lost across sleep by saving it
|
||||
Name(NVSS, 0x00000000)
|
||||
|
||||
OperationRegion (PCIC, PCI_Config, 0x00, 0x50)
|
||||
Field (PCIC, DwordAcc, NoLock, Preserve)
|
||||
{
|
||||
Offset (0x40),
|
||||
SSID, 32,
|
||||
}
|
||||
|
||||
Name (_PR0, Package () { PWRR })
|
||||
Name (_PR3, Package () { PWRR })
|
||||
PowerResource (PWRR, 0, 0)
|
||||
{
|
||||
Name (_STA, 1)
|
||||
|
||||
Method (_ON)
|
||||
{
|
||||
^^SSID = ^^NVSS
|
||||
Printf("GPU _ON %o", ToHexString(^^SSID))
|
||||
_STA = 1
|
||||
}
|
||||
|
||||
Method (_OFF)
|
||||
{
|
||||
^^NVSS = ^^SSID
|
||||
Printf("GPU _OFF %o", ToHexString(^^SSID))
|
||||
_STA = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +1,14 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include "dgpu.asl"
|
||||
|
||||
#define EC_GPE_SCI 0x6E
|
||||
#define EC_GPE_SWI 0x6B
|
||||
#include <ec/system76/ec/acpi/ec.asl>
|
||||
|
||||
Scope (\_SB) {
|
||||
#include "sleep.asl"
|
||||
Scope (PCI0) {
|
||||
#include "backlight.asl"
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Disable
|
||||
|
@ -12,10 +12,15 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
984 16 h 0 check_sum
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
976 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
|
||||
2 0 Enable
|
||||
2 1 Disable
|
||||
|
||||
4 0 Fallback
|
||||
4 1 Normal
|
||||
|
||||
@ -31,4 +36,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 975 976
|
||||
|
@ -125,7 +125,9 @@ chip soc/intel/tigerlake
|
||||
device i2c 15 on end
|
||||
end
|
||||
end
|
||||
device ref heci1 on end
|
||||
device ref heci1 on
|
||||
register "HeciEnabled" = "1"
|
||||
end
|
||||
device ref uart2 on
|
||||
# Debug console
|
||||
register "SerialIoUartMode[PchSerialIoIndexUART2]" = "PchSerialIoSkipInit"
|
||||
|
@ -19,7 +19,6 @@ DefinitionBlock(
|
||||
{
|
||||
#include <soc/intel/common/block/acpi/acpi/northbridge.asl>
|
||||
#include <soc/intel/tigerlake/acpi/southbridge.asl>
|
||||
#include <drivers/intel/gma/acpi/default_brightness_levels.asl>
|
||||
}
|
||||
|
||||
#include <southbridge/intel/common/acpi/sleepstates.asl>
|
||||
|
@ -1,8 +1,10 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/gfx/nvidia/gpu.h>
|
||||
#include <fsp/util.h>
|
||||
#include <soc/meminit.h>
|
||||
#include <soc/romstage.h>
|
||||
#include <variant/gpio.h>
|
||||
#include "variant.h"
|
||||
|
||||
static const struct mb_cfg board_cfg = {
|
||||
@ -22,9 +24,21 @@ static const struct mem_spd spd_info = {
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *mupd)
|
||||
{
|
||||
const bool half_populated = false;
|
||||
|
||||
const struct nvidia_gpu_config config = {
|
||||
.power_gpio = DGPU_PWR_EN,
|
||||
.reset_gpio = DGPU_RST_N,
|
||||
.enable = true,
|
||||
};
|
||||
|
||||
variant_memory_init_params(mupd);
|
||||
|
||||
const bool half_populated = false;
|
||||
// Enable dGPU power
|
||||
nvidia_set_power(&config);
|
||||
|
||||
// Set primary display to internal graphics
|
||||
mupd->FspmConfig.PrimaryDisplay = 0;
|
||||
|
||||
memcfg_init(&mupd->FspmConfig, &board_cfg, &spd_info, half_populated);
|
||||
}
|
||||
|
@ -5,6 +5,12 @@
|
||||
|
||||
#include <soc/gpio.h>
|
||||
|
||||
#define DGPU_RST_N GPP_F8
|
||||
#define DGPU_PWR_EN GPP_F9
|
||||
#define DGPU_GC6 GPP_K11
|
||||
|
||||
#ifndef __ACPI__
|
||||
|
||||
static const struct pad_config early_gpio_table[] = {
|
||||
PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1), // UART2_RXD
|
||||
PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1), // UART2_TXD
|
||||
@ -285,4 +291,6 @@ static const struct pad_config gpio_table[] = {
|
||||
PAD_CFG_GPI(GPP_S7, NONE, DEEP), // DMIC_DAT_PCH
|
||||
};
|
||||
|
||||
#endif /* __ACPI__ */
|
||||
|
||||
#endif /* VARIANT_GPIO_H */
|
||||
|
@ -17,6 +17,13 @@ chip soc/intel/tigerlake
|
||||
register "srcclk_pin" = "-1" # GFX_CLKREQ0#
|
||||
device generic 0 on end
|
||||
end
|
||||
|
||||
chip drivers/gfx/nvidia
|
||||
device pci 00.0 on end # VGA controller
|
||||
device pci 00.1 on end # Audio device
|
||||
device pci 00.2 on end # USB xHCI Host controller
|
||||
device pci 00.3 on end # USB Type-C UCSI controller
|
||||
end
|
||||
end
|
||||
device ref peg0 on
|
||||
# PCIe PEG0 x4, Clock 4 (SSD2)
|
||||
|
@ -5,6 +5,12 @@
|
||||
|
||||
#include <soc/gpio.h>
|
||||
|
||||
#define DGPU_RST_N GPP_F8
|
||||
#define DGPU_PWR_EN GPP_F9
|
||||
#define DGPU_GC6 GPP_K11
|
||||
|
||||
#ifndef __ACPI__
|
||||
|
||||
static const struct pad_config early_gpio_table[] = {
|
||||
PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1), // UART2_RXD
|
||||
PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1), // UART2_TXD
|
||||
@ -285,4 +291,6 @@ static const struct pad_config gpio_table[] = {
|
||||
PAD_CFG_GPI(GPP_S7, NONE, DEEP), // MIC_DATA_PCH
|
||||
};
|
||||
|
||||
#endif /* __ACPI__ */
|
||||
|
||||
#endif /* VARIANT_GPIO_H */
|
||||
|
@ -17,6 +17,13 @@ chip soc/intel/tigerlake
|
||||
register "srcclk_pin" = "-1" # PEG_CLKREQ#
|
||||
device generic 0 on end
|
||||
end
|
||||
|
||||
chip drivers/gfx/nvidia
|
||||
device pci 00.0 on end # VGA controller
|
||||
device pci 00.1 on end # Audio device
|
||||
device pci 00.2 on end # USB xHCI Host controller
|
||||
device pci 00.3 on end # USB Type-C UCSI controller
|
||||
end
|
||||
end
|
||||
device ref peg0 on
|
||||
# PCIe PEG0 x4, Clock 7 (SSD1)
|
||||
|
@ -17,6 +17,7 @@ config BOARD_SPECIFIC_OPTIONS
|
||||
select SOC_INTEL_KABYLAKE
|
||||
select SPD_READ_BY_WORD
|
||||
select SYSTEM_TYPE_LAPTOP
|
||||
select TPM_RDRESP_NEED_DELAY
|
||||
|
||||
config MAINBOARD_DIR
|
||||
default "system76/kbl-u"
|
||||
|
31
src/mainboard/system76/lemp10/acpi/backlight.asl
Normal file
31
src/mainboard/system76/lemp10/acpi/backlight.asl
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/intel/gma/acpi/gma.asl>
|
||||
|
||||
Scope (GFX0)
|
||||
{
|
||||
Name (BRIG, Package (22) {
|
||||
40, /* default AC */
|
||||
40, /* default Battery */
|
||||
5,
|
||||
10,
|
||||
15,
|
||||
20,
|
||||
25,
|
||||
30,
|
||||
35,
|
||||
40,
|
||||
45,
|
||||
50,
|
||||
55,
|
||||
60,
|
||||
65,
|
||||
70,
|
||||
75,
|
||||
80,
|
||||
85,
|
||||
90,
|
||||
95,
|
||||
100
|
||||
})
|
||||
}
|
@ -6,4 +6,7 @@
|
||||
|
||||
Scope (\_SB) {
|
||||
#include "sleep.asl"
|
||||
Scope (PCI0) {
|
||||
#include "backlight.asl"
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Enable
|
||||
|
@ -12,10 +12,15 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
984 16 h 0 check_sum
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
976 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
|
||||
2 0 Enable
|
||||
2 1 Disable
|
||||
|
||||
4 0 Fallback
|
||||
4 1 Normal
|
||||
|
||||
@ -31,4 +36,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 975 976
|
||||
|
@ -20,7 +20,6 @@ DefinitionBlock(
|
||||
#include <soc/intel/common/block/acpi/acpi/northbridge.asl>
|
||||
#include <soc/intel/tigerlake/acpi/southbridge.asl>
|
||||
#include <soc/intel/tigerlake/acpi/tcss.asl>
|
||||
#include <drivers/intel/gma/acpi/default_brightness_levels.asl>
|
||||
}
|
||||
|
||||
#include <southbridge/intel/common/acpi/sleepstates.asl>
|
||||
|
@ -21,7 +21,7 @@ config BOARD_SPECIFIC_OPTIONS
|
||||
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
|
||||
select SPD_READ_BY_WORD
|
||||
select SYSTEM_TYPE_LAPTOP
|
||||
select USE_LEGACY_8254_TIMER # Fix failure to boot GRUB
|
||||
select TPM_RDRESP_NEED_DELAY
|
||||
|
||||
config MAINBOARD_DIR
|
||||
default "system76/lemp9"
|
||||
@ -59,10 +59,6 @@ config VGA_BIOS_ID
|
||||
string
|
||||
default "8086,9b41"
|
||||
|
||||
config TPM_PIRQ
|
||||
hex
|
||||
default 0x10 # GPP_A7/PIRQA#
|
||||
|
||||
config POST_DEVICE
|
||||
bool
|
||||
default n
|
||||
|
31
src/mainboard/system76/lemp9/acpi/backlight.asl
Normal file
31
src/mainboard/system76/lemp9/acpi/backlight.asl
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/intel/gma/acpi/gma.asl>
|
||||
|
||||
Scope (GFX0)
|
||||
{
|
||||
Name (BRIG, Package (22) {
|
||||
40, /* default AC */
|
||||
40, /* default Battery */
|
||||
5,
|
||||
10,
|
||||
15,
|
||||
20,
|
||||
25,
|
||||
30,
|
||||
35,
|
||||
40,
|
||||
45,
|
||||
50,
|
||||
55,
|
||||
60,
|
||||
65,
|
||||
70,
|
||||
75,
|
||||
80,
|
||||
85,
|
||||
90,
|
||||
95,
|
||||
100
|
||||
})
|
||||
}
|
@ -6,6 +6,9 @@
|
||||
|
||||
Scope (\_SB) {
|
||||
#include "sleep.asl"
|
||||
Scope (PCI0) {
|
||||
#include "backlight.asl"
|
||||
}
|
||||
}
|
||||
|
||||
Scope (\_GPE) {
|
||||
|
@ -1,2 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Disable
|
||||
|
@ -12,10 +12,15 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
984 16 h 0 check_sum
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
976 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
|
||||
2 0 Enable
|
||||
2 1 Disable
|
||||
|
||||
4 0 Fallback
|
||||
4 1 Normal
|
||||
|
||||
@ -31,4 +36,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 975 976
|
||||
|
@ -3,11 +3,13 @@ if BOARD_SYSTEM76_ORYP5
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_16384
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_I2C_HID
|
||||
select DRIVERS_I2C_TAS5825M
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_BAT_THRESHOLDS
|
||||
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select HAVE_ACPI_RESUME
|
||||
select HAVE_ACPI_TABLES
|
||||
select HAVE_CMOS_DEFAULT
|
||||
@ -22,6 +24,7 @@ config BOARD_SPECIFIC_OPTIONS
|
||||
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
|
||||
select SPD_READ_BY_WORD
|
||||
select SYSTEM_TYPE_LAPTOP
|
||||
select TPM_RDRESP_NEED_DELAY
|
||||
|
||||
config MAINBOARD_DIR
|
||||
default "system76/oryp5"
|
||||
|
31
src/mainboard/system76/oryp5/acpi/backlight.asl
Normal file
31
src/mainboard/system76/oryp5/acpi/backlight.asl
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/intel/gma/acpi/gma.asl>
|
||||
|
||||
Scope (GFX0)
|
||||
{
|
||||
Name (BRIG, Package (22) {
|
||||
40, /* default AC */
|
||||
40, /* default Battery */
|
||||
5,
|
||||
10,
|
||||
15,
|
||||
20,
|
||||
25,
|
||||
30,
|
||||
35,
|
||||
40,
|
||||
45,
|
||||
50,
|
||||
55,
|
||||
60,
|
||||
65,
|
||||
70,
|
||||
75,
|
||||
80,
|
||||
85,
|
||||
90,
|
||||
95,
|
||||
100
|
||||
})
|
||||
}
|
@ -1,5 +1,8 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <mainboard/gpio.h>
|
||||
#include <drivers/gfx/nvidia/acpi/gpu.asl>
|
||||
|
||||
#define EC_GPE_SCI 0x17 /* GPP_B23 */
|
||||
#define EC_GPE_SWI 0x26 /* GPP_G6 */
|
||||
#include <ec/system76/ec/acpi/ec.asl>
|
||||
@ -7,6 +10,9 @@
|
||||
Scope (\_SB)
|
||||
{
|
||||
#include "sleep.asl"
|
||||
Scope (PCI0) {
|
||||
#include "backlight.asl"
|
||||
}
|
||||
}
|
||||
|
||||
Scope (\_GPE)
|
||||
|
@ -1,2 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Disable
|
||||
|
@ -12,10 +12,15 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
984 16 h 0 check_sum
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
976 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
|
||||
2 0 Enable
|
||||
2 1 Disable
|
||||
|
||||
4 0 Fallback
|
||||
4 1 Normal
|
||||
|
||||
@ -31,4 +36,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 975 976
|
||||
|
@ -65,6 +65,13 @@ chip soc/intel/cannonlake
|
||||
# PCI Express Graphics #0 x16, Clock 8 (NVIDIA GPU)
|
||||
register "PcieClkSrcUsage[8]" = "0x40"
|
||||
register "PcieClkSrcClkReq[8]" = "8"
|
||||
|
||||
chip drivers/gfx/nvidia
|
||||
device pci 00.0 on end # VGA controller
|
||||
device pci 00.1 on end # Audio device
|
||||
device pci 00.2 on end # USB xHCI Host controller
|
||||
device pci 00.3 on end # USB Type-C UCSI controller
|
||||
end
|
||||
end
|
||||
device pci 02.0 on # Integrated Graphics Device
|
||||
register "gfx" = "GMA_DEFAULT_PANEL(0)"
|
||||
|
@ -19,7 +19,6 @@ DefinitionBlock(
|
||||
{
|
||||
#include <soc/intel/common/block/acpi/acpi/northbridge.asl>
|
||||
#include <soc/intel/cannonlake/acpi/southbridge.asl>
|
||||
#include <drivers/intel/gma/acpi/default_brightness_levels.asl>
|
||||
}
|
||||
|
||||
#include <southbridge/intel/common/acpi/sleepstates.asl>
|
||||
|
@ -3,7 +3,15 @@
|
||||
#ifndef MAINBOARD_GPIO_H
|
||||
#define MAINBOARD_GPIO_H
|
||||
|
||||
#include <soc/gpio.h>
|
||||
|
||||
#define DGPU_RST_N GPP_F22
|
||||
#define DGPU_PWR_EN GPP_F23
|
||||
#define DGPU_GC6 GPP_C12
|
||||
|
||||
#ifndef __ACPI__
|
||||
void mainboard_configure_early_gpios(void);
|
||||
void mainboard_configure_gpios(void);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,5 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/gfx/nvidia/gpu.h>
|
||||
#include <mainboard/gpio.h>
|
||||
#include <soc/cnl_memcfg_init.h>
|
||||
#include <soc/romstage.h>
|
||||
|
||||
@ -20,6 +22,18 @@ static const struct cnl_mb_cfg memcfg = {
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *memupd)
|
||||
{
|
||||
const struct nvidia_gpu_config config = {
|
||||
.power_gpio = DGPU_PWR_EN,
|
||||
.reset_gpio = DGPU_RST_N,
|
||||
.enable = true,
|
||||
};
|
||||
|
||||
// Enable dGPU power
|
||||
nvidia_set_power(&config);
|
||||
|
||||
// Set primary display to internal graphics
|
||||
memupd->FspmConfig.PrimaryDisplay = 0;
|
||||
|
||||
// Allow memory speeds higher than 2666 MT/s
|
||||
memupd->FspmConfig.SaOcSupport = 1;
|
||||
|
||||
|
@ -3,11 +3,13 @@ if BOARD_SYSTEM76_ORYP6 || BOARD_SYSTEM76_ORYP7
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_16384
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_I2C_HID
|
||||
select DRIVERS_I2C_TAS5825M
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_BAT_THRESHOLDS
|
||||
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select HAVE_ACPI_RESUME
|
||||
select HAVE_ACPI_TABLES
|
||||
select HAVE_CMOS_DEFAULT
|
||||
|
31
src/mainboard/system76/oryp6/acpi/backlight.asl
Normal file
31
src/mainboard/system76/oryp6/acpi/backlight.asl
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/intel/gma/acpi/gma.asl>
|
||||
|
||||
Scope (GFX0)
|
||||
{
|
||||
Name (BRIG, Package (22) {
|
||||
40, /* default AC */
|
||||
40, /* default Battery */
|
||||
5,
|
||||
10,
|
||||
15,
|
||||
20,
|
||||
25,
|
||||
30,
|
||||
35,
|
||||
40,
|
||||
45,
|
||||
50,
|
||||
55,
|
||||
60,
|
||||
65,
|
||||
70,
|
||||
75,
|
||||
80,
|
||||
85,
|
||||
90,
|
||||
95,
|
||||
100
|
||||
})
|
||||
}
|
@ -1,11 +1,17 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <variant/gpio.h>
|
||||
#include <drivers/gfx/nvidia/acpi/gpu.asl>
|
||||
|
||||
#define EC_GPE_SCI 0x03 /* GPP_K3 */
|
||||
#define EC_GPE_SWI 0x06 /* GPP_K6 */
|
||||
#include <ec/system76/ec/acpi/ec.asl>
|
||||
|
||||
Scope (\_SB) {
|
||||
#include "sleep.asl"
|
||||
Scope (PCI0) {
|
||||
#include "backlight.asl"
|
||||
}
|
||||
}
|
||||
|
||||
Scope (\_GPE) {
|
||||
|
@ -1,2 +1,3 @@
|
||||
boot_option=Fallback
|
||||
debug_level=Debug
|
||||
me_state=Disable
|
||||
|
@ -12,10 +12,15 @@ entries
|
||||
400 8 r 0 century
|
||||
|
||||
412 4 e 6 debug_level
|
||||
984 16 h 0 check_sum
|
||||
416 1 e 2 me_state
|
||||
417 3 h 0 me_state_counter
|
||||
976 16 h 0 check_sum
|
||||
|
||||
enumerations
|
||||
|
||||
2 0 Enable
|
||||
2 1 Disable
|
||||
|
||||
4 0 Fallback
|
||||
4 1 Normal
|
||||
|
||||
@ -31,4 +36,4 @@ enumerations
|
||||
|
||||
checksums
|
||||
|
||||
checksum 408 983 984
|
||||
checksum 408 975 976
|
||||
|
@ -62,6 +62,13 @@ chip soc/intel/cannonlake
|
||||
# PCI Express Graphics #0 x16, Clock 8 (NVIDIA GPU)
|
||||
register "PcieClkSrcUsage[8]" = "0x40"
|
||||
register "PcieClkSrcClkReq[8]" = "8"
|
||||
|
||||
chip drivers/gfx/nvidia
|
||||
device pci 00.0 on end # VGA controller
|
||||
device pci 00.1 on end # Audio device
|
||||
device pci 00.2 on end # USB xHCI Host controller
|
||||
device pci 00.3 on end # USB Type-C UCSI controller
|
||||
end
|
||||
end
|
||||
device pci 02.0 on # Integrated Graphics Device
|
||||
register "gfx" = "GMA_DEFAULT_PANEL(0)"
|
||||
|
@ -18,7 +18,6 @@ DefinitionBlock(
|
||||
Device (\_SB.PCI0) {
|
||||
#include <soc/intel/common/block/acpi/acpi/northbridge.asl>
|
||||
#include <soc/intel/cannonlake/acpi/southbridge.asl>
|
||||
#include <drivers/intel/gma/acpi/default_brightness_levels.asl>
|
||||
}
|
||||
|
||||
#include <southbridge/intel/common/acpi/sleepstates.asl>
|
||||
|
@ -3,7 +3,15 @@
|
||||
#ifndef VARIANT_GPIO_H
|
||||
#define VARIANT_GPIO_H
|
||||
|
||||
#include <soc/gpio.h>
|
||||
|
||||
#define DGPU_RST_N GPP_F22
|
||||
#define DGPU_PWR_EN GPP_F23
|
||||
#define DGPU_GC6 GPP_K21
|
||||
|
||||
#ifndef __ACPI__
|
||||
void variant_configure_early_gpios(void);
|
||||
void variant_configure_gpios(void);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,7 +1,9 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/gfx/nvidia/gpu.h>
|
||||
#include <soc/cnl_memcfg_init.h>
|
||||
#include <soc/romstage.h>
|
||||
#include <variant/gpio.h>
|
||||
#include <variant/romstage.h>
|
||||
|
||||
static const struct cnl_mb_cfg memcfg = {
|
||||
@ -21,6 +23,18 @@ static const struct cnl_mb_cfg memcfg = {
|
||||
|
||||
void mainboard_memory_init_params(FSPM_UPD *memupd)
|
||||
{
|
||||
const struct nvidia_gpu_config config = {
|
||||
.power_gpio = DGPU_PWR_EN,
|
||||
.reset_gpio = DGPU_RST_N,
|
||||
.enable = true,
|
||||
};
|
||||
|
||||
// Enable dGPU power
|
||||
nvidia_set_power(&config);
|
||||
|
||||
// Set primary display to internal graphics
|
||||
memupd->FspmConfig.PrimaryDisplay = 0;
|
||||
|
||||
variant_configure_fspm(memupd);
|
||||
|
||||
cannonlake_memcfg_init(&memupd->FspmConfig, &memcfg);
|
||||
|
@ -3,11 +3,13 @@ if BOARD_SYSTEM76_ORYP8
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ROMSIZE_KB_16384
|
||||
select DRIVERS_GFX_NVIDIA
|
||||
select DRIVERS_I2C_HID
|
||||
select DRIVERS_I2C_TAS5825M
|
||||
select EC_SYSTEM76_EC
|
||||
select EC_SYSTEM76_EC_BAT_THRESHOLDS
|
||||
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||
select EC_SYSTEM76_EC_DGPU
|
||||
select HAVE_ACPI_RESUME
|
||||
select HAVE_ACPI_TABLES
|
||||
select HAVE_CMOS_DEFAULT
|
||||
@ -21,6 +23,7 @@ config BOARD_SPECIFIC_OPTIONS
|
||||
select PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G
|
||||
select SOC_INTEL_TIGERLAKE
|
||||
select SOC_INTEL_TIGERLAKE_PCH_H
|
||||
select SOC_INTEL_TIGERLAKE_S3
|
||||
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
|
||||
select SPD_READ_BY_WORD
|
||||
select SYSTEM_TYPE_LAPTOP
|
||||
|
31
src/mainboard/system76/oryp8/acpi/backlight.asl
Normal file
31
src/mainboard/system76/oryp8/acpi/backlight.asl
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <drivers/intel/gma/acpi/gma.asl>
|
||||
|
||||
Scope (GFX0)
|
||||
{
|
||||
Name (BRIG, Package (22) {
|
||||
40, /* default AC */
|
||||
40, /* default Battery */
|
||||
5,
|
||||
10,
|
||||
15,
|
||||
20,
|
||||
25,
|
||||
30,
|
||||
35,
|
||||
40,
|
||||
45,
|
||||
50,
|
||||
55,
|
||||
60,
|
||||
65,
|
||||
70,
|
||||
75,
|
||||
80,
|
||||
85,
|
||||
90,
|
||||
95,
|
||||
100
|
||||
})
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user