/* * 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 ssdt16.dat, Tue Jul 9 08:32:00 2024 * * Original Table Header: * Signature "SSDT" * Length 0x000006F4 (1780) * Revision 0x02 * Checksum 0x9E * OEM ID "LENOVO" * OEM Table ID "UsbCTabl" * OEM Revision 0x00000001 (1) * Compiler ID "INTL" * Compiler Version 0x20180313 (538444563) */ DefinitionBlock ("", "SSDT", 2, "LENOVO", "UsbCTabl", 0x00000001) { External (_SB_.PCI0.LPC0.EC0_, DeviceObj) Scope (\_SB) { OperationRegion (SUSC, SystemMemory, 0xFEEC2100, 0x30) Field (SUSC, ByteAcc, Lock, Preserve) { SCMD, 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, Offset (0x2E), Offset (0x2F), Offset (0x30) } 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 Name (_DEP, Package (0x01) // _DEP: Dependencies { \_SB.PCI0.LPC0.EC0 }) Device (CR01) { Name (_ADR, 0x00) // _ADR: Address Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities { Return (Package (0x04) { 0xFF, 0x09, 0x00, 0x00 }) } Method (_PLD, 0, NotSerialized) // _PLD: Physical Location of Device { Return (Package (0x01) { Buffer (0x14) { /* 0000 */ 0x82, 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0x00, // ........ /* 0008 */ 0x51, 0x04, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, // Q....... /* 0010 */ 0xFF, 0xFF, 0xFF, 0xFF // .... } }) } } Device (CR02) { Name (_ADR, 0x01) // _ADR: Address Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities { Return (Package (0x04) { 0xFF, 0x09, 0x00, 0x00 }) } Method (_PLD, 0, NotSerialized) // _PLD: Physical Location of Device { Return (Package (0x01) { Buffer (0x14) { /* 0000 */ 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........ /* 0008 */ 0x59, 0x04, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, // Y....... /* 0010 */ 0xFF, 0xFF, 0xFF, 0xFF // .... } }) } } Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { Name (RBUF, ResourceTemplate () { Memory32Fixed (ReadWrite, 0x1BB11000, // Address Base 0x00001000, // Address Length ) }) Return (RBUF) /* \_SB_.UBTC._CRS.RBUF */ } Method (_STA, 0, NotSerialized) // _STA: Status { Return (0x0F) } OperationRegion (USBC, SystemMemory, 0x1BB11000, 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 } Mutex (UBSY, 0x00) Method (SECM, 1, Serialized) { Local0 = 0x64 While (((\_SB.SCMD != 0x00) && (Local0 != 0x00))) { Sleep (0x01) Local0-- } \_SB.SCMD = Arg0 If ((Arg0 == 0x02)) { Local0 = 0x64 While (((\_SB.SCMD != 0x00) && (Local0 != 0x00))) { Sleep (0x01) Local0-- } } } Method (ECWR, 0, Serialized) { Acquire (UBSY, 0xFFFF) \_SB.MGO0 = MGO0 /* \_SB_.UBTC.MGO0 */ \_SB.MGO1 = MGO1 /* \_SB_.UBTC.MGO1 */ \_SB.MGO2 = MGO2 /* \_SB_.UBTC.MGO2 */ \_SB.MGO3 = MGO3 /* \_SB_.UBTC.MGO3 */ \_SB.MGO4 = MGO4 /* \_SB_.UBTC.MGO4 */ \_SB.MGO5 = MGO5 /* \_SB_.UBTC.MGO5 */ \_SB.MGO6 = MGO6 /* \_SB_.UBTC.MGO6 */ \_SB.MGO7 = MGO7 /* \_SB_.UBTC.MGO7 */ \_SB.MGO8 = MGO8 /* \_SB_.UBTC.MGO8 */ \_SB.MGO9 = MGO9 /* \_SB_.UBTC.MGO9 */ \_SB.MGOA = MGOA /* \_SB_.UBTC.MGOA */ \_SB.MGOB = MGOB /* \_SB_.UBTC.MGOB */ \_SB.MGOC = MGOC /* \_SB_.UBTC.MGOC */ \_SB.MGOD = MGOD /* \_SB_.UBTC.MGOD */ \_SB.MGOE = MGOE /* \_SB_.UBTC.MGOE */ \_SB.MGOF = MGOF /* \_SB_.UBTC.MGOF */ \_SB.CTL0 = CTL0 /* \_SB_.UBTC.CTL0 */ \_SB.CTL1 = CTL1 /* \_SB_.UBTC.CTL1 */ \_SB.CTL2 = CTL2 /* \_SB_.UBTC.CTL2 */ \_SB.CTL3 = CTL3 /* \_SB_.UBTC.CTL3 */ \_SB.CTL4 = CTL4 /* \_SB_.UBTC.CTL4 */ \_SB.CTL5 = CTL5 /* \_SB_.UBTC.CTL5 */ \_SB.CTL6 = CTL6 /* \_SB_.UBTC.CTL6 */ \_SB.CTL7 = CTL7 /* \_SB_.UBTC.CTL7 */ Sleep (0x19) SECM (0x01) Release (UBSY) } Method (ECRD, 0, Serialized) { Acquire (UBSY, 0xFFFF) SECM (0x02) Sleep (0x19) MGI0 = \_SB.MGI0 MGI1 = \_SB.MGI1 MGI2 = \_SB.MGI2 MGI3 = \_SB.MGI3 MGI4 = \_SB.MGI4 MGI5 = \_SB.MGI5 MGI6 = \_SB.MGI6 MGI7 = \_SB.MGI7 MGI8 = \_SB.MGI8 MGI9 = \_SB.MGI9 MGIA = \_SB.MGIA MGIB = \_SB.MGIB MGIC = \_SB.MGIC MGID = \_SB.MGID MGIE = \_SB.MGIE MGIF = \_SB.MGIF CCI0 = \_SB.CCI0 CCI1 = \_SB.CCI1 CCI2 = \_SB.CCI2 CCI3 = \_SB.CCI3 Release (UBSY) } Method (NTFY, 0, Serialized) { ECRD () Sleep (0x01) Notify (\_SB.UBTC, 0x80) // Status Change } Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method { If ((Arg0 == ToUUID ("6f8398c2-7ca4-11e4-ad36-631042b5008f") /* Unknown UUID */)) { If ((ToInteger (Arg2) == 0x00)) { Return (Buffer (0x01) { 0x0F // . }) } ElseIf ((ToInteger (Arg2) == 0x01)) { ECWR () } ElseIf ((ToInteger (Arg2) == 0x02)) { ECRD () } } Return (0x00) } } } }