Compare commits
	
		
			19 Commits
		
	
	
		
			4.18
			...
			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,11 +62,13 @@ chip soc/intel/cannonlake | ||||
| 			register "PcieClkSrcUsage[7]" = "0x40" | ||||
| 			register "PcieClkSrcClkReq[7]" = "7" | ||||
|  | ||||
| 			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 | ||||
| 		device pci 04.0 on  end # SA Thermal 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
		Reference in New Issue
	
	Block a user