blob: ebaeaecd255a01e60de540e5605f04a45d2e44f5 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-or-later */
External (\_SB.PCI0.PEG0.PEGP.NPON, MethodObj)
External (\_SB.PCI0.PEG0.PEGP.NPOF, MethodObj)
OperationRegion (PCIC, PCI_Config, 0x00, 0x100)
Field (PCIC, AnyAcc, NoLock, Preserve)
{
Offset (0x4a),
CEDR, 1, /* Correctable Error Detected, RW/1C/V */
Offset (0x52),
, 13,
LASX, 1, /* Link Active Status */
Offset (0x69),
, 2,
LREN, 1, /* LTR Enabled */
Offset (0xe0),
, 7,
NCB7, 1, /* Scratch bit to save L2/3 state */
Offset (0xe2),
, 2,
L23E, 1, /* L23_Rdy Entry request */
L23R, 1 /* L23_Rdy Detect Transition */
}
/* L2/3 Entry sequence */
Method (DL23, 0, Serialized)
{
L23E = 1
Local0 = 8
While (Local0 > 0)
{
If (!L23E)
{
Break
}
Sleep (2)
Local0--
}
NCB7 = 1
}
/* L2/3 exit seqeuence */
Method (LD23, 0, Serialized)
{
If (!NCB7)
{
Return
}
L23R = 1
Local0 = 20
While (Local0 > 0)
{
If (!L23R)
{
Break
}
Sleep (2)
Local0--
}
NCB7 = 0
Local0 = 8
While (Local0 > 0)
{
If (LASX == 1)
{
Break
}
Sleep (2)
Local0--
}
}
/* PEG Power Resource */
PowerResource (PGPR, 0, 0)
{
Method (_ON, 0, Serialized)
{
/* Power up GPU from GCOFF (or GC6 exit if deferred) */
\_SB.PCI0.PEG0.PEGP.NPON ()
_STA = 1
}
Method (_OFF, 0, Serialized)
{
/* Power down GPU to GCOFF (or GC6 entry if deferred) */
_STA = 0
\_SB.PCI0.PEG0.PEGP.NPOF ()
}
Name (_STA, 0)
}
Name (_PR0, Package() { PGPR })
Name (_PR2, Package() { PGPR })
Name (_PR3, Package() { PGPR })