From 541cfcd3bb8920f5f91df82ac5a100efd74ba528 Mon Sep 17 00:00:00 2001 From: Marijan Limov Date: Sun, 22 Aug 2021 01:10:21 +0200 Subject: [PATCH] GPU beryllium - acpi side --- beryllium/DSDT.aml | Bin 0 -> 244174 bytes beryllium/DSDT.dsl | 58695 +++++++++++++++++++++++++++++ beryllium/adc.asl | 707 + beryllium/cust_adc.asl | 898 + beryllium/cust_pmic_batt.asl | 50 + beryllium/cust_thermal_zones.asl | 570 + beryllium/displayXML.asl | 342 + beryllium/pmic_batt.asl | 521 + beryllium/thz.asl | 557 + 9 files changed, 62340 insertions(+) create mode 100644 beryllium/DSDT.aml create mode 100644 beryllium/DSDT.dsl create mode 100644 beryllium/adc.asl create mode 100644 beryllium/cust_adc.asl create mode 100644 beryllium/cust_pmic_batt.asl create mode 100644 beryllium/cust_thermal_zones.asl create mode 100644 beryllium/displayXML.asl create mode 100644 beryllium/pmic_batt.asl create mode 100644 beryllium/thz.asl diff --git a/beryllium/DSDT.aml b/beryllium/DSDT.aml new file mode 100644 index 0000000000000000000000000000000000000000..24db902e40ec957f27eb0a0d9e3c8d2259336e91 GIT binary patch literal 244174 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 0x00020000)) + { + DerefOf (RBUF [0x04]) [0x0E] = P001 /* \_SB_.GPU0.PMCL.P001 */ + } + Else + { + DerefOf (RBUF [0x04]) [0x0E] = P002 /* \_SB_.GPU0.PMCL.P002 */ + } + + Return (RBUF) /* \_SB_.GPU0.PMCL.RBUF */ + } + + Method (_ROM, 3, NotSerialized) // _ROM: Read-Only Memory + { + Include("displayXML.asl") + + Local2 = PCFG /* \_SB_.GPU0._ROM.PCFG */ + If ((Arg0 >= SizeOf (Local2))) + { + Return (Buffer (One) + { + 0x00 // . + }) + } + Else + { + Local0 = Arg0 + } + + If ((Arg1 > 0x1000)) + { + Local1 = 0x1000 + } + Else + { + Local1 = Arg1 + } + + If (((Local0 + Local1) > SizeOf (Local2))) + { + Local1 = (SizeOf (Local2) - Local0) + } + + CreateField (Local2, (0x08 * Local0), (0x08 * Local1), RBUF) + Return (RBUF) /* \_SB_.GPU0._ROM.RBUF */ + } + + Method (PIGC, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.PIGC.RBUF */ + } + + Method (PPCC, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.PPCC.RBUF */ + } + + Method (PGCT, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.PGCT.RBUF */ + } + + Method (PLGC, 3, NotSerialized) + { + Name (TBUF, Buffer (One) + { + 0x00 // . + }) + If ((Arg1 >= SizeOf (TBUF))) + { + Return (Buffer (One) + { + 0x00 // . + }) + } + Else + { + Local1 = Arg1 + } + + If ((Arg2 > 0x1000)) + { + Local2 = 0x1000 + } + Else + { + Local2 = Arg2 + } + + If (((Local1 + Local2) > SizeOf (TBUF))) + { + Local2 = (SizeOf (TBUF) - Local1) + } + + CreateField (TBUF, (0x08 * Local1), (0x08 * Local2), RBUF) + Return (RBUF) /* \_SB_.GPU0.PLGC.RBUF */ + } + + Method (HSIC, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.HSIC.RBUF */ + } + + Method (PGMT, 2, NotSerialized) + { + Name (TBUF, Buffer (One) + { + 0x00 // . + }) + If ((Arg0 >= SizeOf (TBUF))) + { + Return (Buffer (One) + { + 0x00 // . + }) + } + Else + { + Local0 = Arg0 + } + + If ((Arg1 > 0x1000)) + { + Local1 = 0x1000 + } + Else + { + Local1 = Arg1 + } + + If (((Local0 + Local1) > SizeOf (TBUF))) + { + Local1 = (SizeOf (TBUF) - Local0) + } + + CreateField (TBUF, (0x08 * Local0), (0x08 * Local1), RBUF) + Return (RBUF) /* \_SB_.GPU0.PGMT.RBUF */ + } + + Method (PWGM, 2, NotSerialized) + { + Name (TBUF, Buffer (One) + { + 0x00 // . + }) + If ((Arg0 >= SizeOf (TBUF))) + { + Return (Buffer (One) + { + 0x00 // . + }) + } + Else + { + Local0 = Arg0 + } + + If ((Arg1 > 0x1000)) + { + Local1 = 0x1000 + } + Else + { + Local1 = Arg1 + } + + If (((Local0 + Local1) > SizeOf (TBUF))) + { + Local1 = (SizeOf (TBUF) - Local0) + } + + CreateField (TBUF, (0x08 * Local0), (0x08 * Local1), RBUF) + Return (RBUF) /* \_SB_.GPU0.PWGM.RBUF */ + } + + Method (PGRT, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.PGRT.RBUF */ + } + + Method (PBRT, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.PBRT.RBUF */ + } + + Method (PBRC, 2, NotSerialized) + { + Name (RBUF, Buffer (0x02) + { + 0x00, 0x00 // .. + }) + Return (RBUF) /* \_SB_.GPU0.PBRC.RBUF */ + } + + Method (DITH, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.DITH.RBUF */ + } + + Method (BLCP, 1, Serialized) + { + Name (RBUF, Buffer (0x0100){}) + Local0 = Zero + CreateField (RBUF, (Local0 * 0x08), 0x20, PKHR) + Local0 += 0x04 + CreateField (RBUF, (Local0 * 0x08), 0x08, PKCM) + Local0 += One + CreateField (RBUF, (Local0 * 0x08), 0x08, PKDS) + Local0 += One + CreateField (RBUF, (Local0 * 0x08), 0x08, PKUB) + Local0 += One + CreateField (RBUF, (Local0 * 0x08), 0x08, PKLB) + Local0 += One + Name (BON, Buffer (0x03) + { + 0x39, 0x53, 0x24 // 9S$ + }) + CreateField (RBUF, (Local0 * 0x08), 0x20, PKH2) + Local0 += 0x04 + CreateField (RBUF, (Local0 * 0x08), 0x20, PKP2) + PKH2 = SizeOf (BON) + PKP2 = BON /* \_SB_.GPU0.BLCP.BON_ */ + Local0 += SizeOf (BON) + CreateDWordField (RBUF, (Local0 * 0x08), EOF) + Local1 = (Arg0 * 0x03FF) + Local1 /= 0xFF + Local2 = (Arg0 * 0x03FF) + Local2 /= 0xFF00 + Local2 &= 0x03 + PKHR = 0x04 + PKCM = 0x39 + PKDS = 0x51 + PKUB = Local2 + PKLB = Local1 + EOF = Zero + Return (RBUF) /* \_SB_.GPU0.BLCP.RBUF */ + } + + Method (ROM2, 3, NotSerialized) + { + Name (PCFG, Buffer (One) + { + 0x00 // . + }) + While (One) + { + If (One) + { + Local2 = PCFG /* \_SB_.GPU0.ROM2.PCFG */ + } + + Break + } + + If ((Arg0 >= SizeOf (Local2))) + { + Return (Buffer (One) + { + 0x00 // . + }) + } + Else + { + Local0 = Arg0 + } + + If ((Arg1 > 0x1000)) + { + Local1 = 0x1000 + } + Else + { + Local1 = Arg1 + } + + If (((Local0 + Local1) > SizeOf (Local2))) + { + Local1 = (SizeOf (Local2) - Local0) + } + + CreateField (Local2, (0x08 * Local0), (0x08 * Local1), RBUF) + Return (RBUF) /* \_SB_.GPU0.ROM2.RBUF */ + } + + Method (IGC2, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.IGC2.RBUF */ + } + + Method (PCC2, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.PCC2.RBUF */ + } + + Method (GCT2, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.GCT2.RBUF */ + } + + Method (LGC2, 3, NotSerialized) + { + Name (TBUF, Buffer (One) + { + 0x00 // . + }) + If ((Arg1 >= SizeOf (TBUF))) + { + Return (Buffer (One) + { + 0x00 // . + }) + } + Else + { + Local1 = Arg1 + } + + If ((Arg2 > 0x1000)) + { + Local2 = 0x1000 + } + Else + { + Local2 = Arg2 + } + + If (((Local1 + Local2) > SizeOf (TBUF))) + { + Local2 = (SizeOf (TBUF) - Local1) + } + + CreateField (TBUF, (0x08 * Local1), (0x08 * Local2), RBUF) + Return (RBUF) /* \_SB_.GPU0.LGC2.RBUF */ + } + + Method (HSI2, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.HSI2.RBUF */ + } + + Method (GMT2, 2, NotSerialized) + { + Name (TBUF, Buffer (One) + { + 0x00 // . + }) + If ((Arg0 >= SizeOf (TBUF))) + { + Return (Buffer (One) + { + 0x00 // . + }) + } + Else + { + Local0 = Arg0 + } + + If ((Arg1 > 0x1000)) + { + Local1 = 0x1000 + } + Else + { + Local1 = Arg1 + } + + If (((Local0 + Local1) > SizeOf (TBUF))) + { + Local1 = (SizeOf (TBUF) - Local0) + } + + CreateField (TBUF, (0x08 * Local0), (0x08 * Local1), RBUF) + Return (RBUF) /* \_SB_.GPU0.GMT2.RBUF */ + } + + Method (WGM2, 2, NotSerialized) + { + Name (TBUF, Buffer (One) + { + 0x00 // . + }) + If ((Arg0 >= SizeOf (TBUF))) + { + Return (Buffer (One) + { + 0x00 // . + }) + } + Else + { + Local0 = Arg0 + } + + If ((Arg1 > 0x1000)) + { + Local1 = 0x1000 + } + Else + { + Local1 = Arg1 + } + + If (((Local0 + Local1) > SizeOf (TBUF))) + { + Local1 = (SizeOf (TBUF) - Local0) + } + + CreateField (TBUF, (0x08 * Local0), (0x08 * Local1), RBUF) + Return (RBUF) /* \_SB_.GPU0.WGM2.RBUF */ + } + + Method (GRT2, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.GRT2.RBUF */ + } + + Method (BRT2, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.BRT2.RBUF */ + } + + Method (DIT2, 2, NotSerialized) + { + Name (RBUF, Buffer (One) + { + 0x00 // . + }) + Return (RBUF) /* \_SB_.GPU0.DIT2.RBUF */ + } + + Method (BLC2, 1, NotSerialized) + { + Name (RBUF, Buffer (0x0100){}) + Return (RBUF) /* \_SB_.GPU0.BLC2.RBUF */ + } + + Method (ROE1, 3, NotSerialized) + { + Name (PCFG, Buffer (One) + { + 0x00 // . + }) + Local2 = PCFG /* \_SB_.GPU0.ROE1.PCFG */ + If ((Arg0 >= SizeOf (Local2))) + { + Return (Buffer (One) + { + 0x00 // . + }) + } + Else + { + Local0 = Arg0 + } + + If ((Arg1 > 0x1000)) + { + Local1 = 0x1000 + } + Else + { + Local1 = Arg1 + } + + If (((Local0 + Local1) > SizeOf (Local2))) + { + Local1 = (SizeOf (Local2) - Local0) + } + + CreateField (Local2, (0x08 * Local0), (0x08 * Local1), RBUF) + Return (RBUF) /* \_SB_.GPU0.ROE1.RBUF */ + } + + Name (_DOD, Package (0x01) // _DOD: Display Output Devices + { + 0x00024321 + }) + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + + Method (CHDV, 0, NotSerialized) + { + Name (CHIF, Package (0x02) + { + One, + Package (0x07) + { + "CHILDDEV", + Zero, + 0x00024321, + "QCOM_AVStream_850", + Zero, + "Qualcomm Camera AVStream Mini Driver", + Package (0x04) + { + "COMPATIBLEIDS", + 0x02, + "VEN_QCOM&DEV__AVSTREAM", + "QCOM_AVSTREAM" + } + } + }) + Return (CHIF) /* \_SB_.GPU0.CHDV.CHIF */ + } + + Method (DPCC, 2, NotSerialized) + { + Return (CCST) /* \_SB_.CCST */ + } + + Method (DPIN, 2, NotSerialized) + { + Return (PINA) /* \_SB_.PINA */ + } + + Method (REGR, 0, NotSerialized) + { + Name (RBUF, Package (0x1B) + { + Package (0x02) + { + "ForceMaxPerf", + Zero + }, + + Package (0x02) + { + "ForceStablePowerSettings", + Zero + }, + + Package (0x02) + { + "ForceActive", + Zero + }, + + Package (0x02) + { + "DeferForceActive", + Zero + }, + + Package (0x02) + { + "PreventPowerCollapse", + Zero + }, + + Package (0x02) + { + "DisableThermalMitigation", + Zero + }, + + Package (0x02) + { + "DisableTzMDSSRestore", + One + }, + + Package (0x02) + { + "UseLowPTForGfxPerProcess", + One + }, + + Package (0x02) + { + "DisableCDI", + One + }, + + Package (0x02) + { + "GPU64bAddrEnabled", + One + }, + + Package (0x02) + { + "MaxPreemptionOffsets", + 0x80 + }, + + Package (0x02) + { + "MaxRequiredDmaQueueEntry", + 0x08 + }, + + Package (0x02) + { + "SupportsSecureInAperture", + One + }, + + Package (0x02) + { + "ZeroFlagSupportInPTE", + One + }, + + Package (0x02) + { + "SupportsCacheCoherency", + One + }, + + Package (0x02) + { + "SupportsSHMBridge", + Zero + }, + + Package (0x02) + { + "SecureCarveoutSize", + 0x00200000 + }, + + Package (0x02) + { + "UBWCEnable", + Zero + }, + + Package (0x02) + { + "allowDrmAbove1080p", + One + }, + + Package (0x02) + { + "ZeroPageLowAddr", + 0x85F00000 + }, + + Package (0x02) + { + "ZeroPageHighAddr", + Zero + }, + + Package (0x02) + { + "KeepUefiBuffer", + One + }, + + Package (0x06) + { + "GRAPHICS", + Package (0x02) + { + "ForceActive", + Zero + }, + + Package (0x02) + { + "EnableSystemCache", + One + }, + + Package (0x02) + { + "EnableSysCacheForGpuhtw", + One + }, + + Package (0x0A) + { + "DCVS", + Package (0x02) + { + "Enable", + One + }, + + Package (0x02) + { + "IncreaseFilterBw", + 0x00020000 + }, + + Package (0x02) + { + "DecreaseFilterBw", + 0x3333 + }, + + Package (0x02) + { + "TargetBusyPct", + 0x55 + }, + + Package (0x02) + { + "SampleRate", + 0x3C + }, + + Package (0x02) + { + "TargetBusyPctOffscreen", + 0x4B + }, + + Package (0x02) + { + "SampleRateOffscreen", + 0x14 + }, + + Package (0x02) + { + "GpuResetValue", + 0x11490C80 + }, + + Package (0x02) + { + "BusResetValue", + 0x04B0 + } + }, + + Package (0x06) + { + "A6x", + Package (0x02) + { + "SleepMode", + Zero + }, + + Package (0x02) + { + "DisableICG", + Zero + }, + + Package (0x02) + { + "DisableGmuCG", + Zero + }, + + Package (0x02) + { + "EnableFallbackToDisableSecureMode", + Zero + }, + + Package (0x02) + { + "DisableCPCrashDump", + Zero + } + } + }, + + Package (0x04) + { + "VIDEO", + Package (0x02) + { + "ForceActive", + Zero + }, + + Package (0x02) + { + "PreventPowerCollapse", + Zero + }, + + Package (0x02) + { + "EnableSystemCache", + One + } + }, + + Package (0x02) + { + "CRYPTO", + Package (0x02) + { + "EnableCryptoVA", + One + } + }, + + Package (0x03) + { + "VIDEO_ENCODER", + Package (0x02) + { + "ForceActive", + Zero + }, + + Package (0x02) + { + "PreventPowerCollapse", + Zero + } + }, + + Package (0x07) + { + "DISPLAY", + Package (0x02) + { + "DisableMiracast", + One + }, + + Package (0x02) + { + "EnableOEMDriverDependency", + Zero + }, + + Package (0x02) + { + "EnableBridgeDriverDependency", + Zero + }, + + Package (0x02) + { + "DisableRotator", + Zero + }, + + Package (0x02) + { + "DisableMDPBLT", + One + }, + + Package (0x02) + { + "DisableExternal", + 0x03 + } + } + }) + Return (RBUF) /* \_SB_.GPU0.REGR.RBUF */ + } + } + + Device (SCM0) + { + Name (_HID, "QCOM0214") // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_UID, Zero) // _UID: Unique ID + } + + Device (TREE) + { + Name (_HID, "QCOM02BB") // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_UID, Zero) // _UID: Unique ID + Method (MCGT, 0, NotSerialized) + { + Name (TPKG, Package (0x01) + { + Package (0x02) + { + Zero, + Zero + } + }) + DerefOf (TPKG [Zero]) [Zero] = TCMA /* \_SB_.TCMA */ + DerefOf (TPKG [Zero]) [One] = TCML /* \_SB_.TCML */ + Return (TPKG) /* \_SB_.TREE.MCGT.TPKG */ + } + } + + Device (SPMI) + { + Name (_HID, "QCOM0216") // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_CID, "PNP0CA2") // _CID: Compatible ID + Name (_UID, One) // _UID: Unique ID + Name (_CCA, Zero) // _CCA: Cache Coherency Attribute + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + Memory32Fixed (ReadWrite, + 0x0C400000, // Address Base + 0x02800000, // Address Length + ) + }) + Return (RBUF) /* \_SB_.SPMI._CRS.RBUF */ + } + + Method (CONF, 0, NotSerialized) + { + Name (XBUF, Buffer (0x1A) + { + /* 0000 */ 0x00, 0x01, 0x01, 0x01, 0xFF, 0x00, 0x02, 0x00, // ........ + /* 0008 */ 0x0A, 0x07, 0x04, 0x07, 0x01, 0xFF, 0x10, 0x01, // ........ + /* 0010 */ 0x00, 0x01, 0x0C, 0x40, 0x00, 0x00, 0x02, 0x80, // ...@.... + /* 0018 */ 0x00, 0x00 // .. + }) + Return (XBUF) /* \_SB_.SPMI.CONF.XBUF */ + } + } + + Device (GIO0) + { + Name (_HID, "QCOM0217") // _HID: Hardware ID + Alias (\_SB.PSUB, _SUB) + Name (_UID, Zero) // _UID: Unique ID + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + Memory32Fixed (ReadWrite, + 0x03400000, // Address Base + 0x00C00000, // Address Length + ) + Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) + { + 0x000000F0, + } + Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) + { + 0x000000F0, + } + Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) + { + 0x000000F0, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Shared, ,, ) + { + 0x00000288, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Shared, ,, ) + { + 0x00000238, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Shared, ,, ) + { + 0x00000286, + } + }) + Return (RBUF) /* \_SB_.GIO0._CRS.RBUF */ + } + + Method (OFNI, 0, NotSerialized) + { + Name (RBUF, Buffer (0x02) + { + 0x96, 0x00 // .. + }) + Return (RBUF) /* \_SB_.GIO0.OFNI.RBUF */ + } + + Name (GABL, Zero) + Method (_REG, 2, NotSerialized) // _REG: Region Availability + { + If ((Arg0 == 0x08)) + { + GABL = Arg1 + } + } + } + + OperationRegion (CP00, SystemMemory, 0x13000000, 0x24) + Field (CP00, DWordAcc, NoLock, Preserve) + { + MVIO, 32, + MV01, 32, + MV02, 32, + MV03, 32, + MV04, 32, + MV11, 32, + MV12, 32, + MV13, 32, + MV14, 32 + } + + OperationRegion (CP01, SystemMemory, 0x01C00000, 0x1004) + Field (CP01, DWordAcc, NoLock, Preserve) + { + PSC0, 32, + Offset (0x20), + PPC0, 32, + PPS0, 32, + Offset (0x1B0), + PLT0, 32, + Offset (0x358), + PSL0, 32, + Offset (0x360), + WBL0, 32, + WBH0, 32, + WLL0, 32, + WLH0, 32, + RBL0, 32, + RBH0, 32, + RLL0, 32, + RLH0, 32, + PPEB, 32, + Offset (0x398), + WBL1, 32, + WBH1, 32, + WLL1, 32, + WLH1, 32, + RBL1, 32, + RBH1, 32, + RLL1, 32, + RLH1, 32, + Offset (0x1000), + PDT0, 32 + } + + OperationRegion (CP02, SystemMemory, 0x01C06000, 0x0188) + Field (CP02, DWordAcc, NoLock, Preserve) + { + Offset (0x0C), + QCB1, 32, + QSEC, 32, + QAP1, 32, + QAP2, 32, + QSP1, 32, + QSP2, 32, + QSS1, 32, + QSS2, 32, + Offset (0x34), + QECE, 32, + QCE1, 32, + QSCC, 32, + QSBE, 32, + Offset (0x48), + QCPI, 32, + Offset (0x5C), + QCED, 32, + QCP0, 32, + Offset (0x68), + QPR0, 32, + Offset (0x70), + QPC0, 32, + Offset (0x80), + QSES, 32, + Offset (0x88), + QCRC, 32, + Offset (0x90), + QCLC, 32, + Offset (0x98), + QC1M, 32, + QC2M, 32, + QC3M, 32, + Offset (0xB0), + QSM0, 32, + Offset (0xB8), + QS1M, 32, + QS2M, 32, + QS3M, 32, + Offset (0xD8), + QIG0, 32, + QIG1, 32, + Offset (0xF0), + QCVT, 32, + QVT1, 32, + QVT2, 32, + Offset (0x11C), + QTT1, 32, + QTT2, 32, + Offset (0x138), + QCCS, 32, + QCHS, 32, + Offset (0x148), + QCD0, 32, + Offset (0x154), + QCCN, 32, + Offset (0x15C), + QCCC, 32, + Offset (0x164), + QMCS, 32, + Offset (0x184), + QCCM, 32 + } + + OperationRegion (CP03, SystemMemory, 0x01C06200, 0xA8) + Field (CP03, DWordAcc, NoLock, Preserve) + { + Offset (0x44), + QTOT, 32, + Offset (0x60), + QTDE, 32, + Offset (0x8C), + QTM1, 32, + Offset (0xA4), + QTL2, 32 + } + + OperationRegion (CP04, SystemMemory, 0x01C06400, 0x016C) + Field (CP04, DWordAcc, NoLock, Preserve) + { + Offset (0x0C), + QRSH, 32, + Offset (0x14), + QRSG, 32, + Offset (0x34), + QRUS, 32, + Offset (0x3C), + QRFL, 32, + Offset (0x44), + QRPC, 32, + Offset (0xD4), + QRC2, 32, + QRC3, 32, + QRC4, 32, + Offset (0xF8), + QRA1, 32, + QRA2, 32, + QRSE, 32, + QRSC, 32, + Offset (0x10C), + QRDC, 32, + Offset (0x11C), + QRIM, 32, + Offset (0x164), + QRM0, 32, + QRM1, 32 + } + + OperationRegion (CP05, SystemMemory, 0x01C06600, 0x70) + Field (CP05, DWordAcc, NoLock, Preserve) + { + Offset (0x2C), + PMDC, 32, + Offset (0x44), + PAC1, 32, + Offset (0x54), + PMC2, 32, + PMC3, 32, + PMC4, 32, + PMC5, 32 + } + + OperationRegion (CP06, SystemMemory, 0x01C06800, 0x0210) + Field (CP06, DWordAcc, NoLock, Preserve) + { + PPSR, 32, + PPDC, 32, + PCST, 32, + Offset (0x54), + PERD, 32, + Offset (0x6C), + PSC4, 32, + Offset (0xA0), + PDTA, 32, + PLTA, 32, + PLCD, 32, + Offset (0xC4), + PFC1, 32, + PFC2, 32, + PFVL, 32, + PFVH, 32, + PFMC, 32, + Offset (0x174), + PPPS, 32, + Offset (0x1A8), + PSDM, 32, + PODA, 32, + PPSC, 32, + Offset (0x1D8), + PRSL, 32, + PDAL, 32, + PDAM, 32, + Offset (0x20C), + PRC1, 32 + } + + OperationRegion (CP07, SystemMemory, 0x60000000, 0x1000) + Field (CP07, DWordAcc, NoLock, Preserve) + { + Offset (0x04), + SCR0, 32, + CRI0, 32, + Offset (0x10), + R0B0, 32, + R0B1, 32, + BNR0, 32, + Offset (0x7C), + LCA0, 32, + LCS0, 32, + Offset (0x88), + SLC0, 32, + Offset (0xA0), + LC20, 32, + Offset (0x8BC), + CSW0, 32, + Offset (0x900), + IAV0, 32, + CR10, 32, + CR20, 32, + ILB0, 32, + IUB0, 32, + ILR0, 32, + ILT0, 32, + IUT0, 32, + Offset (0xF24), + ESC0, 32, + EST0, 32, + Offset (0xFC4), + ECS0, 32 + } + + Method (PPU0, 0, Serialized) + { + Name (TOUT, Zero) + PDT0 = 0x04 + PPDC = One + QECE = 0x14 + QCPI = 0x07 + QCLC = One + QCRC = 0x20 + QCVT = Zero + QVT2 = One + QVT1 = 0xC9 + QTT1 = 0xFF + QTT2 = 0x3F + QMCS = One + QCCN = Zero + QCD0 = 0x0A + QCED = 0x19 + QCE1 = 0x90 + QSM0 = 0x82 + QS3M = 0x02 + QS2M = 0xEA + QS1M = 0xAB + QC3M = Zero + QC2M = 0x0D + QC1M = 0x04 + QCHS = Zero + QCP0 = 0x06 + QPR0 = 0x16 + QPC0 = 0x36 + QCCM = One + QCCC = 0x16 + QCCS = 0x33 + QSCC = 0x02 + QSBE = 0x07 + QSES = 0x04 + QIG1 = Zero + QIG0 = 0x3F + QCB1 = 0x09 + QSEC = One + QSP1 = 0x40 + QSP2 = One + QAP1 = 0x02 + QAP2 = Zero + QSS1 = 0x7E + QSS2 = 0x15 + QTOT = 0x02 + QTL2 = 0x12 + QTDE = 0x10 + QTM1 = 0x06 + QRSC = 0x03 + QRSE = 0x1C + QRDC = 0x14 + QRC2 = 0x0E + QRC3 = 0x04 + QRC4 = 0x1A + QRUS = 0x4B + QRSG = 0x04 + QRSH = 0x04 + QRA1 = 0x71 + QRM0 = 0x59 + QRM1 = 0x59 + QRA2 = 0x80 + QRIM = 0x40 + QRPC = 0x71 + QRFL = 0x40 + PERD = 0x04 + PMDC = 0x52 + PMC2 = 0x50 + PMC4 = 0x1A + PMC5 = 0x06 + PFC2 = 0x83 + PFVL = 0x09 + PFVH = 0xA2 + PFMC = 0x40 + PFC1 = 0x02 + PODA = Zero + PDTA = One + PDAM = Zero + PDAL = 0x20 + PSDM = Zero + PLTA = One + PLCD = 0x73 + PRSL = 0xAA + PPSC = 0x03 + PRC1 = 0x0D + PSC4 = Zero + PAC1 = Zero + If ((SIDV >= 0x00020000)){} + PPDC = 0x03 + PPSR = Zero + PCST = 0x03 + Local0 = PPPS /* \_SB_.PPPS */ + While ((Local0 & 0x40)) + { + Sleep (One) + TOUT++ + If ((TOUT == 0x0F)) + { + Break + } + + Local0 = PPPS /* \_SB_.PPPS */ + } + + If ((TOUT == 0x0F)) + { + Return (One) + } + Else + { + Return (Zero) + } + } + + Method (LTS0, 0, Serialized) + { + Name (TOUT, Zero) + Local0 = LC20 /* \_SB_.LC20 */ + Local0 |= 0x40 + LC20 = Local0 + PLT0 = 0x0100 + Local0 = EST0 /* \_SB_.EST0 */ + While (((Local0 & 0x0400) != 0x0400)) + { + Sleep (One) + TOUT++ + If ((TOUT == 0x96)) + { + Break + } + + Local0 = EST0 /* \_SB_.EST0 */ + } + + If ((TOUT == 0x96)) + { + Return (One) + } + Else + { + Return (Zero) + } + } + + Method (IAT0, 0, Serialized) + { + IAV0 = One + ILB0 = 0x60100000 + IUB0 = Zero + ILR0 = 0x601FFFFF + ILT0 = 0x01000000 + IUT0 = Zero + CR10 = 0x04 + CR20 = 0x80000000 + BNR0 = 0x00010100 + } + + Method (REB0, 2, Serialized) + { + Local0 = PSC0 /* \_SB_.PSC0 */ + Local0 &= 0xFBFFFFFF + PSC0 = Local0 + WBL0 = Arg0 + WBH0 = Zero + WLL0 = Arg1 + WLH0 = Zero + RBL0 = Arg0 + RBH0 = Zero + RLL0 = Arg1 + RLH0 = Zero + Local0 = PSC0 /* \_SB_.PSC0 */ + Local0 |= 0x04000000 + PSC0 = Local0 + } + + Method (EEB0, 2, Serialized) + { + Local0 = PSC0 /* \_SB_.PSC0 */ + Local0 &= 0xBFFFFFFF + PSC0 = Local0 + WBL1 = Arg0 + WBH1 = Zero + WLL1 = Arg1 + WLH1 = Zero + RBL1 = Arg0 + RBH1 = Zero + RLL1 = Arg1 + RLH1 = Zero + Local0 = PSC0 /* \_SB_.PSC0 */ + Local0 |= 0x40000000 + PSC0 = Local0 + } + + Name (E0LT, 0x600FFFFF) + Method (MSC0, 0, Serialized) + { + Local0 = SCR0 /* \_SB_.SCR0 */ + Local0 |= 0x02 + SCR0 = Local0 + PSL0 = 0x01000000 + Local0 = PPC0 /* \_SB_.PPC0 */ + Local0 &= 0xFFFFFFDF + PPC0 = Local0 + CSW0 = One + Local0 = LCA0 /* \_SB_.LCA0 */ + Local0 |= 0x00400000 + Local0 &= 0xFFFFFBFF + Local0 |= 0x0800 + LCA0 = Local0 + Local0 = CRI0 /* \_SB_.CRI0 */ + Local0 &= 0xFFFF + Local0 |= 0x06040000 + CRI0 = Local0 + ECS0 = One + R0B0 = Zero + R0B1 = Zero + ECS0 = Zero + CSW0 = Zero + PPEB = 0x60000000 + REB0 (0x60001000, E0LT) + EEB0 (0x60101000, 0x601FFFFF) + } + + Name (G0D3, Zero) + OperationRegion (CP08, SystemMemory, 0x01C08000, 0x1004) + Field (CP08, DWordAcc, NoLock, Preserve) + { + PSC1, 32, + Offset (0x20), + PPC1, 32, + PPS1, 32, + Offset (0x1B0), + PLT1, 32, + Offset (0x358), + PSL1, 32, + Offset (0x360), + LBW0, 32, + HBW0, 32, + LLW0, 32, + HLW0, 32, + LBR0, 32, + HBR0, 32, + LLR0, 32, + HLR0, 32, + PEB1, 32, + Offset (0x398), + LBW1, 32, + HBW1, 32, + LLW1, 32, + HLW1, 32, + LBR1, 32, + HBR1, 32, + LLR1, 32, + HLR1, 32, + Offset (0x1000), + PDT1, 32 + } + + OperationRegion (CP09, SystemMemory, 0x01C0A000, 0x026C) + Field (CP09, DWordAcc, NoLock, Preserve) + { + Offset (0x14), + HSEC, 32, + HAP1, 32, + HAP2, 32, + HSP1, 32, + HSP2, 32, + HSS1, 32, + HSS2, 32, + Offset (0x34), + HSM1, 32, + HSM2, 32, + Offset (0x54), + HECE, 32, + HCE1, 32, + HSCC, 32, + HSBE, 32, + HPLE, 32, + HCPI, 32, + C1M0, 32, + C2M0, 32, + C3M0, 32, + C1M1, 32, + C2M1, 32, + C3M1, 32, + Offset (0xB4), + HCM0, 32, + HCM1, 32, + Offset (0xC0), + HPR0, 32, + HPR1, 32, + HPR2, 32, + HPC0, 32, + HPC1, 32, + HPC2, 32, + Offset (0xDC), + HSES, 32, + Offset (0xF0), + HRC2, 32, + Offset (0xF8), + HCLC, 32, + Offset (0x100), + HRM0, 32, + Offset (0x108), + HRM1, 32, + Offset (0x11C), + S1M0, 32, + S2M0, 32, + S3M0, 32, + S1M1, 32, + S2M1, 32, + S3M1, 32, + Offset (0x150), + G0M0, 32, + Offset (0x158), + G0M1, 32, + Offset (0x178), + HCVT, 32, + Offset (0x1CC), + HCCS, 32, + HCHS, 32, + Offset (0x1E0), + HCDV, 32, + Offset (0x1E8), + HCCE, 32, + Offset (0x1F0), + HCCC, 32, + Offset (0x1FC), + HMCS, 32, + Offset (0x21C), + HDM1, 32, + Offset (0x224), + HCCM, 32, + HVD1, 32, + HVD2, 32 + } + + OperationRegion (CP10, SystemMemory, 0x01C0A800, 0x02F0) + Field (CP10, DWordAcc, NoLock, Preserve) + { + Offset (0x0C), + L0C0, 32, + L0C1, 32, + L0C2, 32, + L0TE, 32, + Offset (0x60), + L0BM, 32, + L0LM, 32, + Offset (0x7C), + L0PR, 32, + Offset (0xC0), + L0L0, 32, + L0L1, 32, + L0L2, 32, + Offset (0xD0), + L0R1, 32, + L0R2, 32, + L0M0, 32, + L0M1, 32, + L0M2, 32, + Offset (0xFC), + L0CD, 32, + L0VD, 32, + Offset (0x108), + L0X0, 32, + Offset (0x114), + L0TT, 32, + L0OT, 32, + L0RT, 32, + L0ET, 32, + L0VG, 32, + L0DG, 32, + Offset (0x130), + L0EG, 32, + L0OG, 32, + L0PG, 32, + L0IN, 32, + Offset (0x154), + L0EI, 32, + Offset (0x160), + L0DI, 32, + Offset (0x168), + L0B0, 32, + L0B1, 32, + Offset (0x178), + L0T1, 32, + Offset (0x180), + L0RC, 32, + L0F0, 32, + L0F1, 32, + L0F2, 32, + L0S0, 32, + L0S1, 32, + L0S2, 32, + L0SC, 32, + Offset (0x1A4), + L0RB, 32, + Offset (0x1C0), + L0P0, 32, + L0P1, 32, + L0P2, 32, + Offset (0x230), + L0SE, 32, + L0SN, 32, + L0SD, 32, + Offset (0x2A4), + L0DC, 32, + L0ST, 32, + L0RE, 32, + L0PC, 32, + Offset (0x2B8), + L0N0, 32, + Offset (0x2C0), + L0ER, 32, + L0HI, 32, + Offset (0x2CC), + L0RR, 32 + } + + OperationRegion (CP11, SystemMemory, 0x01C0B000, 0x02F0) + Field (CP11, DWordAcc, NoLock, Preserve) + { + Offset (0x0C), + L1C0, 32, + L1C1, 32, + L1C2, 32, + L1TE, 32, + Offset (0x60), + L1BM, 32, + L1LM, 32, + Offset (0x7C), + L1PR, 32, + Offset (0xC0), + L1L0, 32, + L1L1, 32, + L1L2, 32, + Offset (0xD0), + L1R1, 32, + L1R2, 32, + L1M0, 32, + L1M1, 32, + L1M2, 32, + Offset (0xFC), + L1CD, 32, + L1VD, 32, + Offset (0x108), + L1X0, 32, + Offset (0x114), + L1TT, 32, + L1OT, 32, + L1RT, 32, + L1ET, 32, + L1VG, 32, + L1DG, 32, + Offset (0x130), + L1EG, 32, + L1OG, 32, + L1PG, 32, + L1IN, 32, + Offset (0x154), + L1EI, 32, + Offset (0x160), + L1DI, 32, + Offset (0x168), + L1B0, 32, + L1B1, 32, + Offset (0x178), + L1T1, 32, + Offset (0x180), + L1RC, 32, + L1F0, 32, + L1F1, 32, + L1F2, 32, + L1S0, 32, + L1S1, 32, + L1S2, 32, + L1SC, 32, + Offset (0x1A4), + L1RB, 32, + Offset (0x1C0), + L1P0, 32, + L1P1, 32, + L1P2, 32, + Offset (0x230), + L1SE, 32, + L1SN, 32, + L1SD, 32, + Offset (0x2A4), + L1DC, 32, + L1ST, 32, + L1RE, 32, + L1PC, 32, + Offset (0x2B8), + L1N0, 32, + Offset (0x2C0), + L1ER, 32, + L1HI, 32, + Offset (0x2CC), + L1RR, 32 + } + + OperationRegion (CP12, SystemMemory, 0x01C0B800, 0x02DC) + Field (CP12, DWordAcc, NoLock, Preserve) + { + HPSR, 32, + HPDC, 32, + HSTC, 32, + Offset (0x2C), + HTM3, 32, + Offset (0x40), + HTP3, 32, + Offset (0x54), + HTM6, 32, + Offset (0x68), + HTP6, 32, + Offset (0x15C), + HPSG, 32, + Offset (0x174), + HTRC, 32, + Offset (0x2AC), + HPST, 32 + } + + OperationRegion (CP13, SystemMemory, 0x40000000, 0x1000) + Field (CP13, DWordAcc, NoLock, Preserve) + { + Offset (0x04), + SCR1, 32, + CRI1, 32, + Offset (0x10), + R1B0, 32, + R1B1, 32, + BNR1, 32, + Offset (0x7C), + LCA1, 32, + LCS1, 32, + SCA1, 32, + SLC1, 32, + Offset (0xA0), + LC21, 32, + Offset (0x154), + P1PR, 32, + Offset (0x710), + GPLC, 32, + Offset (0x80C), + G32C, 32, + Offset (0x8A8), + GEQC, 32, + GMDC, 32, + Offset (0x8BC), + CSW1, 32, + Offset (0x900), + IAV1, 32, + CR11, 32, + CR21, 32, + ILB1, 32, + IUB1, 32, + ILR1, 32, + ILT1, 32, + IUT1, 32, + Offset (0xF24), + ESC1, 32, + EST1, 32, + Offset (0xFC4), + ECS1, 32 + } + + OperationRegion (CP14, SystemMemory, 0x03971000, 0x10) + Field (CP14, DWordAcc, NoLock, Preserve) + { + C113, 32, + I113, 32, + N113, 32, + S113, 32 + } + + OperationRegion (CP15, SystemMemory, 0x0016B000, 0x1020) + Field (CP15, DWordAcc, NoLock, Preserve) + { + GP0B, 32, + Offset (0x101C), + G0PB, 32 + } + + OperationRegion (CP16, SystemMemory, 0x0018D000, 0x1030) + Field (CP16, DWordAcc, NoLock, Preserve) + { + GP1B, 32, + Offset (0x1014), + G1LB, 32, + Offset (0x101C), + G1PB, 32, + G1NB, 32 + } + + Method (PPU1, 0, Serialized) + { + Name (TOUT, Zero) + PDT1 = 0x04 + HPDC = 0x03 + HSES = 0x27 + HSEC = One + HSP1 = 0x31 + HSP2 = One + HSS1 = 0xDE + HSS2 = 0x07 + HSM1 = 0x4C + HSM2 = 0x06 + HECE = 0x18 + HCE1 = 0xB0 + C1M0 = 0x8C + C2M0 = 0x20 + C1M1 = 0x14 + C2M1 = 0x34 + HCM0 = 0x06 + HCM1 = 0x06 + HPR0 = 0x16 + HPR1 = 0x16 + HPC0 = 0x36 + HPC1 = 0x36 + HRC2 = 0x05 + HCLC = 0x42 + HRM0 = 0x82 + HRM1 = 0x68 + S1M0 = 0x55 + S2M0 = 0x55 + S3M0 = 0x03 + S1M1 = 0xAB + S2M1 = 0xAA + S3M1 = 0x02 + G0M0 = 0x3F + G0M1 = 0x3F + HCVT = 0x10 + HCCS = Zero + HCHS = 0x30 + HCDV = 0x04 + HCCE = 0x73 + HCCC = 0x1C + HMCS = 0x15 + HDM1 = 0x04 + HCCM = One + HVD1 = 0x22 + HVD2 = Zero + L0C0 = Zero + L0TE = 0x0D + L0BM = One + L0LM = 0x3A + L0PR = 0x2F + L0L0 = 0x09 + L0L1 = 0x09 + L0L2 = 0x1A + L0R1 = One + L0R2 = 0x07 + L0M0 = 0x31 + L0M1 = 0x31 + L0M2 = 0x03 + L0CD = 0x02 + L0VD = One + L0X0 = 0x12 + L0TT = 0x25 + L0OT = Zero + L0RT = 0x05 + L0ET = One + L0VG = 0x26 + L0DG = 0x12 + L0EG = 0x04 + L0OG = 0x04 + L0PG = 0x09 + L0EI = 0x15 + L0DI = 0x32 + L0B0 = 0x7F + L0B1 = 0x07 + L0T1 = 0x04 + L0RC = 0x70 + L0F0 = 0x08 + L0F1 = 0x08 + L0F2 = 0x09 + L0S0 = 0x04 + L0S1 = 0x04 + L0S2 = 0x02 + L0SC = 0x0C + L0RB = 0x02 + L0P0 = 0x5C + L0P1 = 0x3E + L0P2 = 0x3F + L0SE = 0x21 + L0SN = 0xA0 + L0SD = 0x08 + L0DC = One + L0RE = 0xC3 + L0PC = Zero + L0N0 = 0x8C + L0ER = 0x7F + L0HI = 0x2A + L0C1 = 0x0C + L0C2 = Zero + L0RR = 0x02 + L0IN = 0x20 + L1C0 = Zero + L1TE = 0x0D + L1BM = One + L1LM = 0x3A + L1PR = 0x2F + L1L0 = 0x09 + L1L1 = 0x09 + L1L2 = 0x1A + L1R1 = One + L1R2 = 0x07 + L1M0 = 0x31 + L1M1 = 0x31 + L1M2 = 0x03 + L1CD = 0x02 + L1VD = One + L1X0 = 0x12 + L1TT = 0x25 + L1OT = Zero + L1RT = 0x05 + L1ET = One + L1VG = 0x26 + L1DG = 0x12 + L1EG = 0x04 + L1OG = 0x04 + L1PG = 0x09 + L1EI = 0x15 + L1DI = 0x32 + L1B0 = 0x7F + L1B1 = 0x07 + L1T1 = 0x04 + L1RC = 0x70 + L1F0 = 0x08 + L1F1 = 0x08 + L1F2 = 0x09 + L1S0 = 0x04 + L1S1 = 0x04 + L1S2 = 0x02 + L1SC = 0x0C + L1RB = 0x02 + L1P0 = 0x5C + L1P1 = 0x3E + L1P2 = 0x3F + L1SE = 0x21 + L1SN = 0xA0 + L1SD = 0x08 + L1DC = One + L1RE = 0xC3 + L1PC = Zero + L1N0 = 0x8C + L1ER = 0x7F + L1HI = 0x2A + L1C1 = 0x0C + L1C2 = Zero + L1RR = 0x02 + L1IN = 0x20 + HPSG = 0x3F + HTRC = 0x58 + HTM3 = 0x19 + HTP3 = 0x07 + HTM6 = 0x17 + HTP6 = 0x09 + If ((SIDV >= 0x00020000)){} + HPSR = Zero + L0ST = One + L1ST = One + HSTC = One + Local0 = HPST /* \_SB_.HPST */ + While ((Local0 & 0x40)) + { + Sleep (One) + TOUT++ + If ((TOUT == 0x0F)) + { + Break + } + + Local0 = HPST /* \_SB_.HPST */ + } + + If ((TOUT == 0x0F)) + { + Return (One) + } + Else + { + Return (Zero) + } + } + + Method (LTS1, 0, Serialized) + { + Name (TOUT, Zero) + Local0 = G32C /* \_SB_.G32C */ + Local0 &= 0xFFFFE0FF + Local0 |= 0x0100 + G32C = Local0 + GMDC = 0x000155A0 + Local0 = GEQC /* \_SB_.GEQC */ + Local0 &= 0xFFFFFFEF + GEQC = Local0 + CSW1 = One + P1PR = 0x77777777 + CSW1 = Zero + Local0 = GPLC /* \_SB_.GPLC */ + Local0 &= 0xFFC0F0FF + Local0 |= 0x00030300 + GPLC = Local0 + PLT1 = 0x0100 + Local0 = EST1 /* \_SB_.EST1 */ + While (((Local0 & 0x0400) != 0x0400)) + { + Sleep (One) + TOUT++ + If ((TOUT == 0x96)) + { + Break + } + + Local0 = EST1 /* \_SB_.EST1 */ + } + + If ((TOUT == 0x96)) + { + Return (One) + } + Else + { + Return (Zero) + } + } + + Method (IAT1, 0, Serialized) + { + IAV1 = One + ILB1 = 0x40100000 + IUB1 = Zero + ILR1 = 0x401FFFFF + ILT1 = 0x01000000 + IUT1 = Zero + CR11 = 0x04 + CR21 = 0x80000000 + BNR1 = 0x00010100 + } + + Method (REB1, 2, Serialized) + { + Local0 = PSC1 /* \_SB_.PSC1 */ + Local0 &= 0xFBFFFFFF + PSC1 = Local0 + LBW0 = Arg0 + HBW0 = Zero + LLW0 = Arg1 + HLW0 = Zero + LBR0 = Arg0 + HBR0 = Zero + LLR0 = Arg1 + HLR0 = Zero + Local0 = PSC1 /* \_SB_.PSC1 */ + Local0 |= 0x04000000 + PSC1 = Local0 + } + + Method (EEB1, 2, Serialized) + { + Local0 = PSC1 /* \_SB_.PSC1 */ + Local0 &= 0xBFFFFFFF + PSC1 = Local0 + LBW1 = Arg0 + HBW1 = Zero + LLW1 = Arg1 + HLW1 = Zero + LBR1 = Arg0 + HBR1 = Zero + LLR1 = Arg1 + HLR1 = Zero + Local0 = PSC1 /* \_SB_.PSC1 */ + Local0 |= 0x40000000 + PSC1 = Local0 + } + + Name (E1LT, 0x400FFFFF) + Method (MSC1, 0, Serialized) + { + Local0 = SCR1 /* \_SB_.SCR1 */ + Local0 |= 0x02 + SCR1 = Local0 + PSL1 = 0x20000000 + Local0 = PPC1 /* \_SB_.PPC1 */ + Local0 &= 0xFFFFFFDF + PPC1 = Local0 + CSW1 = One + Local0 = LCA1 /* \_SB_.LCA1 */ + Local0 |= 0x00400000 + Local0 |= 0x0C00 + LCA1 = Local0 + Local0 = CRI1 /* \_SB_.CRI1 */ + Local0 &= 0xFFFF + Local0 |= 0x06040000 + CRI1 = Local0 + Local0 = SCA1 /* \_SB_.SCA1 */ + Local0 &= 0xFFFFFFBF + SCA1 = Local0 + CSW1 = Zero + ECS1 = One + R1B0 = Zero + R1B1 = Zero + ECS1 = Zero + PEB1 = 0x40000000 + REB1 (0x40001000, E1LT) + EEB1 (0x40101000, 0x401FFFFF) + } + + Name (G1D3, Zero) + Device (IPC0) + { + Name (_DEP, Package (0x01) // _DEP: Dependencies + { + GLNK + }) + Name (_HID, "QCOM021C") // _HID: Hardware ID + Alias (PSUB, _SUB) + } + + Device (GLNK) + { + Name (_DEP, Package (0x01) // _DEP: Dependencies + { + RPEN + }) + Name (_HID, "QCOM02F9") // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_UID, Zero) // _UID: Unique ID + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) + { + 0x000001E3, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) + { + 0x000000BE, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) + { + 0x000000CC, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) + { + 0x00000260, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) + { + 0x000001E1, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) + { + 0x000000BC, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) + { + 0x000000CA, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) + { + 0x0000025E, + } + }) + Return (RBUF) /* \_SB_.GLNK._CRS.RBUF */ + } + } + + Device (ARPC) + { + Name (_DEP, Package (0x03) // _DEP: Dependencies + { + MMU0, + GLNK, + SCM0 + }) + Name (_HID, "QCOM0297") // _HID: Hardware ID + Alias (PSUB, _SUB) + } + + Device (ARPD) + { + Name (_DEP, Package (0x02) // _DEP: Dependencies + { + ADSP, + ARPC + }) + Name (_HID, "QCOM02F3") // _HID: Hardware ID + Alias (PSUB, _SUB) + } + + Device (RFS0) + { + Name (_DEP, Package (0x02) // _DEP: Dependencies + { + IPC0, + UFS0 + }) + Name (_HID, "QCOM0235") // _HID: Hardware ID + Alias (PSUB, _SUB) + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + Memory32Fixed (ReadWrite, + 0x88888888, // Address Base + 0x99999999, // Address Length + _Y00) + Memory32Fixed (ReadWrite, + 0x11111111, // Address Base + 0x22222222, // Address Length + _Y01) + Memory32Fixed (ReadWrite, + 0x33333333, // Address Base + 0x44444444, // Address Length + _Y02) + }) + CreateDWordField (RBUF, \_SB.RFS0._CRS._Y00._BAS, RMTA) // _BAS: Base Address + CreateDWordField (RBUF, \_SB.RFS0._CRS._Y00._LEN, RMTL) // _LEN: Length + CreateDWordField (RBUF, \_SB.RFS0._CRS._Y01._BAS, RFMA) // _BAS: Base Address + CreateDWordField (RBUF, \_SB.RFS0._CRS._Y01._LEN, RFML) // _LEN: Length + CreateDWordField (RBUF, \_SB.RFS0._CRS._Y02._BAS, RFAA) // _BAS: Base Address + CreateDWordField (RBUF, \_SB.RFS0._CRS._Y02._LEN, RFAL) // _LEN: Length + RMTA = RMTB /* \_SB_.RMTB */ + RMTL = RMTX /* \_SB_.RMTX */ + RFMA = RFMB /* \_SB_.RFMB */ + RFML = RFMS /* \_SB_.RFMS */ + RFAA = RFAB /* \_SB_.RFAB */ + RFAL = RFAS /* \_SB_.RFAS */ + Return (RBUF) /* \_SB_.RFS0._CRS.RBUF */ + } + + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0B) + } + } + + Device (IPA) + { + Name (_DEP, Package (0x06) // _DEP: Dependencies + { + PEP0, + RPEN, + PILC, + MMU0, + GSI, + GLNK + }) + Name (_HID, "QCOM02B3") // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_UID, Zero) // _UID: Unique ID + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Return (ResourceTemplate () + { + Memory32Fixed (ReadWrite, + 0x01E40000, // Address Base + 0x0001FFFF, // Address Length + ) + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) + { + 0x00000157, + } + }) + } + } + + Device (GSI) + { + Name (_DEP, Package (0x01) // _DEP: Dependencies + { + PEP0 + }) + Name (_HID, "QCOM02E7") // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_UID, Zero) // _UID: Unique ID + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + Memory32Fixed (ReadWrite, + 0x01E00000, // Address Base + 0x00030000, // Address Length + ) + Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, ) + { + 0x000001D0, + } + }) + Return (RBUF) /* \_SB_.GSI_._CRS.RBUF */ + } + } + + Device (QDIG) + { + Name (_DEP, Package (0x01) // _DEP: Dependencies + { + GLNK + }) + Name (_HID, "QCOM0225") // _HID: Hardware ID + Alias (PSUB, _SUB) + } + + Device (QCDB) + { + Name (_HID, "QCOM0298") // _HID: Hardware ID + Alias (PSUB, _SUB) + } + + Device (SYSM) + { + Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID + Name (_UID, 0x00100000) // _UID: Unique ID + Name (_LPI, Package (0x05) // _LPI: Low Power Idle States + { + Zero, + 0x01000000, + 0x02, + Package (0x0A) + { + 0x251C, + 0x1770, + Zero, + 0x20, + Zero, + Zero, + 0x3300, + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "platform.F1" + }, + + Package (0x0A) + { + 0x2710, + 0x19C8, + One, + 0x20, + Zero, + Zero, + 0xC300, + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "platform.F2" + } + }) + Device (CLUS) + { + Name (_HID, "ACPI0010" /* Processor Container Device */) // _HID: Hardware ID + Name (_UID, 0x10) // _UID: Unique ID + Name (_LPI, Package (0x05) // _LPI: Low Power Idle States + { + Zero, + 0x01000000, + 0x02, + Package (0x0A) + { + 0x170C, + 0x0BB8, + Zero, + Zero, + Zero, + Zero, + 0x20, + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "L3Cluster.D2" + }, + + Package (0x0A) + { + 0x1770, + 0x0CE4, + One, + Zero, + Zero, + 0x02, + 0x40, + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "L3Cluster.D4" + } + }) + Device (CPU0) + { + Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID + Name (_UID, Zero) // _UID: Unique ID + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + + Name (_LPI, Package (0x07) // _LPI: Low Power Idle States + { + Zero, + Zero, + 0x04, + Package (0x0A) + { + Zero, + Zero, + One, + Zero, + Zero, + Zero, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x00000000FFFFFFFF, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver0.C1" + }, + + Package (0x0A) + { + 0x0190, + 0x64, + Zero, + Zero, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000000000002, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver0.C2" + }, + + Package (0x0A) + { + 0x1388, + 0x01F4, + One, + One, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000003, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver0.C3" + }, + + Package (0x0A) + { + 0x13EC, + 0x0226, + One, + One, + Zero, + 0x02, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000004, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver0.C4" + } + }) + } + + Device (CPU1) + { + Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID + Name (_UID, One) // _UID: Unique ID + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + + Name (_LPI, Package (0x07) // _LPI: Low Power Idle States + { + Zero, + Zero, + 0x04, + Package (0x0A) + { + Zero, + Zero, + One, + Zero, + Zero, + Zero, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x00000000FFFFFFFF, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver1.C1" + }, + + Package (0x0A) + { + 0x0190, + 0x64, + Zero, + Zero, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000000000002, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver1.C2" + }, + + Package (0x0A) + { + 0x1388, + 0x01F4, + One, + One, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000003, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver1.C3" + }, + + Package (0x0A) + { + 0x13EC, + 0x0226, + One, + One, + Zero, + 0x02, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000004, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver1.C4" + } + }) + } + + Device (CPU2) + { + Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID + Name (_UID, 0x02) // _UID: Unique ID + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + + Name (_LPI, Package (0x07) // _LPI: Low Power Idle States + { + Zero, + Zero, + 0x04, + Package (0x0A) + { + Zero, + Zero, + One, + Zero, + Zero, + Zero, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x00000000FFFFFFFF, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver2.C1" + }, + + Package (0x0A) + { + 0x0190, + 0x64, + Zero, + Zero, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000000000002, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver2.C2" + }, + + Package (0x0A) + { + 0x1388, + 0x01F4, + One, + One, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000003, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver2.C3" + }, + + Package (0x0A) + { + 0x13EC, + 0x0226, + One, + One, + Zero, + 0x02, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000004, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver2.C4" + } + }) + } + + Device (CPU3) + { + Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID + Name (_UID, 0x03) // _UID: Unique ID + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + + Name (_LPI, Package (0x07) // _LPI: Low Power Idle States + { + Zero, + Zero, + 0x04, + Package (0x0A) + { + Zero, + Zero, + One, + Zero, + Zero, + Zero, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x00000000FFFFFFFF, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver3.C1" + }, + + Package (0x0A) + { + 0x0190, + 0x64, + Zero, + Zero, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000000000002, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver3.C2" + }, + + Package (0x0A) + { + 0x1388, + 0x01F4, + One, + One, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000003, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver3.C3" + }, + + Package (0x0A) + { + 0x13EC, + 0x0226, + One, + One, + Zero, + 0x02, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000004, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoSilver3.C4" + } + }) + } + + Device (CPU4) + { + Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID + Name (_UID, 0x04) // _UID: Unique ID + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + + Name (_LPI, Package (0x07) // _LPI: Low Power Idle States + { + Zero, + Zero, + 0x04, + Package (0x0A) + { + Zero, + Zero, + One, + Zero, + Zero, + Zero, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x00000000FFFFFFFF, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold0.C1" + }, + + Package (0x0A) + { + 0x0190, + 0x64, + Zero, + Zero, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000000000002, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold0.C2" + }, + + Package (0x0A) + { + 0x03E8, + 0x028A, + One, + One, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000003, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold0.C3" + }, + + Package (0x0A) + { + 0x05DC, + 0x044C, + One, + One, + Zero, + 0x02, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000004, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold0.C4" + } + }) + } + + Device (CPU5) + { + Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID + Name (_UID, 0x05) // _UID: Unique ID + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + + Name (_LPI, Package (0x07) // _LPI: Low Power Idle States + { + Zero, + Zero, + 0x04, + Package (0x0A) + { + Zero, + Zero, + One, + Zero, + Zero, + Zero, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x00000000FFFFFFFF, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold1.C1" + }, + + Package (0x0A) + { + 0x0190, + 0x64, + Zero, + Zero, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000000000002, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold1.C2" + }, + + Package (0x0A) + { + 0x03E8, + 0x028A, + One, + One, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000003, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold1.C3" + }, + + Package (0x0A) + { + 0x05DC, + 0x044C, + One, + One, + Zero, + 0x02, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000004, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold1.C4" + } + }) + } + + Device (CPU6) + { + Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID + Name (_UID, 0x06) // _UID: Unique ID + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + + Name (_LPI, Package (0x07) // _LPI: Low Power Idle States + { + Zero, + Zero, + 0x04, + Package (0x0A) + { + Zero, + Zero, + One, + Zero, + Zero, + Zero, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x00000000FFFFFFFF, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold2.C1" + }, + + Package (0x0A) + { + 0x0190, + 0x64, + Zero, + Zero, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000000000002, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold2.C2" + }, + + Package (0x0A) + { + 0x03E8, + 0x028A, + One, + One, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000003, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold2.C3" + }, + + Package (0x0A) + { + 0x05DC, + 0x044C, + One, + One, + Zero, + 0x02, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000004, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold2.C4" + } + }) + } + + Device (CPU7) + { + Name (_HID, "ACPI0007" /* Processor Device */) // _HID: Hardware ID + Name (_UID, 0x07) // _UID: Unique ID + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + + Name (_LPI, Package (0x07) // _LPI: Low Power Idle States + { + Zero, + Zero, + 0x04, + Package (0x0A) + { + Zero, + Zero, + One, + Zero, + Zero, + Zero, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x00000000FFFFFFFF, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold3.C1" + }, + + Package (0x0A) + { + 0x0190, + 0x64, + Zero, + Zero, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000000000002, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold3.C2" + }, + + Package (0x0A) + { + 0x03E8, + 0x028A, + One, + One, + Zero, + One, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000003, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold3.C3" + }, + + Package (0x0A) + { + 0x05DC, + 0x044C, + One, + One, + Zero, + 0x02, + ResourceTemplate () + { + Register (FFixedHW, + 0x20, // Bit Width + 0x00, // Bit Offset + 0x0000000040000004, // Address + 0x03, // Access Size + ) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + ResourceTemplate () + { + Register (SystemMemory, + 0x00, // Bit Width + 0x00, // Bit Offset + 0x0000000000000000, // Address + ,) + }, + + "KryoGold3.C4" + } + }) + } + } + } + + Device (QRNG) + { + Name (_DEP, Package (0x01) // _DEP: Dependencies + { + PEP0 + }) + Name (_HID, "QCOM02FE") // _HID: Hardware ID + Name (_UID, Zero) // _UID: Unique ID + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + Memory32Fixed (ReadWrite, + 0x00793000, // Address Base + 0x00001000, // Address Length + ) + }) + Return (RBUF) /* \_SB_.QRNG._CRS.RBUF */ + } + } + + Device (GPS) + { + Name (_DEP, Package (0x01) // _DEP: Dependencies + { + GLNK + }) + Name (_HID, "QCOM02B6") // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_CID, "ACPIQCOM24B4") // _CID: Compatible ID + Name (_UID, Zero) // _UID: Unique ID + } + + Device (QGP0) + { + Name (_HID, "QCOM02F4") // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_UID, Zero) // _UID: Unique ID + Name (_CCA, Zero) // _CCA: Cache Coherency Attribute + Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + Memory32Fixed (ReadWrite, + 0x00804000, // Address Base + 0x00050000, // Address Length + ) + Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, ) + { + 0x00000119, + } + Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, ) + { + 0x0000011B, + } + }) + Return (RBUF) /* \_SB_.QGP0._CRS.RBUF */ + } + + Method (GPII, 0, Serialized) + { + Return (Package (0x02) + { + Package (0x03) + { + Zero, + 0x05, + 0x0119 + }, + + Package (0x03) + { + Zero, + 0x07, + 0x011B + } + }) + } + } + + Device (QGP1) + { + Name (_HID, "QCOM02F4") // _HID: Hardware ID + Alias (\_SB.PSUB, _SUB) + Name (_UID, One) // _UID: Unique ID + Name (_CCA, Zero) // _CCA: Cache Coherency Attribute + Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + Memory32Fixed (ReadWrite, + 0x00A04000, // Address Base + 0x00050000, // Address Length + ) + Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, ) + { + 0x00000138, + } + Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, ) + { + 0x0000013A, + } + Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, ) + { + 0x00000145, + } + }) + Return (RBUF) /* \_SB_.QGP1._CRS.RBUF */ + } + + Method (GPII, 0, Serialized) + { + Return (Package (0x03) + { + Package (0x03) + { + One, + One, + 0x0138 + }, + + Package (0x03) + { + One, + 0x03, + 0x013A + }, + + Package (0x03) + { + One, + 0x06, + 0x0145 + } + }) + } + } + + Device (SARM) + { + Name (_HID, "QCOM0301") // _HID: Hardware ID + Alias (PSUB, _SUB) + } + + Scope (\_SB) + { + Device (WBDI) + { + Name (_HID, "SAM0909") // _HID: Hardware ID + Name (_UID, Zero) // _UID: Unique ID + Name (_SUB, "RENEGA0E") // _SUB: Subsystem ID + Name (_DEP, Package (0x02) // _DEP: Dependencies + { + GIO0, + SCM0 + }) + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionNone, + "\\_SB.GIO0", 0x00, ResourceConsumer, , + ) + { // Pin list + 0x003E + } + GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionNone, + "\\_SB.GIO0", 0x00, ResourceConsumer, , + ) + { // Pin list + 0x003B + } + GpioInt (Level, ActiveLow, ExclusiveAndWake, PullDefault, 0x0000, + "\\_SB.GIO0", 0x00, ResourceConsumer, , + ) + { // Pin list + 0x003C + } + }) + Return (RBUF) /* \_SB_.WBDI._CRS.RBUF */ + } + } + } + + Scope (\_SB) + { + Name (GRST, Zero) + } + + Device (SEN2) + { + Name (_DEP, Package (0x03) // _DEP: Dependencies + { + IPC0, + SCSS, + ARPC + }) + Name (_HID, "QCOM0308") // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_CID, "QCOM02A2") // _CID: Compatible ID + } + + Device (LID0) + { + Name (_HID, "PNP0C0D" /* Lid Device */) // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (LIDB, One) + Method (_LID, 0, NotSerialized) // _LID: Lid Status + { + Return (LIDB) /* \_SB_.LID0.LIDB */ + } + } + + Method (ADDR, 0, NotSerialized) + { + If ((SVMJ == One)) + { + Return (0x0390B000) + } + ElseIf ((SVMJ == 0x02)) + { + Return (0x0350B000) + } + } + + OperationRegion (NM11, SystemMemory, ADDR (), 0x14) + Field (NM11, DWordAcc, NoLock, Preserve) + { + PI1C, 32, + PIN1, 32, + PI1N, 32, + PI1S, 32, + PI1L, 32 + } + + Method (_MID, 0, Serialized) + { + Name (NMID, Zero) + NMID = PIN1 /* \_SB_.PIN1 */ + Return (NMID) /* \_SB_._MID.NMID */ + } + + Scope (\_SB) + { + Device (AGNT) + { + Name (_ADR, Zero) // _ADR: Address + Name (_HID, "SAM0603") // _HID: Hardware ID + Name (_CID, "SAM0603") // _CID: Compatible ID + Name (_SUB, "RENEGA0E") // _SUB: Subsystem ID + Name (_UID, One) // _UID: Unique ID + Name (_STA, 0x0F) // _STA: Status + } + } + + Method (ADBG, 1, Serialized) + { + } + + Device (UCP0) + { + Name (_HID, "QCOM02D0") // _HID: Hardware ID + Name (_DEP, Package (0x03) // _DEP: Dependencies + { + PEP0, + PTCC, + URS0 + }) + Device (CON0) + { + Name (_ADR, Zero) // _ADR: Address + 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 = "BACK", + PLD_VerticalPosition = "CENTER", + PLD_HorizontalPosition = "LEFT", + PLD_Shape = "VERTICALRECTANGLE", + PLD_GroupOrientation = 0x0, + PLD_GroupToken = 0x0, + PLD_GroupPosition = 0x1, + 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) + + }) + Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities + { + One, + 0x09, + Zero, + Zero + }) + Name (_DSD, Package (0x02) // _DSD: Device-Specific Data + { + ToUUID ("6b856e62-40f4-4688-bd46-5e888a2260de") /* Unknown UUID */, + Package (0x0A) + { + Package (0x02) + { + One, + 0x04 + }, + + Package (0x02) + { + 0x02, + 0x03 + }, + + Package (0x02) + { + 0x03, + Zero + }, + + Package (0x02) + { + 0x04, + One + }, + + Package (0x02) + { + 0x05, + 0x03 + }, + + Package (0x02) + { + 0x06, + Package (0x01) + { + 0x0001905A + } + }, + + Package (0x02) + { + 0x07, + Package (0x02) + { + 0x0001912C, + 0x0002D0C8 + } + }, + + Package (0x02) + { + 0x08, + Package (0x02) + { + 0xFF01, + 0x3C86 + } + }, + + Package (0x02) + { + 0x09, + One + }, + + Package (0x02) + { + 0x0A, + One + } + } + }) + } + + Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method + { + While (One) + { + Name (_T_0, Buffer (One) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + { + 0x00 // . + }) + CopyObject (ToBuffer (Arg0), _T_0) /* \_SB_.UCP0._DSM._T_0 */ + If ((_T_0 == ToUUID ("18de299f-9476-4fc9-b43b-8aeb713ed751") /* Unknown UUID */)) + { + While (One) + { + Name (_T_1, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_1 = ToInteger (Arg2) + If ((_T_1 == Zero)) + { + While (One) + { + Name (_T_2, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_2 = ToInteger (Arg1) + If ((_T_2 == Zero)) + { + Return (Buffer (One) + { + 0x01 // . + }) + Break + } + Else + { + Return (Buffer (One) + { + 0x01 // . + }) + Break + } + + Break + } + + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + ElseIf ((_T_1 == One)) + { + While (One) + { + Name (_T_3, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_3 = ToInteger (Arg3) + If ((_T_3 == Zero)) + { + Return (Package (0x01) + { + 0x36019050 + }) + Break + } + ElseIf ((_T_3 == One)) + { + Return (Package (0x01) + { + 0x3601912C + }) + Break + } + Else + { + Return (Package (0x01) + { + Zero + }) + Break + } + + Break + } + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + + Break + } + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + + Break + } + } + + Method (CCOT, 2, NotSerialized) + { + CCST = Arg0 + HSFL = Arg1 + } + + Method (CCVL, 0, NotSerialized) + { + Return (CCST) /* \_SB_.CCST */ + } + + Method (HPDS, 0, NotSerialized) + { + Notify (GPU0, 0x94) // Device-Specific + } + + Method (HPDF, 2, NotSerialized) + { + HPDB = Arg0 + PINA = Arg1 + Notify (GPU0, HPDB) + } + + Method (HPDV, 0, NotSerialized) + { + Return (HPDB) /* \_SB_.HPDB */ + } + + Method (PINV, 0, NotSerialized) + { + Return (PINA) /* \_SB_.PINA */ + } + } + + Name (QUFN, Zero) + Name (DPP0, Buffer (One) + { + 0x00 // . + }) + Device (URS0) + { + Method (URSI, 0, NotSerialized) + { + If ((QUFN == Zero)) + { + Return ("QCOM0304") + } + Else + { + Return ("QCOM0305") + } + } + + Alias (URSI, _HID) + Name (_CID, "PNP0CA1") // _CID: Compatible ID + Alias (PSUB, _SUB) + Name (_UID, Zero) // _UID: Unique ID + Name (_CCA, Zero) // _CCA: Cache Coherency Attribute + Name (_DEP, Package (0x01) // _DEP: Dependencies + { + PEP0 + }) + Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings + { + Memory32Fixed (ReadWrite, + 0x0A600000, // Address Base + 0x000FFFFF, // Address Length + ) + }) + Device (USB0) + { + Name (_ADR, Zero) // _ADR: Address + Name (_S0W, 0x03) // _S0W: S0 Device Wake State + 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 = "BACK", + PLD_VerticalPosition = "CENTER", + PLD_HorizontalPosition = "LEFT", + PLD_Shape = "VERTICALRECTANGLE", + PLD_GroupOrientation = 0x0, + PLD_GroupToken = 0x0, + PLD_GroupPosition = 0x1, + 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) + + }) + Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities + { + One, + 0x09, + Zero, + Zero + }) + Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings + { + Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) + { + 0x000000A5, + } + Interrupt (ResourceConsumer, Level, ActiveHigh, SharedAndWake, ,, ) + { + 0x0000017A, + } + Interrupt (ResourceConsumer, Level, ActiveHigh, SharedAndWake, ,, ) + { + 0x00000206, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, SharedAndWake, ,, ) + { + 0x00000208, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, SharedAndWake, ,, ) + { + 0x00000209, + } + }) + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + + Method (DPM0, 1, NotSerialized) + { + DPP0 = Arg0 + Notify (PEP0, 0xA0) // Device-Specific + } + + Method (CCVL, 0, NotSerialized) + { + Return (CCST) /* \_SB_.CCST */ + } + + Method (HSEN, 0, NotSerialized) + { + Return (HSFL) /* \_SB_.HSFL */ + } + + Name (HSEI, ResourceTemplate () + { + GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionNone, + "\\_SB.GIO0", 0x00, ResourceConsumer, , + ) + { // Pin list + 0x002B + } + }) + Scope (^^GIO0) + { + OperationRegion (HLEN, GeneralPurposeIo, Zero, One) + } + + Field (^^GIO0.HLEN, ByteAcc, NoLock, Preserve) + { + Connection (HSEI), + MOD1, 1 + } + + Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method + { + While (One) + { + Name (_T_0, Buffer (One) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + { + 0x00 // . + }) + CopyObject (ToBuffer (Arg0), _T_0) /* \_SB_.URS0.USB0._DSM._T_0 */ + If ((_T_0 == ToUUID ("ce2ee385-00e6-48cb-9f05-2edb927c4899") /* USB Controller */)) + { + While (One) + { + Name (_T_1, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_1 = ToInteger (Arg2) + If ((_T_1 == Zero)) + { + While (One) + { + Name (_T_2, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_2 = ToInteger (Arg1) + If ((_T_2 == Zero)) + { + Return (Buffer (One) + { + 0x1D // . + }) + Break + } + Else + { + Return (Buffer (One) + { + 0x01 // . + }) + Break + } + + Break + } + + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + ElseIf ((_T_1 == 0x02)) + { + Return (Zero) + Break + } + ElseIf ((_T_1 == 0x03)) + { + Return (One) + Break + } + ElseIf ((_T_1 == 0x04)) + { + Return (0x02) + Break + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + + Break + } + } + ElseIf ((_T_0 == ToUUID ("a9a82a56-95a1-4b4a-b014-3be47df1b7d5") /* Unknown UUID */)) + { + While (One) + { + Name (_T_3, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_3 = ToInteger (Arg1) + If ((_T_3 == One)) + { + While (One) + { + Name (_T_4, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_4 = ToInteger (Arg2) + If ((_T_4 == One)) + { + ADBG ("MOD1+") + MOD1 = One + Return (Buffer (One) + { + 0x01 // . + }) + } + ElseIf ((_T_4 == Zero)) + { + ADBG ("MOD1-") + MOD1 = Zero + Return (Buffer (One) + { + 0x01 // . + }) + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + } + + Break + } + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + } + + Break + } + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + + Break + } + } + + Method (PHYC, 0, NotSerialized) + { + Name (CFG0, Package (0x01) + { + Package (0x03) + { + Zero, + 0x088E2198, + 0x20 + } + }) + Return (CFG0) /* \_SB_.URS0.USB0.PHYC.CFG0 */ + } + + Device (RHUB) + { + Name (_ADR, Zero) // _ADR: Address + Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method + { + While (One) + { + Name (_T_0, Buffer (One) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + { + 0x00 // . + }) + CopyObject (ToBuffer (Arg0), _T_0) /* \_SB_.URS0.USB0.RHUB._DSM._T_0 */ + If ((_T_0 == ToUUID ("a9a82a56-95a1-4b4a-b014-3be47df1b7d5") /* Unknown UUID */)) + { + While (One) + { + Name (_T_1, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_1 = ToInteger (Arg1) + If ((_T_1 == One)) + { + While (One) + { + Name (_T_2, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_2 = ToInteger (Arg2) + If ((_T_2 == One)) + { + ADBG ("MOD1++") + MOD1 = One + Return (Buffer (One) + { + 0x01 // . + }) + } + ElseIf ((_T_2 == Zero)) + { + ADBG ("MOD1--") + MOD1 = Zero + Return (Buffer (One) + { + 0x01 // . + }) + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + } + + Break + } + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + } + + Break + } + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + + Break + } + } + } + } + + Device (UFN0) + { + Name (_ADR, One) // _ADR: Address + Name (_S0W, 0x03) // _S0W: S0 Device Wake State + 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 = "BACK", + PLD_VerticalPosition = "CENTER", + PLD_HorizontalPosition = "LEFT", + PLD_Shape = "VERTICALRECTANGLE", + PLD_GroupOrientation = 0x0, + PLD_GroupToken = 0x0, + PLD_GroupPosition = 0x1, + 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) + + }) + Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities + { + One, + 0x09, + Zero, + Zero + }) + Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings + { + Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, ) + { + 0x000000A5, + } + Interrupt (ResourceConsumer, Level, ActiveHigh, SharedAndWake, ,, ) + { + 0x000000A2, + } + }) + Method (CCVL, 0, NotSerialized) + { + Return (CCST) /* \_SB_.CCST */ + } + + Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method + { + While (One) + { + Name (_T_0, Buffer (One) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + { + 0x00 // . + }) + CopyObject (ToBuffer (Arg0), _T_0) /* \_SB_.URS0.UFN0._DSM._T_0 */ + If ((_T_0 == ToUUID ("fe56cfeb-49d5-4378-a8a2-2978dbe54ad2") /* Unknown UUID */)) + { + While (One) + { + Name (_T_1, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_1 = ToInteger (Arg2) + If ((_T_1 == Zero)) + { + While (One) + { + Name (_T_2, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_2 = ToInteger (Arg1) + If ((_T_2 == Zero)) + { + Return (Buffer (One) + { + 0x03 // . + }) + Break + } + Else + { + Return (Buffer (One) + { + 0x01 // . + }) + Break + } + + Break + } + + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + ElseIf ((_T_1 == One)) + { + Return (0x20) + Break + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + + Break + } + } + ElseIf ((_T_0 == ToUUID ("18de299f-9476-4fc9-b43b-8aeb713ed751") /* Unknown UUID */)) + { + While (One) + { + Name (_T_3, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_3 = ToInteger (Arg2) + If ((_T_3 == Zero)) + { + While (One) + { + Name (_T_4, Zero) // _T_x: Emitted by ASL Compiler, x=0-9, A-Z + _T_4 = ToInteger (Arg1) + If ((_T_4 == Zero)) + { + Return (Buffer (One) + { + 0x03 // . + }) + Break + } + Else + { + Return (Buffer (One) + { + 0x01 // . + }) + Break + } + + Break + } + + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + ElseIf ((_T_3 == One)) + { + Return (0x39) + Break + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + + Break + } + } + Else + { + Return (Buffer (One) + { + 0x00 // . + }) + Break + } + + Break + } + } + + Method (PHYC, 0, NotSerialized) + { + Name (CFG0, Package (0x12) + { + Package (0x03) + { + Zero, + 0x088E2210, + 0x23 + }, + + Package (0x03) + { + Zero, + 0x088E2004, + 0x03 + }, + + Package (0x03) + { + Zero, + 0x088E218C, + 0x7C + }, + + Package (0x03) + { + Zero, + 0x088E202C, + 0x80 + }, + + Package (0x03) + { + Zero, + 0x088E2184, + 0x0A + }, + + Package (0x03) + { + Zero, + 0x088E20B4, + 0x19 + }, + + Package (0x03) + { + Zero, + 0x088E2194, + 0x40 + }, + + Package (0x03) + { + Zero, + 0x088E2198, + 0x28 + }, + + Package (0x03) + { + Zero, + 0x088E2214, + 0x21 + }, + + Package (0x03) + { + Zero, + 0x088E2220, + Zero + }, + + Package (0x03) + { + Zero, + 0x088E2224, + 0x58 + }, + + Package (0x03) + { + Zero, + 0x088E2240, + 0x35 + }, + + Package (0x03) + { + Zero, + 0x088E2244, + 0x29 + }, + + Package (0x03) + { + Zero, + 0x088E2248, + 0xCA + }, + + Package (0x03) + { + Zero, + 0x088E224C, + 0x04 + }, + + Package (0x03) + { + Zero, + 0x088E2250, + 0x03 + }, + + Package (0x03) + { + Zero, + 0x088E223C, + Zero + }, + + Package (0x03) + { + Zero, + 0x088E2210, + 0x22 + } + }) + Return (CFG0) /* \_SB_.URS0.UFN0.PHYC.CFG0 */ + } + } + } + + Name (HPDB, Zero) + Name (PINA, Zero) + Name (CCST, Buffer (One) + { + 0x02 // . + }) + Name (HSFL, Buffer (One) + { + 0x00 // . + }) + Name (HPDS, Zero) + Name (USBC, Buffer (One) + { + 0x0B // . + }) + Name (DPPN, 0x0D) + Name (MUXC, Buffer (One) + { + 0x00 // . + }) + Name (DPP1, Buffer (One) + { + 0x00 // . + }) + Name (SKYD, Buffer (One) + { + 0x01 // . + }) + +Include("cust_thermal_zones.asl") + + Name (HWNH, Zero) + Name (HWNL, Zero) + Device (HWN1) + { + Name (_HID, "QCOM02A9") // _HID: Hardware ID + Alias (PSUB, _SUB) + Method (_STA, 0, NotSerialized) // _STA: Status + { + If ((HWNH == Zero)) + { + Return (Zero) + } + Else + { + Return (0x0F) + } + } + + Name (_DEP, Package (0x01) // _DEP: Dependencies + { + PMIC + }) + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + GpioInt (Level, ActiveHigh, Exclusive, PullNone, 0x0000, + "\\_SB.PM01", 0x00, ResourceConsumer, , + ) + { // Pin list + 0x0190 + } + }) + Return (RBUF) /* \_SB_.HWN1._CRS.RBUF */ + } + + Method (HAPI, 0, NotSerialized) + { + Name (CFG0, Package (0x03) + { + One, + One, + One + }) + Return (CFG0) /* \_SB_.HWN1.HAPI.CFG0 */ + } + + Method (HAPC, 0, NotSerialized) + { + Name (CFG0, Package (0x16) + { + Zero, + 0x0984, + Zero, + One, + One, + One, + One, + Zero, + 0x04, + One, + 0x03, + 0x14, + One, + 0x03, + Zero, + Zero, + 0x06, + Zero, + Zero, + 0x0535, + 0x03, + One + }) + Return (CFG0) /* \_SB_.HWN1.HAPC.CFG0 */ + } + } + + Device (HWN0) + { + Name (_HID, "QCOM02A8") // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_UID, Zero) // _UID: Unique ID + Method (_STA, 0, NotSerialized) // _STA: Status + { + If ((^^HWNL == Zero)) + { + Return (Zero) + } + Else + { + Return (0x0F) + } + } + + Method (HWNL, 0, NotSerialized) + { + Name (CFG0, Package (0x10) + { + One, + 0x03, + 0x019B, + 0x14, + 0x20, + 0x02, + 0x40, + 0x03, + 0x80, + 0x04, + One, + One, + One, + 0x03, + One, + One + }) + Return (CFG0) /* \_SB_.HWN0.HWNL.CFG0 */ + } + } + + Device (CONT) + { + Name (_HID, "CONT1234") // _HID: Hardware ID + Name (_CID, "PNP0C60" /* Display Sensor Device */) // _CID: Compatible ID + } + + Device (POWR) + { + Name (_HID, "POWR1234") // _HID: Hardware ID + Name (_CID, "PNP0C40" /* Standard Button Controller */) // _CID: Compatible ID + } + + Device (SVBI) + { + Name (_HID, "SAMM0901") // _HID: Hardware ID + Name (_SUB, "RENEGA0E") // _SUB: Subsystem ID + } + + Device (TSC1) + { + Name (_HID, "MSHW1003") // _HID: Hardware ID + Name (_UID, One) // _UID: Unique ID + Name (_DEP, Package (0x03) // _DEP: Dependencies + { + PEP0, + GIO0, + IC15 + }) + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + I2cSerialBusV2 (0x0020, ControllerInitiated, 0x00061A80, + AddressingMode7Bit, "\\_SB.IC15", + 0x00, ResourceConsumer, , Exclusive, + ) + GpioInt (Edge, ActiveLow, ExclusiveAndWake, PullUp, 0x0000, + "\\_SB.GIO0", 0x00, ResourceConsumer, , + ) + { // Pin list + 0x007D + } + GpioIo (Exclusive, PullNone, 0x0000, 0x0000, IoRestrictionNone, + "\\_SB.GIO0", 0x00, ResourceConsumer, , + ) + { // Pin list + 0x0063 + } + }) + Return (RBUF) /* \_SB_.TSC1._CRS.RBUF */ + } + + Name (PGID, Buffer (0x0A) + { + "\\_SB.TSC1" + }) + Name (DBUF, Buffer (DBFL){}) + CreateByteField (DBUF, Zero, STAT) + CreateByteField (DBUF, 0x02, DVAL) + CreateField (DBUF, 0x18, 0xA0, DEID) + Method (_S1D, 0, NotSerialized) // _S1D: S1 Device State + { + Return (0x03) + } + + Method (_S2D, 0, NotSerialized) // _S2D: S2 Device State + { + Return (0x03) + } + + Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State + { + Return (0x03) + } + + Method (_PS0, 0, NotSerialized) // _PS0: Power State 0 + { + DEID = Buffer (ESNL){} + DVAL = Zero + DEID = PGID /* \_SB_.TSC1.PGID */ + If (^^ABD.AVBL) + { + ^^PEP0.FLD0 = DBUF /* \_SB_.TSC1.DBUF */ + } + } + + Method (_PS3, 0, NotSerialized) // _PS3: Power State 3 + { + DEID = Buffer (ESNL){} + DVAL = 0x03 + DEID = PGID /* \_SB_.TSC1.PGID */ + If (^^ABD.AVBL) + { + ^^PEP0.FLD0 = DBUF /* \_SB_.TSC1.DBUF */ + } + } + } + + Device (BTNS) + { + Name (_HID, "ACPI0011" /* Generic Buttons Device */) // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_UID, Zero) // _UID: Unique ID + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (RBUF, ResourceTemplate () + { + GpioInt (Edge, ActiveBoth, Exclusive, PullDown, 0x0010, + "\\_SB.PM01", 0x00, ResourceConsumer, , + ) + { // Pin list + 0x0000 + } + GpioInt (Edge, ActiveBoth, ExclusiveAndWake, PullUp, 0x0000, + "\\_SB.PM01", 0x00, ResourceConsumer, , + ) + { // Pin list + 0x0085 + } + GpioInt (Edge, ActiveBoth, ExclusiveAndWake, PullDown, 0x0000, + "\\_SB.PM01", 0x00, ResourceConsumer, , + ) + { // Pin list + 0x0084 + } + }) + Return (RBUF) /* \_SB_.BTNS._CRS.RBUF */ + } + + Name (_DSD, Package (0x02) // _DSD: Device-Specific Data + { + ToUUID ("fa6bd625-9ce8-470d-a2c7-b3ca36c4282e") /* Generic Buttons Device */, + Package (0x06) + { + Package (0x05) + { + Zero, + One, + Zero, + One, + 0x0D + }, + + Package (0x05) + { + One, + Zero, + One, + One, + 0x81 + }, + + Package (0x05) + { + One, + One, + One, + 0x0C, + 0xE9 + }, + + Package (0x05) + { + One, + 0x02, + One, + 0x0C, + 0xEA + }, + + Package (0x05) + { + One, + 0x03, + One, + 0x90, + 0x20 + }, + + Package (0x05) + { + One, + 0x04, + One, + 0x90, + 0x21 + } + } + }) + } + + Device (QDCI) + { + Name (_DEP, Package (0x01) // _DEP: Dependencies + { + GLNK + }) + Name (_HID, "QCOM0224") // _HID: Hardware ID + Alias (PSUB, _SUB) + } + + Device (BTH0) + { + Name (_HID, "QCON02B5") // _HID: Hardware ID + Alias (PSUB, _SUB) + Name (_DEP, Package (0x03) // _DEP: Dependencies + { + PEP0, + PMIC, + UAR7 + }) + Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake + { + Zero, + Zero + }) + Name (_S4W, 0x02) // _S4W: S4 Device Wake State + Name (_S0W, 0x02) // _S0W: S0 Device Wake State + Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings + { + Name (PBUF, ResourceTemplate () + { + UartSerialBusV2 (0x0001C200, DataBitsEight, StopBitsOne, + 0xC0, LittleEndian, ParityTypeNone, FlowControlHardware, + 0x0020, 0x0020, "\\_SB.UAR7", + 0x00, ResourceConsumer, , Exclusive, + ) + }) + Return (PBUF) /* \_SB_.BTH0._CRS.PBUF */ + } + + Method (_STA, 0, NotSerialized) // _STA: Status + { + Return (0x0F) + } + } + + Include("adc.asl") + } + + Name (WAKP, Package (0x02) + { + Zero, + Zero + }) +} + diff --git a/beryllium/adc.asl b/beryllium/adc.asl new file mode 100644 index 0000000..01b979e --- /dev/null +++ b/beryllium/adc.asl @@ -0,0 +1,707 @@ +/*============================================================================ + FILE: adc.asl + + OVERVIEW: This file contains the board-specific configuration info for + ADC1 - qcadc analog-to-digital converter (ADC): ACPI device + definitions, common settings, etc. + + DEPENDENCIES: None + +============================================================================*/ +/*---------------------------------------------------------------------------- + * QCADC + * -------------------------------------------------------------------------*/ + +Device(ADC1) +{ + /*---------------------------------------------------------------------------- + * Dependencies + * -------------------------------------------------------------------------*/ + Name(_DEP, Package(0x2) + { + \_SB_.SPMI, + \_SB_.PMIC + }) + + /*---------------------------------------------------------------------------- + * HID + * -------------------------------------------------------------------------*/ + Name(_HID, "QCOM0221") + Alias(\_SB.PSUB, _SUB) + Name(_UID, 0) + + /*---------------------------------------------------------------------------- + * ADC Resources + * -------------------------------------------------------------------------*/ + Method(_CRS) + { + /* + * Interrupts + */ + Name (INTB, ResourceTemplate() + { + // VAdc - EOC + // ID = {slave id}{perph id}{int} = {0}{0011 0001}{000} = 0x188 + GpioInt(Edge, ActiveHigh, ExclusiveAndWake, PullUp, 0, "\\_SB.PM01", , , , RawDataBuffer(){0x2}) {32} // 0x188 - PM_INT__VADC_HC1_USR__EOC + + // VAdc TM - All interrupts + // ID = {slave id}{perph id}{int} = {0}{0011 0100}{000} = 0x1A0 + GpioInt(Edge, ActiveHigh, ExclusiveAndWake, PullUp, 0, "\\_SB.PM01", , , , RawDataBuffer(){0x2}) {40} // 0x1A0 - PM_INT__VADC_HC7_BTM__THR + + // FgAdc - All interrupts + // ID = {slave id}{perph id}{int} = {10}{0100 0101}{000} = 0x1228 + GpioInt(Edge, ActiveHigh, ExclusiveAndWake, PullUp, 0, "\\_SB.PM01", , , , RawDataBuffer(){0x2}) {360} // 0x1228 - PM_INT__FG_ADC__BT_ID + }) + + /* + * SPMI peripherals + */ + Name(NAM, Buffer() {"\\_SB.SPMI"}) + + // VAdc + Name(VUSR, Buffer() + { + 0x8E, // SPB Descriptor + 0x13, 0x00, // Length including NAM above + 0x01, // +0x00 SPB Descriptor Revision + 0x00, // +0x01 Resource Source Index + 0xC1, // +0x02 Bus type - vendor defined values are in the range 0xc0-0xff + 0x02, // +0x03 Consumer + controller initiated + 0x00, 0x31, // +0x04 Type specific flags . Slave id, Upper8 bit address + 0x01, // +0x06 Type specific revision + 0x00, 0x00 // +0x07 type specific data length + // +0x09 - 0xd bytes for NULL-terminated NAM + // Length = 0x13 + }) + + // VAdc TM + Name(VBTM, Buffer() + { + 0x8E, // SPB Descriptor + 0x13, 0x00, // Length including NAM above + 0x01, // +0x00 SPB Descriptor Revision + 0x00, // +0x01 Resource Source Index + 0xC1, // +0x02 Bus type - vendor defined values are in the range 0xc0-0xff + 0x02, // +0x03 Consumer + controller initiated + 0x00, 0x34, // +0x04 Type specific flags . Slave id, Upper8 bit address + 0x01, // +0x06 Type specific revision + 0x00, 0x00 // +0x07 type specific data length + // +0x09 - 0xd bytes for NULL-terminated NAM + // Length = 0x13 + }) + + // FgAdc + Name(FGRR, Buffer() + { + 0x8E, // SPB Descriptor + 0x13, 0x00, // Length including NAM above + 0x01, // +0x00 SPB Descriptor Revision + 0x00, // +0x01 Resource Source Index + 0xC1, // +0x02 Bus type - vendor defined values are in the range 0xc0-0xff + 0x02, // +0x03 Consumer + controller initiated + 0x02, 0x45, // +0x04 Type specific flags . Slave id, Upper8 bit address + 0x01, // +0x06 Type specific revision + 0x00, 0x00 // +0x07 type specific data length + // +0x09 - 0xd bytes for NULL-terminated NAM + // Length = 0x13 + }) + + // Name(END, Buffer() {0x79, 0x00}) + + // {VUSR, NAM, VBTM, NAM, FGRR, NAM, INTB} + // {Local1, Local2, Local3, INTB} + // {Local4, Local5} + // {Local0} + Concatenate(VUSR, NAM, Local1) + Concatenate(VBTM, NAM, Local2) + Concatenate(FGRR, NAM, Local3) + Concatenate(Local1, Local2, Local4) + Concatenate(Local3, INTB, Local5) + Concatenate(Local4, Local5, Local0) + + Return(Local0) + } + + /*---------------------------------------------------------------------------- + * Device configuration + * -------------------------------------------------------------------------*/ + /* + * General ADC properties + * + * bHasVAdc: + * Whether or not TM is supported. + * 0 - Not supported + * 1 - Supported + * + * bHasTM: + * Whether or not TM is supported. + * 0 - Not supported + * 1 - Supported + * + * bHasFgAdc: + * Whether or not FGADC is supported. + * 0 - Not supported + * 1 - Supported + * + */ + Method (ADDV) + { + Return (Package() + { + /* .bHasVAdc = */ 1, + /* .bHasTM = */ 1, + /* .bHasFgAdc = */ 1, + }) + } + + /*---------------------------------------------------------------------------- + * Voltage ADC (VADC) Configuration + * -------------------------------------------------------------------------*/ + /* + * General VADC properties + * + * bUsesInterrupts: + * End-of-conversion interrupt mode. + * 0 - Polling mode + * 1 - Interrupt mode + * + * uFullScale_code: + * Full-scale ADC code. + * + * uFullScale_uV: + * Full-scale ADC voltage in uV. + * + * uReadTimeout_us: + * Timeout for reading ADC channels in us. + * + * uLDOSettlingTime_us: + * LDO settling time in us. + * + * ucMasterID: + * Master ID to send the interrupt to. + * + * ucPmicDevice: + * PMIC which has the VAdc. + * + * usMinDigRev: + * Minimum digital version + * + * usMinAnaRev: + * Minimum analog version + * + * ucPerphType: + * ADC peripheral type. + * + */ + Method (GENP) + { + Return (Package() + { + /* .bUsesInterrupts = */ 0, + /* .uFullScale_code = */ 0x4000, + /* .uFullScale_uV = */ 1875000, + /* .uReadTimeout_us = */ 500000, + /* .uLDOSettlingTime_us = */ 17, + /* .ucMasterID = */ 0, + /* .ucPmicDevice = */ 0, + /* .usMinDigRev = */ 0x300, + /* .usMinAnaRev = */ 0x100, + /* .ucPerphType = */ 0x8, + }) + } + + /*=========================================================================== + + FUNCTION PTCF + + DESCRIPTION Scales the ADC result from millivolts to 0.001 degrees + Celsius using the PMIC thermistor conversion equation. + + DEPENDENCIES None + + PARAMETERS Arg0 [in] ADC result data (uMicroVolts) + + RETURN VALUE Scaled result in mDegC + + SIDE EFFECTS None + + ===========================================================================*/ + Method (PTCF, 1) + { + /* + * Divide by two to convert from microvolt reading to micro-Kelvin. + * + * Subtract 273160 to convert the temperature from Kelvin to + * 0.001 degrees Celsius. + */ + ShiftRight (Arg0, 1, Local0) + Subtract (Local0, 273160, Local0) + Return (Local0) + } + + /*=========================================================================== + + FUNCTION PTCI + + DESCRIPTION Inverse of PTCF - scaled PMIC temperature to microvolts. + + DEPENDENCIES None + + PARAMETERS Arg0 [in] temperature in mDegC + + RETURN VALUE ADC result data (uMicroVolts) + + SIDE EFFECTS None + + ===========================================================================*/ + Method (PTCI, 1) + { + Add (Arg0, 273160, Local0) + ShiftLeft (Local0, 1, Local0) + Return (Local0) + } + + /* + * VADC channel to GPIO mapping + * + */ + Method (VGIO) + { + Return (Package() + { + Package() + { + /* .GPIO = */ 8, + /* .aucChannels = */ Buffer(){0x12, 0x32, 0x52, 0x72}, + }, + + Package() + { + /* .GPIO = */ 9, + /* .aucChannels = */ Buffer(){0x13, 0x33, 0x53, 0x73}, + }, + + Package() + { + /* .GPIO = */ 10, + /* .aucChannels = */ Buffer(){0x14, 0x34, 0x54, 0x74}, + }, + + Package() + { + /* .GPIO = */ 11, + /* .aucChannels = */ Buffer(){0x15, 0x35, 0x55, 0x75}, + }, + + Package() + { + /* .GPIO = */ 12, + /* .aucChannels = */ Buffer(){0x16, 0x36, 0x56, 0x76}, + }, + + Package() + { + /* .GPIO = */ 21, + /* .aucChannels = */ Buffer(){0x17, 0x37, 0x57, 0x77, 0x97}, + }, + + Package() + { + /* .GPIO = */ 22, + /* .aucChannels = */ Buffer(){0x18, 0x38, 0x58, 0x78, 0x98}, + }, + + Package() + { + /* .GPIO = */ 23, + /* .aucChannels = */ Buffer(){0x19, 0x39, 0x59, 0x79, 0x99}, + }, + }) + } + + /*---------------------------------------------------------------------------- + * Voltage ADC Threshold Monitor (VADCTM) Configuration + * -------------------------------------------------------------------------*/ + /* + * General VADCTM properties + * + * eAverageMode: + * Obtains N ADC readings and averages them together. + * 0 - VADCTM_AVERAGE_1_SAMPLE + * 1 - VADCTM_AVERAGE_2_SAMPLES + * 2 - VADCTM_AVERAGE_4_SAMPLES + * 3 - VADCTM_AVERAGE_8_SAMPLES + * 4 - VADCTM_AVERAGE_16_SAMPLES + * + * eDecimationRatio: + * The decimation ratio. + * 0 - VADCTM_DECIMATION_RATIO_256 + * 1 - VADCTM_DECIMATION_RATIO_512 + * 2 - VADCTM_DECIMATION_RATIO_1024 + * + * uFullScale_code: + * Full-scale ADC code. + * + * uFullScale_uV: + * Full-scale ADC voltage in uV. + * + * ucMasterID: + * Master ID to send the interrupt to. + * + * ucPmicDevice: + * PMIC which has the VAdc. + * + * usMinDigRev: + * Minimum digital version + * + * usMinAnaRev: + * Minimum analog version + * + * ucPerphType: + * ADC peripheral type. + * + */ + Method (VTGN) + { + Return (Package() + { + /* .eAverageMode = */ 2, + /* .eDecimationRatio = */ 2, + /* .uFullScale_code = */ 0x4000, + /* .uFullScale_uV = */ 1875000, + /* .ucMasterID = */ 0, + /* .ucPmicDevice = */ 0, + /* .usMinDigRev = */ 0x300, + /* .usMinAnaRev = */ 0x100, + /* .ucPerphType = */ 0x8, + }) + } + + /*---------------------------------------------------------------------------- + * Fuel Gauge ADC (FGADC) Configuration + * -------------------------------------------------------------------------*/ + /* + * General FGADC properties + * + * skinTempThreshRange: + * Range for skin temperature thresholds + * + * chgTempThreshRange: + * Range for charger temperature thresholds + * + * uFullScale_code: + * Full scale ADC value in code. + * + * uFullScale_uV: + * Full scale ADC value in microvolts. + * + * uMicroVoltsPerMilliAmps: + * Microvolts per milliamp scaling factor. + * + * uCodePerKelvin: + * Code per Kelvin scaling factor. + * + * uBattIdClipThresh: + * Max code for a BATT ID channel. + * + * uMaxWaitTimeus: + * Maximum time to wait for a reading to complete in microseconds. + * + * uSlaveId: + * PMIC slave ID. + * + * ucPmicDevice: + * PMIC which has the VAdc. + * + * ucPerphType: + * ADC peripheral type. + * + */ + Method (GENF) + { + Return (Package() + { + /* .skinTempThreshRange.nMin = */ 0xFFFFFFE2, // -30 + /* .skinTempThreshRange.nMax = */ 97, + /* .chgTempThreshRange.nMin = */ 0xFFFFFFCE, // -50 + /* .chgTempThreshRange.nMax = */ 160, + /* .uFullScale_code = */ 0x3ff, + /* .uFullScale_uV = */ 2500000, + /* .uMicroVoltsPerMilliAmps = */ 500, + /* .uCodePerKelvin = */ 4, + /* .uBattIdClipThresh = */ 820, + /* .uMaxWaitTimeUs = */ 5000000, + /* .uSlaveId = */ 2, + /* .ucPmicDevice = */ 1, + /* .ucPerphType = */ 0xD, + }) + } + + /* + * FGADC Channel Configuration Table + * + * The following table is the list of channels the FGADC can read. Below is + * a description of each field: + * + * sName: + * Appropriate string name for the channel from AdcInputs.h. + * + * eChannel: + * Which channel. + * 0 - FGADC_CHAN_SKIN_TEMP + * 1 - FGADC_CHAN_BATT_ID + * 2 - FGADC_CHAN_BATT_ID_FRESH + * 3 - FGADC_CHAN_BATT_ID_5 + * 4 - FGADC_CHAN_BATT_ID_15 + * 5 - FGADC_CHAN_BATT_ID_150 + * 6 - FGADC_CHAN_BATT_THERM + * 7 - FGADC_CHAN_AUX_THERM + * 8 - FGADC_CHAN_USB_IN_V + * 9 - FGADC_CHAN_USB_IN_I + * 10 - FGADC_CHAN_DC_IN_V + * 11 - FGADC_CHAN_DC_IN_I + * 12 - FGADC_CHAN_DIE_TEMP + * 13 - FGADC_CHAN_CHARGER_TEMP + * 14 - FGADC_CHAN_GPIO + * + * eEnable: + * Whether or not to enable the channel. + * 0 - FGADC_DISABLE + * 1 - FGADC_ENABLE + * + * ucTriggers: + * Mask of triggers. Use 0x0 for default trigger configuration. + * + * scalingFactor.num: + * Numerator of the channel scaling + * + * scalingFactor.den: + * Denominator of the channel scaling + * + * eScaling: + * The scaling method to use. + * 0 - FGADC_SCALE_TO_MILLIVOLTS + * 1 - FGADC_SCALE_BATT_ID_TO_OHMS + * 2 - FGADC_SCALE_INTERPOLATE_FROM_MILLIVOLTS (requires uInterpolationTableName) + * 3 - FGADC_SCALE_THERMISTOR + * 4 - FGADC_SCALE_CURRENT_TO_MILLIAMPS + * + * uInterpolationTableName: + * The name of the lookup table in ACPI that will be interpolated to obtain + * a physical value. Note that the physical value (which has default units + * of millivolts unless custom scaling function is used) is passed as the + * input. This value corresponds to the first column of the table. The + * scaled output appears in the physical adc result. + * 0 - No interpolation table + * WXYZ - Where 'WXYZ' is the interpolation table name + * + */ + Method (FCHN) + { + Return (Package() + { + /* BATT_ID_OHMS (BATT_ID pin) */ + Package() + { + /* .sName = */ "BATT_ID_OHMS", + /* .eChannel = */ 1, + /* .eEnable = */ 1, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScaling = */ 1, + /* .uInterpolationTableName = */ 0, + }, + + /* BATT_ID_OHMS_FRESH (BATT_ID pin) */ + Package() + { + /* .sName = */ "BATT_ID_OHMS_FRESH", + /* .eChannel = */ 2, + /* .eEnable = */ 1, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScaling = */ 1, + /* .uInterpolationTableName = */ 0, + }, + + /* BATT_THERM (BATT_THERM pin) */ + Package() + { + /* .sName = */ "BATT_THERM", + /* .eChannel = */ 6, + /* .eEnable = */ 1, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScaling = */ 3, + /* .uInterpolationTableName = */ 0, + }, + + /* AUX_THERM (AUX_THERM pin) */ + Package() + { + /* .sName = */ "AUX_THERM", + /* .eChannel = */ 7, + /* .eEnable = */ 1, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScaling = */ 3, + /* .uInterpolationTableName = */ 0, + }, + + /* SKIN_THERM (AUX_THERM pin) */ + Package() + { + /* .sName = */ "SKIN_THERM", + /* .eChannel = */ 0, + /* .eEnable = */ 1, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScaling = */ 3, + /* .uInterpolationTableName = */ 0, + }, + + /* PMIC_TEMP2 (internal sensor) */ + Package() + { + /* .sName = */ "PMIC_TEMP2", + /* .eChannel = */ 12, + /* .eEnable = */ 1, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 3, + /* .scalingFactor.den = */ 2, + /* .eScaling = */ 2, + /* .uInterpolationTableName = */ FGDT, + }, + + /* CHG_TEMP (internal sensor) */ + Package() + { + /* .sName = */ "CHG_TEMP", + /* .eChannel = */ 13, + /* .eEnable = */ 1, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 3, + /* .scalingFactor.den = */ 2, + /* .eScaling = */ 2, + /* .uInterpolationTableName = */ FGCT, + }, + + /* USB_IN (USB_IN pin) */ + Package() + { + /* .sName = */ "USB_IN", + /* .eChannel = */ 8, + /* .eEnable = */ 1, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 8, + /* .eScaling = */ 0, + /* .uInterpolationTableName = */ 0, + }, + + /* USB_IN_I (USB_IN pin) */ + Package() + { + /* .sName = */ "USB_IN_I", + /* .eChannel = */ 9, + /* .eEnable = */ 1, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScaling = */ 4, + /* .uInterpolationTableName = */ 0, + }, + + /* DC_IN (DC_IN pin) */ + Package() + { + /* .sName = */ "DC_IN", + /* .eChannel = */ 10, + /* .eEnable = */ 1, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 8, + /* .eScaling = */ 0, + /* .uInterpolationTableName = */ 0, + }, + + /* DC_IN_I (DC_IN pin) */ + Package() + { + /* .sName = */ "DC_IN_I", + /* .eChannel = */ 11, + /* .eEnable = */ 1, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScaling = */ 4, + /* .uInterpolationTableName = */ 0, + }, + + /* FG_GPIO */ + Package() + { + /* .sName = */ "FG_GPIO", + /* .eChannel = */ 14, + /* .eEnable = */ 0, + /* .ucTriggers = */ 0x0, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 2, + /* .eScaling = */ 0, + /* .uInterpolationTableName = */ 0, + }, + }) + } + + /* + * Die temperature sensor scaling table + * + * The first column in the table is sensor voltage in millivolts and the + * second column is the temperature in milli degrees C. + * + * Scaling equation: + * + * milliDegC = (uV - 600000) / 2 + 25000 + * + */ + Method (FGDT) + { + Return (Package() + { + Package(){ 450, 0xFFFF3CB0}, // -50000 + Package(){ 870, 160000} + }) + } + + /* + * NOTE: CHG_TEMP on PMI8998 uses fab-dependent scaling in the driver. + * This is the default scaling if no fab-dependent scaling is found. + * It corresponds to GF. + */ + /* + * Charger temperature sensor scaling table + * + * The first column in the table is sensor voltage in millivolts and the + * second column is the temperature in milli degrees C. + * + * Scaling equation: + * + * milliDegC = (1303168 - uV) / 3.784 + 25000 + * + */ + Method (FGCT) + { + Return (Package() + { + Package(){ 1587, 0xFFFF3CB0}, // -50000 + Package(){ 792, 160000} + }) + } +} + +Include("cust_adc.asl") diff --git a/beryllium/cust_adc.asl b/beryllium/cust_adc.asl new file mode 100644 index 0000000..4f188a1 --- /dev/null +++ b/beryllium/cust_adc.asl @@ -0,0 +1,898 @@ +/*============================================================================ + FILE: cust_adc.asl + + OVERVIEW: This file contains the board-specific configuration info for + ADC1 - qcadc analog-to-digital converter (ADC): channel + configurations, scaling functions, look-up tables, etc. + + DEPENDENCIES: None + +============================================================================*/ +/*---------------------------------------------------------------------------- + * QCADC + * -------------------------------------------------------------------------*/ + +Scope(\_SB.ADC1) +{ + /*---------------------------------------------------------------------------- + * Voltage ADC (VADC) Configuration + * -------------------------------------------------------------------------*/ + /* + * VADC Channel Configuration Table + * + * The following table is the list of channels the ADC can read. Channels may + * be added or removed. Below is a description of each field: + * + * sName: + * Appropriate string name for the channel from AdcInputs.h. + * + * uAdcHardwareChannel: + * AMUX channel. + * + * eSettlingDelay: + * Holdoff time to allow the voltage to settle before reading the channel. + * 0 - VADC_SETTLING_DELAY_0_US + * 1 - VADC_SETTLING_DELAY_100_US + * 2 - VADC_SETTLING_DELAY_200_US + * 3 - VADC_SETTLING_DELAY_300_US + * 4 - VADC_SETTLING_DELAY_400_US + * 5 - VADC_SETTLING_DELAY_500_US + * 6 - VADC_SETTLING_DELAY_600_US + * 7 - VADC_SETTLING_DELAY_700_US + * 8 - VADC_SETTLING_DELAY_800_US + * 9 - VADC_SETTLING_DELAY_900_US + * 10 - VADC_SETTLING_DELAY_1_MS + * 11 - VADC_SETTLING_DELAY_2_MS + * 12 - VADC_SETTLING_DELAY_4_MS + * 13 - VADC_SETTLING_DELAY_6_MS + * 14 - VADC_SETTLING_DELAY_8_MS + * 15 - VADC_SETTLING_DELAY_10_MS + * + * eAverageMode: + * Obtains N ADC readings and averages them together. + * 0 - VADC_AVERAGE_1_SAMPLE + * 1 - VADC_AVERAGE_2_SAMPLES + * 2 - VADC_AVERAGE_4_SAMPLES + * 3 - VADC_AVERAGE_8_SAMPLES + * 4 - VADC_AVERAGE_16_SAMPLES + * + * eDecimationRatio: + * The decimation ratio. + * 0 - VADC_DECIMATION_RATIO_256 + * 1 - VADC_DECIMATION_RATIO_512 + * 2 - VADC_DECIMATION_RATIO_1024 + * + * eCalMethod: + * Calibration method. + * 0 - VADC_CAL_METHOD_NO_CAL + * 1 - VADC_CAL_METHOD_RATIOMETRIC + * 2 - VADC_CAL_METHOD_ABSOLUTE + * + * scalingFactor.num: + * Numerator of the channel scaling + * + * scalingFactor.den: + * Denominator of the channel scaling + * + * eScalingMethod: + * The scaling method to use. + * 0 - VADC_SCALE_TO_MILLIVOLTS + * 1 - VADC_SCALE_INTERPOLATE_FROM_MILLIVOLTS (requires uInterpolationTableName) + * 2 - VADC_SCALE_THERMISTOR (requires uPullUp and uInterpolationTableName) + * + * uPullUp: + * The pull up resistor value. Use with eScalingMethod == VADC_SCALE_THERMISTOR, + * otherwise, 0. + * + * uInterpolationTableName: + * The name of the lookup table in ACPI that will be interpolated to obtain + * a physical value. Note that the physical value (which has default units + * of millivolts unless custom scaling function is used) is passed as the + * input. This value corresponds to the first column of the table. The + * scaled output appears in the physical adc result. + * 0 - No interpolation table + * WXYZ - Where 'WXYZ' is the interpolation table name + * + * uScalingFunctionName: + * The name of the function to call in the ACPI table to perform custom + * scaling. The input to the custom scaling function is defined by + * eScalingFunctionInput. The output of the custom scaling function is + * the physical value. + * 0 - No scaling function + * WXYZ - Where 'WXYZ' is the scaling function name + * + * Note: if both a custon scaling function & interpolation table are used + * the custom scaling function is called first. + * + * eScalingFunctionInput: + * Defines which ADC result is passed to the custom scaling function. + * 0 - VADC_SCALING_FUNCTION_INPUT_PHYSICAL + * 1 - VADC_SCALING_FUNCTION_INPUT_PERCENT + * 2 - VADC_SCALING_FUNCTION_INPUT_MICROVOLTS + * 3 - VADC_SCALING_FUNCTION_INPUT_CODE + * + */ + Method (CHAN) + { + Return (Package() + { + /* VPH_PWR (VPH_PWR_SNS pin) */ + Package() + { + /* .sName = */ "VPH_PWR", + /* .uAdcHardwareChannel = */ 0x83, + /* .eSettlingDelay = */ 0, + /* .eAverageMode = */ 0, + /* .eDecimationRatio = */ 2, + /* .eCalMethod = */ 2, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 3, + /* .eScalingMethod = */ 0, + /* .uPullUp = */ 0, + /* .uInterpolationTableName = */ 0, + /* .uScalingFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + }, + + /* VCOIN (VCOIN pin) */ + Package() + { + /* .sName = */ "VCOIN", + /* .uAdcHardwareChannel = */ 0x85, + /* .eSettlingDelay = */ 0, + /* .eAverageMode = */ 0, + /* .eDecimationRatio = */ 2, + /* .eCalMethod = */ 2, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 3, + /* .eScalingMethod = */ 0, + /* .uPullUp = */ 0, + /* .uInterpolationTableName = */ 0, + /* .uScalingFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + }, + + /* PMIC_TEMP1 (internal sensor) */ + Package() + { + /* .sName = */ "PMIC_THERM", + /* .uAdcHardwareChannel = */ 0x6, + /* .eSettlingDelay = */ 0, + /* .eAverageMode = */ 0, + /* .eDecimationRatio = */ 2, + /* .eCalMethod = */ 2, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 0, + /* .uPullUp = */ 0, + /* .uInterpolationTableName = */ 0, + /* .uScalingFunctionName = */ PTCF, + /* .eScalingFunctionInput = */ 2, + }, + + /* XO_THERM (XO_THERM pin) */ + Package() + { + /* .sName = */ "XO_THERM", + /* .uAdcHardwareChannel = */ 0x4c, + /* .eSettlingDelay = */ 8, + /* .eAverageMode = */ 0, + /* .eDecimationRatio = */ 2, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ XTTB, + /* .uScalingFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + }, + + /* XO_THERM_GPS (XO_THERM pin) */ + Package() + { + /* .sName = */ "XO_THERM_GPS", + /* .uAdcHardwareChannel = */ 0x4c, + /* .eSettlingDelay = */ 8, + /* .eAverageMode = */ 2, + /* .eDecimationRatio = */ 2, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ XTTB, + /* .uScalingFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + }, + + /* SYS_THERM1 (AMUX_1 pin) */ + Package() + { + /* .sName = */ "SYS_THERM1", + /* .uAdcHardwareChannel = */ 0x4d, + /* .eSettlingDelay = */ 1, + /* .eAverageMode = */ 0, + /* .eDecimationRatio = */ 2, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ SYTB, + /* .uScalingFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + }, + + /* SYS_THERM2 (AMUX_2 pin) */ + Package() + { + /* .sName = */ "SYS_THERM2", + /* .uAdcHardwareChannel = */ 0x4e, + /* .eSettlingDelay = */ 1, + /* .eAverageMode = */ 0, + /* .eDecimationRatio = */ 2, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ SYTB, + /* .uScalingFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + }, + + /* PA_THERM (AMUX_3 pin) */ + Package() + { + /* .sName = */ "PA_THERM", + /* .uAdcHardwareChannel = */ 0x4f, + /* .eSettlingDelay = */ 1, + /* .eAverageMode = */ 0, + /* .eDecimationRatio = */ 2, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ SYTB, + /* .uScalingFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + }, + + /* PA_THERM1 (AMUX_4 pin) */ + Package() + { + /* .sName = */ "PA_THERM1", + /* .uAdcHardwareChannel = */ 0x50, + /* .eSettlingDelay = */ 1, + /* .eAverageMode = */ 0, + /* .eDecimationRatio = */ 2, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ SYTB, + /* .uScalingFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + }, + + /* SYS_THERM3 (AMUX_5 pin) */ + Package() + { + /* .sName = */ "SYS_THERM3", + /* .uAdcHardwareChannel = */ 0x51, + /* .eSettlingDelay = */ 1, + /* .eAverageMode = */ 0, + /* .eDecimationRatio = */ 2, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ SYTB, + /* .uScalingFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + }, + }) + } + + /* + * System Thermistor Table + * + * The first column in the table is thermistor resistance R_T in ohms + * and the second column is the temperature in degrees C. + * + * VDD ___ + * | + * > + * P_PU < + * > + * | + * | + * |- - - V_T + * | + * > + * R_T < 100 kOhms (NTCG104EF104FB) + * > + * | + * | + * Gnd + * + */ + Method (SYTB) + { + Return (Package() + { + Package(){4251000, 0xFFFFFFD8}, // -40 + Package(){3004900, 0xFFFFFFDD}, // -35 + Package(){2148900, 0xFFFFFFE2}, // -30 + Package(){1553800, 0xFFFFFFE7}, // -25 + Package(){1135300, 0xFFFFFFEC}, // -20 + Package(){ 837800, 0xFFFFFFF1}, // -15 + Package(){ 624100, 0xFFFFFFF6}, // -10 + Package(){ 469100, 0xFFFFFFFB}, // -5 + Package(){ 355600, 0}, + Package(){ 271800, 5}, + Package(){ 209400, 10}, + Package(){ 162500, 15}, + Package(){ 127000, 20}, + Package(){ 100000, 25}, + Package(){ 79200, 30}, + Package(){ 63200, 35}, + Package(){ 50700, 40}, + Package(){ 40900, 45}, + Package(){ 33200, 50}, + Package(){ 27100, 55}, + Package(){ 22200, 60}, + Package(){ 18300, 65}, + Package(){ 15200, 70}, + Package(){ 12600, 75}, + Package(){ 10600, 80}, + Package(){ 8890, 85}, + Package(){ 7500, 90}, + Package(){ 6360, 95}, + Package(){ 5410, 100}, + Package(){ 4620, 105}, + Package(){ 3970, 110}, + Package(){ 3420, 115}, + Package(){ 2950, 120}, + Package(){ 2560, 125} + }) + } + + /* + * XO Thermistor Table + * + * This lookup table is used to convert the XO thermistor reading to temperature + * in degrees C multiplied by a factor of 1024. + * + * The first column in the table is thermistor resistance R_T in ohms + * + * The second column is the temperature in degrees Celsius multiplied by a factor + * of 1024. + * + * VDD ___ + * | + * > + * P_PU < 100 kOhms + * > + * | + * | + * |- - - V_T + * | + * > + * R_T < 100 kOhms (NTCG104EF104FB) + * > + * | + * | + * Gnd + * + */ + Method (XTTB) + { + Return (Package() + { + Package(){4250657, 0xFFFF6000}, // -40960 + Package(){3962085, 0xFFFF6400}, // -39936 + Package(){3694875, 0xFFFF6800}, // -38912 + Package(){3447322, 0xFFFF6C00}, // -37888 + Package(){3217867, 0xFFFF7000}, // -36864 + Package(){3005082, 0xFFFF7400}, // -35840 + Package(){2807660, 0xFFFF7800}, // -34816 + Package(){2624405, 0xFFFF7C00}, // -33792 + Package(){2454218, 0xFFFF8000}, // -32768 + Package(){2296094, 0xFFFF8400}, // -31744 + Package(){2149108, 0xFFFF8800}, // -30720 + Package(){2012414, 0xFFFF8C00}, // -29696 + Package(){1885232, 0xFFFF9000}, // -28672 + Package(){1766846, 0xFFFF9400}, // -27648 + Package(){1656598, 0xFFFF9800}, // -26624 + Package(){1553884, 0xFFFF9C00}, // -25600 + Package(){1458147, 0xFFFFA000}, // -24576 + Package(){1368873, 0xFFFFA400}, // -23552 + Package(){1285590, 0xFFFFA800}, // -22528 + Package(){1207863, 0xFFFFAC00}, // -21504 + Package(){1135290, 0xFFFFB000}, // -20480 + Package(){1067501, 0xFFFFB400}, // -19456 + Package(){1004155, 0xFFFFB800}, // -18432 + Package(){ 944935, 0xFFFFBC00}, // -17408 + Package(){ 889550, 0xFFFFC000}, // -16384 + Package(){ 837731, 0xFFFFC400}, // -15360 + Package(){ 789229, 0xFFFFC800}, // -14336 + Package(){ 743813, 0xFFFFCC00}, // -13312 + Package(){ 701271, 0xFFFFD000}, // -12288 + Package(){ 661405, 0xFFFFD400}, // -11264 + Package(){ 624032, 0xFFFFD800}, // -10240 + Package(){ 588982, 0xFFFFDC00}, // -9216 + Package(){ 556100, 0xFFFFE000}, // -8192 + Package(){ 525239, 0xFFFFE400}, // -7168 + Package(){ 496264, 0xFFFFE800}, // -6144 + Package(){ 469050, 0xFFFFEC00}, // -5120 + Package(){ 443480, 0xFFFFF000}, // -4096 + Package(){ 419448, 0xFFFFF400}, // -3072 + Package(){ 396851, 0xFFFFF800}, // -2048 + Package(){ 375597, 0xFFFFFC00}, // -1024 + Package(){ 355598, 0}, + Package(){ 336775, 1024}, + Package(){ 319052, 2048}, + Package(){ 302359, 3072}, + Package(){ 286630, 4096}, + Package(){ 271806, 5120}, + Package(){ 257829, 6144}, + Package(){ 244646, 7168}, + Package(){ 232209, 8192}, + Package(){ 220471, 9216}, + Package(){ 209390, 10240}, + Package(){ 198926, 11264}, + Package(){ 189040, 12288}, + Package(){ 179698, 13312}, + Package(){ 170868, 14336}, + Package(){ 162519, 15360}, + Package(){ 154622, 16384}, + Package(){ 147150, 17408}, + Package(){ 140079, 18432}, + Package(){ 133385, 19456}, + Package(){ 127046, 20480}, + Package(){ 121042, 21504}, + Package(){ 115352, 22528}, + Package(){ 109960, 23552}, + Package(){ 104848, 24576}, + Package(){ 100000, 25600}, + Package(){ 95402, 26624}, + Package(){ 91038, 27648}, + Package(){ 86897, 28672}, + Package(){ 82965, 29696}, + Package(){ 79232, 30720}, + Package(){ 75686, 31744}, + Package(){ 72316, 32768}, + Package(){ 69114, 33792}, + Package(){ 66070, 34816}, + Package(){ 63176, 35840}, + Package(){ 60423, 36864}, + Package(){ 57804, 37888}, + Package(){ 55312, 38912}, + Package(){ 52940, 39936}, + Package(){ 50681, 40960}, + Package(){ 48531, 41984}, + Package(){ 46482, 43008}, + Package(){ 44530, 44032}, + Package(){ 42670, 45056}, + Package(){ 40897, 46080}, + Package(){ 39207, 47104}, + Package(){ 37595, 48128}, + Package(){ 36057, 49152}, + Package(){ 34590, 50176}, + Package(){ 33190, 51200}, + Package(){ 31853, 52224}, + Package(){ 30577, 53248}, + Package(){ 29358, 54272}, + Package(){ 28194, 55296}, + Package(){ 27082, 56320}, + Package(){ 26020, 57344}, + Package(){ 25004, 58368}, + Package(){ 24033, 59392}, + Package(){ 23104, 60416}, + Package(){ 22216, 61440}, + Package(){ 21367, 62464}, + Package(){ 20554, 63488}, + Package(){ 19776, 64512}, + Package(){ 19031, 65536}, + Package(){ 18318, 66560}, + Package(){ 17636, 67584}, + Package(){ 16982, 68608}, + Package(){ 16355, 69632}, + Package(){ 15755, 70656}, + Package(){ 15180, 71680}, + Package(){ 14628, 72704}, + Package(){ 14099, 73728}, + Package(){ 13592, 74752}, + Package(){ 13106, 75776}, + Package(){ 12640, 76800}, + Package(){ 12192, 77824}, + Package(){ 11762, 78848}, + Package(){ 11350, 79872}, + Package(){ 10954, 80896}, + Package(){ 10574, 81920}, + Package(){ 10209, 82944}, + Package(){ 9858, 83968}, + Package(){ 9521, 84992}, + Package(){ 9197, 86016}, + Package(){ 8886, 87040}, + Package(){ 8587, 88064}, + Package(){ 8299, 89088}, + Package(){ 8023, 90112}, + Package(){ 7757, 91136}, + Package(){ 7501, 92160}, + Package(){ 7254, 93184}, + Package(){ 7017, 94208}, + Package(){ 6789, 95232}, + Package(){ 6570, 96256}, + Package(){ 6358, 97280}, + Package(){ 6155, 98304}, + Package(){ 5959, 99328}, + Package(){ 5770, 100352}, + Package(){ 5588, 101376}, + Package(){ 5412, 102400}, + Package(){ 5243, 103424}, + Package(){ 5080, 104448}, + Package(){ 4923, 105472}, + Package(){ 4771, 106496}, + Package(){ 4625, 107520}, + Package(){ 4484, 108544}, + Package(){ 4348, 109568}, + Package(){ 4217, 110592}, + Package(){ 4090, 111616}, + Package(){ 3968, 112640}, + Package(){ 3850, 113664}, + Package(){ 3736, 114688}, + Package(){ 3626, 115712}, + Package(){ 3519, 116736}, + Package(){ 3417, 117760}, + Package(){ 3317, 118784}, + Package(){ 3221, 119808}, + Package(){ 3129, 120832}, + Package(){ 3039, 121856}, + Package(){ 2952, 122880}, + Package(){ 2868, 123904}, + Package(){ 2787, 124928}, + Package(){ 2709, 125952}, + Package(){ 2633, 126976}, + Package(){ 2560, 128000}, + Package(){ 2489, 129024}, + Package(){ 2420, 130048} + }) + } + + /*---------------------------------------------------------------------------- + * Voltage ADC Threshold Monitor (VADCTM) Configuration + * -------------------------------------------------------------------------*/ + /* + * VADCTM Measurement Configuration Table + * + * The following is a list of periodic measurements that the VADCTM + * can periodically monitor. Thresholds for these measurements are set + * in software. + * + * sName: + * Appropriate string name for the channel from AdcInputs.h. + * + * uAdcHardwareChannel: + * AMUX channel. + * + * eSettlingDelay: + * Holdoff time to allow the voltage to settle before reading the channel. + * 0 - VADCTM_SETTLING_DELAY_0_US + * 1 - VADCTM_SETTLING_DELAY_100_US + * 2 - VADCTM_SETTLING_DELAY_200_US + * 3 - VADCTM_SETTLING_DELAY_300_US + * 4 - VADCTM_SETTLING_DELAY_400_US + * 5 - VADCTM_SETTLING_DELAY_500_US + * 6 - VADCTM_SETTLING_DELAY_600_US + * 7 - VADCTM_SETTLING_DELAY_700_US + * 8 - VADCTM_SETTLING_DELAY_800_US + * 9 - VADCTM_SETTLING_DELAY_900_US + * 10 - VADCTM_SETTLING_DELAY_1_MS + * 11 - VADCTM_SETTLING_DELAY_2_MS + * 12 - VADCTM_SETTLING_DELAY_4_MS + * 13 - VADCTM_SETTLING_DELAY_6_MS + * 14 - VADCTM_SETTLING_DELAY_8_MS + * 15 - VADCTM_SETTLING_DELAY_10_MS + * + * eMeasIntervalTimeSelect: + * The interval timer to use for the measurement period. + * 0 - VADCTM_MEAS_INTERVAL_TIME1 + * 1 - VADCTM_MEAS_INTERVAL_TIME2 + * 2 - VADCTM_MEAS_INTERVAL_TIME3 + * + * bAlwaysOn: + * Keep the measurement always sampling even if no thresholds are set. + * 0 - FALSE + * 1 - TRUE + * + * eCalMethod: + * Calibration method. + * 0 - VADC_CAL_METHOD_NO_CAL + * 1 - VADC_CAL_METHOD_RATIOMETRIC + * 2 - VADC_CAL_METHOD_ABSOLUTE + * + * scalingFactor.num: + * Numerator of the channel scaling + * + * scalingFactor.den: + * Denominator of the channel scaling + * + * eScalingMethod: + * The scaling method to use. + * 0 - VADC_SCALE_TO_MILLIVOLTS + * 1 - VADC_SCALE_INTERPOLATE_FROM_MILLIVOLTS (requires uInterpolationTableName) + * 2 - VADC_SCALE_THERMISTOR (requires uPullUp and uInterpolationTableName) + * + * uPullUp: + * The pull up resistor value. Use with eScalingMethod == VADC_SCALE_THERMISTOR, + * otherwise, 0. + * + * uInterpolationTableName: + * The name of the lookup table in ACPI that will be interpolated to obtain + * a physical value. Note that the physical value (which has default units + * of millivolts unless custom scaling function is used) is passed as the + * input. This value corresponds to the first column of the table. The + * scaled output appears in the physical adc result. + * 0 - No interpolation table + * WXYZ - Where 'WXYZ' is the interpolation table name + * + * uScalingFunctionName: + * The name of the function to call in the ACPI table to perform custom + * scaling. The input to the custom scaling function is defined by + * eScalingFunctionInput. The output of the custom scaling function is + * the physical value. + * 0 - No scaling function + * WXYZ - Where 'WXYZ' is the scaling function name + * + * Note: if both a custon scaling function & interpolation table are used + * the custom scaling function is called first. + * + * uInverseFunctionName: + * The name of the inverse scaling for uScalingFunctionName. + * 0 - No scaling function + * WXYZ - Where 'WXYZ' is the scaling function name + * + * eScalingFunctionInput: + * Defines which ADC result is passed to the custom scaling function. + * 0 - VADC_SCALING_FUNCTION_INPUT_PHYSICAL + * 1 - VADC_SCALING_FUNCTION_INPUT_PERCENT + * 2 - VADC_SCALING_FUNCTION_INPUT_MICROVOLTS + * 3 - VADC_SCALING_FUNCTION_INPUT_CODE + * + * nPhysicalMin: + * Minimum threshold value in physical units. + * + * nPhysicalMax: + * Maximum threshold value in physical units. + * + */ + Method (VTCH) + { + Return (Package() + { + /* VPH_PWR (VPH_PWR_SNS pin) */ + Package() + { + /* .sName = */ "VPH_PWR", + /* .uAdcHardwareChannel = */ 0x83, + /* .eSettlingDelay = */ 0, + /* .eMeasIntervalTimeSelect = */ 1, + /* .bAlwaysOn = */ 0, + /* .eCalMethod = */ 2, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 3, + /* .eScalingMethod = */ 0, + /* .uPullUp = */ 0, + /* .uInterpolationTableName = */ 0, + /* .uScalingFunctionName = */ 0, + /* .uInverseFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + /* .nPhysicalMin = */ 0, + /* .nPhysicalMax = */ 5625, + }, + + /* PMIC_TEMP1 (internal sensor) */ + Package() + { + /* .sName = */ "PMIC_THERM", + /* .uAdcHardwareChannel = */ 0x6, + /* .eSettlingDelay = */ 0, + /* .eMeasIntervalTimeSelect = */ 0, + /* .bAlwaysOn = */ 0, + /* .eCalMethod = */ 2, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 0, + /* .uPullUp = */ 0, + /* .uInterpolationTableName = */ 0, + /* .uScalingFunctionName = */ PTCF, + /* .uInverseFunctionName = */ PTCI, + /* .eScalingFunctionInput = */ 2, + /* .nPhysicalMin = */ 0xFFFF3CB0, // -50000 + /* .nPhysicalMax = */ 150000, + }, + + /* SYS_THERM1 (AMUX_1 pin) */ + Package() + { + /* .sName = */ "SYS_THERM1", + /* .uAdcHardwareChannel = */ 0x4d, + /* .eSettlingDelay = */ 1, + /* .eMeasIntervalTimeSelect = */ 0, + /* .bAlwaysOn = */ 0, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ SYTB, + /* .uScalingFunctionName = */ 0, + /* .uInverseFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + /* .nPhysicalMin = */ 0xFFFFFFD8, // -40 + /* .nPhysicalMax = */ 125, + }, + + /* SYS_THERM2 (AMUX_2 pin) */ + Package() + { + /* .sName = */ "SYS_THERM2", + /* .uAdcHardwareChannel = */ 0x4e, + /* .eSettlingDelay = */ 1, + /* .eMeasIntervalTimeSelect = */ 0, + /* .bAlwaysOn = */ 0, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ SYTB, + /* .uScalingFunctionName = */ 0, + /* .uInverseFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + /* .nPhysicalMin = */ 0xFFFFFFD8, // -40 + /* .nPhysicalMax = */ 125, + }, + + /* PA_THERM (AMUX_3 pin) */ + Package() + { + /* .sName = */ "PA_THERM", + /* .uAdcHardwareChannel = */ 0x4f, + /* .eSettlingDelay = */ 1, + /* .eMeasIntervalTimeSelect = */ 0, + /* .bAlwaysOn = */ 0, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ SYTB, + /* .uScalingFunctionName = */ 0, + /* .uInverseFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + /* .nPhysicalMin = */ 0xFFFFFFD8, // -40 + /* .nPhysicalMax = */ 125, + }, + + /* PA_THERM1 (AMUX_4 pin) */ + Package() + { + /* .sName = */ "PA_THERM1", + /* .uAdcHardwareChannel = */ 0x50, + /* .eSettlingDelay = */ 1, + /* .eMeasIntervalTimeSelect = */ 0, + /* .bAlwaysOn = */ 0, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ SYTB, + /* .uScalingFunctionName = */ 0, + /* .uInverseFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + /* .nPhysicalMin = */ 0xFFFFFFD8, // -40 + /* .nPhysicalMax = */ 125, + }, + + /* SYS_THERM3 (AMUX_5 pin) */ + Package() + { + /* .sName = */ "SYS_THERM3", + /* .uAdcHardwareChannel = */ 0x51, + /* .eSettlingDelay = */ 1, + /* .eMeasIntervalTimeSelect = */ 0, + /* .bAlwaysOn = */ 0, + /* .eCalMethod = */ 1, + /* .scalingFactor.num = */ 1, + /* .scalingFactor.den = */ 1, + /* .eScalingMethod = */ 2, + /* .uPullUp = */ 100000, + /* .uInterpolationTableName = */ SYTB, + /* .uScalingFunctionName = */ 0, + /* .uInverseFunctionName = */ 0, + /* .eScalingFunctionInput = */ 0, + /* .nPhysicalMin = */ 0xFFFFFFD8, // -40 + /* .nPhysicalMax = */ 125, + }, + }) + } + + /* + * General VADCTM measurement timer properties + * + * eMeasIntervalTime1: + * Interval timer 1 periodic value. + * 0 - VADCTM_MEAS_INTERVAL_TIME1_0_MS + * 1 - VADCTM_MEAS_INTERVAL_TIME1_1P0_MS + * 2 - VADCTM_MEAS_INTERVAL_TIME1_2P0_MS + * 3 - VADCTM_MEAS_INTERVAL_TIME1_3P9_MS + * 4 - VADCTM_MEAS_INTERVAL_TIME1_7P8_MS + * 5 - VADCTM_MEAS_INTERVAL_TIME1_15P6_MS + * 6 - VADCTM_MEAS_INTERVAL_TIME1_31P1_MS + * 7 - VADCTM_MEAS_INTERVAL_TIME1_62P5_MS + * 8 - VADCTM_MEAS_INTERVAL_TIME1_125_MS + * 9 - VADCTM_MEAS_INTERVAL_TIME1_250_MS + * 10 - VADCTM_MEAS_INTERVAL_TIME1_500_MS + * 11 - VADCTM_MEAS_INTERVAL_TIME1_1000_MS + * 12 - VADCTM_MEAS_INTERVAL_TIME1_2000_MS + * 13 - VADCTM_MEAS_INTERVAL_TIME1_4000_MS + * 14 - VADCTM_MEAS_INTERVAL_TIME1_8000_MS + * 15 - VADCTM_MEAS_INTERVAL_TIME1_16000_MS + * + * eMeasIntervalTime2: + * Interval timer 2 periodic value. + * 0 - VADCTM_MEAS_INTERVAL_TIME2_0_MS + * 1 - VADCTM_MEAS_INTERVAL_TIME2_100_MS + * 2 - VADCTM_MEAS_INTERVAL_TIME2_200_MS + * 3 - VADCTM_MEAS_INTERVAL_TIME2_300_MS + * 4 - VADCTM_MEAS_INTERVAL_TIME2_400_MS + * 5 - VADCTM_MEAS_INTERVAL_TIME2_500_MS + * 6 - VADCTM_MEAS_INTERVAL_TIME2_600_MS + * 7 - VADCTM_MEAS_INTERVAL_TIME2_700_MS + * 8 - VADCTM_MEAS_INTERVAL_TIME2_800_MS + * 9 - VADCTM_MEAS_INTERVAL_TIME2_900_MS + * 10 - VADCTM_MEAS_INTERVAL_TIME2_1000_MS + * 11 - VADCTM_MEAS_INTERVAL_TIME2_1100_MS + * 12 - VADCTM_MEAS_INTERVAL_TIME2_1200_MS + * 13 - VADCTM_MEAS_INTERVAL_TIME2_1300_MS + * 14 - VADCTM_MEAS_INTERVAL_TIME2_1400_MS + * 15 - VADCTM_MEAS_INTERVAL_TIME2_1500_MS + * + * eMeasIntervalTime3: + * Interval timer 3 periodic value. + * 0 - VADCTM_MEAS_INTERVAL_TIME3_0_S + * 1 - VADCTM_MEAS_INTERVAL_TIME3_1_S + * 2 - VADCTM_MEAS_INTERVAL_TIME3_2_S + * 3 - VADCTM_MEAS_INTERVAL_TIME3_3_S + * 4 - VADCTM_MEAS_INTERVAL_TIME3_4_S + * 5 - VADCTM_MEAS_INTERVAL_TIME3_5_S + * 6 - VADCTM_MEAS_INTERVAL_TIME3_6_S + * 7 - VADCTM_MEAS_INTERVAL_TIME3_7_S + * 8 - VADCTM_MEAS_INTERVAL_TIME3_8_S + * 9 - VADCTM_MEAS_INTERVAL_TIME3_9_S + * 10 - VADCTM_MEAS_INTERVAL_TIME3_10_S + * 11 - VADCTM_MEAS_INTERVAL_TIME3_11_S + * 12 - VADCTM_MEAS_INTERVAL_TIME3_12_S + * 13 - VADCTM_MEAS_INTERVAL_TIME3_13_S + * 14 - VADCTM_MEAS_INTERVAL_TIME3_14_S + * 15 - VADCTM_MEAS_INTERVAL_TIME3_15_S + * + */ + Method (VTMT) + { + Return (Package() + { + /* .eMeasIntervalTime1 = */ 11, // 1000 ms + /* .eMeasIntervalTime2 = */ 1, // 100 ms + /* .eMeasIntervalTime3 = */ 5, // 5000 ms + }) + } +} diff --git a/beryllium/cust_pmic_batt.asl b/beryllium/cust_pmic_batt.asl new file mode 100644 index 0000000..26b21ed --- /dev/null +++ b/beryllium/cust_pmic_batt.asl @@ -0,0 +1,50 @@ +// This file contains the Power Management IC (PMIC) +// customer-modifiable ACPI configurations. +// + +//****************************************** +//Configs for Battery Manager Device: PMBT +//****************************************** +//-------------------- +//PMBT: Method(BBAT) +//-------------------- +Name(BFCC, 12350) //* (mWh), Full Charge Capacity +Name(PCT1, 5) //* (% of FCC), Default Alert 1 +Name(PCT2, 9) //* (% of FCC), Default Alert 2 + +//-------------------- +//PMBT: Method(BMNR) +//-------------------- +Name(CUST, "850_MTP") //* cust file identifier + +//-------------------- +//PMBT: Method(BPLT) +//-------------------- +Name(VNOM, 3800) //* (mV), Nominal Battery Voltage +Name(VLOW, 3300) //* (mV), Low Battery Voltage +Name(EMPT, 3200) //* (mV), VCutOff +Name(DCMA, 900) //* (mA), DC Current +Name(BOCP, 4500) //* (mA), OCP current used in BCL +Name(BVLO, 3000) //* (mV), BCL low Vbatt +Name(BLOP, 20) //* (%), BCL Low batt percent notification +Name(BNOP, 22) //* (%), BCL normal batt percent notification +Name(IFGD, 50) //* (mA), FG Iterm delta; (iterm + this value) determines when FG report 100% +Name(VFGD, 50) //* (mV), CC to CV Vdelta; (Vfloat - this value) determine when FG report 100% + +//-------------------------------- +//PMBT: Method(BJTA)/Method(BAT1) +//-------------------------------- +Name(VDD1, 4350) //* (mV), Battery-1: Float Voltage (Standard Zone) +Name(FCC1, 2100) //* (mA), Battery-1: Full Charge Current (Standard Zone) +Name(HCLI, 0) //* (degree C), hard-cold temperature limit +Name(SCLI, 10) //* (degree C), soft-cold temperature limit +Name(SHLI, 45) //* (degree C), soft-hot temperature limit +Name(HHLI, 55) //* (degree C), hard-hot temperature limit +Name(FVC1, 105) //* (mV), Float voltage compensation, when battery in JEITA soft-limit +Name(CCC1, 1000) //* (mA), Charge current compensation, when battery in JEITA soft-limit + +//-------------------- +//PMBT: Method(CTMC) +//-------------------- +Name(RID2, 15000) //* (Ohm), min RID for NORMAL category: 15K +Name(RID3, 140000) //* (Ohm), max RID for NORMAL category: 140K diff --git a/beryllium/cust_thermal_zones.asl b/beryllium/cust_thermal_zones.asl new file mode 100644 index 0000000..f4b9f45 --- /dev/null +++ b/beryllium/cust_thermal_zones.asl @@ -0,0 +1,570 @@ +// + //CPU Aggregator Device -- Required for Thermal Parking + Device(AGR0) + { + Name(_HID, "ACPI000C") + Name(_PUR, Package() {1, 0}) + Method(_OST, 0x3, NotSerialized) + { + Store(Arg2, \_SB_.PEP0.ROST) + } + } + + //--------------------------------------------------------------------- + // + // Thermal Zones for QC reference hardware + // + //TZ0 - TZ39 are thermal zones developed by QC for reference hardware + //and can be modified by the OEMs. + //--------------------------------------------------------------------- + + //--------------------------------------------------------------------- + // Thermal Zones(0-19) for CPU sensors + //24AD - Little CPU virtual sensor + //24AE - Big CPU virtual sensor + // This thermal zone is only used for temperature logging for little CPUs + // as you may notice that _PSV, _TC1, _TC2, _TSP params are removed. + // This is the passive cooling mechanism by dialing down frequency is now + // done actively by hardware. + //--------------------------------------------------------------------- + ThermalZone (TZ0) { + Name (_HID, "QCOM02B0") + Name (_UID, 0) + Name(_TZD, Package (){\_SB.SYSM.CLUS.CPU0, \_SB.SYSM.CLUS.CPU1, \_SB.SYSM.CLUS.CPU2, \_SB.SYSM.CLUS.CPU3}) + Method(_DEP) { + Return (Package() {\_SB.PEP0}) + } + } // end of TZ0 + + //Regular Thermal Zone for Little CPU TSENS to Park cores at 110C + ThermalZone (TZ1) { + Name (_HID, "QCOM02B0") + Name (_UID, 1) + Name(_TZD, Package (){\_SB.PEP0}) + Name(TPSV, 3830) + Method(_PSV) { Return (\_SB.TZ1.TPSV) } + Name(_MTL, 20) // minimum throttle limit + //Control how aggressively the thermal manager applies thermal + //throttling performance against temperature change. + Name(TTC1, 0) + Method(_TC1) { Return (\_SB.TZ1.TTC1) } + + // _TC2 Controls how aggressively the thermal manager applies thermal + // throttling performance against temperature delta between the + // current temperature and _PSV. + // once the temp goes above _PSV, we like to have aggressive + // throttling based on how far above the temp is above the threshold. + // Since that is controlled via _TC2, we like it to be high. + // please refer to the ACPI spec 6.0 to understand the significance of + // _TC2 or take a look at the explanation at the top of this file. + Name(TTC2, 1) + Method(_TC2) { Return (\_SB.TZ1.TTC2) } + + // Appropriate temperature sampling interval for the zone in tenths + // of a second. The thermal manager uses this interval to determine + // how often it should evaluate the thermal throttling performance. + // Must be greater than zero. For more information, see Thermal + // throttling algorithm on msdn page + // https://msdn.microsoft.com/en-us/library/windows/hardware/mt643928(v=vs.85).aspx + Name(TTSP, 50) + Method(_TSP) { Return (\_SB.TZ1.TTSP) } + + // This optional object evaluates to a recommended polling frequency + // (in tenths of seconds) for this thermal zone. A value of zero indicates + // that OSPM does not need to poll the temperature of this thermal zone in + // order to detect temperature changes (the hardware is capable of + // generating asynchronous notifications). + // TZP should be marked 0 for all thermal zones as our TSENS sensors + // generate interrupts to complete thermal IOCTL read call. + Name(_TZP, 0) + + Method(_DEP) { + Return (Package() {\_SB.PEP0}) + } + } // end of TZ1 + + // This thermal zone is only used for temperature logging for Big CPUs + // as you may notice that _PSV, _TC1, _TC2, _TSP params are removed. + // This is the passive cooling mechanism by dialing down frequency is now + // done actively by hardware. + ThermalZone (TZ2) { + Name (_HID, "QCOM02B1") + Name (_UID, 0) + Name(_TZD, Package (){\_SB.SYSM.CLUS.CPU4, \_SB.SYSM.CLUS.CPU5, \_SB.SYSM.CLUS.CPU6, \_SB.SYSM.CLUS.CPU7}) + Method(_DEP) { + Return (Package() {\_SB.PEP0}) + } + } // end of TZ2 + + //Regular Thermal Zone for BigCPU TSENS to Park cores at 110C + ThermalZone (TZ3) { + Name (_HID, "QCOM02B1") + Name (_UID, 1) + Name(_TZD, Package (){\_SB.PEP0}) + + Name(TPSV, 3830) + Method(_PSV) { Return (\_SB.TZ3.TPSV) } + Name(TTC1, 0) + Method(_TC1) { Return (\_SB.TZ3.TTC1) } + Name(TTC2, 1) + Method(_TC2) { Return (\_SB.TZ3.TTC2) } + Name(TTSP, 1) + Method(_TSP) { Return (\_SB.TZ3.TTSP) } + Name(_MTL, 20) // minimum throttle limit + Name(_TZP, 0) + + Method(_DEP) { + Return (Package() {\_SB.PEP0}) + } + } // end of TZ3 + + //--------------------------------------------------------------------- + // Thermal Zones(20-21) for GPU TSENS + // + // \_SB.GPU0 should be used for GPU thermal mitigation, and + // \_SB.GPU0.AVS0 should be used for MDSS/Video thermal mitigation. + // Currently there is no handling for Video thermal mitigation. + // When needed, Video will be added to GPU0.AVS0 interface. + //--------------------------------------------------------------------- + //Thermal zone for TSENS11 dial back GPUs at 95C + ThermalZone (TZ20) { + Name (_HID, "QCOM02AB") + Name (_UID, 0) + Name(_TZD, Package (){\_SB.GPU0}) + Name(TPSV, 3680) + Method(_PSV) { Return (\_SB.TZ20.TPSV) } + Name(TTC1, 1) + Method(_TC1) { Return (\_SB.TZ20.TTC1) } + // For non-cpu devices, tc2 should be atleast 5, please refer to the + // explanation at the top of the file or msdn link for thermal guide. + Name(TTC2, 2) + Method(_TC2) { Return (\_SB.TZ20.TTC2) } + // For non-cpu devices, _tsp should be 20 or 30 + Name(TTSP, 2) + Method(_TSP) { Return (\_SB.TZ20.TTSP) } + Name(_TZP, 0) + Method(_DEP) { + Return (Package() {\_SB.PEP0}) + } + } // end of TZ20 + + //Thermal zone for TSENS12 to dial back GPUs at 95C + ThermalZone (TZ21) { + Name (_HID, "QCOM02AC") + Name (_UID, 0) + Name(_TZD, Package (){\_SB.GPU0}) + Name(TPSV, 3680) + Method(_PSV) { Return (\_SB.TZ21.TPSV) } + Name(TTC1, 1) + Method(_TC1) { Return (\_SB.TZ21.TTC1) } + Name(TTC2, 2) + Method(_TC2) { Return (\_SB.TZ21.TTC2) } + Name(TTSP, 2) + Method(_TSP) { Return (\_SB.TZ21.TTSP) } + Name(_TZP, 0) + Method(_DEP) { + Return (Package() {\_SB.PEP0}) + } + } // end of TZ21 + + //--------------------------------------------------------------------- + // Thermal Zones for QDSP TSENS + //4/16/15: TODO waiting to get a new HID assigned for TSENS17 + //--------------------------------------------------------------------- + //Thermall zone for TSENS14 dial back MSM at 95C + //ThermalZone (TZ31) { + //Name (_HID, "QCOM02AE") + //Name (_UID, 0) + //Name(_TZD, Package (){ + //\_SB.SYSM.CLUS.CPU0, \_SB.SYSM.CLUS.CPU1, \_SB.SYSM.CLUS.CPU2, \_SB.SYSM.CLUS.CPU3, + //\_SB.PEP0, \_SB.GPU0.MON0, \_SB.GPU0}) + //Method(_PSV) { Return (3680) } + //Name(_TC1, 1) + //Name(_TC2, 2) + //Name(_TSP, 10) + //Name(_TZP, 0) + //Method(_DEP) { + // Return (Package() {\_SB.PEP0}) + //} + //} // end of TZ31 + + //--------------------------------------------------------------------- + // Thermal Zones for Camera TSENS + //--------------------------------------------------------------------- + //Thermal zone for TSENS17 to dial back MSM at 95C + // ThermalZone (TZ32) { + // Name (_HID, "QCOM02C9") + // Name (_UID, 0) + // Name(_TZD, Package (){\_SB.GPU0.AVS0}) + // Name(TPSV, 3680) + // Method(_PSV) { Return (\_SB.TZ32.TPSV) } + // Name(TTC1, 1) + // Method(_TC1) { Return (\_SB.TZ32.TTC1) } + // // For non-cpu devices, tc2 should be atleast 5, please refer to the + // // explanation at the top of the file or msdn link for thermal guide. + // Name(TTC2, 2) + // Method(_TC2) { Return (\_SB.TZ32.TTC2) } + // // For non-cpu devices, _tsp should be 20 or 30 + // Name(TTSP, 10) + // Method(_TSP) { Return (\_SB.TZ32.TTSP) } + // Name(_TZP, 0) + // Method(_DEP) { + // Return (Package() {\_SB.PEP0}) + // } + // } // end of TZ32 + + ThermalZone (TZ33) { + Name (_HID, "QCOM02CB") + Name (_UID, 1) + Name(_TZD, Package (){\_SB.AMSS}) + + Name(TPSV, 3680) + Method(_PSV) { Return (\_SB.TZ33.TPSV) } + + Name(TTC1, 1) + Method(_TC1) { Return (\_SB.TZ33.TTC1) } + + Name(TTC2, 2) + Method(_TC2) { Return (\_SB.TZ33.TTC2) } + + Name(TTSP, 10) + Method(_TSP) { Return (\_SB.TZ33.TTSP) } + + Name(_TZP, 0) + Method(_DEP) { + Return (Package() {\_SB.PEP0}) + } + } + + //--------------------------------------------------------------------- + // Thermal Zones for MDSS TENS (Display Subsystem) + // Only the MDP Blt engine and Rotator engines on the MDSS are cooled + // using this interface. Display cooling is not supported currently. + //--------------------------------------------------------------------- + //Thermal zone for TSENS18 to dial back MSM at 95C + //ThermalZone (TZ34) { + //Name (_HID, "QCOM02CA") + //Name (_UID, 0) + //Name(_TZD, Package (){\_SB.GPU0.AVS0}) + //Method(_PSV) { Return (3680) } + //Name(_TC1, 1) + //Name(_TC2, 2) + //Name(_TSP, 10) + //Name(_TZP, 0) + //Method(_DEP) { + // Return (Package() {\_SB.PEP0}) + //} + //} // end of TZ34 + + //--------------------------------------------------------------------- + // Thermal Zones for ADC Channels + //--------------------------------------------------------------------- + //Thermal zone for PMIC_THERM + ThermalZone (TZ36) { + Name (_HID, "QCOM029E") + Name (_UID, 0) + Name(_TZD, Package (){ + \_SB.SYSM.CLUS.CPU0, \_SB.SYSM.CLUS.CPU1, \_SB.SYSM.CLUS.CPU2, \_SB.SYSM.CLUS.CPU3, + \_SB.SYSM.CLUS.CPU4, \_SB.SYSM.CLUS.CPU5, \_SB.SYSM.CLUS.CPU6, \_SB.SYSM.CLUS.CPU7, + \_SB.PMBM}) + + Name(TPSV, 3780) + Method(_PSV) { Return (\_SB.TZ36.TPSV) } + + Name(TTC1, 4) + Method(_TC1) { Return (\_SB.TZ36.TTC1) } + + Name(TTC2, 3) + Method(_TC2) { Return (\_SB.TZ36.TTC2) } + + Name(TTSP, 50) + Method(_TSP) { Return (\_SB.TZ36.TTSP) } + + Name(_TZP, 0) + Method(_DEP) { + Return (Package() {\_SB.PEP0, \_SB.ADC1}) + } + } // end of TZ36 + + //Thermal zone for PMIC_THERM + ThermalZone (TZ37) { + Name (_HID, "QCOM029E") + Name (_UID, 1) + Name(_TZD, Package (){ + \_SB.PEP0, \_SB.PMBM}) + Name(TPSV, 3980) + Method(_PSV) { Return (\_SB.TZ37.TPSV) } + Name(TCRT, 4180) + Method(_CRT) { Return (\_SB.TZ37.TCRT) } + Name(TTC1, 4) + Method(_TC1) { Return (\_SB.TZ37.TTC1) } + Name(TTC2, 3) + Method(_TC2) { Return (\_SB.TZ37.TTC2) } + Name(TTSP, 50) + Method(_TSP) { Return (\_SB.TZ37.TTSP) } + + Name(_TZP, 0) + Method(_DEP) { + Return (Package() {\_SB.PEP0, \_SB.ADC1}) + } + } // end of TZ37 + + //Example: Inverse Thermal zone for PMIC_THERM + ThermalZone (TZ38) { + Name (_HID, "QCOM029E") + Name (_UID, 2) //Update UID on addition of new thermal zone with same HID + Name(_TZD, Package (){ + \_SB.PEP0}) + Method(INVT) { Return (1) } + Method(_MTL) { Return (60) } + Name(TPSV, 2830) + Method(_PSV) { Return (\_SB.TZ38.TPSV) } + Name(TTC1, 4) + Method(_TC1) { Return (\_SB.TZ38.TTC1) } + Name(TTC2, 3) + Method(_TC2) { Return (\_SB.TZ38.TTC2) } + Name(TTSP, 10) + Method(_TSP) { Return (\_SB.TZ38.TTSP) } + Name(_TZP, 0) + Method(_DEP) { + Return (Package() {\_SB.PEP0, \_SB.ADC1}) + } + } // end of TZ38 + + //------------------------------------------------------------------------ + // Thermal Zones for Wlan + //------------------------------------------------------------------------ + //Thermal zone for iHelium, Wlan MAC&PHY on SOC + ThermalZone (TZ40) { + Name (_HID, "QCOM02AF") + Name (_UID, 0) + Name(_TZD, Package (){\_SB.COEX}) + + Name(TPSV, 3580) + Method(_PSV) { Return (\_SB.TZ40.TPSV) } + Name(TTC1, 1) + Method(_TC1) { Return (\_SB.TZ40.TTC1) } + Name(TTC2, 5) // For non-cpu devices, tc2 should be atleast 5 + Method(_TC2) { Return (\_SB.TZ40.TTC2) } + Name(TTSP, 30) // For non-cpu devices, _tsp should be 20 or 30 + Method(_TSP) { Return (\_SB.TZ40.TTSP) } + + Name(_TZP, 0) + Method(_DEP) { + Return (Package() {\_SB.PEP0}) + } + } // end of TZ40 + //Thermal zone for Cherokee, Wlan radio on WCN3990 + ThermalZone (TZ41) { + Name (_HID, "QCOM0295")//virtual sensor by wlan WMI thermal interface + Name (_UID, 1) + //Name(_TZD, Package (){\_SB.COEX}) // Temperature report only + //Method(_PSV) { Return (4030) } + //Name(_TC1, 4) + //Name(_TC2, 3) + Name(_TSP, 50) + Name(_TZP, 0) + } // end of TZ41 + + //------------------------------------------------------------------------ + // Thermal Zones for DDR/POP + //------------------------------------------------------------------------ + //Thermal zone for DDR + //Thermal zone for TSENS20 to dial back Big CPU's at 95C + + ThermalZone (TZ44) { + Name (_HID, "QCOM02CC") + Name (_UID, 0) + Name(_TZD, Package (){\_SB.SYSM.CLUS.CPU4, \_SB.SYSM.CLUS.CPU5, \_SB.SYSM.CLUS.CPU6, \_SB.SYSM.CLUS.CPU7}) + Name(TPSV, 3680) + Method(_PSV) { Return (\_SB.TZ44.TPSV) } + Name(TTC1, 0) + Method(_TC1) { Return (\_SB.TZ44.TTC1) } + Name(TTC2, 1) + Method(_TC2) { Return (\_SB.TZ44.TTC2) } + Name(TTSP, 1) + Method(_TSP) { Return (\_SB.TZ44.TTSP) } + Name(_TZP, 0) + Method(_DEP) { + Return (Package() {\_SB.PEP0}) + } + } // end of TZ44 + + //--------------------------------------------------------------------- + // + // QC Recommended thermal limits starts + // + //TZ80 - TZ98 represent the thermal zones corresponding to QC + //recommended thermal limits. These thermal zones must not be removed + //or tampered with. + //--------------------------------------------------------------------- + //Thermal zone for TSENS2 at 70C to match the LA thermal limits + //ThermalZone (TZ80) { + //Name (_HID, "QCOM2472") + //Name (_UID, 0) + //Name(_TZD, Package (){ + // \_SB.SYSM.CLUS.CPU0, \_SB.SYSM.CLUS.CPU1, \_SB.SYSM.CLUS.CPU2, \_SB.SYSM.CLUS.CPU3, + //Method(_PSV) { Return (3430) } + //Name(_TC1, 1) + //Name(_TC2, 2) + //Name(_TSP, 10) + //Name(_TZP, 0) + //Method(_DEP) { + // Return (Package() {\_SB.PEP0}) + //} + //} // end of TZ80 + + //Thermal zone near for TSENS2 to shutdown the system at 85C to match LA + //thermal limits + //ThermalZone (TZ81) { + //Name (_HID, "QCOM2472") + //Name (_UID, 1) + //Name(_TZD, Package (){ + // \_SB.SYSM.CLUS.CPU0, \_SB.SYSM.CLUS.CPU1, \_SB.SYSM.CLUS.CPU2, \_SB.SYSM.CLUS.CPU3, + // \_SB.PEP0}) + //Method(_PSV) { Return (3530) } + //Method(_CRT) { Return (3580) } + //Name(_TC1, 1) + //Name(_TC2, 2) + //Name(_TSP, 10) + //Name(_TZP, 0) + //Method(_DEP) { + // Return (Package() {\_SB.PEP0}) + //} + //} // end of TZ81 + + //Entry for BCL thermal zone + ThermalZone (TZ98) { + Name (_HID, "QCOM0294") + Name (_UID, 0) + Name(_TZD, Package (){ + \_SB.GPU0.MON0, \_SB.GPU0}) + + Name(TPSV, 3630) + Method(_PSV) { Return (\_SB.TZ98.TPSV) } + Name(TTC1, 1) + Method(_TC1) { Return (\_SB.TZ98.TTC1) } + //Method(_CRT) { Return (5630) } + Name(TTC2, 5) + Method(_TC2) { Return (\_SB.TZ98.TTC2) } + Name(TTSP, 20) + Method(_TSP) { Return (\_SB.TZ98.TTSP) } + + Name(_TZP, 0) + Method(_DEP) { + Return (Package(0x2) {\_SB.PEP0,\_SB_.BCL1}) + } + } // end of TZ98 + + //--------------------------------------------------------------------- + // Critical Thermal Zones for ALL TSENS + //This sensor aggregates all the on chip TSENS into a single sensor + //for ACPI thermal manager. By having a critical thermal zone on this + //"virtual sensor" we don't have to add a critical thermal zone on every + //sensor and hence reduce the number of thermal zones. + //--------------------------------------------------------------------- + //Critical Thermal zone on MSM virtual sensor to shutdown entire system + //at 110C. + ThermalZone (TZ99) { + Name (_HID, "QCOM02B2") + Name (_UID, 100) + + Name(TCRT, 3830) + Method(_CRT) { Return (\_SB.TZ99.TCRT) } + Name(TTC1, 4) + Method(_TC1) { Return (\_SB.TZ99.TTC1) } + Name(TTC2, 3) + Method(_TC2) { Return (\_SB.TZ99.TTC2) } + Name(TTSP, 10) + Method(_TSP) { Return (\_SB.TZ99.TTSP) } + Name(_TZP, 0) + + Method(_DEP) { + Return (Package() {\_SB.PEP0}) + } + } // end of TZ99 + + //--------------------------------------------------------------------- + // QC Recommended thermal limits ends + //--------------------------------------------------------------------- + + //--------------------------------------------------------------------- + // + // Sample Thermal Zones for OEMs TZ40 - TZ79 + // + //Sample TSENS thermal zone that can be added on any TSENS + //--------------------------------------------------------------------- + //ThermalZone (TZ40) { + //Name (_HID, "QCOM2470") + //Name (_UID, 0) + //Name(_TZD, Package (){ + //\_SB.SYSM.CLUS.CPU0, \_SB.SYSM.CLUS.CPU1, \_SB.SYSM.CLUS.CPU2, \_SB.SYSM.CLUS.CPU3,\_SB.SYSM.CLUS.CPU4, \_SB.SYSM.CLUS.CPU5, + //\_SB.PEP0, }) + //Method(_PSV) { Return (3730) } + //Method(_CRT) { Return (3780) } + //Name(_TC1, 1) + //Name(_TC2, 2) + //Name(_TSP, 10) //Sampling rate of 1sec + //Name(_TZP, 0) + //Method(_DEP) { + // Return (Package() {\_SB.PEP0}) + //} + //} // end of TZ40 + + //ThermalZone (TZ41) { + //Name (_HID, "QCOM2470") + //Name (_UID, 0) + //Name(_TZD, Package (){ + //\_SB.SYSM.CLUS.CPU0, \_SB.SYSM.CLUS.CPU1, \_SB.SYSM.CLUS.CPU2, \_SB.SYSM.CLUS.CPU3,\_SB.SYSM.CLUS.CPU4, \_SB.SYSM.CLUS.CPU5, + //\_SB.PEP0, }) + //Method(_PSV) { Return (3730) } + //Method(_CRT) { Return (3780) } + //Name(_TC1, 1) + //Name(_TC2, 2) + //Name(_TSP, 50) //Sampling rate of 5sec + //Name(_TZP, 0) + //Method(_DEP) { + // Return (Package() {\_SB.PEP0}) + //} + //} // end of TZ41 + + + //--------------------------------------------------------------------------// + // + // Sample VADC Thermal zones for OEMs + // + //Following are sample thermal zones that use the off chip ADC thermistors + //they are all currently using CPUs as a cooling device for a lack of better + //option. The OEMs should change this. + //--------------------------------------------------------------------------// + + //Thermal zone for SYS_THERM2 + // ThermalZone (TZ51) { + // Name (_HID, "QCOM248D") + // Name (_UID, 0) + // Name(_TZD, Package (){ + //\_SB.SYSM.CLUS.CPU0, \_SB.SYSM.CLUS.CPU1, \_SB.SYSM.CLUS.CPU2, \_SB.SYSM.CLUS.CPU3,\_SB.SYSM.CLUS.CPU4, \_SB.SYSM.CLUS.CPU5,}) + // Method(_PSV) { Return (3830) } + //Name(_TC1, 4) + //Name(_TC2, 3) + // Name(_TSP, 50) + //Name(_TZP, 0) + //Method(_DEP) { + // Return (Package() {\_SB.PEP0}) + //} + // } // end of TZ51 + + //Thermal zone for PA_THERM1 + // ThermalZone (TZ52) { + // Name (_HID, "QCOM248E") + // Name (_UID, 0) + // Name(_TZD, Package (){\_SB.SYSM.CLUS.CPU0, \_SB.SYSM.CLUS.CPU1, \_SB.SYSM.CLUS.CPU2, \_SB.SYSM.CLUS.CPU3}) + // Method(_PSV) { Return (3430) } + // Name(_TC1, 4) + // Name(_TC2, 3) + // Name(_TSP, 50) + // Name(_TZP, 0) + //Method(_DEP) { + // Return (Package() {\_SB.PEP0}) + //} + // } // end of TZ52 diff --git a/beryllium/displayXML.asl b/beryllium/displayXML.asl new file mode 100644 index 0000000..127c765 --- /dev/null +++ b/beryllium/displayXML.asl @@ -0,0 +1,342 @@ +Name (PCFG, Buffer(){" + +TIANMA_NT36672A_FHD +Tianma Single DSI Video Mode Panel (1080x2246 24bpp) + + 1080 + 40 + 44 + 20 + 0 + 0 + 0 + 2246 + 10 + 10 + 2 + 0 + 0 + 0 + False + False + False + 0x0 + + + 8 + 3 + + + 2 + 0 + 36 + 1 + 4 + 0x3C0000 + False + False + False + False + True + True + True + + 00 + + + 15 FF 22 + 15 00 40 + 15 01 C0 + 15 02 40 + 15 03 40 + 15 04 40 + 15 05 40 + 15 06 40 + 15 07 40 + 15 08 40 + 15 09 40 + 15 0A 40 + 15 0B 40 + 15 0C 40 + 15 0D 40 + 15 0E 40 + 15 0F 40 + 15 10 40 + 15 11 50 + 15 12 60 + 15 13 70 + 15 14 58 + 15 15 68 + 15 16 78 + 15 17 77 + 15 18 39 + 15 19 2D + 15 1A 2E + 15 1B 32 + 15 1C 37 + 15 1D 3A + 15 1E 40 + 15 1F 40 + 15 20 40 + 15 21 40 + 15 22 40 + 15 23 40 + 15 24 40 + 15 25 40 + 15 26 40 + 15 27 40 + 15 28 40 + 15 2D 00 + 15 2F 40 + 15 30 40 + 15 31 40 + 15 32 40 + 15 33 40 + 15 34 40 + 15 35 40 + 15 36 40 + 15 37 40 + 15 38 40 + 15 39 40 + 15 3A 40 + 15 3B 40 + 15 3D 40 + 15 3F 40 + 15 40 40 + 15 41 40 + 15 42 40 + 15 43 40 + 15 44 40 + 15 45 40 + 15 46 40 + 15 47 40 + 15 48 40 + 15 49 40 + 15 4A 40 + 15 4B 40 + 15 4C 40 + 15 4D 40 + 15 4E 40 + 15 4F 40 + 15 50 40 + 15 51 40 + 15 52 40 + 15 53 01 + 15 54 01 + 15 55 FE + 15 56 77 + 15 58 CD + 15 59 D0 + 15 5A D0 + 15 5B 50 + 15 5C 50 + 15 5D 50 + 15 5E 50 + 15 5F 50 + 15 60 50 + 15 61 50 + 15 62 50 + 15 63 50 + 15 64 50 + 15 65 50 + 15 66 50 + 15 67 50 + 15 68 50 + 15 69 50 + 15 6A 50 + 15 6B 50 + 15 6C 50 + 15 6D 50 + 15 6E 50 + 15 6F 50 + 15 70 07 + 15 71 00 + 15 72 00 + 15 73 00 + 15 74 06 + 15 75 0C + 15 76 03 + 15 77 09 + 15 78 0F + 15 79 68 + 15 7A 88 + 15 7C 80 + 15 7D 80 + 15 7E 80 + 15 7F 00 + 15 80 00 + 15 81 00 + 15 83 01 + 15 84 00 + 15 85 80 + 15 86 80 + 15 87 80 + 15 88 40 + 15 89 91 + 15 8A 98 + 15 8B 80 + 15 8C 80 + 15 8D 80 + 15 8E 80 + 15 8F 80 + 15 90 80 + 15 91 80 + 15 92 80 + 15 93 80 + 15 94 80 + 15 95 80 + 15 96 80 + 15 97 80 + 15 98 80 + 15 99 80 + 15 9A 80 + 15 9B 80 + 15 9C 80 + 15 9D 80 + 15 9E 80 + 15 9F 80 + 15 A0 8A + 15 A2 80 + 15 A6 80 + 15 A7 80 + 15 A9 80 + 15 AA 80 + 15 AB 80 + 15 AC 80 + 15 AD 80 + 15 AE 80 + 15 AF 80 + 15 B7 76 + 15 B8 76 + 15 B9 05 + 15 BA 0D + 15 BB 14 + 15 BC 0F + 15 BD 18 + 15 BE 1F + 15 BF 05 + 15 C0 0D + 15 C1 14 + 15 C2 03 + 15 C3 07 + 15 C4 0A + 15 C5 A0 + 15 C6 55 + 15 C7 FF + 15 C8 39 + 15 C9 44 + 15 CA 12 + 15 CD 80 + 15 DB 80 + 15 DC 80 + 15 DD 80 + 15 E0 80 + 15 E1 80 + 15 E2 80 + 15 E3 80 + 15 E4 80 + 15 E5 40 + 15 E6 40 + 15 E7 40 + 15 E8 40 + 15 E9 40 + 15 EA 40 + 15 EB 40 + 15 EC 40 + 15 ED 40 + 15 EE 40 + 15 EF 40 + 15 F0 40 + 15 F1 40 + 15 F2 40 + 15 F3 40 + 15 F4 40 + 15 F5 40 + 15 F6 40 + 15 FB 01 + 15 FF 23 + 15 FB 01 + 15 01 84 + 15 05 2D + 15 06 00 + 15 11 01 + 15 12 7B + 15 15 6F + 15 16 0B + 15 29 0A + 15 30 FF + 15 31 FF + 15 32 FF + 15 33 FF + 15 34 FF + 15 35 FF + 15 36 FF + 15 37 FF + 15 38 FC + 15 39 F8 + 15 3A F4 + 15 3B F1 + 15 3D EE + 15 3F EB + 15 40 E8 + 15 41 E5 + 15 2A 13 + 15 45 FF + 15 46 FF + 15 47 FF + 15 48 FF + 15 49 FF + 15 4A FF + 15 4B FF + 15 4C FF + 15 4D ED + 15 4E D5 + 15 4F BF + 15 50 A6 + 15 51 96 + 15 52 86 + 15 53 76 + 15 54 66 + 15 2B 0E + 15 58 FF + 15 59 FF + 15 5A FF + 15 5B FF + 15 5C FF + 15 5D FF + 15 5E FF + 15 5F FF + 15 60 F6 + 15 61 EA + 15 62 E1 + 15 63 D8 + 15 64 CE + 15 65 C3 + 15 66 BA + 15 67 B3 + 15 FF 25 + 15 FB 01 + 15 05 04 + 15 FF 26 + 15 FB 01 + 15 1C AF + 15 FF 10 + 15 FB 01 + 15 51 FF + 15 53 24 + 15 55 00 + 05 11 + FF 78 + 05 29 + FF 14 + 15 FF 24 + 15 FB 01 + 15 C3 01 + 15 C4 54 + 15 FF 10 + + + 1 + 2 + +"}) \ No newline at end of file diff --git a/beryllium/pmic_batt.asl b/beryllium/pmic_batt.asl new file mode 100644 index 0000000..76dd6cb --- /dev/null +++ b/beryllium/pmic_batt.asl @@ -0,0 +1,521 @@ +Include("cust_pmic_batt.asl") + + // + // PMIC Battery Manger Driver + // + Device (PMBT) { + Name (_HID, "QCOM0264") + Alias(\_SB.PSUB, _SUB) + Name (_DEP, Package(0x2) { + \_SB_.PMIC, + \_SB_.ADC1, + //\_SB_.PEIC + }) + + Method (_STA) { + Return (0xB) // Device is installable, functional & should not be visible in OSPM/Device Manager + } + + Method (_CRS, 0x0, NotSerialized) { + Name (RBUF, ResourceTemplate () + { + //GpioInt(Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.PM01",,,,) {208} // 0x80 - PM_INT__SCHG_CHGR__CHGR_ERROR_RT_STS - Charger Error Interrupt + //GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {336} // 0x210 - PM_INT__FG_BCL__IBT_HI - IBAT greater than threshold Interrupt. + //GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {337} // 0x211 - PM_INT__FG_BCL__IBT_THI - VBatt less than threshold Interrupt + //GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {352} // 0x220 - PM_INT__FG_MEM_IF__IMA_RDY - MEMIF access Interrupt + //GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {215} // 0x87 - PM_INT__SCHG_CHGR__CHGR_7 - Termination Current Interrupt + //GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {209} // 0x81 - PM_INT__SCHG_CHGR__CHARGING_STATE_CHANGE - Charger Inhibit Interrupt + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {329} // 0x209 - PM_INT__FG_BATT_INFO__VBT_LOW - VBAT_LOW Interrupt + //GpioInt(Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.PM01",,,,) {240} // 0xA0 - PM_INT__SCHG_DC__DCIN_COLLAPSE - Qi Wireless Charger Interrupt + GpioInt(Edge, ActiveHigh, Exclusive, PullUp, 0, "\\_SB.PM01",,,,) {331} // 0x20B - PM_INT__FG_BATT_INFO__BT_MISS - BATT_MISSING Interrupt + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {237} // 0x9D - PM_INT__SCHG_USB__USBIN_SOURCE_CHANGE - AICL_DONE IRQ (Rising Only) + //GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {232} // 0x98 - PM_INT__SCHG_USB__USBIN_COLLAPSE - USB_UV IRQ (Rising Only) + //GpioInt(Edge, ActiveHigh, Exclusive, PullUp, 0, "\\_SB.PM01",,,,) {322} // 0x202 - PM_INT__FG_BATT_SOC__BSOC_DELTA - FULL_SOC Interrupt + //GpioInt(Edge, ActiveHigh, Exclusive, PullUp, 0, "\\_SB.PM01",,,,) {323} // 0x203 - PM_INT__FG_BATT_SOC__MSOC_DELTA - EMPTY_SOC Interrupt + // GpioInt(Edge, ActiveHigh, Exclusive, PullUp, 0, "\\_SB.PM01",,,,) {213} // 0x85 - PM_INT__SCHG_CHGR__FG_FVCAL_QUALIFIED - FVCAL_QUALIFIED IRQ + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {224} // 0x90 - PM_INT__SCHG_BATIF__BAT_TEMP - Jeita limit interrupt + + }) + Return (RBUF) + } + + //ACPI methods for Battery Manager Device + Method (BMNR) { + Name (CFG0, + Package(){ + 1, //* 0: Select Platform: 0- No HW, 1- SMChg+FGGge, 2- SMB3pChg+SMB3pGge, 3- LBChg+VMBMS + 0, //* 1: Error State Handling: 0- Don’t Shutdown, 1- Shutdown + 1, //* 2: Listen to BatteryClass: 0- No 1- Yes + 0, //* 3: Test Mode Power Flag: 0- Discharging, 1- PowerOnline+Charging + "CUST_PMIC" //* 4: cust_pmic config identifier + }) + Store(CUST, Index(CFG0, 4)) + Return (CFG0) + } + + //ACPI methods for Timer + Method (BTIM) { + Name (CFG0, + Package(){ + 30000, // Charging Heartbeat Timer + 10000, // Charging Tolerable Delay + 300000, // Discharging Heartbeat Timer + 120000, // Discharging Tolerable Delay + 0, // Poll Timer , 0=Timer not used. + 0, // Poll Tolerable Delay + 28080000, //Charging Timeout (TDone) Timer + 0, //Charging Timeout(TDone) Tolerable Delay + }) + Return (CFG0) + } + + + //ACPI methods for Battery Info + Method (BBAT) { + Name (CFG0, + Package(){ + 1, //* 0: Battery Technology + 0x4C494F4E, //* 1: Battery Chemistry: hex(LION) + 0xFFFFFFFF, //* 2: BFCC: (mWh), Design Capacity + 0xFFFFFFFF, //* 3: BFCC: (mWh), Full Charge Capacity + 0xFFFFFFFF, //* 4: PCT1: (% of FCC), Default Alert 1 + 0xFFFFFFFF, //* 5: PCT2: (% of FCC), Default Alert 2 + "QCOMBATT01", //* 6: Device Name + "Qualcomm", //* 7: Manufacture Name + "QCOMBAT01_07012011", //* 8: Battery Unique ID + "07012011", //* 9: Battery Serial Number + 19, //* 10: Battery Manufacture Date + 04, //* 11: Battery Manufacture Month + 2014 //* 12: Battery Manufacture Year + }) + //Local2 = Default Alert1 = PCT1 * BFCC / 100 + Multiply(PCT1,BFCC,Local0) + Divide(Local0, 100, Local1, Local2) + //Local3 = Default Alert2 = PCT2 * BFCC / 100 + Multiply(PCT2,BFCC,Local0) + Divide(Local0, 100, Local1, Local3) + Store(BFCC, Index(CFG0, 2)) + Store(BFCC, Index(CFG0, 3)) + Store(Local2, Index(CFG0, 4)) + Store(Local3, Index(CFG0, 5)) + Return (CFG0) + } + + //ACPI methods for Proprietary chargers + Method (BPCH) { + Name (CFG0, + Package(){ + 3000, // QC2.0 charger current = 3000mA + 3000, // QC3.0 charger current = 3000mA + 1500 // Invalid Wall charger current = 1500mA + }) + Return (CFG0) + } + + //ACPI methods for foldback chargers + Method (BFCH) { + Name (CFG0, + Package(){ + 1, // Feature enable/disable + 5, // No of consecutive times charger attach/detach + 5000, // msecs, Time elapsed between attach/detach + 900, // mA, Current setting for foldback charger + }) + Return (CFG0) + } + + //ACPI methods for coin cell charger + Method (BCCC) { + Name (CFG0, + Package(){ + 1, //Enable coin cell charger; 1 = enable, 0 = disable + 0, // RSET, 0=2K1, 1=1K7, 2=1K2, 3 = 0K8 + 0 // VSET, 0=2V5, 1=3V2, 2=3V1, 3=3V0 + }) + Return (CFG0) + } + + //ACPI methods for Recharge/Maintenance Mode + Method (BRCH) { + Name (CFG0, + Package(){ + 100, // Delta V Recharge threshold = 100mV + 0 // Delta V Recharge Reduction below Normal= 0mV + }) + Return (CFG0) + } + + //ACPI methods for Qi Charging + Method (_BQI) { + Name (CFG0, + Package(){ + 0, + }) + Return (CFG0) + } + + //ACPI methods for Interrupt Name + Method (BIRQ) { + Name (CFG0, + Package(){ + //"ChgError", //Charger Error + //"BclIrq1", //IBAT greater than threshold IRQ + //"BclIrq2", // VBAT less than threshold IRQ + //"MEMIFaccess", //MEMIF access granted IRQ + //"TccReached", // Termination Current IRQ + // "ChargerInhibit" // Charger Inhibit IRQ + "VbatLow", // VBAT LOW IRQ + //"QiWlcDet", // Qi charging + "BattMissing", // BATT_MISSING IRQ + "AiclDone", // AICL Done + // "UsbUv", //USB UV + //"SOCFull", //SOC Full IRQ + //"SOCEmpty", //SOC Empty IRQ + //"FvCal", //FVCAl IRQ + "JeitaLimit" //JEITA limit IRQ + }) + Return (CFG0) + } + //ACPI methods for Platform File + Method (BPLT) { + Name (CFG0, + Package(){ + 1024, //* 0: ACPI Version + 0xFFFFFFFF, //* 1: VNOM: (mV), Nominal Battery Voltage + 0xFFFFFFFF, //* 2: VLOW: (mV), Low Battery Voltage + 0xFFFFFFFF, //* 3: EMPT: (mV), VcutOff + 0xFFFFFFFF, //* 4: DCMA: (mA), DC Current + 1, //* 5: ChargePath Priority: Select 0 for DC, 1 for USB + 50, //* 6: RSLOW for maxFlashCurrentPrediction + 50, //* 7: RPARA for maxFlashCurrentPrediction + 5000, //* 8: VINFLASH for maxFlashCurrentPrediction + 8, //* 9: FlashParam for maxFlashCurrentPrediction + 1, //* 10: AFP Mode Supported + 80, //* 11: AFP Trigger Max Battery Temp (+80 deg C) + 0xFFFFFFEC, //* 12: AFP Trigger Min Battery Temp (-20 deg C) + 72, //* 13: Watchdog timer in secs + 100, //* 14: Charger iterm 100 mA for now + 30, //* 15: SRAM logging timer + 5, //* 16: VBATT average Window Size + 6, //* 17: Emergency Shutdown Initial SOC + 500, //* 18: SoC convergent point + 126, //* 19: LM_Threshold + 400, //* 20: MH_Threshold + 0xFFFFFFFF, //* 21: BOCP: (mA), OCP current used in BCL + 750, //* 22: soc (75%) below which no soc linearization even in CV charging + 1, //* 23: BMD - Battery Missing Detection Source when source is attached: BATT_ID (1=BATT_ID, 4=HW Misssing Algorithm) + 2, //* 24: ibat src sensing : 0 for batfet and 1 for external sensing + 50, //* 25: IFGD: (mA), FG Iterm delta; (iterm + this value) determines when FG report 100% + 10, //* 26: VFGD: (mV), CC to CV Vdelta; (Vfloat - this value) determine when FG report 100% + 1, //* 27: 0 - disable SOC linearization; 1 (nonzero): enable SOC linearization + 0xFFFFFFEC, //* 28: (Celcius), Temperature threshold do have different SOC slope limiter + 10, //* 29: (milli%) - SOC slope limiter when charging and at lower temperature than threshold + 10, //* 30: (milli%) - SOC slope limiter when charging and at higher temperature than threshold + 10, //* 31: (milli%) - SOC slope limiter when discharging and at lower temperature than threshold + 10, //* 32: (milli%) - SOC slope limiter when discharging and at higher temperature than threshold + 1, //* 33: 0 - disable FCC learning; 1 (nonzero): enable FCC leearning + 150, //* 34: maximum starting SOC (in tenth percent)at which FCC learning would be turned on during charging + 100, //* 35: maximum allowable decrement (in tenth percent) of battery capacity in FCC learning + 5, //* 36: maximum allowable increment (in tenth percent) of battery capacity in FCC learning + 10, //* 37: battery temperature in degree C below which switch to low temp ESR update steps + 0x02, //* 38: ESR update step tight, (2 * 0.001953 = 0.0039 = 0.4% max change each update) + 0x33, //* 39: ESR update step broad, (51* 0.001953 = 0.099603 = 10% max change each update) + 0x02, //* 40: ESR update step tight at low temp (below 10 degree, 0.4% max change each update) + 0x0A, //* 41: ESR update step broad at low temp (below 10 degree, 2% max change each update) + 0, //* 42: mOhm, RConn + 0, //* 43: Type C Thermal Mitigation Enable + 70, //* 44: Temperature to arm mitigation (degree C) + 50, //* 45: ICL adjustment (percent) + 60 //* 46: Temperature to disarm mitigation (degree C) + }) + Store(VNOM, Index(CFG0, 1)) + Store(VLOW, Index(CFG0, 2)) + Store(EMPT, Index(CFG0, 3)) + Store(DCMA, Index(CFG0, 4)) + Store(BOCP, Index(CFG0, 21)) + Store(IFGD, Index(CFG0, 25)) + Store(VFGD, Index(CFG0, 26)) + Return (CFG0) + } + + //ACPI methods for Platform File + Method (BPTM) { + Name (CFG0, + Package(){ + 15000, // Emergency Timer + 0, // Emergency Tolerable Delay + }) + Return (CFG0) + } + + //***************************************************** + // Battery Charge Table 1 (BCT1) + // Notes: used in Method(BJTA) & Method (BAT1) + //***************************************************** + Name (BCT1, Package(){ + 4350, //* 0: VDD1: (mV), Float Voltage (FV) + 2100, //* 1: FCC1: (mA), Full Charge Current (FCC) + 0, //* 2: HCLI: (C) hard cold limit - at which temperature charging will be disabled + 10, //* 3: SCLI: (C) soft cold limit - at which temperature charge current/float voltage will be reduced to JEITA compensated value + 45, //* 4: SHLI: (C) soft hot limit - at which temperature float voltage/charge current will be reduced to JEITA compensated value + 55, //* 5: HHLI: (C) hard hot limit - at which temperature charging will be disabled + 105, //* 6: FVC1: (mV) Float Voltage compensation (amount of FV reduction) when in battery hot-soft limit + 0, //* 7: (mV) Float Voltage compensation (amount of FV reduction) when in battery cold-soft limit + //* notes: put 0 value to disable + //* These values (10 vs 11) should be the same when HW JEITA is enabled + 0, //* 8: (mA) Charge Current compensation (amount of CC reduction) when in battery hot-soft limit + 1000, //* 9: CCC1: (mA) Charge Current compensation (amount of CC reduction) when in battery cold-soft limit + //* notes: put 0 value to disable + //* These values (12 vs 13) should be the same when HW JEITA is enabled + }) + + //ACPI methods for JEITA + Method (BJTA) { + Name (CFG0, + Package(){ + 2, //* 0: Select JEITA Configuration: 0- No JEITA, 1- SW JEITA, 2- HW JEITA + 2, //* 1: Temperature Hysteresis (in deg C) + Package(0xa){0,0,0,0,0,0,0,0,0,0} + //* 2: Structure for default charge table + }) + Store(VDD1, Index(\_SB_.PMBT.BCT1, 0)) + Store(FCC1, Index(\_SB_.PMBT.BCT1, 1)) + Store(HCLI, Index(\_SB_.PMBT.BCT1, 2)) + Store(SCLI, Index(\_SB_.PMBT.BCT1, 3)) + Store(SHLI, Index(\_SB_.PMBT.BCT1, 4)) + Store(HHLI, Index(\_SB_.PMBT.BCT1, 5)) + Store(FVC1, Index(\_SB_.PMBT.BCT1, 6)) + Store(CCC1, Index(\_SB_.PMBT.BCT1, 9)) + + //Use BCT1 as the Default Charge Table + Store(\_SB_.PMBT.BCT1, Index(CFG0, 2)) + Return (CFG0) + } + + //ACPI methods for Battery-1 (Ascent 860-82209-0000 3450mAh) + Method (BAT1) + { + Name (CFG0, + Package(){ + 0, //* 0: Battery Category: 0-NORMAL, 1-SMART + 0xFFFFFFEC, //* 1: min operating battery temp (-20 deg C) + 65, //* 2: max operating battery temp (+65 deg C) + Package(4){0,0,0,0}, //* 3: 128-bit battery info for future expansion + Package(0xa){0,0,0,0,0,0,0,0,0,0} + //* 4: Structure for charge table + }) + + //assign Charge Table to BCT1 + //Notes: 1) If the default charge table and desire charge table are different, + // Create another table (ex: BCT2) with the same structure as BCT1 and modify BCT1 below with the new table name + // 2) Method(BJTA) is parsed before this(BAT1) method in Battmngr module + // Method(BJTA) may be updating BCT1 parameters using configuration from cust_pmic_batt.asl (refer to BJTA method details) + // If BAT1 desires different value to be used (than what used in BJTA), pls change/update relevant parameter(s) here. + Store(\_SB_.PMBT.BCT1, Index(CFG0, 4)) + + Return (CFG0) + } + + //ACPI methods for Battery Error Handling + Method (BEHC) + { + //Actions for Battery Error Handling + // 0x0 - Do Nothing + // 0x1 - Reload Charge Table + // 0x2 - Error Shutdown + // 0x4 - Emergency Shutdown + // 0x8 - Enter Test Mode + Name (CFG0, + Package(){ + 1, //1-Feature Enable, 0-Feature Disable + 0x8, //Action(s) for DEBUG state -> Enter Test Mode + 0x1, //Action(s) for NORMAL state -> Reload Charge Table + 0x0, //Action(s) for SMART_AUTHENTICATED state -> Do nothing + 0x0, //Action(s) for UNKNOWN state -> Do nothing + 0x2, //Action(s) for NOT_PRESENT state -> Error Shutdown + 0x2, //Action(s) for INVALID state -> Error Shutdown + 0x4 //Action(s) for OUT_OP_RANGE state -> AFP for out of operational range + }) + Return (CFG0) + } + + //ACPI methods for Charge Table Management Configuration + Method (CTMC) + { + Name (CFG0, + Package(){ + 2000, //* 0: min RID for DEBUG category: 2K + 14000, //* 1: max RID for DEBUG category: 14K + 0xFFFFFFFF, //* 2: RID2: min RID for NORMAL category: 15K + 0xFFFFFFFF, //* 3: RID3: max RID for NORMAL category: 140K + 240000, //* 4: min RID for SMART category: 240K + 450000, //* 5: max RID for SMART category: 450K + 1, //* 6: Number of charging table + }) + Store(RID2, Index(CFG0, 2)) + Store(RID3, Index(CFG0, 3)) + Return (CFG0) + } + + //ACPI methods for Parallel Charging + Method (BMPC) { + Name (CFG0, + Package(){ + 0, //* 0: Feaature Enable. 1: Enabled, 0: Disable + 1, //* 1: Input Power Disctribution (HW) configuration: 0: MID-MID, 1: USBIN-USBIN + 7000, //* 2: (mW) Input Power Threshold to decide if parallel charging to be enabled or not + //* Note: Not applicable for MID-MID configuration + 1000, //* 3: (mA) Charge Current Threshold to decide if parallel charging to be enabled or not + 50, //* 4: (%) Slave Charger Initial Power Distribution + 60, //* 5: (mV) Slave Charger Float Voltage Headroom + 500, //* 6: (mA) Slave Charger Charge Current Done Threshold + 90, //* 7: Slave Charger Minimum Efficiency + 0, //* 8: Slave Charger HW ID. 0: SMB1380/1 + 70, //* 9: (%)Slave Charger Max Power Distribution: 70% + 0, //* 10: (%)Slave Charger Min Power Distribution: 0% + Package(0x4)//* 11: Thermal Balancing Configuration + { + 5, //11.1: (C)Temperature Difference to trigger thermal balancing. 0 to disable the feature + 5, //11.2: (%)Step to redistrubute the power + 120, //11.3: (Sec)Minimum Wait Time for each redistribution attempt + 5, //11.4: (C)Temperature Margin for Master Charger + } + }) + Return (CFG0) + } + } + + // + // PMIC Battery Miniclass Driver + // + Device (PMBM) { + Name (_HID, "QCOM0263") + Alias(\_SB.PSUB, _SUB) + Name (_DEP, Package(0x1) + { + \_SB_.PMBT + }) + + Method (_CRS, 0x0, NotSerialized) { + Name (RBUF, ResourceTemplate () { + }) + Return (RBUF) + } + + Method (_STA) { + Return (0xB) // Device is installable, functional & should not be visible in OSPM/Device Manager + } + } + +// +//FGBCL Driver +// +Device (BCL1) { + Name (_HID, "QCOM02D6") + Alias(\_SB.PSUB, _SUB) + Name (_DEP, Package(0x1) + { + \_SB_.PMIC + }) + + Method (_STA) { + Return (0xB) // Device is installable, functional & should not be visible in OSPM/Device Manager + } + + Method (_CRS, 0x0, NotSerialized) { + Name (RBUF, ResourceTemplate () { + GpioInt(Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.PM01",,,,RawDataBuffer(){0x08}) {64} // 0x1E8 - PM_INT__BCL_COMP__VCOMP_LOW0 - VCOMP_LOW0 IRQ + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {65} // 0x1E9 - PM_INT__BCL_COMP__VCOMP_LOW1 - VCOMP_LOW1 IRQ + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {66} // 0x1EA - PM_INT__BCL_COMP__VCOMP_LOW2 - VCOMP_LOW2 IRQ + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {67} // 0x1EB - PM_INT__BCL_COMP__VCOMP_HI - VCOMP_HI IRQ + //GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {68} // 0x1EC - PM_INT__BCL_COMP__SYS_OK - SYS_OK IRQ + //GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {72} // 0x1F0 - PM_INT__BCL_PLM__VCOMP_LVL0_PLM - LVL0_PLM IRQ + //GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {74} // 0x1F2 -PM_INT__BCL_PLM__VCOMP_LVL2_PLM - LVL2_PLM IRQ + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {75} // 0x1F3 - PM_INT__BCL_PLM__VCOMP_BA - BAN alarm IRQ + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {336} // 0x210 - PM_INT__FG_BCL__IBT_HI - ibatt high IRQ + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {337} // 0x211 - PM_INT__FG_BCL__IBT_THI - ibatt too high IRQ + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {339} // 0x213 - PM_INT__FG_BCL__VBT_LO_CMP - vbatt low irq + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {340} // 0x214 - PM_INT__FG_BCL__VBT_TLO_CMP - vbatt too low irq + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {324} // 0x204 - PM_INT__FG_BATT_SOC__MSOC_LOW - MSOC_Low Interrupt + GpioInt(Edge, ActiveHigh, Shared, PullUp, 0, "\\_SB.PM01",,,,) {326} // 0x206 - PM_INT__FG_BATT_SOC__MSOC_HIGH - MSOC_HI Interrupt + GpioInt(Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.PM01",,,,RawDataBuffer(){0x08}) {344} // 0x218 - PM_INT__FG_LMH__LMH_LVL0 - LMH_LVL0 IRQ + GpioInt(Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.PM01",,,,RawDataBuffer(){0x08}) {345} // 0x219 - PM_INT__FG_LMH__LMH_LVL1 - LMH_LVL1 IRQ + GpioInt(Edge, ActiveBoth, Shared, PullUp, 0, "\\_SB.PM01",,,,RawDataBuffer(){0x08}) {346} // 0x21A - PM_INT__FG_LMH__LMH_LVL2 - LMH_LVL2 IRQ + + }) + Return (RBUF) + } + //ACPI methods for FGBCL device + Method (BCLS) { + Name (CFG0, + Package(){ + 3, //* FGBCL ACPI revision + 7, //* 0: BCL disabled, 1: vph_pwr bcl enabled, 2: fg vbatt enabled, 4: fg ibatt enabled + 5000, //* battery ocp current + 80, //* ibatt high threshold is set to 80 for 80% of OCP + 90, //* ibatt too high is set to 90 for 90% of OCP + 2800, //* vbatt low is set to 2800 mV + 2600, //* vbatt too low is set to 2600 mV + 3200, //* vcomp_low0 threshold is 3200 mv + 2750, //* vcomp_low1 threshold is 2750 mv + 2500, //* vcomp_low2 threshold is 2500 mV + 10, //* poll timer for battery soc polling. + 1, //* 1- enable battery percent notification. 0-disable battery percent notification + 2000, //* debug board Min battery ID in Ohm + 14000 //* debug board Max battery ID in Ohm + }) + Return (CFG0) + } + //ACPI methods for Interrupt Name + Method (BCLQ) { + Name (CFG0, + Package(){ + "VCOMP_LOW0", //vcomp_low0 IRQ + "VCOMP_LOW1", //vcomp_low1 IRQ + "VCOMP_LOW2", //vcomp_low2 IRQ + "VCOMP_HI", //vcomp_hi IRQ + //"SYS_OK", // sys_ok irq + //"LVL0_PLM", // LVL0_PLM IRQ + //"LVL1_PLM" // LVL1_PLM IRQ + //"LVL2_PLM", //LVL2_PLM IRQ + "BAN_ALARM", // BAN_ALARM IRQ + "IBATT_HI", // IBATT HIGH IRQ + "IBATT_THI", // IBATT TOO HIGH IRQ + "VBATT_LOW", // VBATT_LOW IRQ + "VBATT_TLOW", // VBATT TOO LOW IRQ + "MSOC_LOW", //monotonic soc low IRQ + "MSOC_HI", //monotonic soc high IRQ + "LMH_LVL0", //LMH_LVL0 IRQ + "LMH_LVL1", //LMH_LVL1 IRQ + "LMH_LVL2", //LMH_LVL2 IRQ + }) + Return (CFG0) + } +} + +// +//PMIC Type-C Controler Driver (PMICTCC) Driver +// +Device(PTCC) +{ + Name (_HID, "QCOM02E6") + Alias(\_SB.PSUB, _SUB) + Name (_DEP, Package(0x1) {\_SB_.PMIC}) + Method (_CRS, 0x0, NotSerialized) { + Name (RBUF, ResourceTemplate () { + GpioInt(Edge, ActiveHigh, SharedAndWake, PullNone, 0, "\\_SB.PM01",,,,) {239} // 0x9F - PM_INT__SCHG_USB__TYPE_C_OR_RID_DETECTION_CHANGE - CC State Changed IRQ + GpioInt(Edge, ActiveHigh, SharedAndWake, PullNone, 0, "\\_SB.PM01",,,,) {270} // 0xBE - PM_INT__USB_PD__MESSAGE_RX_DISCARDED - Message RX Discarded IRQ + GpioInt(Edge, ActiveHigh, SharedAndWake, PullNone, 0, "\\_SB.PM01",,,,) {269} // 0xBD - PM_INT__USB_PD__MESSAGE_TX_DISCARDED - Message TX Discarded IRQ + GpioInt(Edge, ActiveHigh, SharedAndWake, PullNone, 0, "\\_SB.PM01",,,,) {268} // 0xBC - PM_INT__USB_PD__MESSAGE_TX_FAILED - Message TX Failed IRQ + GpioInt(Edge, ActiveHigh, SharedAndWake, PullNone, 0, "\\_SB.PM01",,,,) {267} // 0xBB - PM_INT__USB_PD__MESSAGE_RECEIVED - Message Received IRQ + GpioInt(Edge, ActiveHigh, SharedAndWake, PullNone, 0, "\\_SB.PM01",,,,) {266} // 0xBA - PM_INT__USB_PD__MESSAGE_SENT - Message Sent IRQ + GpioInt(Edge, ActiveHigh, SharedAndWake, PullNone, 0, "\\_SB.PM01",,,,) {265} // 0xB9 - PM_INT__USB_PD__SIGNAL_RECEIVED - Singal Received IRQ + GpioInt(Edge, ActiveHigh, SharedAndWake, PullNone, 0, "\\_SB.PM01",,,,) {264} // 0xB8 - PM_INT__USB_PD__SIGNAL_SENT - Signal Sent IRQ + GpioInt(Edge, ActiveHigh, Exclusive, PullUp, 0, "\\_SB.PM01",,,,) {217} // 0x89 - PM_INT__SCHG_OTG__OTG_OVERCURRENT - OTG_OC_IRQ + GpioInt(Edge, ActiveBoth, Exclusive, PullUp, 0, "\\_SB.PM01",,,,) {263} // 0xB7 - PM_INT__SCHG_MISC__SWITCHER_POWER_OK - SWITCHER_POWER_OK (CHG_MISC) + GpioInt(Edge, ActiveHigh, Exclusive, PullUp, 0, "\\_SB.PM01",,,,) {235} // 0x9B - PM_INT__SCHG_USB__USBIN_OV - USBIN_OV (CHG_USB) + // GpioIo (Exclusive, PullUp, 0, 0, , "\\_SB.PM01", , , , ) {493} // 0x668 - PM_INT__PM2_GPIO14__GPIO_IN_STS - GPIO14B – For Type-C Debug Accessory Mode + }) + Return (RBUF) + } +} diff --git a/beryllium/thz.asl b/beryllium/thz.asl new file mode 100644 index 0000000..a3a3a39 --- /dev/null +++ b/beryllium/thz.asl @@ -0,0 +1,557 @@ +// +// The Driver for Dynamically Changing Thresholds +// of Thermal Zones +// + +Method(THTZ, 0x4, NotSerialized) +{ + + // Switch based on thermal zone number + Switch(toInteger(Arg0)) + { + Case(1) + { + Switch(toInteger(Arg3)) + { + Case(0) { + If(Arg2) + { + Store(Arg1, \_SB.TZ1.TPSV) + Notify(\_SB.TZ1, 0x81) + } + Return(\_SB.TZ1._PSV) + } + + Case(2) { + If(Arg2) + { + Store(Arg1, \_SB.TZ1.TTSP) + Notify(\_SB.TZ1, 0x81) + } + Return(\_SB.TZ1._TSP) + } + + Case(3) { + If(Arg2) + { + Store(Arg1, \_SB.TZ1.TTC1) + Notify(\_SB.TZ1, 0x81) + } + Return(\_SB.TZ1._TC1) + } + + Case(4) { + If(Arg2) + { + Store(Arg1, \_SB.TZ1.TTC2) + Notify(\_SB.TZ1, 0x81) + } + Return(\_SB.TZ1._TC2) + } + + Default + { + Return(0xFFFF) + } + } + } + + Case(3) + { + Switch(toInteger(Arg3)) + { + Case(0) { + If(Arg2) + { + Store(Arg1, \_SB.TZ3.TPSV) + Notify(\_SB.TZ3, 0x81) + } + Return(\_SB.TZ3._PSV) + } + + Case(2) { + If(Arg2) + { + Store(Arg1, \_SB.TZ3.TTSP) + Notify(\_SB.TZ3, 0x81) + } + Return(\_SB.TZ3._TSP) + } + + Case(3) { + If(Arg2) + { + Store(Arg1, \_SB.TZ3.TTC1) + Notify(\_SB.TZ3, 0x81) + } + Return(\_SB.TZ3._TC1) + } + + Case(4) { + If(Arg2) + { + Store(Arg1, \_SB.TZ3.TTC2) + Notify(\_SB.TZ3, 0x81) + } + Return(\_SB.TZ3._TC2) + } + + Default + { + Return(0xFFFF) + } + } + } + + Case(20) + { + Switch(toInteger(Arg3)) + { + Case(0) { + If(Arg2) + { + Store(Arg1, \_SB.TZ20.TPSV) + Notify(\_SB.TZ20, 0x81) + } + Return(\_SB.TZ20._PSV) + } + + Case(2) { + If(Arg2) + { + Store(Arg1, \_SB.TZ20.TTSP) + Notify(\_SB.TZ20, 0x81) + } + Return(\_SB.TZ20._TSP) + } + + Case(3) { + If(Arg2) + { + Store(Arg1, \_SB.TZ20.TTC1) + Notify(\_SB.TZ20, 0x81) + } + Return(\_SB.TZ20._TC1) + } + + Case(4) { + If(Arg2) + { + Store(Arg1, \_SB.TZ20.TTC2) + Notify(\_SB.TZ20, 0x81) + } + Return(\_SB.TZ20._TC2) + } + + Default + { + Return(0xFFFF) + } + } + } + + Case(21) + { + Switch(toInteger(Arg3)) + { + Case(0) { + If(Arg2) + { + Store(Arg1, \_SB.TZ21.TPSV) + Notify(\_SB.TZ21, 0x81) + } + Return(\_SB.TZ21._PSV) + } + + Case(2) { + If(Arg2) + { + Store(Arg1, \_SB.TZ21.TTSP) + Notify(\_SB.TZ21, 0x81) + } + Return(\_SB.TZ21._TSP) + } + + Case(3) { + If(Arg2) + { + Store(Arg1, \_SB.TZ21.TTC1) + Notify(\_SB.TZ21, 0x81) + } + Return(\_SB.TZ21._TC1) + } + + Case(4) { + If(Arg2) + { + Store(Arg1, \_SB.TZ21.TTC2) + Notify(\_SB.TZ21, 0x81) + } + Return(\_SB.TZ21._TC2) + } + + Default + { + Return(0xFFFF) + } + } + } + + Case(33) { + Switch(toInteger(Arg3)) + { + Case(0) { + If(Arg2) + { + Store(Arg1, \_SB.TZ33.TPSV) + Notify(\_SB.TZ33, 0x81) + } + Return(\_SB.TZ33._PSV) + } + + Case(2) { + If(Arg2) + { + Store(Arg1, \_SB.TZ33.TTSP) + Notify(\_SB.TZ33, 0x81) + } + Return(\_SB.TZ33._TSP) + } + + Case(3) { + If(Arg2) + { + Store(Arg1, \_SB.TZ33.TTC1) + Notify(\_SB.TZ33, 0x81) + } + Return(\_SB.TZ33._TC1) + } + + Case(4) { + If(Arg2) + { + Store(Arg1, \_SB.TZ33.TTC2) + Notify(\_SB.TZ33, 0x81) + } + Return(\_SB.TZ33._TC2) + } + + Default + { + Return(0xFFFF) + } + } + } + + Case(36) { + Switch(toInteger(Arg3)) + { + Case(0) { + If(Arg2) + { + Store(Arg1, \_SB.TZ36.TPSV) + Notify(\_SB.TZ36, 0x81) + } + Return(\_SB.TZ36._PSV) + } + + Case(2) { + If(Arg2) + { + Store(Arg1, \_SB.TZ36.TTSP) + Notify(\_SB.TZ36, 0x81) + } + Return(\_SB.TZ36._TSP) + } + + Case(3) { + If(Arg2) + { + Store(Arg1, \_SB.TZ36.TTC1) + Notify(\_SB.TZ36, 0x81) + } + Return(\_SB.TZ36._TC1) + } + + Case(4) { + If(Arg2) + { + Store(Arg1, \_SB.TZ36.TTC2) + Notify(\_SB.TZ36, 0x81) + } + Return(\_SB.TZ36._TC2) + } + + Default + { + Return(0xFFFF) + } + } + } + + Case(37) { + Switch(toInteger(Arg3)) + { + Case(0) { + If(Arg2) + { + Store(Arg1, \_SB.TZ37.TPSV) + Notify(\_SB.TZ37, 0x81) + } + Return(\_SB.TZ37._PSV) + } + + Case(1) + { + If(Arg2) + { + Store(Arg1, \_SB.TZ37.TCRT) + Notify(\_SB.TZ37, 0x81) + } + Return(\_SB.TZ37._CRT) + } + + Case(2) { + If(Arg2) + { + Store(Arg1, \_SB.TZ37.TTSP) + Notify(\_SB.TZ37, 0x81) + } + Return(\_SB.TZ37._TSP) + } + + Case(3) { + If(Arg2) + { + Store(Arg1, \_SB.TZ37.TTC1) + Notify(\_SB.TZ37, 0x81) + } + Return(\_SB.TZ37._TC1) + } + + Case(4) { + If(Arg2) + { + Store(Arg1, \_SB.TZ37.TTC2) + Notify(\_SB.TZ37, 0x81) + } + Return(\_SB.TZ37._TC2) + } + + Default + { + Return(0xFFFF) + } + } + } + + Case(38) { + Switch(toInteger(Arg3)) + { + Case(0) { + If(Arg2) + { + Store(Arg1, \_SB.TZ38.TPSV) + Notify(\_SB.TZ38, 0x81) + } + Return(\_SB.TZ38._PSV) + } + + Default + { + Return(0xFFFF) + } + } + } + + Case(40) { + Switch(toInteger(Arg3)) + { + Case(0) { + If(Arg2) + { + Store(Arg1, \_SB.TZ40.TPSV) + Notify(\_SB.TZ40, 0x81) + } + Return(\_SB.TZ40._PSV) + } + + Case(2) { + If(Arg2) + { + Store(Arg1, \_SB.TZ40.TTSP) + Notify(\_SB.TZ40, 0x81) + } + Return(\_SB.TZ40._TSP) + } + + Case(3) { + If(Arg2) + { + Store(Arg1, \_SB.TZ40.TTC1) + Notify(\_SB.TZ40, 0x81) + } + Return(\_SB.TZ40._TC1) + } + + Case(4) { + If(Arg2) + { + Store(Arg1, \_SB.TZ40.TTC2) + Notify(\_SB.TZ40, 0x81) + } + Return(\_SB.TZ40._TC2) + } + + Default + { + Return(0xFFFF) + } + } + } + + Case(44) { + Switch(toInteger(Arg3)) + { + Case(0) { + If(Arg2) + { + Store(Arg1, \_SB.TZ44.TPSV) + Notify(\_SB.TZ44, 0x81) + } + Return(\_SB.TZ44._PSV) + } + + Case(2) { + If(Arg2) + { + Store(Arg1, \_SB.TZ44.TTSP) + Notify(\_SB.TZ44, 0x81) + } + Return(\_SB.TZ44._TSP) + } + + Case(3) { + If(Arg2) + { + Store(Arg1, \_SB.TZ44.TTC1) + Notify(\_SB.TZ44, 0x81) + } + Return(\_SB.TZ44._TC1) + } + + Case(4) { + If(Arg2) + { + Store(Arg1, \_SB.TZ44.TTC2) + Notify(\_SB.TZ44, 0x81) + } + Return(\_SB.TZ44._TC2) + } + + Default + { + Return(0xFFFF) + } + } + } + + Case(98) + { + Switch(toInteger(Arg3)) + { + Case(0) { + If(Arg2) + { + Store(Arg1, \_SB.TZ98.TPSV) + Notify(\_SB.TZ98, 0x81) + } + Return(\_SB.TZ98._PSV) + } + + Case(2) { + If(Arg2) + { + Store(Arg1, \_SB.TZ98.TTSP) + Notify(\_SB.TZ98, 0x81) + } + Return(\_SB.TZ98._TSP) + } + + Case(3) { + If(Arg2) + { + Store(Arg1, \_SB.TZ98.TTC1) + Notify(\_SB.TZ98, 0x81) + } + Return(\_SB.TZ98._TC1) + } + + Case(4) { + If(Arg2) + { + Store(Arg1, \_SB.TZ98.TTC2) + Notify(\_SB.TZ98, 0x81) + } + Return(\_SB.TZ98._TC2) + } + + Default + { + Return(0xFFFF) + } + } + } + + Case(99) + { + Switch(toInteger(Arg3)) + { + Case(1) { + If(Arg2) + { + Store(Arg1, \_SB.TZ99.TCRT) + Notify(\_SB.TZ99, 0x81) + } + Return(\_SB.TZ99._CRT) + } + + Case(2) { + If(Arg2) + { + Store(Arg1, \_SB.TZ99.TTSP) + Notify(\_SB.TZ99, 0x81) + } + Return(\_SB.TZ99._TSP) + } + + Case(3) { + If(Arg2) + { + Store(Arg1, \_SB.TZ99.TTC1) + Notify(\_SB.TZ99, 0x81) + } + Return(\_SB.TZ99._TC1) + } + + Case(4) { + If(Arg2) + { + Store(Arg1, \_SB.TZ99.TTC2) + Notify(\_SB.TZ99, 0x81) + } + Return(\_SB.TZ99._TC2) + } + + Default + { + Return(0xFFFF) + } + } + } + + Default { + Return(0xFFFF) + } + } +} -- 2.45.2