============================================================================================== METHODS ============================================================================================== Info / Setup Method (SN00) SNC info Method (SN00, 1, NotSerialized) { Store (Arg0, Local0) If (LEqual (Local0, Zero)) { "ScnS" Return (0x53636E53) } If (LEqual (Local0, One)) { "oppu" Return (0x6F707075) } If (LEqual (Local0, 0x02)) { "detr" Return (0x64657472) } If (LEqual (Local0, 0x03)) { "NULL" Return (0x0100) } Model ID If (LEqual (Local0, 0x04)) { Model 0x5133 Return (0x33510000) } If (LEqual (Local0, 0x10)) { FNAS -> 0x1FFF Return (FNAS) offset bitmask: } 1 = offset used 0 = offset empty offset-to-handle If (LGreaterEqual (Local0, 0x20)) translation { If (LLess (Local0, 0x30)) { Multiply (Subtract (Local0, 0x20), 0x02, Local2) CreateWordField (FNUM, Local2, FRET) Return (FRET) } } Return (Zero) } ---------------------------------------------------------------------------------------------- Event Methods (SN01, SN02, SN03, SN04, SN05) returns whether Method (SN01, 0, NotSerialized) events are enabled { for every single And (ENCR, 0xFFFF, Local0) method (0xF bits) Return (Local0) (offset=bit_num+1) } ---------------------------------------------------------------------------------------------- enable the Method (SN02, 1, NotSerialized) specified events { (offset=bit_num+1) And (Arg0, 0xFFFF, Local0) Or (Local0, ENCR, ENCR) Store (ENCR, Local1) And (Local1, 0x03, Local2) And (Local1, 0x0200, Local3) ShiftRight (Local3, 0x02, Local3) Or (Local3, Local2, Local2) ^^EC0.STEC (0x8280, Local2) } ---------------------------------------------------------------------------------------------- disable the Method (SN03, 1, NotSerialized) event generation { for the specified Not (Arg0, Local0) methods (0xF bits) And (Local0, ENCR, ENCR) (offset=bit_num+1) Store (ENCR, Local1) And (Local1, 0x03, Local2) And (Local1, 0x0200, Local3) ShiftRight (Local3, 0x02, Local3) Or (Local3, Local2, Local2) ^^EC0.STEC (0x8280, Local2) } ---------------------------------------------------------------------------------------------- Event flag rised Method (SN04, 0, NotSerialized) for every method { (0xF bits) And (ESR, 0xFFFF, Local0) (offset=bit_num+1) Return (Local0) } ---------------------------------------------------------------------------------------------- clear the event Method (SN05, 1, NotSerialized) flag for the { specified method Not (Arg0, Local0) (offset=bit_num+1) And (Local0, ESR, ESR) (0xF bits) Store (Arg0, Local1) And (Local1, 0x0800, Local2) And (Local1, 0x0200, Local3) If (LEqual (Local3, 0x0200)) { Store (Zero, EVTR) } } ---------------------------------------------------------------------------------------------- Command Methods (SN06, SN07) Command methods should provide the same info (or almost the same), but while SN07 uses 32bit integers for both input and output parameters SN06 returns a wide buffer (for both input and output values), useful for reading a few info tables or long input parameters. Method (SN06, 1, NotSerialized) { Store (Zero, Local0) While (LLess (Local0, 0x0410)) <-- 1040 bytes buffer { Store (Zero, Index (SN67, Local0)) Increment (Local0) } Store (Arg0, Local0) Store (Arg0, SN67) CreateByteField (SN67, Zero, CHNN) CreateByteField (SN67, One, CMDN) CreateByteField (SN67, 0x02, DB00) CreateByteField (SN67, 0x03, DB01) CreateByteField (SN67, 0x04, DB02) CreateByteField (SN67, 0x05, DB03) CreateDWordField (SN67, 0x06, DD01) Store (DB00, Local2) Store (DB01, Local3) Store (DB02, Local4) And (CHNN, 0x0F, Local0) Store (CMDN, Local1) LCD backlight levels If (LEqual (Local0, 0x03)) { And (Local1, One, Local1) If (LEqual (Local1, One)) { Store (LCDT, SN67) Return (SN67) } } Optical device table If (LEqual (Local0, 0x07)) { And (Local1, 0x03, Local1) If (LEqual (Local1, Zero)) { If (And (ODDF, One)) <-- device present { Store (Zero, SN67) <-- erase Store (TYPS, SN67) <-- OD table Store (ODID, Local3)<-- OptDev ID And (Local3, 0xFF, DB02) ShiftRight (Local3, 0x08, Local2) And (Local2, 0xFF, DB03) } Else <-- device not { present Store (Zero, SN67) <-- erase Store (Zero, CHNN) <-- 0x00 Store (0xFF, CMDN) <-- 0xFF } Return (SN67) } } Radio devices table If (LEqual (Local0, 0x09)) { Store (CMDN, Local1) And (Local1, 0x0F, Local1) If (LEqual (Local1, Zero)) { Store (Zero, Local0) While (LLess (Local0, 0x0410)) { Store (Zero, Index (SN67, Local0)) Increment (Local0) } Store (0xFF, Local7) And (One, ^^EC0.GTEC (0x0253), Local3) WWPS If (LEqual (Local3, One)) { Store (0x71, Local2) ShiftLeft (Local7, 0x08, Local7) Or (Local2, Local7, Local7) Store (One, Local6) } Else { Store (Zero, Local6) } Store (RP1D, Local0) Store (Zero, RP1D) Sleep (0x14) Store (^^^RP01.PDSX, Local3) Store (Local0, RP1D) If (LEqual (Local3, One)) WIPS? { Store (Zero, OPB0) Store (0x8F, SMIF) Store (Zero, TRP1) Sleep (0x32) Store (OPB0, Local4) If (LEqual (Local4, One)) { Store (0x30, Local2) ShiftLeft (Local7, 0x08, Local7) Or (Local2, Local7, Local7) Add (One, Local6, Local6) } } And (One, ^^EC0.GTEC (0x0253), Local3) WWPS If (LEqual (Local3, One)) { Store (Zero, Local4) Store (^^EC0.GTEC (0x0255), Local4) WDIP If (LEqual (Local4, One)) { Store (0x25, Local2) ShiftLeft (Local7, 0x08, Local7) Or (Local2, Local7, Local7) Add (One, Local6, Local6) } If (LEqual (Local4, 0x04)) { Store (0x25, Local2) ShiftLeft (Local7, 0x08, Local7) Or (Local2, Local7, Local7) Add (One, Local6, Local6) } If (LEqual (Local4, 0x05)) { Store (0x25, Local2) ShiftLeft (Local7, 0x08, Local7) Or (Local2, Local7, Local7) Add (One, Local6, Local6) } If (LEqual (Local4, 0x02)) { Store (0x26, Local2) ShiftLeft (Local7, 0x08, Local7) Or (Local2, Local7, Local7) Add (One, Local6, Local6) } } And (One, ^^EC0.GTEC (0x0252), Local3) BTPS If (LEqual (Local3, One)) { Store (0x10, Local2) ShiftLeft (Local7, 0x08, Local7) Or (Local2, Local7, Local7) Add (One, Local6, Local6) } If (LLess (Local6, 0x03)) <- less than dev 3 codes { Store (RP1D, Local0) Store (Zero, RP1D) Sleep (0x14) Store (^^^RP01.PDSX, Local3) Store (Local0, RP1D) If (LEqual (Local3, One)) { Store (Zero, Local2) ShiftLeft (Local7, 0x08, Local7) Or (Local2, Local7, Local7) } Return (Local7) } If (LEqual (Local6, 0x03)) <- dev 3 codes { Store (Local7, SN67) Store (RP1D, Local0) Store (Zero, RP1D) Sleep (0x14) Store (^^^RP01.PDSX, Local3) Store (Local0, RP1D) If (LEqual (Local3, One)) { Store (Zero, Index (SN67, 0x03)) Store (0xFF, Index (SN67, 0x04)) } Return (SN67) } If (LEqual (Local6, 0x04)) <- dev 4 codes { Store (Local7, SN67) Store (RP1D, Local0) Store (Zero, RP1D) Sleep (0x14) Store (^^^RP01.PDSX, Local3) Store (Local0, RP1D) If (LEqual (Local3, One)) { Store (Zero, Index (SN67, 0x04)) Store (0xFF, Index (SN67, 0x05)) } Else { Store (0xFF, Index (SN67, 0x04)) } Return (SN67) } } } ALS word commands If (LEqual (Local0, 0x0B)) { And (CMDN, 0x0F, Local1) If (LEqual (Local1, Zero)) { Store (LSPT, SN67) Return (SN67) } If (LEqual (Local1, 0x06)) { ^^EC0.STEC (0x2305, Local2) ^^EC0.STEC (0x2300, Local1) ^^EC0.STEC (0x2302, One) Store (One, Local2) Store (Zero, Local1) While (LEqual (Local2, One)) { If (LEqual (Local1, 0x50)) { Return (Zero) } Sleep (0x05) Increment (Local1) Store (^^EC0.GTEC (0x230B), Local2) } Store (^^EC0.GTEC (0x2303), Local2) If (LEqual (Local2, One)) { Return (Zero) } Store (^^EC0.GTEC (0x2308), Local4) Store (^^EC0.GTEC (0x2309), Local5) ShiftLeft (Local5, 0x10, Local5) ShiftLeft (Local4, 0x08, Local4) Add (Local5, Local4, Local5) Or (Local5, One, Local5) Store (Local5, SN67) Return (SN67) } If (LEqual (Local1, 0x07)) { ^^EC0.STEC (0x2305, Local2) ^^EC0.STEC (0x2300, Local1) ^^EC0.STEC (0x2306, Local3) ^^EC0.STEC (0x2307, Local4) ^^EC0.STEC (0x2302, One) Store (One, Local2) Store (Zero, Local1) While (LEqual (Local2, One)) { If (LEqual (Local1, 0x50)) { Store (Zero, SN67) Return (SN67) } Sleep (0x05) Increment (Local1) Store (^^EC0.GTEC (0x230B), Local2) } Store (^^EC0.GTEC (0x2303), Local2) If (LEqual (Local2, One)) { Store (Zero, SN67) Return (SN67) } Store (One, SN67) Return (SN67) } } Store (Zero, Local0) While (LLess (Local0, 0x0410)) { Store (Zero, Index (SN67, Local0)) Increment (Local0) } Store (SN07 (Arg0), SN67) Return (SN67) } ---------------------------------------------------------------------------------------------- Method (SN07, 1, NotSerialized) { Store (Arg0, VAL0) And (VAL0, 0x0F, Local0) <-- first byte ShiftRight (VAL0, 0x08, Local1) <-- second ShiftRight (VAL0, 0x10, Local2) <-- third ShiftRight (VAL0, 0x18, Local3) <-- fourth ---------------------------------------------------------------------------------------------- 00 Hotkeys control If (LEqual (Local0, Zero)) { And (Local1, 0x03, Local1) 00 - enable If (LEqual (Local1, Zero)) { ^^EC0.STEC (0x8103, One) ENHK //enable notification HotKeys Return (Zero) } 01 - disable If (LEqual (Local1, One)) { ^^EC0.STEC (0x8103, Zero) ENHK Return (Zero) } 02 - get key number If (LEqual (Local1, 0x02)) { Store (^^EC0.GTEC (0x0303), Local5) HKDA //HotKeys decoding And (Local5, 0xFF, Local5) Or (VAL0, Local5, Local0) Return (Local0) } } ---------------------------------------------------------------------------------------------- 01 Notify on low If (LEqual (Local0, One)) battery { 0x101 And (Local1, One, Local1) 00 - enable If (LEqual (Local1, Zero)) { ^^EC0.STEC (0x8282, One) BTCR Return (Zero) } 01 - disable If (LEqual (Local1, One)) { ^^EC0.STEC (0x8282, Zero) BTCR Return (Zero) } } ---------------------------------------------------------------------------------------------- 02 Touchpad (on/off) If (LEqual (Local0, 0x02)) 0x105 { And (Local1, One, Local1) 00 - get status If (LEqual (Local1, Zero)) { Return (^^EC0.GTEC (0x0110)) PDEN <--- Pointing Device Enable } 01 - set status If (LEqual (Local1, One)) { And (Local2, One, Local2) Store (Local2, OPB0) Store (0x82, SMIF) Store (Zero, TRP1) Return (Zero) } } ---------------------------------------------------------------------------------------------- 03 Graphics / LCD If (LEqual (Local0, 0x03)) 0x103 { And (Local1, One, Local1) 00 - graphic card If (LEqual (Local1, Zero)) type or manufacturer { If (LEqual (PEGF, Zero)) { Return (Zero) } Else { Return (0x02) } } 01 - LCD levels If (LEqual (Local1, One)) (9 values) { Store (LCDT, VAL0) Return (VAL0) } } ---------------------------------------------------------------------------------------------- 04 Battery related If (LEqual (Local0, 0x04)) maybe health, type { or # of batteries And (Local1, One, Local1) 0x114 If (LEqual (Local1, Zero)) { Store (Zero, Local0) Store (^^EC0.GTEC (0x0301), Local0) MDFG If (And (LLess (Local0, 0x03), LGreaterEqual (Local0, Zero))) { Return (Local0) } Return (Zero) } } ---------------------------------------------------------------------------------------------- 05 Some ID, maybe rev If (LEqual (Local0, 0x05)) maybe LCD/graphics { related And (Local1, One, Local1) 0x11D If (LEqual (Local1, Zero)) { Store (Zero, OPB0) Store (0x88, SMIF) Store (Zero, TRP1) Store (OPB0, Local2) And (Local2, 0xFF, Local2) Return (Local2) } } ---------------------------------------------------------------------------------------------- 06 Thermal Control If (LEqual (Local0, 0x06)) 0x122 { And (Local1, 0x03, Local1) 00 - available If (LEqual (Local1, Zero)) profiles { Return (0x03) } 01 - get current If (LEqual (Local1, One)) profile { Store (^^EC0.GTEC (0x0304), Local2) And (Local2, 0x03, Local2) If (LEqual (Local2, Zero)) { 2 performance Store (0x02, Local3) } If (LEqual (Local2, 0x02)) { 0 balanced Store (Zero, Local3) } If (LEqual (Local2, One)) { 1 silent Store (One, Local3) } Return (Local3) } 02 - set desired If (LEqual (Local1, 0x02)) profile { And (Local2, 0x03, Local2) Store (Local2, \_TZ.THRM.SPMF) Notify (\_TZ.THRM, 0x81) If (LEqual (Local2, Zero)) { ^^EC0.STEC (0x8281, 0x02) Store (\_TZ.THRM.PMTL, ^^EC0.MTL) } If (LEqual (Local2, 0x02)) { ^^EC0.STEC (0x8281, Zero) Store (\_TZ.THRM.PMTL, ^^EC0.MTL) } If (LEqual (Local2, One)) { ^^EC0.STEC (0x8281, One) Store (\_TZ.THRM.SMTL, ^^EC0.MTL) } If (LEqual (Local2, 0x03)) { ^^EC0.STEC (0x8281, 0x02) Store (\_TZ.THRM.PMTL, ^^EC0.MTL) } Return (VAL0) } } ---------------------------------------------------------------------------------------------- 07 CD/DVD/BD power ctrl If (LEqual (Local0, 0x07)) 0x126 { And (Local1, 0x03, Local1) 01 - get power state If (LEqual (Local1, One)) { Store (0x8A, SMIF) <--- WTF??? Store (Zero, TRP1) <--- WTF??? Store (OPB0, Local2) <--- WTF??? If (And (Local2, One)) { Store (^^EC0.GTEC (0x1260), Local3) DPST } Else { Store (Zero, Local3) } Return (Local3) } 02 - power on If (LEqual (Local1, 0x02)) { If (And (Local2, One)) { ^^EC0.STEC (0x1261, One) SNCD 0x6C } Return (Zero) } 03 - power off If (LEqual (Local1, 0x03)) { If (And (Local2, One)) { ^^EC0.STEC (0x1261, Zero) SNCD 0x6D } Return (Zero) } } ---------------------------------------------------------------------------------------------- 08 HDD Fall Sensor If (LEqual (Local0, 0x08)) 0x134 { And (Local1, 0x07, Local1) 00 - Enable event If (LEqual (Local1, Zero)) notification { on fall ^^EC0.STEC (0x8294, One) GSEN Return (VAL0) } 01 - Disable event If (LEqual (Local1, One)) notification { on fall ^^EC0.STEC (0x8294, Zero) GSEN Return (VAL0) } 02 - Get parameters If (LEqual (Local1, 0x02)) { Store (Zero, Local2) If (^^EC0.GTEC (0x8295)) GSEN <-- notification { enabled Or (Local2, 0x80, Local2) } If (LNot (^^EC0.GTEC (0x8296))) GSER <-- ? always 1 { Or (Local2, 0x40, Local2) } If (^^EC0.GTEC (0x8303)) AKPS <-- Auto K? Presence { State (1 when the HDD Or (Local2, 0x20, Local2) supports the immediate } idle - head unload feat.) Store (^^EC0.GTEC (0x8298), Local6) DATM <-- Data, Accel., Thresh. And (Local6, 0x03, RTVM) Meter Or (Local2, ShiftLeft (RTVM, 0x03), Local2) If (^^EC0.GTEC (0x8302)) { Or (Local2, 0x04, Local2) AKEN <-- Auto K? Enable } (1 = device protection enabled) Store (^^EC0.GTEC (0x8290), Local6) THDC // Thresholds Disk Control? And (Local6, 0x03, HDPL) //HDPL, HardDisk Protection Level Or (Local2, HDPL, Local2) Return (Local2) } 03 - Set parameters If (LEqual (Local1, 0x03)) { HD Protecion Store (And (Local2, 0x03), HDPL) sensibility ^^EC0.STEC (0x8289, HDPL) THDC //T HardDisk P? 0 medium If (LEqual (HDPL, Zero)) 1 high { 2 low ^^EC0.STEC (0x8300, 0x17) FFTS // medium } If (LEqual (HDPL, One)) { ^^EC0.STEC (0x8300, 0x14) FFTS // high } If (LEqual (HDPL, 0x02)) { ^^EC0.STEC (0x8300, 0x1B) FFTS // low } And (ShiftRight (Local2, 0x02), One, ANKO) ^^EC0.STEC (0x8304, And (ANKO, One)) AKEN And (ShiftRight (Local2, 0x03), 0x03, RTVM) ^^EC0.STEC (0x8297, RTVM) DATM ^^EC0.STEC (0x8301, One) GSET Return (Zero) } 04 - X axis If (LEqual (Local1, 0x04)) reading { Store (^^EC0.GTEC (0x8298), Local6) DATM And (Local6, 0x03, RTVM) If (LEqual (RTVM, 0x02)) { Store (^^EC0.GTEC (0x8299), Local2) FFST } Else { Store (^^EC0.GTEC (0x8291), Local2) XVEC If (LGreater (Local2, 0x7F)) { If (LEqual (RTVM, One)) { Subtract (0x0100, Local2, Local2) } Else { And (Local2, 0xFF, Local2) } } If (LEqual (RTVM, One)) { If (LLessEqual (Local2, 0x03)) { Store (Zero, Local2) } } } Return (Local2) } 05 - Y axis If (LEqual (Local1, 0x05)) reading { Store (^^EC0.GTEC (0x8298), Local6) And (Local6, 0x03, RTVM) If (LEqual (RTVM, 0x02)) { Store (^^EC0.GTEC (0x8299), Local2) FFST } Else { Store (^^EC0.GTEC (0x8292), Local2) YVEC If (LGreater (Local2, 0x7F)) { If (LEqual (RTVM, One)) { Subtract (0x0100, Local2, Local2) } Else { And (Local2, 0xFF, Local2) } } If (LEqual (RTVM, One)) { If (LLessEqual (Local2, 0x03)) { Store (Zero, Local2) } } } Return (Local2) } 06 - Z axis If (LEqual (Local1, 0x06)) reading { Store (^^EC0.GTEC (0x8298), Local6) And (Local6, 0x03, RTVM) If (LEqual (RTVM, 0x02)) { Store (^^EC0.GTEC (0x8299), Local2) FFST } Else { Store (^^EC0.GTEC (0x8293), Local2) ZVEC If (LGreater (Local2, 0x7F)) { If (LEqual (RTVM, One)) { Subtract (0x0100, Local2, Local2) } Else { And (Local2, 0xFF, Local2) } } If (LEqual (RTVM, One)) { If (LLessEqual (Local2, 0x03)) { Store (Zero, Local2) } } } Return (Local2) } } ---------------------------------------------------------------------------------------------- 09 Radio Interfaces If (LEqual (Local0, 0x09)) <--- Radio interfaces 0x135 { management And (Local1, 0x0F, Local1) 01 - Get event reason If (LEqual (Local1, One)) bit #1 hwswitch { bit #2 battery Store (EVTR, Local2) And (One, ^^EC0.GTEC (0x0253), Local3) <--- WWPS If (LEqual (Local3, Zero)) { And (Local2, One, Local2) } Return (Local2) } 02 - Get rfkill state If (LEqual (Local1, 0x02)) bit #1 hwswitch { bit #2 battery And (^^EC0.GTEC (0x0201), One, Local2) <--- GSCS? And (One, ^^EC0.GTEC (0x0253), Local3) <--- WWPS If (LEqual (Local3, One)) { Not (Local2, Local2) } Else { Store (One, Local2) } And (Local2, One, Local2) ShiftLeft (Local2, One, Local2) And (^^EC0.GTEC (0x0200), One, Local3) <--- WSWT Or (Local2, Local3, Local3) Return (Local3) } 03 - Query WLAN If (LEqual (Local1, 0x03)) { And (^^EC0.GTEC (0x0231), One, Local2) <--- WLNP And (^^EC0.GTEC (0x0261), One, Local3) <--- SWLB ShiftLeft (Local3, One, Local4) Or (Local2, Local4, Local5) Return (Local5) } 04 - On/Off WLAN If (LEqual (Local1, 0x04)) { bit 0 power And (Local2, One, Local3) bit 1 switch state And (Local2, 0x02, Local4) ShiftRight (Local4, One, Local5) 1 on 0 off ^^EC0.STEC (0x8261, Local5) SWLB ^^EC0.STEC (0x8269, Local3) SNCD } 05 - Query BT If (LEqual (Local1, 0x05)) { And (^^EC0.GTEC (0x0232), One, Local2) WBTP And (^^EC0.GTEC (0x0262), One, Local3) SBTB ShiftLeft (Local3, One, Local4) Or (Local2, Local4, Local5) Return (Local5) } 06 - On/Off BT If (LEqual (Local1, 0x06)) { And (Local2, One, Local3) And (Local2, 0x02, Local4) ShiftRight (Local4, One, Local5) ^^EC0.STEC (0x8262, Local5) SBTB ^^EC0.STEC (0x826A, Local3) SNCD } 07 - Query WWAN If (LEqual (Local1, 0x07)) WWAN power { WWAN switch And (One, ^^EC0.GTEC (0x0233), Local0) WWNP WWAN RF And (One, ^^EC0.GTEC (0x0263), Local1) SWWB ShiftLeft (Local1, One, Local2) Or (Local0, Local2, Local3) And (One, ^^EC0.GTEC (0x0235), Local0) WRFP ShiftLeft (Local0, 0x02, Local2) Or (Local3, Local2, Local1) WRFP/SWWB/WWNP Return (Local1) } 08 - On/Off WWAN If (LEqual (Local1, 0x08)) { And (Local2, One, Local4) And (Local2, 0x02, Local5) ShiftRight (Local5, One, Local6) ^^EC0.STEC (0x8263, Local6) SWWB ^^EC0.STEC (0x826B, Local4) SNCD WWAN on 1 And (Local2, 0x04, Local4) ShiftRight (Local4, 0x02, Local5) ^^EC0.STEC (0x826C, Local5) SNCD WWAN on 2 } 09 - Query Wi-Max If (LEqual (Local1, 0x09)) { And (^^EC0.GTEC (0x0234), One, Local2) WIMP And (^^EC0.GTEC (0x0264), One, Local3) SWIM ShiftLeft (Local3, One, Local4) Or (Local2, Local4, Local5) Return (Local5) } 0A - On/Off Wi-Max If (LEqual (Local1, 0x0A)) { And (Local2, One, Local3) And (Local2, 0x02, Local4) ShiftRight (Local4, One, Local5) ^^EC0.STEC (0x8264, Local5) SWIM ^^EC0.STEC (0x826D, Local3) SNCD } } ---------------------------------------------------------------------------------------------- 0A Battery Care If (LEqual (Local0, 0x0A)) 0x136 { And (Local1, 0x03, Local1) 00 - get BC settings If (LEqual (Local1, Zero)) { Store (^^EC0.GTEC (0x0305), Local2) BCCS And (Local2, 0xF1, Local2) // Battery Care Charge Settings Return (Local2) } 01 - set BC settings If (LEqual (Local1, One)) { If (And (Local2, 0x02)) <--- storing on battery? { Store (^^EC0.GTEC (0x0305), Local3) BCCS And (Local2, 0xF1, Local2) And (Local3, 0x04, Local3) Or (Local3, Local2, Local2) ^^EC0.STEC (0x82A1, Local2) BCCS ^^EC0.STEC (0x82A2, One) SBCM } Else { Store (^^EC0.GTEC (0x0305), Local3) BCCS And (Local2, 0x31, Local2) And (Local3, 0xC4, Local3) Or (Local3, Local2, Local2) ^^EC0.STEC (0x82A1, Local2) BCCS ^^EC0.STEC (0x82A2, One) SBCM } Return (Zero) } 02 - Returns BCRD If (LEqual (Local1, 0x02)) { Store (^^EC0.GTEC (0x030A), Local1) BCRD Return (Local1) // Battery Care Replacement Data? } } ---------------------------------------------------------------------------------------------- 0B Backlight + ALS If (LEqual (Local0, 0x0B)) 0x137 { 00 - defaults LCD And (Local1, 0x0F, Local1) values for If (LEqual (Local1, Zero)) key LCD controls? { (Get parameter) Store (LSPT, VAL0) Light Sensor Parameters Table Return (VAL0) } 01 - screen backlight If (LEqual (Local1, One)) set { If (LEqual (PEGF, Zero)) { ^^^GFX0.AINT (One, Local2) } Else { ^^^P0P2.NINT (0x02, Local2) } Return (Zero) } 02 - screen backlight If (LEqual (Local1, 0x02)) get { If (LEqual (PEGF, One)) { Store (^^^P0P2.NINT (One, Zero), LCDB) } Return (LCDB) } 03 - ALS CMD: If (LEqual (Local1, 0x03)) send byte { ^^EC0.STEC (0x2305, Local2) LSHC ^^EC0.STEC (0x2300, Local1) LSCM ^^EC0.STEC (0x2302, One) LSEF Store (One, Local2) Store (Zero, Local1) While (LEqual (Local2, One)) { If (LEqual (Local1, 0x50)) { Return (Zero) } Sleep (0x05) Increment (Local1) Store (^^EC0.GTEC (0x230B), Local2) LSEF } Store (^^EC0.GTEC (0x2303), Local2) LSER If (LEqual (Local2, One)) { Return (Zero) } Return (One) } 04 - ALS CMD: If (LEqual (Local1, 0x04)) read byte { ^^EC0.STEC (0x2305, Local2) LSHC ^^EC0.STEC (0x2300, Local1) LSCM ^^EC0.STEC (0x2302, One) LSEF Store (One, Local2) Store (Zero, Local1) While (LEqual (Local2, One)) { If (LEqual (Local1, 0x50)) { Return (Zero) } Sleep (0x05) Increment (Local1) Store (^^EC0.GTEC (0x230B), Local2) LSEF } Store (^^EC0.GTEC (0x2303), Local2) LSER If (LEqual (Local2, One)) { Return (Zero) } Store (^^EC0.GTEC (0x2308), Local4) WDBL ShiftLeft (Local4, 0x08, Local4) Or (Local4, One, Local4) Return (Local4) } 05 - ALS CMD: If (LEqual (Local1, 0x05)) write byte { ^^EC0.STEC (0x2305, Local2) LSHC ^^EC0.STEC (0x2300, Local1) LSCM ^^EC0.STEC (0x2306, Local3) RDBL ^^EC0.STEC (0x2302, One) LSEF Store (One, Local2) Store (Zero, Local1) While (LEqual (Local2, One)) { If (LEqual (Local1, 0x50)) { Return (Zero) } Sleep (0x05) Increment (Local1) Store (^^EC0.GTEC (0x230B), Local2) LSEF } Store (^^EC0.GTEC (0x2303), Local2) LSER If (LEqual (Local2, One)) { Return (Zero) } Return (One) } 06 - ALS CMD: If (LEqual (Local1, 0x06)) read word { ^^EC0.STEC (0x2305, Local2) LSHC ^^EC0.STEC (0x2300, Local1) LSCM ^^EC0.STEC (0x2302, One) LSEF Store (One, Local2) Store (Zero, Local1) While (LEqual (Local2, One)) { If (LEqual (Local1, 0x50)) { Return (Zero) } Sleep (0x05) Increment (Local1) Store (^^EC0.GTEC (0x230B), Local2) LSEF } Store (^^EC0.GTEC (0x2303), Local2) LSER If (LEqual (Local2, One)) { Return (Zero) } Store (^^EC0.GTEC (0x2308), Local4) WDBL Store (^^EC0.GTEC (0x2309), Local5) WDBH ShiftLeft (Local5, 0x10, Local5) ShiftLeft (Local4, 0x08, Local4) Add (Local5, Local4, Local5) Or (Local5, One, Local5) Return (Local5) } 07 - ALS CMD: If (LEqual (Local1, 0x07)) write word { ^^EC0.STEC (0x2305, Local2) LSHC ^^EC0.STEC (0x2300, Local1) LSCM ^^EC0.STEC (0x2306, Local3) RDBL ^^EC0.STEC (0x2307, Local4) RDBH ^^EC0.STEC (0x2302, One) LSEF Store (One, Local2) Store (Zero, Local1) While (LEqual (Local2, One)) { If (LEqual (Local1, 0x50)) { Return (Zero) } Sleep (0x05) Increment (Local1) Store (^^EC0.GTEC (0x230B), Local2) LSEF } Store (^^EC0.GTEC (0x2303), Local2) LSER If (LEqual (Local2, One)) { Return (Zero) } Return (One) } 08 - ALS event reason If (LEqual (Local1, 0x08)) { And (BCME, 0x03, Local2) Return (Local2) } 09 - Enable/Disable If (LEqual (Local1, 0x09)) ALS event { notification And (Local2, One, Local2) on interrupt ^^EC0.STEC (0x2301, Local2) LSEN Return (Zero) } 0A - Get Notification If (LEqual (Local1, 0x0A)) enabled { Store (^^EC0.GTEC (0x230A), Local2) LSEN Return (Local2) } 0B - ALS and KBD If (LEqual (Local1, 0x0B)) backlight presence { (ALS bit 0) Store (Zero, Local2) (KBD bit 1) If (^^EC0.GTEC (0x8306)) LSPS 1 present 0 absent { Or (Local2, One, Local2) } If (^^EC0.GTEC (0x8307)) KBPS { Or (Local2, 0x02, Local2) } Return (Local2) } 0C - Enable/disable If (LEqual (Local1, 0x0C)) the keyboard { backlight (enlights And (Local2, One, Local2) on key pressure ^^EC0.STEC (0x230C, Local2) KBBP for KBTC secs) Return (Zero) } 0D - Immediately turns If (LEqual (Local1, 0x0D)) on or off the kbd { backlight And (Local2, One, Local2) ^^EC0.STEC (0x230E, Local2) Return (Zero) } 0E - set kbd backlight If (LEqual (Local1, 0x0E)) duration before { fading out And (Local2, 0x03, Local2) If (LEqual (Local2, Zero)) 00 -> 10 sec { 01 -> 30 sec ^^EC0.STEC (0x8308, Zero) KBFG 02 -> 60 sec ^^EC0.STEC (0x230D, 0x0A) KBTC 03 -> always on } If (LEqual (Local2, One)) { ^^EC0.STEC (0x8308, Zero) KBFG ^^EC0.STEC (0x230D, 0x1E) KBTC } If (LEqual (Local2, 0x02)) { ^^EC0.STEC (0x8308, Zero) KBFG ^^EC0.STEC (0x230D, 0x3C) KBTC } If (LEqual (Local2, 0x03)) { ^^EC0.STEC (0x8308, One) KBFG ^^EC0.STEC (0x230D, 0xFF) KBTC } Return (Zero) } Return (Zero) } ---------------------------------------------------------------------------------------------- 0C Power If (LEqual (Local0, 0x0C)) related { And (Local1, 0x0F, Local1) 0x13A If (LEqual (Local1, Zero)) { Store (^^EC0.GTEC (0x8400), Local2) WKRN If (LEqual (Local2, 0x02)) (wakeup reason number?) { 0 - system woke up Store (One, Local2) pressing "Assist" } Else { Store (Zero, Local2) } Return (Local2) } 1 - enter the bios If (LEqual (Local1, One)) on the next reboot { And (Local2, One, Local2) ^^EC0.STEC (0x8401, Local2) AFLG Return (Zero) } } } ----------------------------------------------------------------------------------------------