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.
547 lines
18 KiB
547 lines
18 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 ssdt18.dat, Thu Sep 1 23:24:17 2022
|
|
*
|
|
* Original Table Header:
|
|
* Signature "SSDT"
|
|
* Length 0x00000906 (2310)
|
|
* Revision 0x01
|
|
* Checksum 0x89
|
|
* 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)
|
|
{
|
|
External (_SB_.PCI0.LPC0.EC0_, DeviceObj)
|
|
External (_SB_.PCI0.LPC0.EC0_.ECAV, UnknownObj)
|
|
External (_SB_.PCI0.LPC0.EC0_.LFCM, UnknownObj)
|
|
External (_SB_.PCI0.LPC0.EC0_.WECM, MethodObj) // 2 Arguments
|
|
|
|
Scope (\_SB.PCI0.LPC0.EC0)
|
|
{
|
|
Method (_Q4F, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
|
|
{
|
|
\_SB.UBTC.NTFY ()
|
|
}
|
|
}
|
|
|
|
Scope (\_SB)
|
|
{
|
|
Device (UBTC)
|
|
{
|
|
Name (_HID, EisaId ("USBC000")) // _HID: Hardware ID
|
|
Name (_CID, EisaId ("PNP0CA0")) // _CID: Compatible ID
|
|
Name (_UID, Zero) // _UID: Unique ID
|
|
Name (_DDN, "USB Type C") // _DDN: DOS Device Name
|
|
Name (_ADR, Zero) // _ADR: Address
|
|
Method (_STA, 0, NotSerialized) // _STA: Status
|
|
{
|
|
Return (0x0F)
|
|
}
|
|
|
|
Method (_PS0, 0, Serialized) // _PS0: Power State 0
|
|
{
|
|
Sleep (0x03E8)
|
|
Sleep (0x01F4)
|
|
}
|
|
|
|
Method (_PS3, 0, Serialized) // _PS3: Power State 3
|
|
{
|
|
Sleep (0x03E8)
|
|
Sleep (0x64)
|
|
}
|
|
|
|
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
|
|
{
|
|
Name (RBUF, ResourceTemplate ()
|
|
{
|
|
Memory32Fixed (ReadWrite,
|
|
0x7AF66000, // Address Base
|
|
0x00001000, // Address Length
|
|
)
|
|
})
|
|
Return (RBUF) /* \_SB_.UBTC._CRS.RBUF */
|
|
}
|
|
|
|
OperationRegion (ECMS, SystemIO, 0x72, 0x02)
|
|
Field (ECMS, ByteAcc, Lock, Preserve)
|
|
{
|
|
INDX, 8,
|
|
DATA, 8
|
|
}
|
|
|
|
Method (RECM, 1, Serialized)
|
|
{
|
|
INDX = Arg0
|
|
Return (DATA) /* \_SB_.UBTC.DATA */
|
|
}
|
|
|
|
Method (WECM, 2, Serialized)
|
|
{
|
|
INDX = Arg0
|
|
DATA = Arg1
|
|
}
|
|
|
|
Device (CR01)
|
|
{
|
|
Name (_ADR, One) // _ADR: Address
|
|
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
|
|
{
|
|
0xFF,
|
|
0x09,
|
|
Zero,
|
|
Zero
|
|
})
|
|
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
|
|
{
|
|
ToPLD (
|
|
PLD_Revision = 0x2,
|
|
PLD_IgnoreColor = 0x1,
|
|
PLD_Red = 0x0,
|
|
PLD_Green = 0x0,
|
|
PLD_Blue = 0x0,
|
|
PLD_Width = 0x0,
|
|
PLD_Height = 0x0,
|
|
PLD_UserVisible = 0x1,
|
|
PLD_Dock = 0x0,
|
|
PLD_Lid = 0x0,
|
|
PLD_Panel = "UNKNOWN",
|
|
PLD_VerticalPosition = "UPPER",
|
|
PLD_HorizontalPosition = "LEFT",
|
|
PLD_Shape = "UNKNOWN",
|
|
PLD_GroupOrientation = 0x0,
|
|
PLD_GroupToken = 0x0,
|
|
PLD_GroupPosition = 0x2,
|
|
PLD_Bay = 0x0,
|
|
PLD_Ejectable = 0x0,
|
|
PLD_EjectRequired = 0x0,
|
|
PLD_CabinetNumber = 0x0,
|
|
PLD_CardCageNumber = 0x0,
|
|
PLD_Reference = 0x0,
|
|
PLD_Rotation = 0x0,
|
|
PLD_Order = 0x0,
|
|
PLD_VerticalOffset = 0xFFFF,
|
|
PLD_HorizontalOffset = 0xFFFF)
|
|
|
|
})
|
|
}
|
|
|
|
Device (CR02)
|
|
{
|
|
Name (_ADR, One) // _ADR: Address
|
|
Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities
|
|
{
|
|
0xFF,
|
|
0x09,
|
|
Zero,
|
|
Zero
|
|
})
|
|
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
|
|
{
|
|
ToPLD (
|
|
PLD_Revision = 0x2,
|
|
PLD_IgnoreColor = 0x1,
|
|
PLD_Red = 0x0,
|
|
PLD_Green = 0x0,
|
|
PLD_Blue = 0x0,
|
|
PLD_Width = 0x0,
|
|
PLD_Height = 0x0,
|
|
PLD_UserVisible = 0x1,
|
|
PLD_Dock = 0x0,
|
|
PLD_Lid = 0x0,
|
|
PLD_Panel = "UNKNOWN",
|
|
PLD_VerticalPosition = "UPPER",
|
|
PLD_HorizontalPosition = "LEFT",
|
|
PLD_Shape = "UNKNOWN",
|
|
PLD_GroupOrientation = 0x0,
|
|
PLD_GroupToken = 0x0,
|
|
PLD_GroupPosition = 0x6,
|
|
PLD_Bay = 0x0,
|
|
PLD_Ejectable = 0x0,
|
|
PLD_EjectRequired = 0x0,
|
|
PLD_CabinetNumber = 0x0,
|
|
PLD_CardCageNumber = 0x0,
|
|
PLD_Reference = 0x0,
|
|
PLD_Rotation = 0x0,
|
|
PLD_Order = 0x0,
|
|
PLD_VerticalOffset = 0xFFFF,
|
|
PLD_HorizontalOffset = 0xFFFF)
|
|
|
|
})
|
|
}
|
|
|
|
OperationRegion (USBC, SystemMemory, 0x7AF66000, 0x30)
|
|
Field (USBC, ByteAcc, Lock, Preserve)
|
|
{
|
|
VER1, 8,
|
|
VER2, 8,
|
|
RSV1, 8,
|
|
RSV2, 8,
|
|
CCI0, 8,
|
|
CCI1, 8,
|
|
CCI2, 8,
|
|
CCI3, 8,
|
|
CTL0, 8,
|
|
CTL1, 8,
|
|
CTL2, 8,
|
|
CTL3, 8,
|
|
CTL4, 8,
|
|
CTL5, 8,
|
|
CTL6, 8,
|
|
CTL7, 8,
|
|
MGI0, 8,
|
|
MGI1, 8,
|
|
MGI2, 8,
|
|
MGI3, 8,
|
|
MGI4, 8,
|
|
MGI5, 8,
|
|
MGI6, 8,
|
|
MGI7, 8,
|
|
MGI8, 8,
|
|
MGI9, 8,
|
|
MGIA, 8,
|
|
MGIB, 8,
|
|
MGIC, 8,
|
|
MGID, 8,
|
|
MGIE, 8,
|
|
MGIF, 8,
|
|
MGO0, 8,
|
|
MGO1, 8,
|
|
MGO2, 8,
|
|
MGO3, 8,
|
|
MGO4, 8,
|
|
MGO5, 8,
|
|
MGO6, 8,
|
|
MGO7, 8,
|
|
MGO8, 8,
|
|
MGO9, 8,
|
|
MGOA, 8,
|
|
MGOB, 8,
|
|
MGOC, 8,
|
|
MGOD, 8,
|
|
MGOE, 8,
|
|
MGOF, 8
|
|
}
|
|
|
|
OperationRegion (DBG0, SystemIO, 0x80, One)
|
|
Field (DBG0, ByteAcc, NoLock, Preserve)
|
|
{
|
|
IO80, 8
|
|
}
|
|
|
|
Method (NTFY, 0, Serialized)
|
|
{
|
|
IO80 = 0x4F
|
|
ECRD ()
|
|
Sleep (One)
|
|
Notify (\_SB.UBTC, 0x80) // Status Change
|
|
}
|
|
|
|
OperationRegion (H5FA, SystemMemory, 0xFE0B0421, One)
|
|
Field (H5FA, AnyAcc, Lock, Preserve)
|
|
{
|
|
HNTF, 8
|
|
}
|
|
|
|
OperationRegion (ECSM, SystemMemory, 0xFE0B0460, 0x30)
|
|
Field (ECSM, AnyAcc, Lock, Preserve)
|
|
{
|
|
HMPR, 8,
|
|
, 7,
|
|
HMDN, 1,
|
|
HADD, 8,
|
|
HCMD, 8,
|
|
HD00, 8,
|
|
HD01, 8,
|
|
HD02, 8,
|
|
HD03, 8,
|
|
HD04, 8,
|
|
HD05, 8,
|
|
HD06, 8,
|
|
HD07, 8,
|
|
HD08, 8,
|
|
HD09, 8,
|
|
HD0A, 8,
|
|
HD0B, 8,
|
|
HD0C, 8,
|
|
HD0D, 8,
|
|
HD0E, 8,
|
|
HD0F, 8,
|
|
Offset (0x24),
|
|
HCNT, 8
|
|
}
|
|
|
|
OperationRegion (ECSI, EmbeddedControl, Zero, 0x0100)
|
|
Field (ECSI, ByteAcc, NoLock, Preserve)
|
|
{
|
|
Offset (0x60),
|
|
EMPR, 8,
|
|
, 7,
|
|
EMDN, 1,
|
|
EADD, 8,
|
|
ECMD, 8,
|
|
ED00, 8,
|
|
ED01, 8,
|
|
ED02, 8,
|
|
ED03, 8,
|
|
ED04, 8,
|
|
ED05, 8,
|
|
ED06, 8,
|
|
ED07, 8,
|
|
ED08, 8,
|
|
ED09, 8,
|
|
ED0A, 8,
|
|
ED0B, 8,
|
|
ED0C, 8,
|
|
ED0D, 8,
|
|
ED0E, 8,
|
|
ED0F, 8,
|
|
Offset (0x84),
|
|
ECNT, 8
|
|
}
|
|
|
|
Method (CHKM, 0, NotSerialized)
|
|
{
|
|
Local0 = 0x03E8
|
|
While (HMPR)
|
|
{
|
|
Sleep (One)
|
|
Local0--
|
|
If (!Local0)
|
|
{
|
|
Return (0x8080)
|
|
}
|
|
}
|
|
|
|
If (HMDN)
|
|
{
|
|
Return (Zero)
|
|
}
|
|
|
|
Return (0x8081)
|
|
}
|
|
|
|
Method (CHKS, 0, NotSerialized)
|
|
{
|
|
Local0 = 0x03E8
|
|
While (EMPR)
|
|
{
|
|
Sleep (One)
|
|
Local0--
|
|
If (!Local0)
|
|
{
|
|
Return (0x8080)
|
|
}
|
|
}
|
|
|
|
If (EMDN)
|
|
{
|
|
Return (Zero)
|
|
}
|
|
|
|
Return (0x8081)
|
|
}
|
|
|
|
Name (RSTC, Zero)
|
|
Mutex (UBSY, 0x00)
|
|
Method (ECWR, 0, Serialized)
|
|
{
|
|
If (\_SB.PCI0.LPC0.EC0.ECAV)
|
|
{
|
|
If ((Acquire (\_SB.PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
|
|
{
|
|
Acquire (UBSY, 0xFFFF)
|
|
WECM (0x56, 0xAA)
|
|
IO80 = 0xB6
|
|
\_SB.PCI0.LPC0.EC0.WECM (0x4F, CTL0)
|
|
CHKM ()
|
|
HADD = 0x02
|
|
Sleep (One)
|
|
HCMD = 0x06
|
|
Sleep (One)
|
|
HD00 = MGO0 /* \_SB_.UBTC.MGO0 */
|
|
Sleep (One)
|
|
HD01 = MGO1 /* \_SB_.UBTC.MGO1 */
|
|
Sleep (One)
|
|
HD02 = MGO2 /* \_SB_.UBTC.MGO2 */
|
|
Sleep (One)
|
|
HD03 = MGO3 /* \_SB_.UBTC.MGO3 */
|
|
Sleep (One)
|
|
HD04 = MGO4 /* \_SB_.UBTC.MGO4 */
|
|
Sleep (One)
|
|
HD05 = MGO5 /* \_SB_.UBTC.MGO5 */
|
|
Sleep (One)
|
|
HD06 = MGO6 /* \_SB_.UBTC.MGO6 */
|
|
Sleep (One)
|
|
HD07 = MGO7 /* \_SB_.UBTC.MGO7 */
|
|
Sleep (One)
|
|
HD08 = MGO8 /* \_SB_.UBTC.MGO8 */
|
|
Sleep (One)
|
|
HD09 = MGO9 /* \_SB_.UBTC.MGO9 */
|
|
Sleep (One)
|
|
HD0A = MGOA /* \_SB_.UBTC.MGOA */
|
|
Sleep (One)
|
|
HD0B = MGOB /* \_SB_.UBTC.MGOB */
|
|
Sleep (One)
|
|
HD0C = MGOC /* \_SB_.UBTC.MGOC */
|
|
Sleep (One)
|
|
HD0D = MGOD /* \_SB_.UBTC.MGOD */
|
|
Sleep (One)
|
|
HD0E = MGOE /* \_SB_.UBTC.MGOE */
|
|
Sleep (One)
|
|
HD0F = MGOF /* \_SB_.UBTC.MGOF */
|
|
IO80 = 0xA1
|
|
HCNT = 0x10
|
|
Sleep (One)
|
|
EMPR = 0x0A
|
|
Sleep (One)
|
|
CHKM ()
|
|
HADD = 0x02
|
|
Sleep (One)
|
|
HCMD = 0x04
|
|
Sleep (One)
|
|
HD00 = CTL0 /* \_SB_.UBTC.CTL0 */
|
|
Sleep (One)
|
|
HD01 = CTL1 /* \_SB_.UBTC.CTL1 */
|
|
Sleep (One)
|
|
HD02 = CTL2 /* \_SB_.UBTC.CTL2 */
|
|
Sleep (One)
|
|
HD03 = CTL3 /* \_SB_.UBTC.CTL3 */
|
|
Sleep (One)
|
|
HD04 = CTL4 /* \_SB_.UBTC.CTL4 */
|
|
Sleep (One)
|
|
HD05 = CTL5 /* \_SB_.UBTC.CTL5 */
|
|
Sleep (One)
|
|
HD06 = CTL6 /* \_SB_.UBTC.CTL6 */
|
|
Sleep (One)
|
|
HD07 = CTL7 /* \_SB_.UBTC.CTL7 */
|
|
Sleep (One)
|
|
HCNT = 0x08
|
|
Sleep (One)
|
|
EMPR = 0x0A
|
|
Sleep (One)
|
|
CHKM ()
|
|
Release (UBSY)
|
|
Release (\_SB.PCI0.LPC0.EC0.LFCM)
|
|
}
|
|
}
|
|
}
|
|
|
|
Method (ECRD, 0, Serialized)
|
|
{
|
|
If (\_SB.PCI0.LPC0.EC0.ECAV)
|
|
{
|
|
If ((Acquire (\_SB.PCI0.LPC0.EC0.LFCM, 0xA000) == Zero))
|
|
{
|
|
Acquire (UBSY, 0xFFFF)
|
|
CHKM ()
|
|
HADD = 0x02
|
|
Sleep (One)
|
|
HCMD = 0x05
|
|
Sleep (One)
|
|
HCNT = 0x10
|
|
Sleep (One)
|
|
EMPR = 0x0B
|
|
Sleep (One)
|
|
Sleep (One)
|
|
CHKM ()
|
|
MGI0 = HD00 /* \_SB_.UBTC.HD00 */
|
|
Sleep (One)
|
|
MGI1 = HD01 /* \_SB_.UBTC.HD01 */
|
|
Sleep (One)
|
|
MGI2 = HD02 /* \_SB_.UBTC.HD02 */
|
|
Sleep (One)
|
|
MGI3 = HD03 /* \_SB_.UBTC.HD03 */
|
|
Sleep (One)
|
|
MGI4 = HD04 /* \_SB_.UBTC.HD04 */
|
|
Sleep (One)
|
|
MGI5 = HD05 /* \_SB_.UBTC.HD05 */
|
|
Sleep (One)
|
|
MGI6 = HD06 /* \_SB_.UBTC.HD06 */
|
|
Sleep (One)
|
|
MGI7 = HD07 /* \_SB_.UBTC.HD07 */
|
|
Sleep (One)
|
|
MGI8 = HD08 /* \_SB_.UBTC.HD08 */
|
|
Sleep (One)
|
|
MGI9 = HD09 /* \_SB_.UBTC.HD09 */
|
|
Sleep (One)
|
|
MGIA = HD0A /* \_SB_.UBTC.HD0A */
|
|
Sleep (One)
|
|
MGIB = HD0B /* \_SB_.UBTC.HD0B */
|
|
Sleep (One)
|
|
MGIC = HD0C /* \_SB_.UBTC.HD0C */
|
|
Sleep (One)
|
|
MGID = HD0D /* \_SB_.UBTC.HD0D */
|
|
Sleep (One)
|
|
MGIE = HD0E /* \_SB_.UBTC.HD0E */
|
|
Sleep (One)
|
|
MGIF = HD0F /* \_SB_.UBTC.HD0F */
|
|
CHKM ()
|
|
HADD = 0x02
|
|
Sleep (One)
|
|
HCMD = 0x03
|
|
Sleep (One)
|
|
HCNT = 0x04
|
|
Sleep (One)
|
|
EMPR = 0x0B
|
|
Sleep (One)
|
|
Sleep (One)
|
|
CHKM ()
|
|
CCI0 = HD00 /* \_SB_.UBTC.HD00 */
|
|
Sleep (One)
|
|
CCI1 = HD01 /* \_SB_.UBTC.HD01 */
|
|
Sleep (One)
|
|
CCI2 = HD02 /* \_SB_.UBTC.HD02 */
|
|
Sleep (One)
|
|
CCI3 = HD03 /* \_SB_.UBTC.HD03 */
|
|
Release (UBSY)
|
|
Release (\_SB.PCI0.LPC0.EC0.LFCM)
|
|
}
|
|
}
|
|
}
|
|
|
|
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
|
|
{
|
|
If ((Arg0 == ToUUID ("6f8398c2-7ca4-11e4-ad36-631042b5008f") /* Unknown UUID */))
|
|
{
|
|
If ((ToInteger (Arg2) == Zero))
|
|
{
|
|
Return (Buffer (One)
|
|
{
|
|
0x0F // .
|
|
})
|
|
}
|
|
ElseIf ((ToInteger (Arg2) == One))
|
|
{
|
|
WECM (0x56, 0xAA)
|
|
IO80 = 0xA8
|
|
ECWR ()
|
|
IO80 = 0xA9
|
|
}
|
|
ElseIf ((ToInteger (Arg2) == 0x02))
|
|
{
|
|
IO80 = 0xAA
|
|
ECRD ()
|
|
IO80 = 0xAB
|
|
}
|
|
Else
|
|
{
|
|
Return (Zero)
|
|
}
|
|
}
|
|
|
|
Return (Zero)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|