Jump to content

Intel HD Graphics 4600 (Haswell) working displayport

ig-platform-id

Best Answer ErmaC, 29 July 2013 - 01:35 AM

Also would be nice get the complete name scheme:
Here the incomplete (probably with error) list:

	/* Haswell */
//	{ 0x80860402, "HD Graphics ????"        }, // Haswell Integrated Graphics Controller
	{ 0x80860406, "HD Graphics 4200 Mobile" }, // Haswell Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x8086040a, "HD Graphics 4400"        }, // Haswell Integrated Graphics Controller
	{ 0x80860412, "HD Graphics 4600"        }, // Haswell Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
	{ 0x80860416, "HD Graphics 4600 Mobile"	}, // Haswell Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x8086041a, "HD Graphics P4600/P4700" }, // Haswell Integrated Graphics Controller
//	{ 0x80860422, "HD Graphics "		}, // Haswell Integrated Graphics Controller
	{ 0x80860426, "HD Graphics 4600 Mobile"	}, // Haswell Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x8086042a, "HD Graphics "		}, // Haswell Integrated Graphics Controller
	/* - - */
//	{ 0x80860a06, "HD Graphics ???? Mobile" }, // Haswell-ULT Integrated Graphics Controller
//	{ 0x80860a0e, "HD Graphics ???? Mobile" },
//	{ 0x80860a16, "HD Graphics ???? Mobile" }, // Haswell-ULT Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x80860a1e, "HD Graphics ???? Mobile" },
//	{ 0x80860a22, "????"                    }, // Haswell-ULT Integrated Graphics Controller
	{ 0x80860a26, "HD Graphics 5000 Mobile" }, // Haswell-ULT Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x80860a2a, "????"                    }, // Haswell-ULT Integrated Graphics Controller
	{ 0x80860a2e, "HD Graphics 5100 Mobile" }, // AppleIntelHD5000Graphics.kext

//	{ 0x80860c02, "Haswell HD Graphics"	},
	{ 0x80860c06, "HD Graphics Mobile"	}, // AppleIntelHD5000Graphics.kext
//	{ 0x80860c12, "Haswell HD Graphics"	},
	{ 0x80860c16, "HD Graphics Mobile"	}, // AppleIntelHD5000Graphics.kext
	{ 0x80860c22, "HD Graphics"		}, // AppleIntelHD5000Graphics.kext
	{ 0x80860c26, "HD Graphics Mobile"	}, // AppleIntelHD5000Graphics.kext
//	{ 0x80860d12, "HD Graphics 4600"	},
	{ 0x80860d22, "HD Graphics 5200"	}, // AppleIntelHD5000Graphics.kext
//	{ 0x80860d16, "HD Graphics 4600 Mobile"	}, // Crystal Well Integrated Graphics Controller
	{ 0x80860d26, "HD Graphics 5200 Mobile" }, // Crystal Well Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x80860d36, "????"			}, // Crystal Well Integrated Graphics Controller

	/* - - */
Go to the full post


  • Please log in to reply
187 replies to this topic

#21
jsl

jsl

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 237 posts

If you look at your ioreg -lw0 -r -n IGPU (or -n GFX0 depending upon how your dsdt is set up), you see the AAPL-ig-platform-id injection key and value, as well as 3 child AppleIntelFramebuffer nodes. From your ioregistry, this shows that your injection was done right and the driver attached (matched up to the real hardware).

Looking a little further, we can see that none of your AppleIntelFramebuffer nodes have IOFBDetailedTimings, so none of your ports picked up the EDID from your display. I don't know why; perhaps you have your BIOS set to disable your built-in graphics if pci-express graphics are installed? Have you tried without your nvidia graphics installed?

Thanks for your explanation and suggestion.

I have Enable both IGPU and Nvidia Graphics in BIOS to get this IORegistry and Load AppleIntelFramebuffer & AppleIntelHD5000.

Unfortunately if I remove my Nvidia card after booting the screen freezes after IOBluetooth completed.

So is there any further advice for me now ?

Should I put 7 SSDT.aml in /Extra too ?



#22
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 1,693 posts
  • Gender:Male
  • Location:Italy

