/* SPDX-License-Identifier: GPL-2.0-only */ #define ASL_PVOL_DEFOF_NUM 0xe8 Scope(\) { // These fields come from the Global NVS area Field (GNVS,AnyAcc,Lock,Preserve) { Offset(33), B2SC, 8, // (33) Battery 2 Stored Capacity Offset(36), B2SS, 8 // (36) Battery 2 Stored Status } } Scope (\_SB) { #include "hid.asl" } Scope (\_SB.PCI0) { // Add the entries for the PS/2 keyboard and mouse. #include } Scope (\_SB.PCI0.LPCB) { // Include the definitions for accessing CMOS. #include "cmos.asl" // Our embedded controller device. Device (H_EC) { Name (_HID, EISAID ("PNP0C09")) // ACPI Embedded Controller Name (_UID, 1) Name (_GPE, EC_GPE_SCI) // ECDT (Embedded Controller Boot Resources Table) Check to correct // ECAV flag in the beginning Name(ECTK, 1) Name(ECFG, 0) Name(WIBT, 0) Name(APST, 0) Name(ECON, 1) // AC debug Name(BNUM, 0) // Number Of Batteries Present Name(PVOL, ASL_PVOL_DEFOF_NUM) Name(B1CC, 0) Name(B2CC, 0) Name(B2ST, 0) Name(CFAN, 0) Name(CMDR, 0) Name(DOCK, 0) Name(EJET, 0) Name(MCAP, 0) Name(PLMX, 0) Name(PECH, 0) Name(PECL, 0) Name(PENV, 0) Name(PINV, 0) Name(PPSH, 0) Name(PPSL, 0) Name(PSTP, 0) Name(RPWR, 0) Name(LIDS, 0) Name(SLPC, 0) Name(VPWR, 0) Name(WTMS, 0) Name(AWT2, 0) Name(AWT1, 0) Name(AWT0, 0) Name(DLED, 0) Name(IBT1, 0) Name(ECAV, 1) // Support DPTF feature Name(SPT2, 0) Name(PB10, 0) Name(IWCW, 0) Name(IWCR, 0) Name(BTEN, 0) Mutex(ECMT, 0) Method (_CRS, 0, Serialized) { Name (BFFR, ResourceTemplate() { IO (Decode16, 0x62, 0x62, 0x00, 0x01) IO (Decode16, 0x66, 0x66, 0x00, 0x01) }) Return (BFFR) } Method (_STA, 0, NotSerialized) { If ((ECON == 1)) { Return (0x0F) } Return (0x00) } Name (ECOK, Zero) Method(_REG, 2, NotSerialized) { If ((Arg0 == 0x03) && (Arg1 == 0x01)) { ECOS = 1 ECAV = 1 // Unconditionally fix up the Battery and Power State. // Initialize the Number of Present Batteries. // 1 = Real Battery 1 is present // 2 = Real Battery 2 is present // 3 = Real Battery 1 and 2 are present BNUM = 0 BNUM |= ((ECRD (RefOf (ECWR)) & 0x02) >> 1) // Save the current Power State for later. // Store (PWRS, Local0) // Initialize the Power State. // BNUM = 0 = Virtual Power State // BNUM > 0 = Real Power State If (BNUM == 0x00) { \PWRS = ECRD (RefOf (VPWR)) } Else { \PWRS = (ECRD (RefOf (ECWR)) & 0x01) } PNOT() /* Initialize LID switch state */ \LIDS = LIDS } // Flag that the OS supports ACPI. \_SB.PCI0.LPCB.H_EC.ECOS = 1 } Name (S3OS, Zero) Method (PTS, 1, Serialized) { Debug = Concatenate("EC: PTS: ", ToHexString(Arg0)) If (ECOK) { S3OS = ECOS } \_SB.PCI0.LPCB.H_EC.ECOS = 0 } Method (WAK, 1, Serialized) { Debug = Concatenate("EC: WAK: ", ToHexString(Arg0)) If (ECOK) { ECOS = S3OS } \_SB.PCI0.LPCB.H_EC.ECOS = 1 } OperationRegion (SIPR, SystemIO, 0xB2, 0x1) Field (SIPR, ByteAcc, Lock, Preserve) { SMB2, 8 } // EC RAM fields OperationRegion(ECF2, EmbeddedControl, 0, 0xFF) Field (ECF2, ByteAcc, Lock, Preserve) { XXX0, 8, // EC Firmware main- version number. XXX1, 8, // EC Firmware sub- version number. XXX2, 8, // EC Firmware test- version number. Offset(0x06), SKID, 8, // SKU ID Offset(0x11), KBCD, 8, // Key / Touch Pad disable/enable bit ECOS, 8, // Enter OS flag HDAO, 8, ECHK, 8, // Hot keys flag Offset(0x18), KLBS, 8, // Keyboard backlight begin. KLBE, 8, // Keyboard backlight status. Offset(0x1A), KBLT, 8, // Keyboard Backlight Timeout PWPF, 8, // Power Profile Offset(0x1E), BTHP,8, // Health Battery Percentage Offset(0x20), RCMD, 8, // Same function as IO 66 port to send EC command RCST, 8, // Report status for the result of command execution Offset(0x2C), FNST, 8, // FN LOCK key status. Offset(0x3F), SFAN, 8, // Set Fan Speed. BTMP, 16, // Battery Temperature. BCNT, 16, // Battery Cycle Count. FRMP, 16, // Fan Current Speed. Offset(0x60), TSR1, 8, // Thermal Sensor Register 1 [CPU VR (IMVP) Temp on RVP] TSR2, 8, // Thermal Sensor Register 2 [Heat exchanger fan temp on RVP] TER4, 8, // Thermal Sensor Register 3 (skin temperature) Offset(0x63), TSI,4, // [0..3] 0 = SEN1 - CPU VR temperature sensor // 1 = SEN2 - Heat Exchanger temperature sensor // 2 = SEN3 - Skin temperature sensor // 3 = SEN4 - Ambient temperature sensor // 4 = SEN5 - DIMM temperature sensor [IR sensor 1 on WSB] // 5 = SEN6 - not used on RVP HYST, 4, // [4..7] - Hysteresis in degC. TSHT, 8, // Thermal Sensor (N) high trip point(set default value =70) TSLT, 8, // Thermal Sensor (N) low trip point (set default value =70) TSSR, 8, // TSSR- thermal sensor status register (set bit2 =1) // BIT0:SEN1 - CPU VR Temp Sensor Trip Flag // BIT1:SEN2 - Fan Temp Sensor Trip Flag // BIT2:SEN3 - Skin Temp Sensor Trip Flag // BIT3:SEN4 - Ambient Temp Sensor Trip Flag // BIT4:Reserved // BIT5:Reserved // BIT6:Reserved // BIT7:Reserved CHGR, 16, // Charge Rate Offset(0x70), CPTM, 8, // CPU Temperature Offset(0x72), TER2, 8, // Charger Temperature, Charger thermistor support Offset(0x7F), LSTE, 1, // Lid feature // BIT0LID GPI , 7, // Reserved Offset(0x80), ECWR, 8, // AC & Battery status XX10, 8, // Battery#1 Model Number Code XX11, 16, // Battery#1 Serial Number B1DC, 16, // Battery#1 Design Capacity B1FV, 16, // Battery#1 Design Voltage B1FC, 16, // Battery#1 Last Full Charge Capacity XX15, 16, // Battery#1 Trip Point B1ST, 8, // Battery#1 State B1CR, 16, // Battery#1 Present Rate B1RC, 16, // Battery#1 Remaining Capacity B1VT, 16, // Battery#1 Present Voltage BPCN, 8, // Battery#1 Remaining percentage // USB Type C Mailbox Interface// PPM->OPM Message In Offset(0xc0), MGI0, 8, MGI1, 8, MGI2, 8, MGI3, 8, MGI4, 8, MGI5, 8, MGI6, 8, MGI7, 8, MGI8, 8, MGI9, 8, MGIA, 8, MGIB, 8, MGIC, 8, MGID, 8, MGIE, 8, MGIF, 8, // USB Type C Mailbox Interface// OPM->PPM Message Out MGO0, 8, MGO1, 8, MGO2, 8, MGO3, 8, MGO4, 8, MGO5, 8, MGO6, 8, MGO7, 8, MGO8, 8, MGO9, 8, MGOA, 8, MGOB, 8, MGOC, 8, MGOD, 8, MGOE, 8, MGOF, 8, // USB Type C UCSI DATA Structure. VER1, 8, VER2, 8, RSV1, 8, RSV2, 8, // PPM->OPM CCI indicator CCI0, 8, CCI1, 8, CCI2, 8, CCI3, 8, // OPM->PPM Control message CTL0, 8, CTL1, 8, CTL2, 8, CTL3, 8, CTL4, 8, CTL5, 8, CTL6, 8, CTL7, 8, Offset(0xF0), , 3,// BIT0 .. BIT2 Reserved TPCC, 1,// BIT3 TypeC connection bit , 2,// BIT4 .. BIT5 Reserved DRMD, 1,// Bit6 Dual Role Mode. 0->DFP: Host mode; 1->UFP: Device Mode. , 1,// BIT7 Reserved } Method (ECMD, 0, Serialized) { } Method (ECWT, 2, Serialized,,, {IntObj, FieldUnitObj}) { Local0 = Acquire (ECMT, 1000) If (Local0 == 0x00) { If (ECAV) { // Execute write to Embedded Controller Arg1 = Arg0 } Release (ECMT) } } Method (ECRD, 1, Serialized, 0, IntObj, FieldUnitObj) { Local0 = Acquire (ECMT, 1000) If (Local0 == 0) { If (ECAV) { // Execute read from Embedded Controller Local1 = DerefOf (Arg0) Release (ECMT) Return (Local1) } Else { Release (ECMT) } } Return (Local1) } // Include the other parts of the Embedded Controller ASL. #include "keyboard.asl" #include "battery.asl" #include "ac.asl" #include "lid.asl" // Method(_Q45) // SMM Mode - Not used in coreboot // { // SMB2 = 0xC1 // } } }