/* * 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 ssdt25.dat, Thu Sep 1 23:24:17 2022 * * Original Table Header: * Signature "SSDT" * Length 0x00000471 (1137) * Revision 0x01 * Checksum 0xBF * 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 (TPM2) { Name (_HID, "MSFT0101" /* TPM 2.0 Security Device */) // _HID: Hardware ID Name (_CID, "MSFT0101" /* TPM 2.0 Security Device */) // _CID: Compatible ID Name (_STR, Unicode ("TPM 2.0 Device")) // _STR: Description String Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { Memory32Fixed (ReadWrite, 0x72ED2000, // Address Base 0x00004000, // Address Length ) Memory32Fixed (ReadWrite, 0x72ED6000, // Address Base 0x00004000, // Address Length ) }) OperationRegion (SMIP, SystemIO, 0xB0, One) Field (SMIP, ByteAcc, NoLock, Preserve) { IOB2, 8 } OperationRegion (TNVS, SystemMemory, 0x7AEB7000, 0x27) Field (TNVS, AnyAcc, NoLock, Preserve) { PPIN, 8, PPIP, 32, PPRP, 32, PPRQ, 32, PPRM, 32, LPPR, 32, FRET, 32, MCIN, 8, MCIP, 32, MORD, 32, MRET, 32, CAIN, 8 } OperationRegion (CONA, SystemMemory, 0x7AEB7027, 0x30) Field (CONA, DWordAcc, NoLock, Preserve) { HRTB, 32, ERRR, 32, CLFG, 32, STA1, 32, AccessAs (QWordAcc, 0x00), INTC, 64, AccessAs (DWordAcc, 0x00), CMSZ, 32, AccessAs (QWordAcc, 0x00), CMDB, 64, AccessAs (DWordAcc, 0x00), RPSZ, 32, AccessAs (QWordAcc, 0x00), RESP, 64 } Method (PTS, 1, Serialized) { If (((Arg0 < 0x06) && (Arg0 > 0x03))) { If (!(MORD & 0x10)) { MCIP = 0x02 IOB2 = MCIN /* \_SB_.TPM2.MCIN */ } } Sleep (0x64) Return (Zero) } Method (_STA, 0, NotSerialized) // _STA: Status { Return (0x0F) } Method (HINF, 3, Serialized) { Switch (ToInteger (Arg1)) { Case (Zero) { Return (Buffer (One) { 0x03 // . }) } Case (One) { Name (TPMV, Package (0x02) { One, Package (0x02) { 0x02, Zero } }) If ((_STA () == Zero)) { Return (Package (0x01) { Zero }) } Return (TPMV) /* \_SB_.TPM2.HINF.TPMV */ } Default { BreakPoint } } Return (Buffer (One) { 0x00 // . }) } Name (TPM2, Package (0x02) { Zero, Zero }) Name (TPM3, Package (0x03) { Zero, Zero, Zero }) Method (TPPI, 3, Serialized) { Switch (ToInteger (Arg1)) { Case (Zero) { Return (Buffer (0x02) { 0xFF, 0x01 // .. }) } Case (One) { Return ("1.3") } Case (0x02) { PPRQ = DerefOf (Arg2 [Zero]) PPIP = 0x02 IOB2 = PPIN /* \_SB_.TPM2.PPIN */ Return (FRET) /* \_SB_.TPM2.FRET */ } Case (0x03) { TPM2 [One] = PPRQ /* \_SB_.TPM2.PPRQ */ Return (TPM2) /* \_SB_.TPM2.TPM2 */ } Case (0x04) { Return (0x02) } Case (0x05) { PPIP = 0x05 IOB2 = PPIN /* \_SB_.TPM2.PPIN */ TPM3 [One] = LPPR /* \_SB_.TPM2.LPPR */ TPM3 [0x02] = PPRP /* \_SB_.TPM2.PPRP */ Return (TPM3) /* \_SB_.TPM2.TPM3 */ } Case (0x06) { Return (0x03) } Case (0x07) { PPIP = 0x07 PPRQ = DerefOf (Arg2 [Zero]) PPRM = Zero If ((PPRQ == 0x17)) { PPRM = DerefOf (Arg2 [One]) } IOB2 = PPIN /* \_SB_.TPM2.PPIN */ Return (FRET) /* \_SB_.TPM2.FRET */ } Case (0x08) { PPIP = 0x08 PPRQ = DerefOf (Arg2 [Zero]) IOB2 = PPIN /* \_SB_.TPM2.PPIN */ Return (FRET) /* \_SB_.TPM2.FRET */ } Default { BreakPoint } } Return (One) } Method (TMCI, 3, Serialized) { Switch (ToInteger (Arg1)) { Case (Zero) { Return (Buffer (One) { 0x03 // . }) } Case (One) { MORD = DerefOf (Arg2 [Zero]) MCIP = One IOB2 = MCIN /* \_SB_.TPM2.MCIN */ Return (MRET) /* \_SB_.TPM2.MRET */ } Default { BreakPoint } } Return (One) } Method (OASM, 3, Serialized) { Switch (ToInteger (Arg1)) { Case (Zero) { Return (Buffer (One) { 0x03 // . }) } Case (One) { Return (Zero) } Default { BreakPoint } } Return (One) } Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method { If ((Arg0 == ToUUID ("cf8e16a5-c1e8-4e25-b712-4f54a96702c8") /* Unknown UUID */)) { Return (HINF (Arg1, Arg2, Arg3)) } If ((Arg0 == ToUUID ("3dddfaa6-361b-4eb4-a424-8d10089d1653") /* Physical Presence Interface */)) { Return (TPPI (Arg1, Arg2, Arg3)) } If ((Arg0 == ToUUID ("376054ed-cc13-4675-901c-4756d7f2d45d") /* Unknown UUID */)) { Return (TMCI (Arg1, Arg2, Arg3)) } If ((Arg0 == ToUUID ("6bbf6cab-5463-4714-b7cd-f0203c0368d4") /* Unknown UUID */)) { Return (OASM (Arg1, Arg2, Arg3)) } Return (Buffer (One) { 0x00 // . }) } } } }