From e6957832e877b248182cc2661e666da4ae1edfba Mon Sep 17 00:00:00 2001 From: Sophon Date: Sat, 31 Jul 2021 22:50:59 +0800 Subject: [PATCH] Enable Fuel Gauge for polaris also add a new folder to hold DSDT files temporarily Signed-off-by: Sophon --- polaris/DSDT.aml | Bin 0 -> 241788 bytes polaris/DSDT.dsl | 59021 +++++++++++++++++++++++++++++++ polaris/adc.asl | 707 + polaris/cust_adc.asl | 898 + polaris/cust_pmic_batt.asl | 50 + polaris/cust_thermal_zones.asl | 570 + polaris/pmic_batt.asl | 526 + polaris/thz.asl | 557 + 8 files changed, 62329 insertions(+) create mode 100644 polaris/DSDT.aml create mode 100644 polaris/DSDT.dsl create mode 100644 polaris/adc.asl create mode 100644 polaris/cust_adc.asl create mode 100644 polaris/cust_pmic_batt.asl create mode 100644 polaris/cust_thermal_zones.asl create mode 100644 polaris/pmic_batt.asl create mode 100644 polaris/thz.asl diff --git a/polaris/DSDT.aml b/polaris/DSDT.aml new file mode 100644 index 0000000000000000000000000000000000000000..19185bfc4c5048c10ad52cfc33854e56434d6e3b GIT binary patch literal 241788 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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 + { + Name (PCFG, Buffer (0x0915) + { + /* 0000 */ 0x3C, 0x3F, 0x78, 0x6D, 0x6C, 0x20, 0x76, 0x65, //

SOFEF00 + /* 0038 */ 0x5F, 0x4D, 0x3C, 0x2F, 0x50, 0x61, 0x6E, 0x65, // _M

+ /* 0058 */ 0x73, 0x61, 0x6D, 0x73, 0x75, 0x6E, 0x67, 0x20, // samsung + /* 0060 */ 0x53, 0x4F, 0x46, 0x45, 0x46, 0x30, 0x30, 0x5F, // SOFEF00_ + /* 0068 */ 0x4D, 0x20, 0x63, 0x6D, 0x64, 0x20, 0x6D, 0x6F, // M cmd mo + /* 0070 */ 0x64, 0x65, 0x20, 0x64, 0x73, 0x69, 0x20, 0x70, // de dsi p + /* 0078 */ 0x61, 0x6E, 0x65, 0x6C, 0x28, 0x31, 0x30, 0x38, // anel(108 + /* 0080 */ 0x30, 0x78, 0x32, 0x32, 0x38, 0x30, 0x20, 0x32, // 0x2280 2 + /* 0088 */ 0x34, 0x62, 0x70, 0x70, 0x29, 0x3C, 0x2F, 0x50, // 4bpp)

+ /* 00A0 */ 0x3C, 0x47, 0x72, 0x6F, 0x75, 0x70, 0x20, 0x69, // 108 + /* 00D0 */ 0x30, 0x3C, 0x2F, 0x48, 0x6F, 0x72, 0x69, 0x7A, // 0 112 36 16 0< + /* 0188 */ 0x2F, 0x48, 0x6F, 0x72, 0x69, 0x7A, 0x6F, 0x6E, // /Horizon + /* 0190 */ 0x74, 0x61, 0x6C, 0x53, 0x79, 0x6E, 0x63, 0x53, // talSyncS + /* 0198 */ 0x6B, 0x65, 0x77, 0x3E, 0x20, 0x3C, 0x48, 0x6F, // kew> 0 0 228 + /* 0210 */ 0x30, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x74, 0x69, // 0 3 + /* 0238 */ 0x36, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x74, 0x69, // 6 < + /* 0250 */ 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, // Vertical + /* 0258 */ 0x42, 0x61, 0x63, 0x6B, 0x50, 0x6F, 0x72, 0x63, // BackPorc + /* 0260 */ 0x68, 0x3E, 0x31, 0x32, 0x3C, 0x2F, 0x56, 0x65, // h>12 + /* 0278 */ 0x20, 0x3C, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, // 8 0 + /* 02C8 */ 0x20, 0x3C, 0x56, 0x65, 0x72, 0x74, 0x69, 0x63, // 0 + /* 0308 */ 0x30, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x74, 0x69, // 0 + /* 0320 */ 0x20, 0x3C, 0x49, 0x6E, 0x76, 0x65, 0x72, 0x74, // Fal + /* 0338 */ 0x73, 0x65, 0x3C, 0x2F, 0x49, 0x6E, 0x76, 0x65, // se + /* 0350 */ 0x3C, 0x49, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x56, // Fal + /* 0368 */ 0x73, 0x65, 0x3C, 0x2F, 0x49, 0x6E, 0x76, 0x65, // se + /* 0380 */ 0x20, 0x3C, 0x49, 0x6E, 0x76, 0x65, 0x72, 0x74, // Fa + /* 0398 */ 0x6C, 0x73, 0x65, 0x3C, 0x2F, 0x49, 0x6E, 0x76, // lse 0 + /* 03C0 */ 0x78, 0x30, 0x3C, 0x2F, 0x42, 0x6F, 0x72, 0x64, // x0 + /* 03D0 */ 0x3C, 0x2F, 0x47, 0x72, 0x6F, 0x75, 0x70, 0x3E, // + /* 03D8 */ 0x3C, 0x47, 0x72, 0x6F, 0x75, 0x70, 0x20, 0x69, // < + /* 03F8 */ 0x49, 0x6E, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, // Interfac + /* 0400 */ 0x65, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x39, 0x3C, // eType>9< + /* 0408 */ 0x2F, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x66, 0x61, // /Interfa + /* 0410 */ 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x20, // ceType> + /* 0418 */ 0x3C, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x66, 0x61, // 3< + /* 0430 */ 0x2F, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x66, 0x61, // /Interfa + /* 0438 */ 0x63, 0x65, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x46, // ceColorF + /* 0440 */ 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x3E, 0x3C, 0x2F, // ormat> + /* 0468 */ 0x20, 0x3C, 0x44, 0x53, 0x49, 0x43, 0x68, 0x61, // 2 + /* 0478 */ 0x3C, 0x2F, 0x44, 0x53, 0x49, 0x43, 0x68, 0x61, // + /* 0488 */ 0x3C, 0x44, 0x53, 0x49, 0x56, 0x69, 0x72, 0x74, // 0< + /* 0498 */ 0x2F, 0x44, 0x53, 0x49, 0x56, 0x69, 0x72, 0x74, // /DSIVirt + /* 04A0 */ 0x75, 0x61, 0x6C, 0x49, 0x64, 0x3E, 0x20, 0x3C, // ualId> < + /* 04A8 */ 0x44, 0x53, 0x49, 0x43, 0x6F, 0x6C, 0x6F, 0x72, // DSIColor + /* 04B0 */ 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x3E, 0x33, // Format>3 + /* 04B8 */ 0x36, 0x3C, 0x2F, 0x44, 0x53, 0x49, 0x43, 0x6F, // 6 1 + /* 04F8 */ 0x34, 0x3C, 0x2F, 0x44, 0x53, 0x49, 0x4C, 0x61, // 4 0x3 + /* 0518 */ 0x43, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x2F, 0x44, // C0000 < + /* 0530 */ 0x44, 0x53, 0x49, 0x43, 0x6D, 0x64, 0x53, 0x77, // DSICmdSw + /* 0538 */ 0x61, 0x70, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x66, // apInterf + /* 0540 */ 0x61, 0x63, 0x65, 0x3E, 0x46, 0x61, 0x6C, 0x73, // ace>Fals + /* 0548 */ 0x65, 0x3C, 0x2F, 0x44, 0x53, 0x49, 0x43, 0x6D, // e + /* 0560 */ 0x3C, 0x44, 0x53, 0x49, 0x43, 0x6D, 0x64, 0x55, // Fals + /* 0578 */ 0x65, 0x3C, 0x2F, 0x44, 0x53, 0x49, 0x43, 0x6D, // e < + /* 0590 */ 0x44, 0x53, 0x49, 0x45, 0x6E, 0x61, 0x62, 0x6C, // DSIEnabl + /* 0598 */ 0x65, 0x41, 0x75, 0x74, 0x6F, 0x52, 0x65, 0x66, // eAutoRef + /* 05A0 */ 0x72, 0x65, 0x73, 0x68, 0x3E, 0x54, 0x72, 0x75, // resh>Tru + /* 05A8 */ 0x65, 0x3C, 0x2F, 0x44, 0x53, 0x49, 0x45, 0x6E, // e + /* 05C0 */ 0x20, 0x3C, 0x44, 0x53, 0x49, 0x41, 0x75, 0x74, // 1 + /* 0610 */ 0x0A, 0x20, 0x20, 0x30, 0x30, 0x0A, 0x20, 0x3C, // . 00. < + /* 0618 */ 0x2F, 0x44, 0x53, 0x49, 0x43, 0x6F, 0x6E, 0x74, // /DSICont + /* 0620 */ 0x72, 0x6F, 0x6C, 0x6C, 0x65, 0x72, 0x4D, 0x61, // rollerMa + /* 0628 */ 0x70, 0x70, 0x69, 0x6E, 0x67, 0x3E, 0x0A, 0x20, // pping>. + /* 0630 */ 0x3C, 0x44, 0x53, 0x49, 0x4C, 0x50, 0x31, 0x31, // T + /* 0640 */ 0x72, 0x75, 0x65, 0x3C, 0x2F, 0x44, 0x53, 0x49, // rue 05 + /* 0670 */ 0x31, 0x31, 0x20, 0x30, 0x30, 0x0A, 0x20, 0x66, // 11 00. f + /* 0678 */ 0x66, 0x20, 0x30, 0x41, 0x0A, 0x20, 0x32, 0x39, // f 0A. 29 + /* 0680 */ 0x20, 0x46, 0x30, 0x20, 0x35, 0x41, 0x20, 0x35, // F0 5A 5 + /* 0688 */ 0x41, 0x0A, 0x20, 0x32, 0x39, 0x20, 0x42, 0x30, // A. 29 B0 + /* 0690 */ 0x20, 0x30, 0x37, 0x0A, 0x20, 0x32, 0x39, 0x20, // 07. 29 + /* 0698 */ 0x42, 0x36, 0x20, 0x31, 0x32, 0x0A, 0x20, 0x32, // B6 12. 2 + /* 06A0 */ 0x39, 0x20, 0x42, 0x30, 0x20, 0x30, 0x31, 0x0A, // 9 B0 01. + /* 06A8 */ 0x20, 0x32, 0x39, 0x20, 0x42, 0x42, 0x20, 0x30, // 29 BB 0 + /* 06B0 */ 0x33, 0x0A, 0x20, 0x32, 0x39, 0x20, 0x45, 0x46, // 3. 29 EF + /* 06B8 */ 0x20, 0x42, 0x30, 0x20, 0x33, 0x31, 0x20, 0x30, // B0 31 0 + /* 06C0 */ 0x30, 0x20, 0x33, 0x33, 0x20, 0x33, 0x31, 0x20, // 0 33 31 + /* 06C8 */ 0x31, 0x34, 0x20, 0x33, 0x35, 0x0A, 0x20, 0x32, // 14 35. 2 + /* 06D0 */ 0x39, 0x20, 0x46, 0x30, 0x20, 0x41, 0x35, 0x20, // 9 F0 A5 + /* 06D8 */ 0x41, 0x35, 0x0A, 0x20, 0x33, 0x39, 0x20, 0x46, // A5. 39 F + /* 06E0 */ 0x30, 0x20, 0x35, 0x41, 0x20, 0x35, 0x41, 0x0A, // 0 5A 5A. + /* 06E8 */ 0x20, 0x31, 0x35, 0x20, 0x33, 0x35, 0x20, 0x30, // 15 35 0 + /* 06F0 */ 0x30, 0x0A, 0x20, 0x32, 0x39, 0x20, 0x46, 0x30, // 0. 29 F0 + /* 06F8 */ 0x20, 0x41, 0x35, 0x20, 0x41, 0x35, 0x0A, 0x20, // A5 A5. + /* 0700 */ 0x32, 0x39, 0x20, 0x46, 0x30, 0x20, 0x35, 0x41, // 29 F0 5A + /* 0708 */ 0x20, 0x35, 0x41, 0x0A, 0x20, 0x32, 0x39, 0x20, // 5A. 29 + /* 0710 */ 0x45, 0x32, 0x20, 0x30, 0x30, 0x20, 0x34, 0x30, // E2 00 40 + /* 0718 */ 0x0A, 0x20, 0x33, 0x39, 0x20, 0x46, 0x30, 0x20, // . 39 F0 + /* 0720 */ 0x41, 0x35, 0x20, 0x41, 0x35, 0x0A, 0x20, 0x31, // A5 A5. 1 + /* 0728 */ 0x35, 0x20, 0x35, 0x33, 0x20, 0x32, 0x30, 0x0A, // 5 53 20. + /* 0730 */ 0x20, 0x31, 0x35, 0x20, 0x35, 0x35, 0x20, 0x30, // 15 55 0 + /* 0738 */ 0x30, 0x0A, 0x20, 0x66, 0x66, 0x20, 0x37, 0x38, // 0. ff 78 + /* 0740 */ 0x0A, 0x20, 0x30, 0x35, 0x20, 0x32, 0x39, 0x20, // . 05 29 + /* 0748 */ 0x30, 0x30, 0x0A, 0x3C, 0x2F, 0x44, 0x53, 0x49, // 00. 0 + /* 0770 */ 0x35, 0x20, 0x32, 0x38, 0x20, 0x30, 0x30, 0x0A, // 5 28 00. + /* 0778 */ 0x20, 0x66, 0x66, 0x20, 0x32, 0x38, 0x0A, 0x20, // ff 28. + /* 0780 */ 0x30, 0x35, 0x20, 0x31, 0x30, 0x20, 0x30, 0x30, // 05 10 00 + /* 0788 */ 0x0A, 0x20, 0x66, 0x66, 0x20, 0x38, 0x32, 0x0A, // . ff 82. + /* 0790 */ 0x3C, 0x2F, 0x44, 0x53, 0x49, 0x54, 0x65, 0x72, // < + /* 07C8 */ 0x42, 0x61, 0x63, 0x6B, 0x6C, 0x69, 0x67, 0x68, // Backligh + /* 07D0 */ 0x74, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x33, 0x3C, // tType>3< + /* 07D8 */ 0x2F, 0x42, 0x61, 0x63, 0x6B, 0x6C, 0x69, 0x67, // /Backlig + /* 07E0 */ 0x68, 0x74, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x20, // htType> + /* 07E8 */ 0x3C, 0x42, 0x61, 0x63, 0x6B, 0x6C, 0x69, 0x67, // 50 + /* 0810 */ 0x3C, 0x42, 0x61, 0x63, 0x6B, 0x6C, 0x69, 0x67, // + /* 0820 */ 0x31, 0x30, 0x30, 0x3C, 0x2F, 0x42, 0x61, 0x63, // 100 0x4 2000 + /* 0880 */ 0x3C, 0x2F, 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, // 360000 + /* 08B8 */ 0x3C, 0x2F, 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, // 0 20 + /* 08E8 */ 0x30, 0x30, 0x20, 0x35, 0x30, 0x30, 0x30, 0x20, // 00 5000 + /* 08F0 */ 0x31, 0x32, 0x30, 0x30, 0x30, 0x20, 0x30, 0x3C, // 12000 0< + /* 08F8 */ 0x2F, 0x44, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, // /Display + /* 0900 */ 0x52, 0x65, 0x73, 0x65, 0x74, 0x49, 0x6E, 0x66, // ResetInf + /* 0908 */ 0x6F, 0x3E, 0x0A, 0x3C, 0x2F, 0x47, 0x72, 0x6F, // o>... + }) + 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 (PSUB, _SUB) + Name (_UID, Zero) // _UID: Unique ID + Name (HPD1, ResourceTemplate () + { + GpioIo (Shared, PullNone, 0x0000, 0x0000, IoRestrictionNone, + "\\_SB.GIO0", 0x00, ResourceConsumer, , + ) + { // Pin list + 0x0071 + } + }) + OperationRegion (HPD2, GeneralPurposeIo, Zero, One) + Field (HPD2, ByteAcc, NoLock, Preserve) + { + Connection (HPD1), + ESTA, 1 + } + + OperationRegion (GPOR, GeneralPurposeIo, Zero, One) + Field (GPOR, ByteAcc, NoLock, Preserve) + { + } + + 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, ,, ) + { + 0x00000226, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Shared, ,, ) + { + 0x00000232, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Shared, ,, ) + { + 0x00000284, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Shared, ,, ) + { + 0x0000021F, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Shared, ,, ) + { + 0x00000236, + } + Interrupt (ResourceConsumer, Edge, ActiveHigh, Shared, ,, ) + { + 0x0000023D, + } + }) + 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 + } + } + + Name (_AEI, Buffer (0x02) // _AEI: ACPI Event Interrupts + { + 0x79, 0x00 // y. + }) + } + + 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 (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, + } + }) + Return (RBUF) /* \_SB_.QGP1._CRS.RBUF */ + } + + Method (GPII, 0, Serialized) + { + Return (Package (0x02) + { + Package (0x03) + { + One, + One, + 0x0138 + }, + + Package (0x03) + { + One, + 0x03, + 0x013A + } + }) + } + } + + 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, "MSHW1000") // _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, "QCOM02B5") // _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/polaris/adc.asl b/polaris/adc.asl new file mode 100644 index 0000000..01b979e --- /dev/null +++ b/polaris/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/polaris/cust_adc.asl b/polaris/cust_adc.asl new file mode 100644 index 0000000..4f188a1 --- /dev/null +++ b/polaris/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/polaris/cust_pmic_batt.asl b/polaris/cust_pmic_batt.asl new file mode 100644 index 0000000..7b0fcf7 --- /dev/null +++ b/polaris/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, 13100) //* (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/polaris/cust_thermal_zones.asl b/polaris/cust_thermal_zones.asl new file mode 100644 index 0000000..f4b9f45 --- /dev/null +++ b/polaris/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/polaris/pmic_batt.asl b/polaris/pmic_batt.asl new file mode 100644 index 0000000..82c2a72 --- /dev/null +++ b/polaris/pmic_batt.asl @@ -0,0 +1,526 @@ +// +// This file contains the Power Management IC (PMIC) +// ACPI device definitions, configuration and look-up tables. +// + +Include("cust_pmic_batt.asl") + + // + // PMIC Battery Manger Driver + // + Device (PMBT) { + Name (_HID, "QCOM0264") + Name (_SUB, "RENEGA0E") + 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") + Name (_SUB, "RENEGA0E") + 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") + Name (_SUB, "RENEGA0E") + 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") + Name (_SUB, "RENEGA0E") + 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/polaris/thz.asl b/polaris/thz.asl new file mode 100644 index 0000000..a3a3a39 --- /dev/null +++ b/polaris/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