Funky frank Posted May 5, 2011 Share Posted May 5, 2011 Here is the dsdt of the SNC/SNY5001 device of the Sony Vaio f11 as is known for changing brightness and do other things. Questions now to all dsdt experts: - Does this code looks to you like there could be some functionality for enabling/disabling or sleeping/waking up the internal lvds? - In generally can there be dsdt code that calls or wrties directly to controlling hardware registers that change a behaviour of the machine and if so can you show me a section like this? PEG3.NGFX is the interesting nvidia device, PEGP.NGFX is for Vaios with hybrid graphics. Regards. Device (SNC) { Name (_HID, EisaId ("SNY5001")) Name (CPUT, Zero) Name (UPBR, Zero) Name (DNBR, Zero) Method (_INI, 0, NotSerialized) { If (_OSI ("Windows 2006")) { Store (PHS (0xEA), Local1) And (Local1, One, Local1) PHSB (0xE1, Local1) } Store (Zero, ALER) And (PNHM, 0x000FFFF0, CPUT) If (LEqual (GPID, 0x04)) { Store (Zero, Local0) While (LLessEqual (Local0, 0x08)) { If (Or (LEqual (CPUT, 0x000106E0), LEqual (CPUT, 0x000106A0))) { Store (DerefOf (Index (^^^PEG3.NGFX.BCL4, Local0)), Index (BRTB, Local0)) } Else { Store (DerefOf (Index (^^^PEGP.NGFX.BCL4, Local0)), Index (BRTB, Local0)) } Increment (Local0) } } Divide (Subtract (BRTL, 0x04), 0x0C, , Local1) Store (DerefOf (Index (BRTB, Local1)), Local1) Store (Local1, SBRL) } Method (PWAK, 0, NotSerialized) { DBGC (0xF3, Zero, BCEN) PNOT () DBGC (0xF3, 0x80, BCEN) Return (Zero) } Name (EVS0, 0x07) Name (EVS1, Zero) Name (EVS2, Zero) Mutex (MSNE, 0x00) Method (GSNE, 1, NotSerialized) { Acquire (MSNE, 0xFFFF) DBGC (0xF1, Zero, BCEN) Store (ShiftRight (And (Arg0, 0xFF000000), 0x18), Local1) Store (ShiftRight (And (Arg0, 0x00FF0000), 0x10), Local2) Store (And (Arg0, 0xFFFF), Local3) Store (Zero, Local0) If (LEqual (Local1, Zero)) { If (LEqual (Local2, Zero)) { Store (And (Arg0, 0xFFFF0000), Local0) Store (Or (Local0, 0x07), Local0) } If (LEqual (Local2, One)) { Store (And (Arg0, 0xFFFF0000), Local0) Store (Or (Local0, Zero), Local0) } If (LEqual (Local2, 0x02)) { Store (And (Arg0, 0xFFFF0000), Local0) Store (Or (Local0, Zero), Local0) } } Else { If (LEqual (Local1, One)) { If (LEqual (Local2, Zero)) { Store (And (Arg0, 0xFFFF0000), Local0) Store (Or (Local0, EVS0), Local0) } If (LEqual (Local2, One)) { Store (And (Arg0, 0xFFFF0000), Local0) Store (Or (Local0, EVS1), Local0) } If (LEqual (Local2, 0x02)) { Store (And (Arg0, 0xFFFF0000), Local0) Store (Or (Local0, EVS2), Local0) } } Else { Store (Ones, Local0) } } DBGC (0xF1, 0x80, BCEN) Release (MSNE) Return (Local0) } Method (SSNE, 1, NotSerialized) { Acquire (MSNE, 0xFFFF) DBGC (0xF4, Zero, BCEN) Store (ShiftRight (And (Arg0, 0xFF000000), 0x18), Local1) Store (ShiftRight (And (Arg0, 0x00FF0000), 0x10), Local2) Store (And (Arg0, 0xFFFF), Local3) Store (Zero, Local0) If (LEqual (Local1, Zero)) { If (LEqual (Local2, Zero)) { Store (Or (Arg0, EVS0), EVS0) } If (LEqual (Local2, One)) { Store (Or (Arg0, EVS1), EVS1) } If (LEqual (Local2, 0x02)) { Store (Or (Arg0, EVS2), EVS2) } } Else { If (LEqual (Local1, One)) { If (LEqual (Local2, Zero)) { Store (And (EVS0, Not (Arg0)), EVS0) } If (LEqual (Local2, One)) { Store (And (EVS1, Not (Arg0)), EVS1) } If (LEqual (Local2, 0x02)) { Store (And (EVS2, Not (Arg0)), EVS2) } } } DBGC (0xF4, 0x80, BCEN) Release (MSNE) } Method (SODV, 1, NotSerialized) { DBGC (0xF6, Zero, BCEN) If (LNotEqual (DSEN, Zero)) { Return (Ones) } Store (Arg0, AODV) If (LNot (And (AODV, CADD))) { Store (One, AODV) } If (LNotEqual (CADD, PADD)) { Store (CADD, PADD) Notify (PCI0, Zero) And (PNHM, 0x000FFFF0, Local0) If (Or (LEqual (Local0, 0x000106E0), LEqual (Local0, 0x000106A0))) { Notify (PEG3, Zero) } Else { Notify (PEGP, Zero) } Sleep (0x02EE) } DBGC (0xF6, 0x80, BCEN) Return (Zero) } Mutex (MIDB, 0x00) Method (RBMF, 1, Serialized) { Acquire (MIDB, 0xFFFF) DBGC (0xF7, Zero, BCEN) And (Arg0, 0x00010000, Local0) Store (PHSD (0xDC, Local0), Local0) If (LEqual (Local0, 0x02)) { Sleep (0x1388) } DBGC (0xF7, 0x80, BCEN) Release (MIDB) Return (Local0) } Method (RSBI, 1, Serialized) { Return (Zero) } Method (CBMF, 1, Serialized) { Acquire (MIDB, 0xFFFF) Or (And (Arg0, 0x0001FFFF), 0x02000000, Local0) Store (PHSD (0xDC, Local0), Local0) Release (MIDB) Return (Zero) } Method (EAWK, 1, Serialized) { Acquire (MIDB, 0xFFFF) PHSB (0xD3, Zero) Not (Arg0, Local0) Release (MIDB) Return (Local0) } Name (SNI0, 0x53636E53) Name (SNI1, 0x6F707075) Name (SNI2, 0x64657472) Name (SNI3, 0x0100) Name (SNI4, 0x36590000) Name (SNIA, 0xCE7D) Name (SNN0, 0x0101) Name (SNN1, Zero) Name (SNN2, 0x0100) Name (SNN3, 0x0137) Name (SNN4, 0x0124) Name (SNN5, 0x013A) Name (SNN6, 0x0139) Name (SNN7, Zero) Name (SNN8, Zero) Name (SNN9, 0x0136) Name (SNNA, 0x011D) Name (SNNB, 0x0114) Name (SNNC, Zero) Name (SNND, Zero) Name (SNNE, 0x0105) Name (SNNF, 0x0122) Name (XECR, Zero) Name (ENMK, 0xFFE2) Name (ENCR, Zero) Name (ESR, Zero) Method (SN00, 1, NotSerialized) { Store (And (Arg0, 0xFF), Local1) If (LEqual (Local1, Zero)) { Return (SNI0) } If (LEqual (Local1, One)) { Return (SNI1) } If (LEqual (Local1, 0x02)) { Return (SNI2) } If (LEqual (Local1, 0x03)) { Return (SNI3) } If (LEqual (Local1, 0x04)) { Return (SNI4) } If (LEqual (Local1, 0x10)) { Return (SNIA) } If (LAnd (LGreaterEqual (Local1, 0x20), LLessEqual (Local1, 0x2F))) { Store (SNGN (Local1), Local2) Return (Local2) } Return (Zero) } Method (SNGN, 1, NotSerialized) { Store (And (Arg0, 0x0F), Local1) If (LEqual (Local1, Zero)) { Return (SNN0) } If (LEqual (Local1, One)) { Return (SNN1) } If (LEqual (Local1, 0x02)) { Return (SNN2) } If (LEqual (Local1, 0x03)) { Return (SNN3) } If (LEqual (Local1, 0x04)) { Return (SNN4) } If (LEqual (Local1, 0x05)) { Return (SNN5) } If (LEqual (Local1, 0x06)) { Return (SNN6) } If (LEqual (Local1, 0x07)) { Return (SNN7) } If (LEqual (Local1, 0x08)) { Return (SNN8) } If (LEqual (Local1, 0x09)) { Return (SNN9) } If (LEqual (Local1, 0x0A)) { Return (SNNA) } If (LEqual (Local1, 0x0B)) { Return (SNNB) } If (LEqual (Local1, 0x0C)) { Return (SNNC) } If (LEqual (Local1, 0x0D)) { Return (SNND) } If (LEqual (Local1, 0x0E)) { Return (SNNE) } If (LEqual (Local1, 0x0F)) { Return (SNNF) } Return (Zero) } Mutex (SNM0, 0x00) Method (SN01, 0, NotSerialized) { Acquire (SNM0, 0xFFFF) Store (PHS (0xD6), Local1) And (Local1, Not (ENMK), Local1) And (ENCR, ENMK, Local2) Or (Local1, Local2, Local1) Release (SNM0) Return (Local1) } Method (SN02, 1, NotSerialized) { Acquire (SNM0, 0xFFFF) Store (Arg0, Local1) If (LNotEqual (Local1, Zero)) { And (Local1, Not (ENMK), Local2) If (LNotEqual (Local2, Zero)) { PHSD (0xD7, Local2) } And (Local1, ENMK, Local2) If (LNotEqual (Local2, Zero)) { And (ENCR, ENMK, Local3) Or (Local3, Local2, ENCR) } } Release (SNM0) } Method (SN03, 1, NotSerialized) { Acquire (SNM0, 0xFFFF) Store (Arg0, Local1) If (LNotEqual (Local1, Zero)) { And (Local1, Not (ENMK), Local2) If (LNotEqual (Local2, Zero)) { PHSD (0xD8, Local1) } And (Local1, ENMK, Local2) If (LNotEqual (Local2, Zero)) { And (ENCR, ENMK, Local3) And (Local3, Not (Local2), ENCR) } } Release (SNM0) } Method (SN04, 0, NotSerialized) { Store (^^EC.ESR0, Local1) And (Local1, Not (ENMK), Local1) And (ESR, ENMK, Local2) Or (Local1, Local2, Local1) Return (Local1) } Method (SN05, 1, NotSerialized) { Store (Arg0, Local1) If (LNotEqual (Local1, Zero)) { And (Local1, Not (ENMK), Local2) If (LEqual (Arg0, 0x08)) { And (Local2, 0xFFFFFFF7, Local2) } If (LNotEqual (Local2, Zero)) { PHSD (0xDA, Local1) } And (Local1, ENMK, Local2) If (LNotEqual (Local2, Zero)) { And (ESR, ENMK, Local3) And (Local3, Not (Local2), ESR) } } } Mutex (SNM1, 0x00) Mutex (SNM2, 0x00) Name (SNBF, Buffer (0x0410) {}) CreateField (SNBF, Zero, 0x20, SNBD) Method (SN06, 1, NotSerialized) { Acquire (SNM2, 0xFFFF) Store (Arg0, SNBF) SNCM () Release (SNM2) Return (SNBF) } Method (SNCM, 0, NotSerialized) { Acquire (SNM1, 0xFFFF) Store (DerefOf (Index (SNBF, Zero)), Local0) DBGC (0xF0, Local0, BCEN) And (Local0, 0x0F, Local0) If (LEqual (Local0, Zero)) { SNF0 (SNBF) } Else { If (LEqual (Local0, 0x02)) { SNF2 (SNBF) } Else { If (LEqual (Local0, 0x03)) { SNF3 (SNBF) } Else { If (LEqual (Local0, 0x04)) { SNF4 (SNBF) } Else { If (LEqual (Local0, 0x05)) { SNF5 (SNBF) } Else { If (LEqual (Local0, 0x06)) { SNF6 (SNBF) } Else { If (LEqual (Local0, 0x09)) { SNF9 (SNBF) } Else { If (LEqual (Local0, 0x0A)) { SNFA (SNBF) } Else { If (LEqual (Local0, 0x0B)) { SNFB (SNBF) } Else { If (LEqual (Local0, 0x0E)) { SNFE (SNBF) } Else { If (LEqual (Local0, 0x0F)) { SNFF (SNBF) } Else { } } } } } } } } } } } Release (SNM1) Return (SNBF) } Method (SN07, 1, NotSerialized) { Acquire (SNM2, 0xFFFF) Store (Arg0, Local0) Store (Local0, SNBD) SNCM () Release (SNM2) Return (SNBD) } Method (SNF0, 1, NotSerialized) { Store (DerefOf (Index (SNBF, One)), Local0) If (LEqual (Local0, Zero)) { Store (One, Local1) PHSB (0xD0, Local1) } Else { If (LEqual (Local0, One)) { Store (One, Local1) PHSB (0xD1, Local1) } Else { } } DBGC (0x70, 0x80, BCEN) Return (SNBF) } Method (SNF1, 1, NotSerialized) { DBGC (0x71, 0x80, BCEN) Return (SNBF) } Method (SNF2, 1, NotSerialized) { Store (DerefOf (Index (SNBF, One)), Local0) If (LEqual (Local0, Zero)) { Store (0x04, Local1) PHSB (0xD0, Local1) } Else { If (LEqual (Local0, One)) { Store (0x04, Local1) PHSB (0xD1, Local1) } Else { If (LEqual (Local0, 0x02)) { Store (^^EC.GECR (), Local1) Store (Local1, Index (SNBF, Zero)) } Else { } } } DBGC (0x72, 0x80, BCEN) } Name (BRTB, Buffer (0x09) { /* 0000 */ 0x34, 0x40, 0x4F, 0x5E, 0x6F, 0x86, 0xA0, 0xC3, /* 0008 */ 0xFF }) Name (DEFU, Buffer (0x0D) { /* 0000 */ 0x05, 0xAA, 0x00, 0x55, 0x6E, 0x01, 0x23, 0x02, /* 0008 */ 0x01, 0x04, 0x32, 0x0A, 0x00 }) Method (BRBR, 1, NotSerialized) { If (Or (LEqual (CPUT, 0x000106E0), LEqual (CPUT, 0x000106A0))) { ^^^PEG3.NGFX.SBRI (Arg0) } Else { ^^^PEGP.NGFX.SBRI (Arg0) } } Method (SNF3, 1, NotSerialized) { Store (DerefOf (Index (SNBF, One)), Local0) If (LEqual (Local0, Zero)) { Store ("CMD0 Get parameter:", Debug) Store (Zero, Local1) While (LLessEqual (Local1, 0x08)) { Store (DerefOf (Index (BRTB, Local1)), Index (SNBF, Local1)) Increment (Local1) } Store (Zero, Local1) While (LLessEqual (Local1, 0x0C)) { Store (DerefOf (Index (DEFU, Local1)), Index (SNBF, Add (Local1, 0x09))) Increment (Local1) } } Else { If (LEqual (Local0, One)) { Store ("CMD1 brightness data:", Debug) Store (DerefOf (Index (SNBF, 0x02)), Local1) Store (Local1, Debug) BRBR (Local1) } Else { If (LEqual (Local0, 0x02)) { If (Or (LEqual (CPUT, 0x000106E0), LEqual (CPUT, 0x000106A0))) { Store (^^^PEG3.NGFX.GBRI (), Local1) } Else { Store (^^^PEGP.NGFX.GBRI (), Local1) } Store ("CMD2 current brightness data:", Debug) Store (Local1, Debug) Store (Local1, Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x03)) { Store ("CMD3 send byte:", Debug) Store (0x32, Local2) Store (DerefOf (Index (SNBF, 0x02)), Local1) ShiftLeft (Local1, 0x08, Local1) PHSD (0xEF, Or (Local1, 0xA0)) Sleep (0x02) Store (0x32, Local2) While (LAnd (^^EC.ECAK, LNotEqual (Local2, Zero))) { Sleep (One) Decrement (Local2) } XOr (^^EC.CMST, One, Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x04)) { Store (DerefOf (Index (SNBF, 0x02)), Local1) ShiftLeft (Local1, 0x08, Local1) PHSD (0xEF, Or (Local1, 0xA4)) Sleep (0x02) Store (0x32, Local2) While (LAnd (^^EC.ECAK, LNotEqual (Local2, Zero))) { Sleep (One) Decrement (Local2) } XOr (^^EC.CMST, One, Index (SNBF, Zero)) Store ("CMD4 read byte", Debug) Store (^^EC.ALSL, Debug) Store (^^EC.ALSL, Index (SNBF, One)) } Else { If (LEqual (Local0, 0x05)) { Store (DerefOf (Index (SNBF, 0x03)), Local1) Or (ShiftLeft (Local1, 0x08), DerefOf (Index (SNBF, 0x02)), Local1) ShiftLeft (Local1, 0x08, Local1) Store ("CMD5 write byte:", Debug) Store (Local1, Debug) PHSD (0xEF, Or (Local1, 0xA2)) Sleep (0x02) Store (0x32, Local2) While (LAnd (^^EC.ECAK, LNotEqual (Local2, Zero))) { Sleep (One) Decrement (Local2) } XOr (^^EC.CMST, One, Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x06)) { Store (DerefOf (Index (SNBF, 0x02)), Local1) ShiftLeft (Local1, 0x08, Local1) PHSD (0xEF, Or (Local1, 0xA3)) Sleep (0x02) Store (0x32, Local2) While (LAnd (^^EC.ECAK, LNotEqual (Local2, Zero))) { Sleep (One) Decrement (Local2) } Store ("CMD6", Debug) XOr (^^EC.CMST, One, Index (SNBF, Zero)) Store (^^EC.ALSL, Index (SNBF, One)) Store (^^EC.ALSH, Index (SNBF, 0x02)) } Else { If (LEqual (Local0, 0x07)) { Store (DerefOf (Index (SNBF, 0x04)), Local1) Or (ShiftLeft (Local1, 0x08), DerefOf (Index (SNBF, 0x03)), Local1) Or (ShiftLeft (Local1, 0x08), DerefOf (Index (SNBF, 0x02)), Local1) ShiftLeft (Local1, 0x08, Local1) Store ("CMD7 write word to ALS:", Debug) Store (Local1, Debug) PHSD (0xEF, Or (Local1, 0xA1)) Sleep (0x02) Store (0x32, Local2) While (LAnd (^^EC.ECAK, LNotEqual (Local2, Zero))) { Sleep (One) Decrement (Local2) } XOr (^^EC.CMST, One, Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x08)) { ShiftRight (And (Store (SN04 (), Local1), 0x08), 0x03, Local1) Or (Local1, And (ALER, 0x02), Local1) Store ("CMD8 get event reason:", Debug) Store (Local1, Debug) Store (Local1, Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x09)) { And (DerefOf (Index (SNBF, 0x02)), One, Local1) If (Local1) { Store (0xA011, Local1) } Else { Store (0xA111, Local1) } PHSD (0xEF, Local1) } Else { If (LEqual (Local0, 0x0A)) { Store (^^EC.ALFS, Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x0B)) { Store (PHSD (0xF0, 0x14), Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x0C)) { And (DerefOf (Index (SNBF, 0x02)), One, Local1) ShiftLeft (Local1, 0x08, Local1) PHSD (0xF0, Or (Local1, 0xA015)) } Else { If (LEqual (Local0, 0x0D)) { And (DerefOf (Index (SNBF, 0x02)), One, Local1) ShiftLeft (Local1, 0x08, Local1) PHSD (0xF0, Or (Local1, 0xA016)) } Else { If (LEqual (Local0, 0x0E)) { And (DerefOf (Index (SNBF, 0x02)), 0x03, Local1) ShiftLeft (Local1, 0x08, Local1) PHSD (0xF0, Or (Local1, 0xA017)) } } } } } } } } } } } } } } } DBGC (0x73, 0x80, BCEN) Return (SNBF) } Method (SNF4, 1, NotSerialized) { Store (DerefOf (Index (SNBF, One)), Local0) If (LEqual (Local0, Zero)) { Store (PHS (0xE7), Local1) Store (Local1, SNBF) } If (LEqual (Local0, One)) { ShiftRight (And (Store (SN04 (), Local1), 0x10), 0x04, Local1) Store (Local1, Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x02)) { Store (PHS (0xDD), Local1) Store (And (Local1, One), Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x03)) { Store (PHS (0xDD), Local1) ShiftRight (And (Local1, 0x06), One, Local1) Store (Local1, Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x04)) { Store (DerefOf (Index (SNBF, 0x02)), Local1) And (Local1, 0x03, Local1) PHSD (0xDE, Local1) } Else { If (LEqual (Local0, 0x05)) { Store (PHS (0xDD), Local1) ShiftRight (And (Local1, 0x30), 0x04, Local1) Store (Local1, Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x06)) { Store (DerefOf (Index (SNBF, 0x02)), Local1) And (Local1, 0x03, Local1) PHSD (0xDF, Local1) } Else { If (LEqual (Local0, 0x09)) { Store (PHS (0xDD), Local1) ShiftRight (And (Local1, 0x3000), 0x0C, Local1) Store (Local1, Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x0A)) { Store (DerefOf (Index (SNBF, 0x02)), Local1) And (Local1, 0x03, Local1) PHSD (0xEC, Local1) } Else { } } } } } } } } DBGC (0x74, 0x80, BCEN) Return (SNBF) } Method (SNF5, 1, NotSerialized) { Store (DerefOf (Index (SNBF, One)), Local0) If (LEqual (Local0, Zero)) { Store (^^EC.ISID, Local1) If (LEqual (Local1, 0x05)) { Store (One, Local1) } Else { Store (Zero, Local1) } Store (Local1, Index (SNBF, Zero)) DBGC (0x75, 0x80, BCEN) Return (SNBF) } Else { If (LEqual (Local0, One)) { Store (DerefOf (Index (SNBF, 0x02)), Local2) And (Local2, One, Local2) Store (Local2, ATFR) } Else { } } Return (Package (0x02) { Zero, Zero }) } Method (SNF6, 1, NotSerialized) { Store (DerefOf (Index (SNBF, One)), Local0) If (LEqual (Local0, Zero)) { Store (PHSD (0xF1, 0x12), Local1) } Else { If (LEqual (Local0, One)) { Store (PHSD (0xF1, 0x13), Local1) } Else { Store (Zero, Local1) } } Store (Local1, Index (SNBF, Zero)) Store (ShiftRight (Local1, 0x08), Index (SNBF, One)) DBGC (0x76, 0x80, BCEN) Return (SNBF) } Method (SNF7, 1, NotSerialized) { DBGC (0x77, 0x80, BCEN) Return (SNBF) } Method (SNF8, 1, NotSerialized) { DBGC (0x78, 0x80, BCEN) Return (SNBF) } Method (SNF9, 1, NotSerialized) { Store (DerefOf (Index (SNBF, One)), Local0) If (LEqual (Local0, Zero)) { Store (PHS (0xE4), Local1) Store (And (Local1, 0xF5), Index (SNBF, Zero)) } Else { If (LEqual (Local0, One)) { Store (DerefOf (Index (SNBF, 0x02)), Local1) PHSD (0xE5, Local1) } Else { If (LEqual (Local0, 0x02)) { Store (PHS (0xF3), Local1) Store (Local1, Index (SNBF, Zero)) } } } DBGC (0x79, 0x80, BCEN) Return (SNBF) } Method (SNFA, 1, NotSerialized) { Store (DerefOf (Index (SNBF, One)), Local0) If (LEqual (Local0, Zero)) { Store (GPID, Index (SNBF, Zero)) Store (Zero, Index (SNBF, One)) } Else { } DBGC (0x7A, 0x80, BCEN) Return (SNBF) } Method (SNFB, 1, NotSerialized) { Store (DerefOf (Index (SNBF, One)), Local0) If (LEqual (Local0, Zero)) { Acquire (MIDB, 0xFFFF) Store (PHSD (0xDC, Zero), Local1) If (LEqual (Local1, 0x02)) { Sleep (0x1388) } Release (MIDB) Store (And (Local1, 0x07), Index (SNBF, Zero)) } DBGC (0x7B, 0x80, BCEN) Return (SNBF) } Method (SNFC, 1, NotSerialized) { DBGC (0x7C, 0x80, BCEN) Return (SNBF) } Method (SNFD, 1, NotSerialized) { DBGC (0x7D, 0x80, BCEN) Return (SNBF) } Method (SNFE, 1, NotSerialized) { Store (DerefOf (Index (SNBF, One)), Local0) If (LEqual (Local0, Zero)) { Store (PHS (0xC7), Local1) And (Local1, 0xFF, Local1) If (LEqual (Local1, 0xFE)) { Store (One, Local1) } Else { Store (Zero, Local1) } Store (Local1, Index (SNBF, Zero)) Return (SNBF) } Else { If (LEqual (Local0, One)) { Store (DerefOf (Index (SNBF, 0x02)), Local2) And (Local2, One, Local2) If (LEqual (Local2, Zero)) { Store (0xA0, Local3) } Else { Store (0xA1, Local3) } PHSB (0xC8, Local3) } Else { } } DBGC (0x7E, 0x80, BCEN) Return (SNBF) } Method (SNFF, 1, NotSerialized) { Store (DerefOf (Index (SNBF, One)), Local0) If (LEqual (Local0, Zero)) { Store (0x02, Local1) Store (Local1, Index (SNBF, Zero)) } If (LEqual (Local0, One)) { Store (Zero, Local1) Store (PHS (0xF2), Local1) P8XH (Zero, Local1) And (Local1, 0x03, Local1) Store (Local1, Index (SNBF, Zero)) } Else { If (LEqual (Local0, 0x02)) { Store (DerefOf (Index (SNBF, 0x02)), Local1) P8XH (Zero, Local1) And (Local1, 0x03, Local1) PHSB (0xE8, Local1) } } DBGC (0x7F, 0x80, BCEN) Return (SNBF) } } Link to comment https://www.insanelymac.com/forum/topic/256378-calling-all-experts-sony-vaio-f11s-sncsny5001-device-dsdt/ Share on other sites More sharing options...
roderigocarp Posted May 29, 2011 Share Posted May 29, 2011 Hey Frank, i have a vaio vpcf126fm. This snc, how you get it? This is the key for the graphic aceleration solution? Thanks! Link to comment https://www.insanelymac.com/forum/topic/256378-calling-all-experts-sony-vaio-f11s-sncsny5001-device-dsdt/#findComment-1689926 Share on other sites More sharing options...
Funky frank Posted July 25, 2011 Author Share Posted July 25, 2011 This is what I discovered about the ACPI of the SNY5001 inside the Vaio F11 so far. It's only very rudimentary info and I don't understand the usage of the methods. SN06 seems to be a general purpose method that returns an array of available methods. Here are some important sources. I would like to have the linux sony kernel module patched with the vaio-f11-project. But I don't have a clue how to diff patch this. Linux Kernel 2.6.39 sony-laptop.c browser readable Vaio-F11-Linux project diff patch Sony_Notebook_Control_ACPI_support.webarchive.zip (Very outdated Sony ACPI descriptions) SNC ACPI method's description (updated 04-Aug-11) More info here. _INI Init, calls PHSB (0xE1, PHS (0xEA)&&1) SODV Switch Screen / Gfx (values 0 / 1) SN00 Returns bytes (?) by value 0x0 to 0x4, 0x10 and 0x20 to 0x2f. See below. SN01 Returns event status SN02 Enable events ( 0xffff all) SN03 Disable events ( 0xffff all ) SN04 Returns active gfx output (var ESR),called rom SN03 param 0x8, SNF4 SN05 Sets active gfx output/brightness? (var ESR), PHSD (0xDA, x), param: 0x9 to 0xf SN06 Some kind of wrapper method that calls methods SNF0 to SNFF over method SNCM and returns the return value of SNF0 - SNFF Param: Buffer (0x02) { 0x0 - 0xf calling method SNF0 - SNFF, 0xXX parameter for SNFx-method } SN07 Returns event messages BRBR Set panel brightness BRTB panel brightness table CBMF Change Battery Mode Flag? RBMF Read Battery Mode inFormation? SNF1 ?nop SNF2 Set device??, 0x0 set PHSB (0xd0 0x04), 0x1 set PHSB (0xd1 0x04), 0x2 get key code from EC.GECR? SNF3 general brightness? , 0x0 set br table, 0x1 set default br, 0x2 get gfx br value, 0x3 set brightness PHSD 0xEF xxA0, 0x4 set brightness PHSD 0xEF xxA4, 0x5 set brightness PHSD 0xEF xxA2, 0x6 set brightness PHSD 0xEF xxA3, 0x7 set brightness PHSD 0xEF xxA1, 0x8 get active gfx out?, 0x9 set br PHSD 0xEF 0xA011 / 0xA111 (off?), 0xA get EC.ALFS 0xB get PHSD (0xF0, 0x14), 0xC ... SNF4 Set/Get output, 0x0 get PHS (0xE7), 0x1 get SN04()/active displays, 0x2 get PHS (0xDD), 0x3 get PHS (0xDD)&&6>>1, 0x4 set PHSD (0xDE, x)/output 0-3, 0x5 get PHS (0xDD)&&30>>4, 0x6 set PHSD (0xDF, x)/output 0-3 ,0x9 get PHS (0xDD)&&3000>>C, 0xA set PHSD (0xEC, x)/output 0-3 SNF5 ?? get ISID==0x5 / set ATFR 0x0-0x1 SNF6 ?? 0x0 get PHSD (0xF1, 0x12), 0x1 get PHSD (0xF1, 0x13) SNF7 ?nop SNF8 ?nop SNF9 0x0 get PHS (0xE4) && 0xF5, 0x1 get PHSD (0xE5), 0x2 get PHS (0xF3) && 0xF5 SNFA 0x0 get GPID (=0x3) SNFB ?? get battery 0x0 get PHSD (0xDC, Zero) SNFC ?nop SNFD ?nop SNFE get/set something: 0x0 get PHS (0xC7)==0xFE, 0x1 set PHSB (0xC8, 0/1) SNFF ? get/set output internal gfx? uses method P8XH (Zero, x) PHSD Some general hardware call, 2 parameter PHS Some general hardware call, 1 parameter PHSD params: 0xC7 ? SNFE get something 0xC8, 0xA0/0xA1 ? SNFE set something 0xD0, 0x01 ? SNF0 0xD1, 0x01 ? SNF0 0xD0, 0x04 ? SNF1, Set brightness 0xD1, 0x04 ? SNF1, Set brightness 0xDA, 0x08 Set brightnes 0xDA, 0x09 - 0x0F Set gfx output? 0xDC, ? ? SNFB, RBMF, CBMF, battery?? 0xD7, ? Interrupts enable 0xD8, ? Interrupts disable 0xEF, ? ? SNF3 Set brightness value (value left shift 8, OR 0xA0 and value left shift 8, OR 0xA4) 0xF0, ? ? SNF3 Set/Get brightness value? 0xDD ? SNF4 Get output 0xDE, 0x00 - 0x03 ? SNF4 Set output 0xDF, 0x00 - 0x03 ? SNF4 Set output 0xEC, 0x00 - 0x03 ? SNF4 Set output 0xE7 ? SNF4 Get output 0xE8, 0x00 - 0x03 ? SNFF Set output 0xF1, 0x12 ? SNF6 get something 0xF2 ? SNFF get something 0xF1, 0x13 ? SNF6 get something 0xE5, ? ? SNF9 EC device: SECR set Extended key scan-Code result Set brightness GECR get Extended key scan-Code result, Get brightness ECAK EC ready? 0x1 ECON EC on? 0x1 ESR0 Active output SN00 parameter and return codes: 0x0 Name (SNI0, 0x53636E53) ... Name (SNI1, 0x6F707075) Name (SNI2, 0x64657472) Name (SNI3, 0x0100) 0x4 Name (SNI4, 0x36590000) 0x10 Name (SNIA, 0xCE7D) 0x20 Name (SNN0, 0x0101) .. Name (SNN1, Zero) Name (SNN2, 0x0100) Name (SNN3, 0x0137) Name (SNN4, 0x0124) Name (SNN5, 0x013A) Name (SNN6, 0x0139) Name (SNN7, Zero) Name (SNN8, Zero) Name (SNN9, 0x0136) Name (SNNA, 0x011D) Name (SNNB, 0x0114) Name (SNNC, Zero) Name (SNND, Zero) Name (SNNE, 0x0105) 0x2f Name (SNNF, 0x0122) Link to comment https://www.insanelymac.com/forum/topic/256378-calling-all-experts-sony-vaio-f11s-sncsny5001-device-dsdt/#findComment-1722126 Share on other sites More sharing options...
Recommended Posts