145 lines
4.0 KiB
Plaintext
145 lines
4.0 KiB
Plaintext
/** @file
|
|
|
|
;******************************************************************************
|
|
;* Copyright (c) 2020 - 2021, Insyde Software Corp. All Rights Reserved.
|
|
;*
|
|
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
|
|
;* transmit, broadcast, present, recite, release, license or otherwise exploit
|
|
;* any part of this publication in any form, by any means, without the prior
|
|
;* written permission of Insyde Software Corporation.
|
|
;*
|
|
;******************************************************************************
|
|
*/
|
|
|
|
/*
|
|
== Readme ==
|
|
For NVIDIA general support, SBIOS has to set below GPIO config:
|
|
- Please search keyword: IBV_customize and OEM_customize to match platform design
|
|
*/
|
|
|
|
Scope (DGPU_BRIDGE_SCOPE)
|
|
{
|
|
OperationRegion (RPCX, SystemMemory, PCI_SCOPE.DGBA, 0x1000) // PEG Root Port.
|
|
Field (RPCX, DWordAcc, NoLock, Preserve)
|
|
{
|
|
Offset (0x04),
|
|
CMDR, 8, // Command Register
|
|
Offset (0x4A), // Device Status Register
|
|
CEDR, 1,
|
|
Offset (0x69), // Device Control2 Register
|
|
, 2,
|
|
LREN, 1,
|
|
Offset (0xA4),
|
|
D0ST, 2,
|
|
}
|
|
|
|
/* GSTA: Get dGPU Power state
|
|
* Arguments: (0)
|
|
* None
|
|
*
|
|
* Return: Zero: Current Power state is OFF
|
|
* One: Current Power state is ON
|
|
*
|
|
* Note: OEM_customize need to add PWR_OK pin GPIO number for "PWOK".
|
|
* Or figure out different approach to get dGPU power state,
|
|
* like PXE_RST pin (PWR_EN does not recommend due to GC6 no control it).
|
|
*/
|
|
Method (GSTA, 0, NotSerialized)
|
|
{
|
|
If(LEqual(\_SB.GGIV(DGPU_SCOPE.PWGD), Zero)) //OEM_customize
|
|
{
|
|
Return (Zero) // retrun dGPU Off
|
|
}
|
|
Else
|
|
{
|
|
Return (One) // retrun dGPU On
|
|
}
|
|
}
|
|
}
|
|
|
|
Scope (DGPU_SCOPE)
|
|
{
|
|
Name (LTRE, Zero) // Buffer for LTR Save/Restore
|
|
|
|
Method (_STA, 0)
|
|
{
|
|
Return (0x0F)
|
|
}
|
|
|
|
OperationRegion (PCIM, SystemMemory, PCI_SCOPE.DGDA, 0x1000) // dGPU
|
|
Field (PCIM, DWordAcc, NoLock, Preserve)
|
|
{
|
|
NVID, 16,
|
|
NDID, 16,
|
|
CMDR, 8,
|
|
VGAR, 2008,
|
|
Offset (0x48B),
|
|
, 1,
|
|
HDAE, 1
|
|
}
|
|
|
|
OperationRegion (DGPU, SystemMemory, PCI_SCOPE.DGDA, 0x100) // dGPU
|
|
Field (DGPU, DWordAcc, NoLock, Preserve)
|
|
{
|
|
Offset (0x40), // Offset(64)
|
|
SSSV, 32
|
|
}
|
|
|
|
Method (_DSM, 4, Serialized)
|
|
{
|
|
//
|
|
// Check for Nvidia Optimus _DSM UUID
|
|
//
|
|
// NVOP_DSM_GUID {A486D8F8-0BDA-471B-A72B-6042A6B5BEE0}
|
|
If (LEqual (Arg0, ToUUID ("A486D8F8-0BDA-471B-A72B-6042A6B5BEE0")))
|
|
{
|
|
Return (DGPU_SCOPE.NVOP (Arg0, Arg1, Arg2, Arg3))
|
|
}
|
|
|
|
//
|
|
// Check for Nvidia GPS _DSM UUID
|
|
//
|
|
// GPS_DSM_GUID {A3132D01-8CDA-49BA-A52E-BC9D46DF6B81}
|
|
If (LEqual (Arg0, ToUUID ("A3132D01-8CDA-49BA-A52E-BC9D46DF6B81")))
|
|
{
|
|
If (LNotEqual (DGPU_SCOPE.GPSS, Zero))
|
|
{
|
|
Return (DGPU_SCOPE.GPS (Arg0, Arg1, Arg2, Arg3))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Check for Nvidia GC6 _DSM UUID
|
|
//
|
|
// GC6_DSM_GUID {CBECA351-067B-4924-9CBD-B46B00B86F34}
|
|
If (LEqual (Arg0, ToUUID ("CBECA351-067B-4924-9CBD-B46B00B86F34")))
|
|
{
|
|
If (LNotEqual (DGPU_SCOPE.GC6S, Zero))
|
|
{
|
|
Return (DGPU_SCOPE.NVJT (Arg0, Arg1, Arg2, Arg3))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Check for Nvidia NBCI _DSM UUID
|
|
//
|
|
// NBCI_DSM_GUID {D4A50B75-65C7-46F7-BFB7-41514CEA0244}
|
|
If (LEqual (Arg0, ToUUID ("D4A50B75-65C7-46F7-BFB7-41514CEA0244")))
|
|
{
|
|
If (LNotEqual (DGPU_SCOPE.NBCS, Zero))
|
|
{
|
|
Return (DGPU_SCOPE.NBCI (Arg0, Arg1, Arg2, Arg3))
|
|
}
|
|
}
|
|
|
|
//
|
|
// Check for MXM _DSM UUID
|
|
//
|
|
If (LEqual (Arg0, ToUUID ("4004A400-917D-4cf2-B89C-79B62FD55665")))
|
|
{
|
|
Return (DGPU_SCOPE.MXM (Arg0, Arg1, Arg2, Arg3))
|
|
}
|
|
|
|
Return (STATUS_ERROR_UNSPECIFIED)
|
|
}
|
|
} |