Wish he'd get it cleaned up & in the mainline. I see just a binary-only module in the branch.

Hi bcc9, Hi toleda,
 
ErmaC has not yet published that implementation, but I think this topic is very interesting. Unfortunately I do not have that hardware to test, for which a list of all possible ig-platform with associated device ID can help for that implementation...to put it in gma.c (lunch ready  ^_^ ...)
 
In Enoch the Key to be set for HD4000 ig-platforms in ocbp is HD4K-ig=x , but can be created another called HD5K-ig for the new Integrated GPU.
 
 
Micky


#23
Mirone

Mirone

    InsanelyMac Legend

  • Local Moderators
  • 1,377 posts
  • Gender:Male
  • Location:Brazil
I'm having black screen after installing DP4 mavericks,
using the HDMI someone has a solution?
P.S: If I disconnect the HDMI cable
during boot, everything works fine.


#24
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,277 posts
  • Gender:Male

Thanks for your explanation and suggestion.
I have Enable both IGPU and Nvidia Graphics in BIOS to get this IORegistry and Load AppleIntelFramebuffer & AppleIntelHD5000.
Unfortunately if I remove my Nvidia card after booting the screen freezes after IOBluetooth completed.
So is there any further advice for me now ?
Should I put 7 SSDT.aml in /Extra too ?

Not sure what you mean by 7 SSDT. You can use a dsdt edit or an ssdt edit, up to you.
Have you tried other graphics ports on the motherboard?
Perhaps try what mirone23 did - hotplugging the HDMI after boot.
Check also if your system is logging errors in /var/log/system.log

In Enoch the Key to be set for HD4000 ig-platforms in ocbp is HD4K-ig=x , but can be created another called HD5K-ig for the new Integrated GPU.
 
here the link http://www.insanelym...ig-platform-id/
 
Micky

Hi, thanks for the link.

Not sure that naming scheme is going to work out very well. The ivy bridge integrated graphics added hd graphics 4000, now the haswell graphics added hd graphics 4600/4400/4200 (and 5000/5100/5200). So thanks to intel's crazy naming scheme, that HD4K-ig key is overloaded.

Seems that the keyword doesn't even need the marketing number in it. I'd suggest a more general keyword such as intel-integrated, where the possible choices are built-in, and dynamically determined depending upon the PCI ID of the detected hardware.
For haswell hd graphics 4600, with PCI ID 8086:0412 the choices 0, 1, 2 could be the 3 platform-ids mentioned in this thread.

#25
toleda

toleda

    InsanelyMac Legend

  • Gurus
  • 807 posts
  • Gender:Male

 

I'm having black screen after installing DP4 mavericks,
using the HDMI someone has a solution?
 

What framebuffer are you using?  Even though the thread topic is DP, try the 00 00 16 04 framebuffer for HDMI boot.



#26
Mirone

Mirone

    InsanelyMac Legend

  • Local Moderators
  • 1,377 posts
  • Gender:Male
  • Location:Brazil
Hi Toleda.
I'm having this problem with a video card,
NVidia Geforce GT620.
My injection is
by DSDT
using Graphicsinjetion = No in clover.


#27
toleda

toleda

    InsanelyMac Legend

  • Gurus
  • 807 posts
  • Gender:Male

 

I'm having this problem with a video card,
NVidia Geforce GT620.
 

Are you using a Haswell processor with HD4600 graphics?  If not, post is off topic.



#28
jsl

jsl

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 237 posts

Not sure what you mean by 7 SSDT. You can use a dsdt edit or an ssdt edit, up to you.
Have you tried other graphics ports on the motherboard?
Perhaps try what mirone23 did - hotplugging the HDMI after boot.
Check also if your system is logging errors in /var/log/system.log
Hi, thanks for the link.

Not sure that naming scheme is going to work out very well. The ivy bridge integrated graphics added hd graphics 4000, now the haswell graphics added hd graphics 4600/4400/4200 (and 5000/5100/5200). So thanks to intel's crazy naming scheme, that HD4K-ig key is overloaded.

