/* * This file is part of the coreboot project. * * Copyright (C) 2016 Google Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ Device (TPSD) { /* * TPSACPI01 is not a valid _HID but it is what the linux topstar * laptop driver expects, use this indirection to let it compile. */ Name (BHID, "TPSACPI01") Method (_HID) { Return (BHID) } Name (_UID, 0) Method (FNCX, 1, NotSerialized) { If (LEqual (Arg0, 0x86)) { /* Enable topstar-laptop kernel driver handling */ Store (One, ^^EC.TPSE) } ElseIf (LEqual (Arg0, 0x87)) { /* Disable topstar-laptop kernel driver handling */ Store (Zero, ^^EC.TPSE) } } } Device (EC) { Name (_HID, EisaId ("PNP0C09")) Name (_UID, 0) Name (_GPE, EC_SCI_GPI) Name (_CRS, ResourceTemplate () { IO (Decode16, 0x62, 0x62, 0, 1) IO (Decode16, 0x66, 0x66, 0, 1) }) OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF) Field (ERAM, ByteAcc, Lock, Preserve) { Offset (0x15), BSTS, 2, /* Battery Status */ , 3, BTEX, 1, /* Battery Present */ Offset (0x1D), TPAD, 1, /* Touchpad Enable/Disable */ WIFI, 1, /* WiFi Enable/Disable */ , 2, BTLE, 1, /* Bluetooth Enable/Disable */ Offset (0x25), , 5, TPSE, 1, /* topstar-laptop driver enable/disable */ Offset (0x31), , 6, LIDS, 1, /* LID Switch */ ACEX, 1, /* AC present */ Offset (0x8E), BTDA, 16, /* Battery Design Capacity */ Offset (0x92), BTVO, 16, /* Battery Present Voltage */ Offset (0x98), BTRA, 16, /* Battery Remaining Capacity */ BTDF, 16, /* Battery Last Full Charge Capacity */ Offset (0x9E), , 4, BFCR, 1, /* Battery Level Critical */ Offset (0xA0), BTDV, 16, /* Battery Design Voltage */ Offset (0xA4), BTPR, 16, /* Battery Present Rate */ Offset (0xE6), TURB, 1, /* EC Requested Turbo Enable/Disable */ EDTB, 1, /* Confirm Turbo Enable/Disable */ } Method (_REG, 2, NotSerialized) { /* Initialize AC power state */ Store (ACEX, \PWRS) /* Initialize LID switch state */ Store (LIDS, \LIDS) } /* Notify topstar-laptop kernel driver */ Method (TPSN, 1) { If (TPSE) { Notify (^^TPSD, Arg0) } } /* KEY_WWW */ Method (_Q10) { TPSN (0x8A) } /* KEY_MAIL */ Method (_Q11) { TPSN (0x8B) } /* KEY_MEDIA */ Method (_Q12) { TPSN (0x8C) } /* AC Status Changed */ Method (_Q20) { Store (ACEX, \PWRS) Notify (AC, 0x80) Notify (BAT, 0x80) PNOT () } /* Lid Event */ Method (_Q21) { Store (LIDS, \LIDS) Notify (LID0, 0x80) } /* Battery Event */ Method (_Q22) { Notify (BAT, 0x80) } /* KEY_SWITCHVIDEOMODE */ Method (_Q25) { TPSN (0x86) } /* KEY_BRIGHTNESSUP */ Method (_Q28) { TPSN (0x80) } /* KEY_BRIGHTNESSDOWN */ Method (_Q29) { TPSN (0x81) } /* KEY_MUTE */ Method (_Q2A) { TPSN (0x85) } /* KEY_VOLUMEUP */ Method (_Q2B) { TPSN (0x83) } /* KEY_VOLUMEDOWN */ Method (_Q2C) { TPSN (0x84) } /* KEY_SLEEP */ Method (_Q2F) { Notify (\_SB.SLPB, 0x80) } /* KEY_F13 (Touchpad Enable/Disable) Method (_Q34) { TPSN (0x87) XOr (^TPAD, One, ^TPAD) } /* KEY_WLAN */ Method (_Q35) { TPSN (0x88) XOr (^WIFI, One, ^WIFI) } /* KEY_BLUETOOTH */ Method (_Q37) { XOr (^BTLE, One, ^BTLE) } /* Turbo Enable/Disable */ Method (_Q50) { /* * Limiting frequency via PPC doesn't do anything if the * kernel is using intel_pstate instead of ACPI _PPC. * * If the state is not updated in EDTB the EC will * repeatedly send this event several times a second * when the system is charging. */ If (TURB) { Store (Zero, PPCM) PPCN () Store (One, EDTB) } Else { Store (One, PPCM) PPCN () Store (Zero, EDTB) } } #include "ac.asl" #include "battery.asl" }