You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

329 lines
10 KiB

/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20220331 (64-bit version)
* Copyright (c) 2000 - 2022 Intel Corporation
*
* Disassembling to symbolic ASL+ operators
*
* Disassembly of ssdt15.dat, Thu Sep 1 23:24:17 2022
*
* Original Table Header:
* Signature "SSDT"
* Length 0x00000573 (1395)
* Revision 0x01
* Checksum 0x8D
* OEM ID "LENOVO"
* OEM Table ID "CB-01 "
* OEM Revision 0x00000001 (1)
* Compiler ID "ACPI"
* Compiler Version 0x00040000 (262144)
*/
DefinitionBlock ("", "SSDT", 1, "LENOVO", "CB-01 ", 0x00000001)
{
Scope (\_SB)
{
Device (ACDC)
{
Name (_HID, "ACPI000E" /* Time and Alarm Device */) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
GpioInt (Edge, ActiveLow, SharedAndWake, PullUp, 0x0BB8,
"\\_SB.GPIO", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0034
}
})
OperationRegion (CMOP, SystemMemory, 0xFED81D00, 0x0100)
Field (CMOP, DWordAcc, NoLock, Preserve)
{
ATVE, 32,
AETP, 32,
ATED, 1,
ATWP, 1,
Offset (0x10),
DTVE, 32,
DETP, 32,
DTED, 1,
DTWP, 1,
Offset (0x20),
BUSY, 1,
Offset (0x21),
ATEE, 1,
DTEE, 1
}
Method (_INI, 0, NotSerialized) // _INI: Initialize
{
ATEE = One
DTEE = One
}
Method (AINT, 0, NotSerialized)
{
ATEE = One
}
Method (DINT, 0, NotSerialized)
{
DTEE = One
}
Method (_GCP, 0, NotSerialized) // _GCP: Get Capabilities
{
Return (0xA7)
}
Method (_STP, 2, NotSerialized) // _STP: Set Expired Timer Wake Policy
{
If ((Arg0 == Zero))
{
AETP = Arg1
}
Else
{
DETP = Arg1
}
Return (Zero)
}
Method (_TIP, 1, NotSerialized) // _TIP: Expired Timer Wake Policy
{
If ((Arg0 == Zero))
{
Local0 = AETP /* \_SB_.ACDC.AETP */
}
Else
{
Local0 = DETP /* \_SB_.ACDC.DETP */
}
Return (Local0)
}
Method (_STV, 2, NotSerialized) // _STV: Set Timer Value
{
If ((Arg0 == Zero))
{
AINT ()
ATVE = Arg1
}
Else
{
DINT ()
DTVE = Arg1
}
Return (Zero)
}
Method (_TIV, 1, NotSerialized) // _TIV: Timer Values
{
If ((Arg0 == Zero))
{
Local0 = ATVE /* \_SB_.ACDC.ATVE */
}
Else
{
Local0 = DTVE /* \_SB_.ACDC.DTVE */
}
Return (Local0)
}
Method (_GWS, 1, NotSerialized) // _GWS: Get Wake Status
{
If ((Arg0 == Zero))
{
Local0 = (ATWP << One)
Local0 |= ATED /* \_SB_.ACDC.ATED */
}
Else
{
Local0 = (DTWP << One)
Local0 |= DTED /* \_SB_.ACDC.DTED */
}
Return (Local0)
}
Method (_CWS, 1, NotSerialized) // _CWS: Clear Wake Alarm Status
{
If ((Arg0 == Zero))
{
ATWP = One
}
Else
{
DTWP = One
}
Return (Zero)
}
OperationRegion (PM00, SystemMemory, 0xFED80300, 0x0100)
Field (PM00, AnyAcc, NoLock, Preserve)
{
Offset (0x56),
RCTL, 16
}
OperationRegion (RRTC, SystemIO, 0x72, 0x02)
Field (RRTC, ByteAcc, NoLock, Preserve)
{
RTCI, 8,
RTCD, 8
}
OperationRegion (CMOM, SystemMemory, 0xFED80700, 0x0100)
Field (CMOM, ByteAcc, NoLock, Preserve)
{
SECR, 8,
SECA, 8,
MINR, 8,
MINA, 8,
HONR, 8,
HONA, 8,
DYWR, 8,
DYMR, 8,
MONR, 8,
YARR, 8,
RTRA, 8,
RTRB, 8,
RTRC, 8,
RTDA, 8,
Offset (0x32),
RTAC, 8,
Offset (0x48),
RTCC, 8,
Offset (0x50),
ERAP, 8,
Offset (0x53),
ERDP, 8,
Offset (0x7E),
RTTC, 8,
RTRE, 8
}
Name (TZLI, 0xFF)
Name (TZVL, 0xFF)
Name (TZVH, 0xFF)
Name (LIVR, 0xFF)
Name (RBUF, Buffer (0x10)
{
/* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // ........
})
Mutex (RTCL, 0x00)
Method (_GRT, 0, Serialized) // _GRT: Get Real Time
{
CreateWordField (RBUF, Zero, YEAW)
CreateByteField (RBUF, 0x02, MONB)
CreateByteField (RBUF, 0x03, DAYB)
CreateByteField (RBUF, 0x04, HOUB)
CreateByteField (RBUF, 0x05, MINB)
CreateByteField (RBUF, 0x06, SECB)
CreateByteField (RBUF, 0x07, VALB)
CreateWordField (RBUF, 0x08, MILW)
CreateWordField (RBUF, 0x0A, TIMW)
CreateByteField (RBUF, 0x0C, LIGB)
Acquire (RTCL, 0xFFFF)
FromBCD (SECR, SECB) /* \_SB_.ACDC._GRT.SECB */
FromBCD (MINR, MINB) /* \_SB_.ACDC._GRT.MINB */
FromBCD (HONR, HOUB) /* \_SB_.ACDC._GRT.HOUB */
FromBCD (DYMR, DAYB) /* \_SB_.ACDC._GRT.DAYB */
FromBCD (MONR, MONB) /* \_SB_.ACDC._GRT.MONB */
FromBCD (YARR, YEAW) /* \_SB_.ACDC._GRT.YEAW */
If ((((RTRA & 0x10) != 0x10) && ((RCTL &
0x1000) == 0x1000)))
{
FromBCD (RTAC, Local0)
}
ElseIf (((RTRA & 0x10) == 0x10))
{
FromBCD (RTCC, Local0)
}
Else
{
CopyObject (0x14, Local0)
}
Local0 *= 0x64
YEAW += Local0 /* \_SB_.ACDC._GRT.YEAW */
If ((TZLI != 0xFF))
{
RTCI = TZVL /* \_SB_.ACDC.TZVL */
Local1 = RTCD /* \_SB_.ACDC.RTCD */
RTCI = TZVH /* \_SB_.ACDC.TZVH */
Local2 = (RTCD << 0x08)
Local2 |= Local1
RTCI = LIVR /* \_SB_.ACDC.LIVR */
Local3 = RTCD /* \_SB_.ACDC.RTCD */
TIMW = Local2
LIGB = Local3
}
Else
{
TIMW = 0x07FF
LIGB = Zero
}
MILW = One
VALB = One
Release (RTCL)
Return (RBUF) /* \_SB_.ACDC.RBUF */
}
Method (_SRT, 1, Serialized) // _SRT: Set Real Time
{
CreateWordField (Arg0, Zero, YEAW)
CreateByteField (Arg0, 0x02, MONB)
CreateByteField (Arg0, 0x03, DAYB)
CreateByteField (Arg0, 0x04, HOUB)
CreateByteField (Arg0, 0x05, MINB)
CreateByteField (Arg0, 0x06, SECB)
CreateWordField (Arg0, 0x08, MILW)
CreateWordField (Arg0, 0x0A, TIMW)
CreateByteField (Arg0, 0x0C, LIGB)
Acquire (RTCL, 0xFFFF)
Local2 = RTRB /* \_SB_.ACDC.RTRB */
RTRB |= 0x80
ToBCD (SECB, SECR) /* \_SB_.ACDC.SECR */
ToBCD (MINB, MINR) /* \_SB_.ACDC.MINR */
ToBCD (HOUB, HONR) /* \_SB_.ACDC.HONR */
ToBCD (DAYB, DYMR) /* \_SB_.ACDC.DYMR */
ToBCD (MONB, MONR) /* \_SB_.ACDC.MONR */
Divide (YEAW, 0x64, Local0, Local1)
ToBCD (Local0, YARR) /* \_SB_.ACDC.YARR */
If ((((RTRA & 0x10) != 0x10) && ((RCTL &
0x1000) == 0x1000)))
{
ToBCD (Local1, RTAC) /* \_SB_.ACDC.RTAC */
}
ElseIf (((RTRA & 0x10) == 0x10))
{
ToBCD (Local1, RTCC) /* \_SB_.ACDC.RTCC */
}
RTRB = Local2
If ((TZLI != 0xFF))
{
Local3 = (TIMW >> 0x08)
RTCI = TZVH /* \_SB_.ACDC.TZVH */
RTCD = Local3
Local3 = (TIMW & 0xFFFF)
RTCI = TZVL /* \_SB_.ACDC.TZVL */
RTCD = Local3
RTCI = LIVR /* \_SB_.ACDC.LIVR */
RTCD = LIGB /* \_SB_.ACDC._SRT.LIGB */
}
Release (RTCL)
Return (Zero)
}
}
}
}