Seems that the keyword doesn't even need the marketing number in it. I'd suggest a more general keyword such as intel-integrated, where the possible choices are built-in, and dynamically determined depending upon the PCI ID of the detected hardware.
For haswell hd graphics 4600, with PCI ID 8086:0412 the choices 0, 1, 2 could be the 3 platform-ids mentioned in this thread.

Thanks for your advice.

Finally got my Intel HD 4600 Graphics working at DP3/DP4 via mDP-->HDMI convertor.

Basically I need editing SSDT.aml and set ig-platform-id to 0000260c or 0000160a, and copy my SSDT-1.aml ~ SSDT-7.aml to /Extra too otherwise it may cause KP during booting.

Another issue bothers me a lot is I need add -f to org.chameleon.Boot.plist otherwise the above-mentioned will not work and freezes during booting


The graphics update 1.0 that was pushed out between DP3 and DP4 broke my system, but when I restored back to DP3, skipped the graphics update, and went straight to DP4, then everything was fine. Maybe it's just the graphics update 1.0 that is causing people problems?

Definitely that Graphics Update broke my Intel HD 4600 Graphics !



#29
Cobra03

Cobra03

    InsanelyMac Protégé

  • Members
  • PipPip
  • 94 posts
  • Gender:Male
  • Location:US

So it turns out I wasn't able to just add to the existing GFX0 device entry in my DSDT when it isn't declared until an SSDT. (Any GFX0 definition in the DSDT overrides the SSDT one). To add to GFX0 I had to instead move the injection string to an SSDT, and this works. So here's an example alternate way to inject this, in its entirety. Works on my gigabyte system:

/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20120913-64 [Sep 15 2012]
 * Copyright (c) 2000 - 2012 Intel Corporation
 */

DefinitionBlock ("SSDT.aml", "SSDT", 1, "SaSsd", "SaSsdt", 0x00003000)
{
    External (\_SB_.PCI0.GFX0, DeviceObj)
    Scope (\_SB.PCI0.GFX0)
    {
            Method (_DSM, 4, NotSerialized)
            {
                Store (Package (0x04)
                {
                      "AAPL,ig-platform-id",
                       Buffer (0x04) { 0x03, 0x00, 0x22, 0x0d },
		      "hda-gfx", Buffer () { "onboard-1" }
                  }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
                }
    }
    Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, Buffer (0x10)
                {
                    /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, 
                    /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                }))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                            0x03
                        }, Arg4)
                    Return (One)
                }

                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }

        Store (Buffer (One)
            {
                0x00
            }, Arg4)
        Return (Zero)
    }
}

I was wrong about chameleon too - I add the above to /Extra/SSDT.dsl and chameleon picks it up and osx reads in the rest of the ssdt's as well.

YES!! I was just about to come post about the SSDT edits when I read this! lol I've been looking at this issue for three days now. Then it dawned on me while looking at the DSDT Definitions where "External".  It was staring me right in the face... Well glad to see someone smarter than me figured it out first! 



#30
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,631 posts
  • Gender:Male
  • Location:Canary Islands

Not sure that naming scheme is going to work out very well. The ivy bridge integrated graphics added hd graphics 4000, now the haswell graphics added hd graphics 4600/4400/4200 (and 5000/5100/5200). So thanks to intel's crazy naming scheme, that HD4K-ig key is overloaded.

Seems that the keyword doesn't even need the marketing number in it. I'd suggest a more general keyword such as intel-integrated, where the possible choices are built-in, and dynamically determined depending upon the PCI ID of the detected hardware.
For haswell hd graphics 4600, with PCI ID 8086:0412 the choices 0, 1, 2 could be the 3 platform-ids mentioned in this thread.


