I found that a string hda-gfx is injected at 2 places, inside GFX node and HDEF one, and this stuff comes from DSDT.
As I really don't like to mess with DSDT I leave it up to you to find how to copy it on your own hardware.
Maybe it works only with nvidia, I don't really know.
GFX area :
CODE
Scope (\_SB.PCI0.IXVE.IGPU)
{
OperationRegion (A1E0, PCI_Config, 0x00, 0x40)
Field (A1E0, ByteAcc, NoLock, Preserve)
{
VID, 16,
DID, 16
}
Method (CMPB, 2, NotSerialized)
{
Store (SizeOf (Arg0), Local1)
If (LNotEqual (Local1, SizeOf (Arg1)))
{
Return (0x00)
}
Store (0x00, Local0)
While (LLess (Local0, Local1))
{
If (LNotEqual (DerefOf (Index (Arg0, Local0)), DerefOf (Index (
Arg1, Local0))))
{
Return (0x00)
}
Increment (Local0)
}
Return (0x01)
}
Method (_DSM, 4, NotSerialized)
{
Name (GUI1, Buffer (0x10)
{
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
/* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
})
If (LEqual (CMPB (Arg0, GUI1), 0x01))
{
If (LNotEqual (And (DID, 0xFFFF), 0xFFFF))
{
Store (Package (0x02)
{
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Return (0x80000002)
}
Store ("----- IGPU _DSM --------", Debug)
If (CMPB (Arg0, Buffer (0x10)
{
/* 0000 */ 0x75, 0x0B, 0xA5, 0xD4, 0xC7, 0x65, 0xF7, 0x46,
/* 0008 */ 0xBF, 0xB7, 0x41, 0x51, 0x4C, 0xEA, 0x02, 0x44
}))
{
Return (NBCI (Arg0, Arg1, Arg2, Arg3))
}
Return (0x80000002)
}
}
{
OperationRegion (A1E0, PCI_Config, 0x00, 0x40)
Field (A1E0, ByteAcc, NoLock, Preserve)
{
VID, 16,
DID, 16
}
Method (CMPB, 2, NotSerialized)
{
Store (SizeOf (Arg0), Local1)
If (LNotEqual (Local1, SizeOf (Arg1)))
{
Return (0x00)
}
Store (0x00, Local0)
While (LLess (Local0, Local1))
{
If (LNotEqual (DerefOf (Index (Arg0, Local0)), DerefOf (Index (
Arg1, Local0))))
{
Return (0x00)
}
Increment (Local0)
}
Return (0x01)
}
Method (_DSM, 4, NotSerialized)
{
Name (GUI1, Buffer (0x10)
{
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
/* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
})
If (LEqual (CMPB (Arg0, GUI1), 0x01))
{
If (LNotEqual (And (DID, 0xFFFF), 0xFFFF))
{
Store (Package (0x02)
{
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Return (0x80000002)
}
Store ("----- IGPU _DSM --------", Debug)
If (CMPB (Arg0, Buffer (0x10)
{
/* 0000 */ 0x75, 0x0B, 0xA5, 0xD4, 0xC7, 0x65, 0xF7, 0x46,
/* 0008 */ 0xBF, 0xB7, 0x41, 0x51, 0x4C, 0xEA, 0x02, 0x44
}))
{
Return (NBCI (Arg0, Arg1, Arg2, Arg3))
}
Return (0x80000002)
}
}
HDEF area :
CODE
Scope (\_SB.PCI0.IXVE.IGPU)
{
OperationRegion (A1E0, PCI_Config, 0x00, 0x40)
Field (A1E0, ByteAcc, NoLock, Preserve)
{
VID, 16,
DID, 16
}
Method (CMPB, 2, NotSerialized)
{
Store (SizeOf (Arg0), Local1)
If (LNotEqual (Local1, SizeOf (Arg1)))
{
Return (0x00)
}
Store (0x00, Local0)
While (LLess (Local0, Local1))
{
If (LNotEqual (DerefOf (Index (Arg0, Local0)), DerefOf (Index (
Arg1, Local0))))
{
Return (0x00)
}
Increment (Local0)
}
Return (0x01)
}
Method (_DSM, 4, NotSerialized)
{
Name (GUI1, Buffer (0x10)
{
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
/* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
})
If (LEqual (CMPB (Arg0, GUI1), 0x01))
{
If (LNotEqual (And (DID, 0xFFFF), 0xFFFF))
{
Store (Package (0x02)
{
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Return (0x80000002)
}
Store ("----- IGPU _DSM --------", Debug)
If (CMPB (Arg0, Buffer (0x10)
{
/* 0000 */ 0x75, 0x0B, 0xA5, 0xD4, 0xC7, 0x65, 0xF7, 0x46,
/* 0008 */ 0xBF, 0xB7, 0x41, 0x51, 0x4C, 0xEA, 0x02, 0x44
}))
{
Return (NBCI (Arg0, Arg1, Arg2, Arg3))
}
Return (0x80000002)
}
}
{
OperationRegion (A1E0, PCI_Config, 0x00, 0x40)
Field (A1E0, ByteAcc, NoLock, Preserve)
{
VID, 16,
DID, 16
}
Method (CMPB, 2, NotSerialized)
{
Store (SizeOf (Arg0), Local1)
If (LNotEqual (Local1, SizeOf (Arg1)))
{
Return (0x00)
}
Store (0x00, Local0)
While (LLess (Local0, Local1))
{
If (LNotEqual (DerefOf (Index (Arg0, Local0)), DerefOf (Index (
Arg1, Local0))))
{
Return (0x00)
}
Increment (Local0)
}
Return (0x01)
}
Method (_DSM, 4, NotSerialized)
{
Name (GUI1, Buffer (0x10)
{
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
/* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
})
If (LEqual (CMPB (Arg0, GUI1), 0x01))
{
If (LNotEqual (And (DID, 0xFFFF), 0xFFFF))
{
Store (Package (0x02)
{
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Return (0x80000002)
}
Store ("----- IGPU _DSM --------", Debug)
If (CMPB (Arg0, Buffer (0x10)
{
/* 0000 */ 0x75, 0x0B, 0xA5, 0xD4, 0xC7, 0x65, 0xF7, 0x46,
/* 0008 */ 0xBF, 0xB7, 0x41, 0x51, 0x4C, 0xEA, 0x02, 0x44
}))
{
Return (NBCI (Arg0, Arg1, Arg2, Arg3))
}
Return (0x80000002)
}
}
My guess is that you just inject "hda-gfx"="onboard-1" to your HDEF and GFX nodes, then ensure your mobo audio header is detected and working.
If you go somewhere with that keep us updated thanks.





Apr 18 2010, 03:42 PM





