Forum RSS Feed Follow @ Twitter Follow On Facebook

Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[-]
Welcome
You have to register before you can post on our site.

Username:


Password:





[-]
Latest Threads
[Request] Lenovo T550 Whitelist removal
Last Post: DJ2Balls
Today 02:07 AM
» Replies: 4
» Views: 1129
BIOS boot logo changed, but with some pr...
Last Post: tamickasteele
Yesterday 11:46 PM
» Replies: 6
» Views: 1965
[REQUEST] Acer PT715-51 (Triton 700) ins...
Last Post: Dudu2002
Yesterday 10:49 AM
» Replies: 24
» Views: 12301
[REQUEST] Lenovo IdeaPad U310 & U410 (65...
Last Post: Dudu2002
Yesterday 08:59 AM
» Replies: 1782
» Views: 499254
[REQUEST] Acer Aspire 9300 BIOS Unlock
Last Post: Geortor
11-26-2024 04:01 PM
» Replies: 10
» Views: 2231
Lenovo ThinkCentre M700 10GS - Kaby Lake...
Last Post: DeathBringer
11-26-2024 02:55 PM
» Replies: 10
» Views: 3790
[Request] Asus H110M-R Mainboard - Xeon ...
Last Post: kusslegyen
11-26-2024 02:04 PM
» Replies: 14
» Views: 6769
LGA771 Bios Microcode for HP dc7800 sff
Last Post: Netuser232
11-26-2024 01:27 PM
» Replies: 136
» Views: 92086
Dell Vostro 3500 full unlocked
Last Post: kamilchno
11-26-2024 10:51 AM
» Replies: 0
» Views: 78
Bios logo
Last Post: Nkosenhle
11-26-2024 10:43 AM
» Replies: 0
» Views: 78
Gigabyte AORUS 5 (KB/SB/MB) BIOS Unlock
Last Post: Dudu2002
11-26-2024 10:41 AM
» Replies: 18
» Views: 4799
[REQUEST] Lenovo G580 (5ECNxxWW) Whiteli...
Last Post: Dudu2002
11-26-2024 09:09 AM
» Replies: 1730
» Views: 672642
[REQUEST] Lenovo Thinkpad X230(i) (G2ETx...
Last Post: willow25565
11-26-2024 02:06 AM
» Replies: 1090
» Views: 451685
[REQUEST] Lenovo Thinkpad Edge E430 & E5...
Last Post: RuryGame
11-25-2024 06:23 PM
» Replies: 494
» Views: 171290
2x CPU Dell Workstation BIOS modding
Last Post: William P
11-25-2024 03:30 PM
» Replies: 0
» Views: 116
[REQUEST] Lenovo T440(S) (GJETxxWW) Whit...
Last Post: Dudu2002
11-25-2024 01:28 PM
» Replies: 492
» Views: 186129
[Request] ECS P6LX-A bios mod for HDD si...
Last Post: pdesrosiers
11-24-2024 11:20 PM
» Replies: 0
» Views: 370
Sony Vaio AW11Z - Support for Quad CPU -...
Last Post: lala2025
11-24-2024 08:19 PM
» Replies: 12
» Views: 3896
[REQUEST] HP Pavilion G42-272BR Whitelis...
Last Post: eepromm
11-24-2024 06:14 PM
» Replies: 1
» Views: 224
[REQUEST] Bios for packard bell tj65 wit...
Last Post: THECAIDA
11-24-2024 03:49 PM
» Replies: 2
» Views: 179

Dell Vostro 3450 Advanced Options unlocking in progress
#81
Hmm... There's also SgTabl which obviously refers to Switchable Graphics. It also contains ON and OFF methods for PEG, so maybe it's worth investigating. Going to take a closer look at it soon.

Code:
DefinitionBlock ("acpi_ssdt2.aml", "SSDT", 1, "SgRef", "SgTabl", 0x00001000)
{
External (PWOK)
External (P8XH, MethodObj) // 2 Arguments
External (PWEN)
External (HLRS)
External (DDL8)
External (DDL7)
External (DDL6)
External (DDL5)
External (DDL4)
External (DDL3)
External (DDL2)
External (SDDL, IntObj)
External (DIDL)
External (SGFL)
External (MXD8)
External (MXD7)
External (MXD6)
External (MXD5)
External (MXD4)
External (MXD3)
External (MXD2)
External (MXD1)
External (DID8, IntObj)
External (DID7, IntObj)
External (DID6, IntObj)
External (DID5, IntObj)
External (DID4, IntObj)
External (DID3, IntObj)
External (DID2, IntObj)
External (DID1, IntObj)
External (NDID, IntObj)
External (SGMD)
External (\EECP, MethodObj) // 1 Arguments
External (\GBAS, MethodObj) // 1 Arguments
External (\EBAS, MethodObj) // 1 Arguments
External (\XBAS, MethodObj) // 1 Arguments
External (\_SB_.PCI0.PEG0, DeviceObj)
External (\_SB_.PCI0.GFX0, DeviceObj)
External (\_SB_.PCI0.GFX0._DOD, IntObj)
External (\_SB_.PCI0.GFX0.HDSM, IntObj)
External (\_SB_.PCI0.PEG0.PEGP, DeviceObj)
External (\_SB_.PCI0.GFX0.DD08._DGS, IntObj)
External (\_SB_.PCI0.GFX0.DD08._DCS, IntObj)
External (\_SB_.PCI0.GFX0.DD08._ADR, IntObj)
External (\_SB_.PCI0.GFX0.DD07._DGS, IntObj)
External (\_SB_.PCI0.GFX0.DD07._DCS, IntObj)
External (\_SB_.PCI0.GFX0.DD07._ADR, IntObj)
External (\_SB_.PCI0.GFX0.DD06._DGS, IntObj)
External (\_SB_.PCI0.GFX0.DD06._DCS, IntObj)
External (\_SB_.PCI0.GFX0.DD06._ADR, IntObj)
External (\_SB_.PCI0.GFX0.DD05._DGS, IntObj)
External (\_SB_.PCI0.GFX0.DD05._DCS, IntObj)
External (\_SB_.PCI0.GFX0.DD05._ADR, IntObj)
External (\_SB_.PCI0.GFX0.DD04._DGS, IntObj)
External (\_SB_.PCI0.GFX0.DD04._DCS, IntObj)
External (\_SB_.PCI0.GFX0.DD04._ADR, IntObj)
External (\_SB_.PCI0.GFX0.DD03._DGS, IntObj)
External (\_SB_.PCI0.GFX0.DD03._DCS, IntObj)
External (\_SB_.PCI0.GFX0.DD03._ADR, IntObj)
External (\_SB_.PCI0.GFX0.DD02._BCM, IntObj)
External (\_SB_.PCI0.GFX0.DD02._BQC, IntObj)
External (\_SB_.PCI0.GFX0.DD02._BCL, IntObj)
External (\_SB_.PCI0.GFX0.DD02._DGS, IntObj)
External (\_SB_.PCI0.GFX0.DD02._DCS, IntObj)
External (\_SB_.PCI0.GFX0.DD02._ADR, IntObj)
External (\_SB_.PCI0.GFX0.DD01._DGS, IntObj)
External (\_SB_.PCI0.GFX0.DD01._DCS, IntObj)
External (\_SB_.PCI0.GFX0.DD01._ADR, IntObj)
External (\_SB_.PCI0.PEG0.PEGP._ADR)
Scope (\_SB.PCI0.GFX0)
{
Method (MXVL, 1, Serialized)
{
Name (TMP0, Buffer (0x04)
{
0x00
})
CreateByteField (TMP0, Zero, DTYP)
CreateByteField (TMP0, One, DDSP)
CreateByteField (TMP0, 0x02, DAUX)
CreateByteField (TMP0, 0x03, DHPD)
Store (Arg0, DTYP)
ShiftRight (Arg0, 0x08, DDSP)
ShiftRight (Arg0, 0x10, DAUX)
ShiftRight (Arg0, 0x18, DHPD)
Return (TMP0)
}
Method (_DSM, 4, Serialized)
{
If (LEqual (Arg0, Buffer (0x10)
{
/* 0000 */ 0xD3, 0x73, 0xD8, 0x7E, 0xD0, 0xC2, 0x4F, 0x4E,
/* 0008 */ 0xA8, 0x54, 0x0F, 0x13, 0x17, 0xB0, 0x1C, 0x2C
}))
{
If (LEqual (Arg2, Zero))
{
Name (DRET, Buffer (0x04)
{
0x00
})
CreateWordField (DRET, Zero, F0SS)
CreateByteField (DRET, 0x03, TPVE)
Store (One, F0SS)
If (LEqual (And (SGMD, 0x0F), One))
{
Store (0x03, F0SS)
}
Else
{
Store (One, F0SS)
}
If (And (SGMD, 0x80))
{
Store (0x80, TPVE)
}
Return (DRET)
}
If (LEqual (Arg2, One))
{
Name (MXIF, Package (0x0A)
{
Zero,
Package (0x02)
{
Zero,
Buffer (0x04)
{
0x00
}
},
Package (0x02)
{
Zero,
Buffer (0x04)
{
0x00
}
},
Package (0x02)
{
Zero,
Buffer (0x04)
{
0x00
}
},
Package (0x02)
{
Zero,
Buffer (0x04)
{
0x00
}
},
Package (0x02)
{
Zero,
Buffer (0x04)
{
0x00
}
},
Package (0x02)
{
Zero,
Buffer (0x04)
{
0x00
}
},
Package (0x02)
{
Zero,
Buffer (0x04)
{
0x00
}
},
Package (0x02)
{
Zero,
Buffer (0x04)
{
0x00
}
},
Package (0x02)
{
Zero,
Buffer (0x04)
{
0x00
}
}
})
Store (NDID, Index (MXIF, Zero))
Store (DID1, Index (DerefOf (Index (MXIF, One)), Zero))
Store (DID2, Index (DerefOf (Index (MXIF, 0x02)), Zero))
Store (DID3, Index (DerefOf (Index (MXIF, 0x03)), Zero))
Store (DID4, Index (DerefOf (Index (MXIF, 0x04)), Zero))
Store (DID5, Index (DerefOf (Index (MXIF, 0x05)), Zero))
Store (DID6, Index (DerefOf (Index (MXIF, 0x06)), Zero))
Store (DID7, Index (DerefOf (Index (MXIF, 0x07)), Zero))
Store (DID8, Index (DerefOf (Index (MXIF, 0x08)), Zero))
Store (MXVL (MXD1), Index (DerefOf (Index (MXIF, One)), One
))
Store (MXVL (MXD2), Index (DerefOf (Index (MXIF, 0x02)), One
))
Store (MXVL (MXD3), Index (DerefOf (Index (MXIF, 0x03)), One
))
Store (MXVL (MXD4), Index (DerefOf (Index (MXIF, 0x04)), One
))
Store (MXVL (MXD5), Index (DerefOf (Index (MXIF, 0x05)), One
))
Store (MXVL (MXD6), Index (DerefOf (Index (MXIF, 0x06)), One
))
Store (MXVL (MXD7), Index (DerefOf (Index (MXIF, 0x07)), One
))
Store (MXVL (MXD8), Index (DerefOf (Index (MXIF, 0x08)), One
))
If (And (SGFL, One))
{
Store (0x80010306, Index (DerefOf (Index (MXIF, NDID)), Zero))
Store (MXVL (0x0101010E), Index (DerefOf (Index (MXIF, NDID)), One
))
}
Return (MXIF)
}
}
If (CondRefOf (\_SB.PCI0.GFX0.HDSM))
{
Return (\_SB.PCI0.GFX0.HDSM)
Arg0
Arg1
Arg2
Arg3
}
Return (One)
}
Method (IDAB, 0, Serialized)
{
If (LEqual (And (SGMD, 0x0F), One))
{
If (LEqual (SGFL, One))
{
WIID ()
}
}
Else
{
Store (Zero, NDID)
If (LNotEqual (DIDL, Zero))
{
Store (SDDL, DIDL)
DID1
}
If (LNotEqual (DDL2, Zero))
{
Store (SDDL, DDL2)
DID2
}
If (LNotEqual (DDL3, Zero))
{
Store (SDDL, DDL3)
DID3
}
If (LNotEqual (DDL4, Zero))
{
Store (SDDL, DDL4)
DID4
}
If (LNotEqual (DDL5, Zero))
{
Store (SDDL, DDL5)
DID5
}
If (LNotEqual (DDL6, Zero))
{
Store (SDDL, DDL6)
DID6
}
If (LNotEqual (DDL7, Zero))
{
Store (SDDL, DDL7)
DID7
}
If (LNotEqual (DDL8, Zero))
{
Store (SDDL, DDL8)
DID8
}
}
Return (Zero)
}
Method (HWID, 0, Serialized)
{
Name (TMP9, Package (0x09)
{
Ones,
Ones,
Ones,
Ones,
Ones,
Ones,
Ones,
Ones,
Ones
})
Store (Or (0x00010000, DID1), Index (TMP9, Zero))
Store (Or (0x00010000, DID2), Index (TMP9, One))
Store (Or (0x00010000, DID3), Index (TMP9, 0x02))
Store (Or (0x00010000, DID4), Index (TMP9, 0x03))
Store (Or (0x00010000, DID5), Index (TMP9, 0x04))
Store (Or (0x00010000, DID6), Index (TMP9, 0x05))
Store (Or (0x00010000, DID7), Index (TMP9, 0x06))
Store (Or (0x00010000, DID8), Index (TMP9, 0x07))
Store (Zero, Index (TMP9, 0x08))
If (And (SGFL, One))
{
Store (0x80010306, Index (TMP9, 0x08))
}
Return (TMP9)
}
Method (WIID, 0, Serialized)
{
Name (_T_0, Zero)
If (LEqual (And (DIDL, 0x0F0F), 0x0306))
{
Return (Zero)
}
If (LEqual (And (DID2, 0x0F0F), 0x0306))
{
Return (Zero)
}
If (LEqual (And (DID3, 0x0F0F), 0x0306))
{
Return (Zero)
}
If (LEqual (And (DID4, 0x0F0F), 0x0306))
{
Return (Zero)
}
If (LEqual (And (DID5, 0x0F0F), 0x0306))
{
Return (Zero)
}
If (LEqual (And (DID6, 0x0F0F), 0x0306))
{
Return (Zero)
}
If (LEqual (And (DID7, 0x0F0F), 0x0306))
{
Return (Zero)
}
If (LEqual (And (DID8, 0x0F0F), 0x0306))
{
Return (Zero)
}
Store (NDID, _T_0)
If (LEqual (_T_0, One))
{
Store (0x80010306, DID2)
Store (0x02, NDID)
}
Else
{
If (LEqual (_T_0, 0x02))
{
Store (0x80010306, DID3)
Store (0x03, NDID)
}
Else
{
If (LEqual (_T_0, 0x03))
{
Store (0x80010306, DID4)
Store (0x04, NDID)
}
Else
{
If (LEqual (_T_0, 0x04))
{
Store (0x80010306, DID5)
Store (0x05, NDID)
}
Else
{
If (LEqual (_T_0, 0x05))
{
Store (0x80010306, DID6)
Store (0x06, NDID)
}
Else
{
If (LEqual (_T_0, 0x06))
{
Store (0x80010306, DID7)
Store (0x07, NDID)
}
Else
{
If (LEqual (_T_0, 0x07))
{
Store (0x80010306, DID8)
Store (0x08, NDID)
}
Else
{
If (LEqual (_T_0, 0x08))
{
Store (0x09, NDID)
}
}
}
}
}
}
}
}
Return (Zero)
}
}
Scope (\_SB.PCI0.PEG0)
{
OperationRegion (RPCI, PCI_Config, Zero, 0xF0)
Field (RPCI, DWordAcc, Lock, Preserve)
{
Offset (0xB0),
ASPM, 2,
, 2,
LNKD, 1
}
OperationRegion (RPCX, SystemMemory, \XBAS (0x8400), Field (RPCX, DWordAcc, NoLock, Preserve)
{
Offset (0x8214),
Offset (0x8216),
LNKS, 4
})
}
Scope (\_SB.PCI0.PEG0.PEGP)
{
Name (ELCT, Zero)
Name (HVID, Zero)
Name (HDID, Zero)
OperationRegion (PCIS, SystemMemory, \EBAS (0xF0), Field (PCIS, DWordAcc, Lock, Preserve)
{
DVID, 16,
Offset (0x2C),
SVID, 16,
SDID, 16,
Offset (0x4C),
WVID, 16,
WDID, 16
})
OperationRegion (GPIO, SystemIO, \GBAS (0x60), Field (GPIO, ByteAcc, Lock, Preserve)
{
Offset (0x0C),
LVL0, 32,
Offset (0x38),
LVL1, 32,
Offset (0x48),
LVL2, 32
})
OperationRegion (PCAP, PCI_Config, \EECP (0x14), Field (PCAP, DWordAcc, NoLock, Preserve)
{
Offset (0x10),
LCTL, 16
})
Method (_INI, 0, NotSerialized)
{
Store (Zero, \_SB.PCI0.PEG0.PEGP._ADR)
}
Method (_ON, 0, Serialized)
{
SGPO (HLRS, One)
SGPO (PWEN, One)
Sleep (0x012C)
SGPO (HLRS, Zero)
Sleep (0x64)
Store (Zero, LNKD)
While (LLess (LNKS, 0x07))
{
Sleep (One)
}
Store (HVID, WVID)
Store (HDID, WDID)
Or (And (ELCT, 0x43), And (LCTL, 0xFFBC), LCTL)
Notify (\_SB.PCI0.PEG0, Zero)
P8XH (Zero, 0x88)
Return (One)
}
Method (_OFF, 0, Serialized)
{
Store (LCTL, ELCT)
Store (SVID, HVID)
Store (SDID, HDID)
Store (One, LNKD)
While (LNotEqual (LNKS, Zero))
{
Sleep (One)
}
P8XH (Zero, 0x75)
And (\_SB.PCI0.PEG0.PEGP.LVL1, 0xFFFEFFDF, \_SB.PCI0.PEG0.PEGP.LVL1)
Sleep (0x012C)
And (\_SB.PCI0.PEG0.PEGP.LVL0, 0xFFFEFFFF, \_SB.PCI0.PEG0.PEGP.LVL0)
P8XH (Zero, 0x77)
Notify (\_SB.PCI0.PEG0, Zero)
Return (Zero)
}
Method (_STA, 0, Serialized)
{
If (And (SGMD, 0x0F))
{
If (LEqual (SGPI (PWOK), One))
{
Return (0x0F)
}
Return (Zero)
}
If (LNotEqual (DVID, 0xFFFF))
{
Return (0x0F)
}
Return (Zero)
}
Method (_DOD, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0._DOD)
}
Device (DD01)
{
Method (_ADR, 0, Serialized)
{
Return (\_SB.PCI0.GFX0.DD01._ADR)
}
Method (_DCS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD01._DCS)
}
Method (_DGS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD01._DGS)
}
Method (_DSS, 1, NotSerialized)
{
}
}
Device (DD02)
{
Method (_ADR, 0, Serialized)
{
Return (\_SB.PCI0.GFX0.DD02._ADR)
}
Method (_DCS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD02._DCS)
}
Method (_DGS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD02._DGS)
}
Method (_DSS, 1, NotSerialized)
{
}
Method (_BCL, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD02._BCL)
}
Method (_BQC, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD02._BQC)
}
Method (_BCM, 1, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD02._BCM)
Arg0
}
}
Device (DD03)
{
Method (_ADR, 0, Serialized)
{
Return (\_SB.PCI0.GFX0.DD03._ADR)
}
Method (_DCS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD03._DCS)
}
Method (_DGS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD03._DGS)
}
Method (_DSS, 1, NotSerialized)
{
}
}
Device (DD04)
{
Method (_ADR, 0, Serialized)
{
Return (\_SB.PCI0.GFX0.DD04._ADR)
}
Method (_DCS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD04._DCS)
}
Method (_DGS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD04._DGS)
}
Method (_DSS, 1, NotSerialized)
{
}
}
Device (DD05)
{
Method (_ADR, 0, Serialized)
{
Return (\_SB.PCI0.GFX0.DD05._ADR)
}
Method (_DCS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD05._DCS)
}
Method (_DGS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD05._DGS)
}
Method (_DSS, 1, NotSerialized)
{
}
}
Device (DD06)
{
Method (_ADR, 0, Serialized)
{
Return (\_SB.PCI0.GFX0.DD06._ADR)
}
Method (_DCS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD06._DCS)
}
Method (_DGS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD06._DGS)
}
Method (_DSS, 1, NotSerialized)
{
}
}
Device (DD07)
{
Method (_ADR, 0, Serialized)
{
Return (\_SB.PCI0.GFX0.DD07._ADR)
}
Method (_DCS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD07._DCS)
}
Method (_DGS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD07._DGS)
}
Method (_DSS, 1, NotSerialized)
{
}
}
Device (DD08)
{
Method (_ADR, 0, Serialized)
{
Return (\_SB.PCI0.GFX0.DD08._ADR)
}
Method (_DCS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD08._DCS)
}
Method (_DGS, 0, NotSerialized)
{
Return (\_SB.PCI0.GFX0.DD08._DGS)
}
Method (_DSS, 1, NotSerialized)
{
}
}
Method (SGPI, 1, Serialized)
{
ShiftRight (Arg0, 0x07, Local1)
And (Arg0, 0x7F, Arg0)
If (LLess (Arg0, 0x20))
{
Store (\_SB.PCI0.PEG0.PEGP.LVL0, Local0)
ShiftRight (Local0, Arg0, Local0)
}
Else
{
If (LLess (Arg0, 0x40))
{
Store (\_SB.PCI0.PEG0.PEGP.LVL1, Local0)
ShiftRight (Local0, Subtract (Arg0, 0x20), Local0)
}
Else
{
Store (\_SB.PCI0.PEG0.PEGP.LVL2, Local0)
ShiftRight (Local0, Subtract (Arg0, 0x40), Local0)
}
}
If (LEqual (Local1, Zero))
{
Not (Local0, Local0)
}
Return (And (Local0, One))
}
Method (SGPO, 2, Serialized)
{
ShiftRight (Arg0, 0x07, Local3)
And (Arg0, 0x7F, Arg0)
If (LEqual (Local3, Zero))
{
Not (Arg1, Local3)
And (Local3, One, Local3)
}
If (LLess (Arg0, 0x20))
{
ShiftLeft (Local3, Arg0, Local0)
ShiftLeft (One, Arg0, Local1)
And (\_SB.PCI0.PEG0.PEGP.LVL0, Not (Local1), Local2)
Or (Local2, Local0, \_SB.PCI0.PEG0.PEGP.LVL0)
}
Else
{
If (LLess (Arg0, 0x40))
{
ShiftLeft (Local3, Subtract (Arg0, 0x20), Local0)
ShiftLeft (One, Subtract (Arg0, 0x20), Local1)
And (\_SB.PCI0.PEG0.PEGP.LVL1, Not (Local1), Local2)
Or (Local2, Local0, \_SB.PCI0.PEG0.PEGP.LVL1)
}
Else
{
ShiftLeft (Local3, Subtract (Arg0, 0x40), Local0)
ShiftLeft (One, Subtract (Arg0, 0x40), Local1)
And (\_SB.PCI0.PEG0.PEGP.LVL2, Not (Local1), Local2)
Or (Local2, Local0, \_SB.PCI0.PEG0.PEGP.LVL2)
}
}
Return (One)
}
}
}
find
quote
#82
Could try calling _ON inside the INI () when PCI0 is initialized.
I may take a look later at what these control methods do..
find
quote
#83
Yeah ... try it his way:
Include external method to enable the card in DSDT
Code:
External (\_PR_.CPU0._PPC)
    External (\_SB_.PCI0.PEG0.PEGP.DD02)
    External (\_SB_.PCI0.PEG0.PEGP._ON, MethodObj)    // 0 Arguments