Hi bcc9 and all.
I don't have this hardware at all :( so what I post here are just info:
This is the set of "available" FB I will implement in Enoch
	{ 0x00,0x00,0x06,0x04 },	// 0 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - mobile GT1
	{ 0x00,0x00,0x06,0x0c },	// 1 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - SDV mobile GT1
	{ 0x00,0x00,0x16,0x04 },	// 2 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - mobile GT2
	{ 0x00,0x00,0x16,0x0a },	// 3 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT2
	{ 0x00,0x00,0x16,0x0c },	// 4 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - SDV mobile GT2
	{ 0x00,0x00,0x26,0x04 },	// 5 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - mobile GT3
	{ 0x00,0x00,0x26,0x0a },	// 6 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3
	{ 0x00,0x00,0x26,0x0c },	// 7 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - SDV mobile GT3
	{ 0x00,0x00,0x26,0x0d }, 	// 8 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - CRW mobile GT3
	{ 0x02,0x00,0x16,0x04 },	// 9 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 1, Ports: 1, FBMem: 1 - mobile GT2
	{ 0x03,0x00,0x22,0x0d }, 	// 10 "AAPL,ig-platform-id" HD5000 //FB: 0MB, Pipes: 0, Ports: 0, FBMem: 0 - CRW Desktop GT3
	{ 0x05,0x00,0x26,0x0a },	// 11 "AAPL,ig-platform-id" HD5000 //FB: 32MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3
	{ 0x06,0x00,0x26,0x0a },	// 12 "AAPL,ig-platform-id" HD5000 //FB: 32MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3
	{ 0x07,0x00,0x26,0x0d }, 	// 13 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 4, FBMem: 3 - CRW mobile GT3
	{ 0x08,0x00,0x26,0x0a },	// 14 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3
	{ 0x08,0x00,0x2e,0x0a } 	// 15 "AAPL,ig-platform-id" HD5000 //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT reserved GT3
And Yep also for each deviceID will be add the correct name… or alternatively could be used a "range" of IDs

Fabio (ErmaC)

#31
jsl

jsl

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 237 posts

...

Thanks and hope you can implement these in your bootloader as soon as possible.
I can confirm that because Asus Z87 Deluxe Dual has fixed 64 MB FBMem, both 0x00 0x00 0x16 0x0a  and 0x00 0x00 0x26 0x0c are working at DP3/DP4.
But 0x03 0x00 0x22 0x0d (0 MB) will cause KP for it immediately.

#32
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,631 posts
  • Gender:Male
  • Location:Canary Islands

Best Answer

Also would be nice get the complete name scheme:
Here the incomplete (probably with error) list:
	/* Haswell */
//	{ 0x80860402, "HD Graphics ????"        }, // Haswell Integrated Graphics Controller
	{ 0x80860406, "HD Graphics 4200 Mobile" }, // Haswell Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x8086040a, "HD Graphics 4400"        }, // Haswell Integrated Graphics Controller
	{ 0x80860412, "HD Graphics 4600"        }, // Haswell Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
	{ 0x80860416, "HD Graphics 4600 Mobile"	}, // Haswell Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x8086041a, "HD Graphics P4600/P4700" }, // Haswell Integrated Graphics Controller
//	{ 0x80860422, "HD Graphics "		}, // Haswell Integrated Graphics Controller
	{ 0x80860426, "HD Graphics 4600 Mobile"	}, // Haswell Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x8086042a, "HD Graphics "		}, // Haswell Integrated Graphics Controller
	/* - - */
//	{ 0x80860a06, "HD Graphics ???? Mobile" }, // Haswell-ULT Integrated Graphics Controller
//	{ 0x80860a0e, "HD Graphics ???? Mobile" },
//	{ 0x80860a16, "HD Graphics ???? Mobile" }, // Haswell-ULT Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x80860a1e, "HD Graphics ???? Mobile" },
//	{ 0x80860a22, "????"                    }, // Haswell-ULT Integrated Graphics Controller
	{ 0x80860a26, "HD Graphics 5000 Mobile" }, // Haswell-ULT Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x80860a2a, "????"                    }, // Haswell-ULT Integrated Graphics Controller
	{ 0x80860a2e, "HD Graphics 5100 Mobile" }, // AppleIntelHD5000Graphics.kext

//	{ 0x80860c02, "Haswell HD Graphics"	},
	{ 0x80860c06, "HD Graphics Mobile"	}, // AppleIntelHD5000Graphics.kext
//	{ 0x80860c12, "Haswell HD Graphics"	},
	{ 0x80860c16, "HD Graphics Mobile"	}, // AppleIntelHD5000Graphics.kext
	{ 0x80860c22, "HD Graphics"		}, // AppleIntelHD5000Graphics.kext
	{ 0x80860c26, "HD Graphics Mobile"	}, // AppleIntelHD5000Graphics.kext
