drivers/gfx/nvidia: Misc fixes, some debugging
Change-Id: I072cd3db5859331a036ce7963a3607a56f53f37b Signed-off-by: Tim Crawford <tcrawford@system76.com>
This commit is contained in:
		@@ -10,7 +10,7 @@
 | 
				
			|||||||
#define GPS_FUNC_PSHARESTATUS		32
 | 
					#define GPS_FUNC_PSHARESTATUS		32
 | 
				
			||||||
#define GPS_FUNC_PSHAREPARAMS		42
 | 
					#define GPS_FUNC_PSHAREPARAMS		42
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Method (NVGB, 2, NotSerialized)
 | 
					Method (GPS, 2, Serialized)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	Printf("GPS {")
 | 
						Printf("GPS {")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -24,13 +24,13 @@ Method (NVGB, 2, NotSerialized)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		// Get current platform status, thermal budget
 | 
							// Get current platform status, thermal budget
 | 
				
			||||||
		Case (GPS_FUNC_PSHARESTATUS) {
 | 
							Case (GPS_FUNC_PSHARESTATUS) {
 | 
				
			||||||
			Printf("  GPS_FUNC_PSHARESTATUS")
 | 
								Printf("  GPS_FUNC_PSHARESTATUS: %o", ToHexString(Arg1))
 | 
				
			||||||
			Local0 = Buffer (4) { 0 }
 | 
								Local0 = Buffer (4) { 0 }
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Get GPU Boost platform parameters
 | 
							// Get GPU Boost platform parameters
 | 
				
			||||||
		Case (GPS_FUNC_PSHAREPARAMS) {
 | 
							Case (GPS_FUNC_PSHAREPARAMS) {
 | 
				
			||||||
			Printf("  GPS_FUNC_PSHAREPARAMS")
 | 
								Printf("  GPS_FUNC_PSHAREPARAMS: %o", ToHexString(Arg1))
 | 
				
			||||||
			CreateField (Arg1, 0, 3, QTYP)		// Query Type
 | 
								CreateField (Arg1, 0, 3, QTYP)		// Query Type
 | 
				
			||||||
			CreateField (Arg1, 8, 1, GTMP)		// GPU temperature status
 | 
								CreateField (Arg1, 8, 1, GTMP)		// GPU temperature status
 | 
				
			||||||
			CreateField (Arg1, 9, 1, CTMP)		// CPU temperature status
 | 
								CreateField (Arg1, 9, 1, CTMP)		// CPU temperature status
 | 
				
			||||||
@@ -44,6 +44,8 @@ Method (NVGB, 2, NotSerialized)
 | 
				
			|||||||
			VERS = 0x00010000
 | 
								VERS = 0x00010000
 | 
				
			||||||
			STAT = QTYP
 | 
								STAT = QTYP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								Printf("    Query Type = %o", ToInteger(QTYP))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			Switch (ToInteger(QTYP)) {
 | 
								Switch (ToInteger(QTYP)) {
 | 
				
			||||||
				// Get current status
 | 
									// Get current status
 | 
				
			||||||
				Case (0) {
 | 
									Case (0) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,11 +10,12 @@
 | 
				
			|||||||
#define GPS_REVISION_ID		0x200
 | 
					#define GPS_REVISION_ID		0x200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define JT_DSM_GUID		"CBECA351-067B-4924-9CBD-B46B00B86F34"
 | 
					#define JT_DSM_GUID		"CBECA351-067B-4924-9CBD-B46B00B86F34"
 | 
				
			||||||
#define JT_REVISION_ID		0x200
 | 
					#define JT_REVISION_ID		0x103
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define NVOP_DSM_GUID		"A486D8F8-0BDA-471B-A72B-6042A6B5BEE0"
 | 
					#define NVOP_DSM_GUID		"A486D8F8-0BDA-471B-A72B-6042A6B5BEE0"
 | 
				
			||||||
#define NVOP_REVISION_ID	0x100
 | 
					#define NVOP_REVISION_ID	0x100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 00:01.0
 | 
				
			||||||
Device (\_SB.PCI0.PEG0)
 | 
					Device (\_SB.PCI0.PEG0)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	Name (_ADR, CONFIG_DRIVERS_GFX_NVIDIA_BRIDGE << 16)
 | 
						Name (_ADR, CONFIG_DRIVERS_GFX_NVIDIA_BRIDGE << 16)
 | 
				
			||||||
@@ -24,12 +25,20 @@ Device (\_SB.PCI0.PEG0)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		Method (_ON)
 | 
							Method (_ON)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
								Printf("PEG0._ON {")
 | 
				
			||||||
 | 
								// TODO: Check for deferred GCx action
 | 
				
			||||||
 | 
								\_SB.PCI0.PEG0.DGPU._ON()
 | 
				
			||||||
			_STA = 1
 | 
								_STA = 1
 | 
				
			||||||
 | 
								Printf("} PEG0._ON")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Method (_OFF)
 | 
							Method (_OFF)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
								Printf("PEG0._OFF {")
 | 
				
			||||||
 | 
								// TODO: Check for deferred GCx action
 | 
				
			||||||
 | 
								\_SB.PCI0.PEG0.DGPU._OFF()
 | 
				
			||||||
			_STA = 0
 | 
								_STA = 0
 | 
				
			||||||
 | 
								Printf("} PEG0._OFF")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -37,15 +46,13 @@ Device (\_SB.PCI0.PEG0)
 | 
				
			|||||||
	Name (_PR3, Package () { PWRR })
 | 
						Name (_PR3, Package () { PWRR })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 01:00.0
 | 
				
			||||||
Device (\_SB.PCI0.PEG0.DGPU)
 | 
					Device (\_SB.PCI0.PEG0.DGPU)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	Name(_ADR, 0x00000000)
 | 
						Name(_ADR, 0x00000000)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// GPU Power
 | 
						Name (GPWR, 0)		// GPU Power
 | 
				
			||||||
	Name (GPWR, 0)
 | 
						Name (GCST, 6)		// GCx State
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// GCx State
 | 
					 | 
				
			||||||
	Name (GCST, 0)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// For supporting Hybrid Graphics, the package refers to the PCIe controller
 | 
						// For supporting Hybrid Graphics, the package refers to the PCIe controller
 | 
				
			||||||
	// itself, which leverages GC6 Control methods under the dGPU namespace.
 | 
						// itself, which leverages GC6 Control methods under the dGPU namespace.
 | 
				
			||||||
@@ -54,6 +61,7 @@ Device (\_SB.PCI0.PEG0.DGPU)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	Method (_STA)
 | 
						Method (_STA)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
							Printf("DGPU._STA")
 | 
				
			||||||
		/*
 | 
							/*
 | 
				
			||||||
		 * Only return "On" when:
 | 
							 * Only return "On" when:
 | 
				
			||||||
		 * - GPU power is good
 | 
							 * - GPU power is good
 | 
				
			||||||
@@ -70,7 +78,7 @@ Device (\_SB.PCI0.PEG0.DGPU)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	Method (_ON)
 | 
						Method (_ON)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		Printf("_ON {")
 | 
							Printf("DGPU._ON {")
 | 
				
			||||||
		Printf("  Enable GPU power")
 | 
							Printf("  Enable GPU power")
 | 
				
			||||||
		STXS(DGPU_PWR_EN)
 | 
							STXS(DGPU_PWR_EN)
 | 
				
			||||||
		Sleep(10)
 | 
							Sleep(10)
 | 
				
			||||||
@@ -80,12 +88,13 @@ Device (\_SB.PCI0.PEG0.DGPU)
 | 
				
			|||||||
		Sleep(10)
 | 
							Sleep(10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		GPWR = 1
 | 
							GPWR = 1
 | 
				
			||||||
		Printf("} _ON")
 | 
							GCST = 0
 | 
				
			||||||
 | 
							Printf("} DGPU._ON")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Method (_OFF)
 | 
						Method (_OFF)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		Printf("_OFF {")
 | 
							Printf("DGPU._OFF {")
 | 
				
			||||||
		Printf("  Put GPU in reset")
 | 
							Printf("  Put GPU in reset")
 | 
				
			||||||
		CTXS(DGPU_RST_N)
 | 
							CTXS(DGPU_RST_N)
 | 
				
			||||||
		Sleep(10)
 | 
							Sleep(10)
 | 
				
			||||||
@@ -95,36 +104,57 @@ Device (\_SB.PCI0.PEG0.DGPU)
 | 
				
			|||||||
		Sleep(10)
 | 
							Sleep(10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		GPWR = 0
 | 
							GPWR = 0
 | 
				
			||||||
		Printf("} _OFF")
 | 
							GCST = 6
 | 
				
			||||||
 | 
							Printf("} DGPU._OFF")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Method (_PS0)
 | 
						Method (_PS0)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		// XGXS, XGIS, XCLM
 | 
							// XGXS, XGIS, XCLM
 | 
				
			||||||
 | 
							Printf("_PS0 {}")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Method (_PS3)
 | 
						Method (_PS3)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		// EGNS, EGIS, EGIN
 | 
							// EGNS, EGIS, EGIN
 | 
				
			||||||
 | 
							Printf("_PS3 {}")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Method (_DSM, 4, NotSerialized)
 | 
						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
 | 
							// NVIDIA GPU Boost
 | 
				
			||||||
		If (Arg0 == ToUUID(GPS_DSM_GUID)) {
 | 
							If (Arg0 == ToUUID(GPS_DSM_GUID)) {
 | 
				
			||||||
 | 
								Printf("GPS_DSM_GUID")
 | 
				
			||||||
			If (Arg1 <= GPS_REVISION_ID) {
 | 
								If (Arg1 <= GPS_REVISION_ID) {
 | 
				
			||||||
				Return(NVGB(Arg2, Arg3))
 | 
									Return(GPS(Arg2, Arg3))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// NVIDIA Low Power States
 | 
							// NVIDIA Low Power States
 | 
				
			||||||
		If (Arg0 == ToUUID(JT_DSM_GUID)) {
 | 
							If (Arg0 == ToUUID(JT_DSM_GUID)) {
 | 
				
			||||||
 | 
								Printf("JT_DSM_GUID")
 | 
				
			||||||
			If (Arg1 <= JT_REVISION_ID) {
 | 
								If (Arg1 <= JT_REVISION_ID) {
 | 
				
			||||||
				Return(NVJT(Arg2, Arg3))
 | 
									Return(NVJT(Arg2, Arg3))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Printf("Unsupported GUID")
 | 
							// 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)
 | 
							Return(NVIDIA_ERROR_UNSUPPORTED)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,19 +7,20 @@
 | 
				
			|||||||
#define JT_FUNC_POWERCONTROL	3
 | 
					#define JT_FUNC_POWERCONTROL	3
 | 
				
			||||||
#define JT_FUNC_PLATPOLICY	4
 | 
					#define JT_FUNC_PLATPOLICY	4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Method (NVJT, 2, NotSerialized)
 | 
					Method (NVJT, 2, Serialized)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	Printf("NVJT {")
 | 
						Printf("NVJT {")
 | 
				
			||||||
	Switch (ToInteger(Arg0)) {
 | 
						Switch (ToInteger(Arg0)) {
 | 
				
			||||||
		Case (JT_FUNC_SUPPORT) {
 | 
							Case (JT_FUNC_SUPPORT) {
 | 
				
			||||||
			Printf("  JT_FUNC_SUPPORT");
 | 
								Printf("  JT_FUNC_SUPPORT");
 | 
				
			||||||
			// Functions supported: 0, 1, 3, 4
 | 
								// Functions supported: 0, 1, 3, 4
 | 
				
			||||||
			Local0 = Buffer() { 0x1B, 0, 0, 0 }
 | 
								//Local0 = Buffer() { 0x1B, 0, 0, 0 }
 | 
				
			||||||
 | 
								Local0 = Buffer() { 0x13, 0, 0, 0 }
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Case (JT_FUNC_CAPS) {
 | 
							Case (JT_FUNC_CAPS) {
 | 
				
			||||||
			Printf("  JT_FUNC_CAPS");
 | 
								Printf("  JT_FUNC_CAPS");
 | 
				
			||||||
			Local0 = Buffer(4) { 0, 0, 0, 0 }
 | 
								Local0 = Buffer(4) { 0 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// G-SYNC NVSR Power Features
 | 
								// G-SYNC NVSR Power Features
 | 
				
			||||||
			CreateField (Local0, 0, 1, JTEN)
 | 
								CreateField (Local0, 0, 1, JTEN)
 | 
				
			||||||
@@ -78,7 +79,7 @@ Method (NVJT, 2, NotSerialized)
 | 
				
			|||||||
			GSW = 0
 | 
								GSW = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// Maximum Revision Supported
 | 
								// Maximum Revision Supported
 | 
				
			||||||
			CreateField (Local0, 20, 16, MXRV)
 | 
								CreateField (Local0, 20, 12, MXRV)
 | 
				
			||||||
			MXRV = JT_REVISION_ID
 | 
								MXRV = JT_REVISION_ID
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -89,7 +90,7 @@ Method (NVJT, 2, NotSerialized)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Case (JT_FUNC_PLATPOLICY) {
 | 
							Case (JT_FUNC_PLATPOLICY) {
 | 
				
			||||||
			Printf("  JT_FUNC_PLATPOLICY");
 | 
								Printf("  JT_FUNC_PLATPOLICY: %o", ToHexString(Arg1));
 | 
				
			||||||
			//CreateField (Arg1, 2, 1, AUD)		// Azalia Audio Device
 | 
								//CreateField (Arg1, 2, 1, AUD)		// Azalia Audio Device
 | 
				
			||||||
			//CreateField (Arg1, 3, 1, ADM)		// Audio Disable Mask
 | 
								//CreateField (Arg1, 3, 1, ADM)		// Audio Disable Mask
 | 
				
			||||||
			//CreateField (Arg1, 4, 4, DGS)		// Driver expected State Mask
 | 
								//CreateField (Arg1, 4, 4, DGS)		// Driver expected State Mask
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user