Actually in AmdRef they call it ._ON_ for some reason, even though the method in SgRef is clearly called just ._ON
Enable it during PCI0 initialization when OS version is being determined.
Code:
Scope (_SB.PCI0)
    {
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            Store (0x07D0, OSYS)
            If (CondRefOf (_OSI, Local0))
            {
                If (_OSI ("Linux"))
                {
                    Store (0x03E8, OSYS)
                }

                If (_OSI ("Windows 2001"))
                {
                    Store (0x07D1, OSYS)
                }

                If (_OSI ("Windows 2001 SP1"))
                {
                    Store (0x07D1, OSYS)
                }

                If (_OSI ("Windows 2001 SP2"))
                {
                    Store (0x07D2, OSYS)
                }

                If (_OSI ("Windows 2001.1"))
                {
                    Store (0x07D3, OSYS)
                }

                If (_OSI ("Windows 2006"))
                {
                    Store (0x07D6, OSYS)
                }

                If (_OSI ("Windows 2009"))
                {
                    Store (0x07D9, OSYS)
                }

                If (_OSI ("Windows 2012"))
                {
                    Store (0x07DC, OSYS)
                }
            }

            If (LOr (LEqual (OSYS, 0x07D1), LEqual (OSYS, 0x07D2)))
            {
                PHSR (0xB5)
            }
            
            \_SB.PCI0.PEG0.PEGP._ON ()
        }

Snoop the _OFF part from the control method in AmdRef
Code:
Method (PX02, 1, NotSerialized)
        {
            If (LEqual (Arg0, One))
            {
                \_SB.PCI0.PEG0.PEGP._ON ()
            }

            If (LEqual (Arg0, Zero))
            {
                \_SB.PCI0.PEG0.PEGP._ON ()
            }
        }

And see what it brings you ...
find
quote
#84
OK, thanks for the input!

I'm having some trouble getting this stuff to work though. Dell's DSDT seems to be a mess, even the unmodified code compiles with a bunch of errors. I still managed to get DSDT.aml by using DSDT Editor's "Fix errors" function, but AmdRef/AmdTabl doesn't compile anyway. Is it possible to get around that?

Also, if I understand correctly, once I'm done getting modified .asl files, I should somehow put them into a .MOD file to inject them into the BIOS image using PhoenixTool, right? Cause all ACPI tables seem to be inside that "7E374E25-8E01-4FEE-87F2-390C23C606CD.MOD" file.
find
quote
#85
Yeah they don't follow ACPI spec in some places. Some of the methods which should return a value do nothing hence the compiler thinks that's an error. Adding a Return (0x00) to these methods will help (one of these methods is PX02 for eg)
There's a weird construction in DSDT which essentially doesn't even do anything .. and prevents from compiling properly. This check is basically implemented poorly. Windows 2009 is Windows 7, whereas Windows 2006 is Windows Vista.
Code:
If (Or (_OSI ("Windows 2006"), _OSI ("Windows 2009")))
                {
                    Device (MBT)
                    {
                        Name (_HID, EisaId ("PNP0C32"))  // _HID: Hardware ID
                        Method (GHID, 0, NotSerialized)
                        {
                            Return (Buffer (One)
                            {
                                 0x02
                            })
                        }
                    }
                }
I'm not even sure what is this device supposed to be but such EISA ID is usually for buttons. The method GHID points out that it uses HID methods, may be Media Buttons (3 illuminated buttons on the right)...

Not quite .. you get them from PhoenixTool extracted DUMP/DUMP and decompile from .ROM to .dsl, edit and recompile as .asl -> rename to .ROM and compress back into your bios as if they were regular .efi modules.

DSDT.AML 7E374E25-8E01-4FEE-87F2-390C23C606CD
SSDT-1.AML 7E374E25-8E01-4FEE-87F2-390C23C606CD
SSDT-2.AML CACB3817-81E6-497E-87FF-C8FA8F24EC28
SSDT-3.AML 76AED82E-77DE-42CA-8C27-E9D71DF606C7
SSDT-4.AML 299141BB-211A-48A5-92C0-6F9A0A3A006E
SSDT-5.AML 299141BB-211A-48A5-92C0-6F9A0A3A006E
SSDT-6.AML 299141BB-211A-48A5-92C0-6F9A0A3A006E
SSDT-7.AML 299141BB-211A-48A5-92C0-6F9A0A3A006E
SSDT-8.AML 299141BB-211A-48A5-92C0-6F9A0A3A006E
SSDT-9.AML 299141BB-211A-48A5-92C0-6F9A0A3A006E

7E374E25-8E01-4FEE-87F2-390C23C606CD -> TrmRef (PTID) and DSDT
299141BB-211A-48A5-92C0-6F9A0A3A006E - > PmRef
76AED82E-77DE-42CA-8C27-E9D71DF606C7 -> AmdRef
CACB3817-81E6-497E-87FF-C8FA8F24EC28 -> SgRef
find
quote
#86
Oh, by the way @HairyCube
I was always wondering about what does BRID 8-bit register meant in Dell's DSDT. I'ts being used for all sorts of things like PEGP AMD notification to DD02 (LVDS display)
Code:
Store (Zero, Local0)
                            If (LEqual (BRID, One))
                            {
                                Notify (^^^PEG0.PEGP.DD02, 0x86)
                            }

Code:
Store (Zero, Local0)
                            If (LEqual (BRID, One))
                            {
                                Notify (^^^PEG0.PEGP.DD02, 0x87)
                            }
Also in _QE3 which is power adapter related EC Query
Code:
If (LEqual (BRID, Zero))
                        {
                            Store (0x41, Local7)
                        }

                        If (LEqual (BRID, One))
                        {
                            Store (0x5A, Local7)
                        }
Guess different Wattage adapters will store different values (65W for Intel-only and 90W for AMD-DIS) in local Variable 7.

But also this BRID is used to determine what HID input device machines utilizes:
Code:
Device (PS2M)
                {
                    Method (_HID, 0, NotSerialized)  // _HID: Hardware ID
                    {
                        If (LEqual (BRID, One))
                        {
                            Return (0xC5048C11)
                        }
                        Else
                        {
                            Return (0xD9048C11)
                        }
                    }
Mine has 0xD9048C11, you can check this in Device Manager > Mice > Dell Touchpad > Properties > Details > Hardware IDs.
It's in little endian in dsdt ... 0x118C stands for DLL (Dell's Vendor ID) and 0x04D9 stands for Product ID.. so this translates into a model of DLL04D9.
If yours has DLL04C5 then we can assume BRID is an identification for AMD-based machines (because it will be equal to 0x01 for this identifier to apper).
find
quote
#87
Yeah, I just checked it and it's DLL04C5. Which sucks by the way, because you can't disable it using Fn+F3 if you have a standard Windows mouse driver installed for it. My goodness, this DSDT mess is a complete mystery Smile

On a side note, how do I make Phoenix Tool compress stuff back once I replace files in the DUMP folder? I only know how to replace .MOD modules directly by clicking Replace, as it will force Phoenix Tool to rebuild the image...
find
quote
#88
There's new Dell 16.2 driver out there for touchpad which enables all the new Windows 8 gestures .. but still fails at Fn+F3. Look for Touchpad_Synaptics_W84_X10_A02_Setup-NVCD2_ZPE.exe

I've mentioned why this happens and what can be done about it in 15z thread .. I don't fell like doing it any time soon though .. maybe they will release new driver or something.. but I highly doubt it since this one says 'Fix Fn+F3 issue' without actually fixing it ..

You don't replace anything directly, you have to wait for a prompt ..
1. Set Manufacturer as Dell
2. Go to Advanced, Click Yes
3. In Control Options section choose 'No SLIC' and 'Allow users to modify other modules'
4. Press Go and wait for the prompt, replace all the desired modules and click OK
5. PhoenixTool will adjust necessary checksums and rebuild the capsule with new set of modules
find
quote
#89
Sorry to bother you, but it appears that I'm doing something wrong. I replaced the DSDT rom and rebuilt the BIOS image, but once the laptop restarts to boot into the capsule, I get a blank screen and nothing happens until I turn it off. I tried again with a clean image and it worked fine. I also rebuilt the image with an unmodified DSDT file and it worked fine too. I assume it just doesn't like the DSDT file I'm replacing.
To modify the DSDT file, I did the following:
1. Opened DSDT Editor for Windows (DSDTParser.jar)
2. Opened the rom file I got from the DUMP folder
3. Edited it as you suggested in your post
4. Saved DSL
5. IASL->Compile->Fix errors

Any ideas?
find
quote
#90
Actually now that I'm thinking about it .. there must be a EC query assigned to this hotkey sequence .. there are plenty of empty ones that do virtually nothing.
I remember there was a 8bit register in EC which indicated that touchpad was enabled (00) or disabled (01) .. and I recall setting the byte to 00 and the LED stayed orange but toucpad got enabled ... now because of quirky drivers I can't reproduce this behavior ..

If we can find the register to where the byte is stored it could be possible to write a 01 to it after getting the WMI scancode of 0xE01E from the Fn+F3 combination press.

Something along the lines of
Code:
Method (_Q8x, 0, NotSerialized)
                    {
                        If (LEqual (????, 0x00))
                        {
                            Store (0x01, ????)
                        }
                        Else
                        {
                            Store (0x00, ????)
                        }
                        Store (0x02, ^^^^AMW0.INF0)
                        Store (Zero, ^^^^AMW0.INF1)
                        Store (0xE01E, ^^^^AMW0.INF2)
                        If (LEqual (DMFG, Zero))
                        {
                            Notify (AMW0, 0xD0)
                        }
                    }

I don't *do* DSDT Editors ..
iasl.exe -d -2 7E374E25-8E01-4FEE-87F2-390C23C606CD_bla_bla.ROM
Notepad++ -> make necessary changes
iasl.exe -oa 7E374E25-8E01-4FEE-87F2-390C23C606CD_bla_bla.dsl (to avoid compiler's optimization)
rename *.aml to *.ROM
reintegrate using PhoenixTool.

Also I have never altered DSDT in such a way myself ..I've seen @kasar posting some similar behavior to the one you describe - the capsule refuses to load and it just stay on the black screen. In such a case I would advise trying to use v2.02 of PhoenixTool and also try to decompress the rom that you just created to determine it's integrity.
find
quote


Forum Jump:


Users browsing this thread: 7 Guest(s)