//	{ 0x80860d12, "HD Graphics 4600"	},
	{ 0x80860d22, "HD Graphics 5200"	}, // AppleIntelHD5000Graphics.kext
//	{ 0x80860d16, "HD Graphics 4600 Mobile"	}, // Crystal Well Integrated Graphics Controller
	{ 0x80860d26, "HD Graphics 5200 Mobile" }, // Crystal Well Integrated Graphics Controller - AppleIntelHD5000Graphics.kext
//	{ 0x80860d36, "????"			}, // Crystal Well Integrated Graphics Controller

	/* - - */


#33
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,277 posts
  • Gender:Male

Thanks and hope you can implement these in your bootloader as soon as possible.
I can confirm that because Asus Z87 Deluxe Dual has fixed 64 MB FBMem, both 0x00 0x00 0x16 0x0a  and 0x00 0x00 0x26 0x0c are working at DP3/DP4.
But 0x03 0x00 0x22 0x0d (0 MB) will cause KP for it immediately.

My gigabyte bios has 'Internal Graphics Memory Size' set to the default of 64M; no panic with any of the 3 discussed ig-platform-ids. 0x03 0x00 0x22 0x0d is not 0MB. If you look at offset 0xc for that layout, FramebufferMemorySize, it is 0x1 which is 64MB.

YES!! I was just about to come post about the SSDT edits when I read this! lol I've been looking at this issue for three days now. Then it dawned on me while looking at the DSDT Definitions where "External".  It was staring me right in the face... Well glad to see someone smarter than me figured it out first!

Thanks, seems like we need a master how-to thread on simplified SSDT edits for uefi systems.

Basically I need editing SSDT.aml and set ig-platform-id to 0000260c or 0000160a, and copy my SSDT-1.aml ~ SSDT-7.aml to /Extra too otherwise it may cause KP during booting.

I don't believe you. At least with chameleon, the system SSDTs should be picked up regardless unless you've configured dropssdt.
For example, I'm patching HDEF and GFX0 via /Extra/SSDT.dsl, and my ioregistry has:
"PCITopLevel" = ("GFX0","B0D3","XHC","GLAN","EHC2","HDEF","EHC1","LPCB","SAT0","SBUS")

where B0D3 is only defined in my BIOS's SSDT4. So SSDT4 is being picked up automatically.

Another issue bothers me a lot is I need add -f to org.chameleon.Boot.plist otherwise the above-mentioned will not work and freezes during booting

Maybe you need my dart=0 recommendation to avoid the VT-d booting problem? http://www.insanelym...p/#entry1867000

Also would be nice get the complete name scheme:
Here the incomplete (probably with error) list:

The most authoritative list of intel graphics PCIids is probably that from intel_driver.h in intel's xf86-video-intel source code release. Unfortunately that list is mapping the PCIids to the internal GT[123] names, not the marketing names...
I think it's a losing battle to make your config command use intel's marketing name. For haswell they already have 2 different naming schemes besides the internal GT[123] names (iris and hd graphics 4/5xxx)

Maybe you should just have a keyword like intel-integrated-hd and let the user specify all 4 bytes for AAPL,ig-platform-id as the value.

#34
toleda

toleda

    InsanelyMac Legend

  • Gurus
  • 807 posts
  • Gender:Male

For example, I'm patching HDEF and GFX0 via /Extra/SSDT.dsl, and my ioregistry has:
"PCITopLevel" = ("GFX0","B0D3","XHC","GLAN","EHC2","HDEF","EHC1","LPCB","SAT0","SBUS")
 

Is the 8086 2807 codec visible in B0D3/AppleHDAController/IOHDACodecDevice?



#35
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,277 posts
  • Gender:Male

Is the 8086 2807 codec visible in B0D3/AppleHDAController/IOHDACodecDevice?

No, that subtree is empty:
    | |   |   +-o IOHDACodecDevice@3,0  <class IOHDACodecDevice, id 0x1000002de, !registered, !matched, active, busy 0, retain 5>
    | |   |       {
    | |   |       }
    | |   |       
Don't I need an additional injection string for that device before it'd show up ? I don't really care as I don't have HDMI audio at my desk but I could configure it if you'd like...

#36
TimeWalker75a

TimeWalker75a

    InsanelyMac Legend

  • Gurus
  • 934 posts
  • Gender:Male

I see that with new MBA6,1 and MBA6,2 Apple is using HDAU for Intel HDMI audio (previously this was only the case for dedicated graphics). Should we be adding a HDAU device to PCI0 bus to mimic this and thus get HDMI (or DP for that matter) audio working? I'm referring to this: http://cl.ly/image/0Q3O3d372M1L

 

P.S. I hate the RMA manager.. it wasn't x-shipped after all...



#37
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,277 posts
  • Gender:Male

I see that with new MBA6,1 and MBA6,2 Apple is using HDAU for Intel HDMI audio (previously this was only the case for dedicated graphics). Should we be adding a HDAU device to PCI0 bus to mimic this and thus get HDMI (or DP for that matter) audio working? I'm referring to this: http://cl.ly/image/0Q3O3d372M1L
 
P.S. I hate the RMA manager.. it wasn't x-shipped after all...

Hmm, that's right, last time I had hdmi audio working I had to add an HDAU device with an additional hda-gfx injection string.

Amazon would have cross-shipped for you...

#38
TimeWalker75a

TimeWalker75a

    InsanelyMac Legend

  • Gurus
  • 934 posts
  • Gender:Male

Something of this nature perhaps? Not sure about the address though, this is the one fount on MB Airs.

    Scope (\_SB.PCI0)
    {
        Device (HDAU)
        {
            Name (_ADR, 0x00030000)
            Method (_DSM, 4, NotSerialized)
            {
                Store (Package (0x02)
                    {
                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }
}

Wish I had access to Amazon, I'm dealing with online retailers here.. 



#39
toleda

toleda

    InsanelyMac Legend

  • Gurus
  • 807 posts
  • Gender:Male

No, that subtree is empty:

    | |   |   +-o IOHDACodecDevice@3,0  <class IOHDACodecDevice, id 0x1000002de, !registered, !matched, active, busy 0, retain 5>
    | |   |       {
    | |   |       }
    | |   |       

That is the problem.  8086 2807 is in 10.9 AppleHDA binary.  Injecting the codec_id and or device_id doesn't work. Renaming B0D3 to HDAU doesn't work.  HD5000 HDAU is similar to AMD/Nvidia HDAU, the difference is that it has it's own address, more like HDEF. There does not seem to be any difference with the GFX0/IGPU hda-gfx injection implementation between HD3000/HD4000 and the new HD5000.  As well, the dsdt code for HDAU and B0D3 is the same except for OperatingRegion and a couple of variables.   Adding hda-gfx to B0D3 does not enable the codec.  In DPCIManager, the codec appears with a null value and it does not appear in lspci while the HDMI codec does (0c0a or 0c0c).  It may be that the codec is disabled in the developer previews or it may be up to us to find the right injection string.  Ideas?



#40
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,277 posts
  • Gender:Male
I think you'd have to do both at the same time - rename B0D3 to HDAU AND inject hda-gfx onboard-1 before the HDMI audio will show up. That matches what I remember from last time I was looking at the actual AppleHDA code.
You would also need the matching hda-gfx injection string on the GFX0 device so that the driver can match the two devices up, but that's already in our SSDT example.
Under linux, the intel HDMI audio does show up under lspci, and it also shows up at application level (alsamixer).
00:03.0 Audio device [0403]: Intel Corporation Haswell HD Audio Controller [8086:0c0c] (rev 06)
	Subsystem: Intel Corporation Device [8086:2010]
	Flags: bus master, fast devsel, latency 0, IRQ 16
	Memory at f0434000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel driver in use: snd_hda_intel

Update: Er, sorry that's just the controller that shows up under lspci, the HDMI codec shows up too however:
Codec: Intel Haswell HDMI
Address: 0
AFG Function Id: 0x1 (unsol 0)
Vendor Id: 0x80862807
Subsystem Id: 0x80860101
Revision Id: 0x100000
No Modem Function Group found
...






1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy