Jump to content

HD4000 not fully detected


XGamer30
 Share

64 posts in this topic

Recommended Posts

Ok, but i don't answer me, you really need this boot args? Why?

dart=0 debug=8 ahcidisk=1 PciRoot=1
Some boot args maybe they can mess up the video activation.
I need PCIRootUID = 1 = Yes IPGEnabler and to boot, the other I do not need. Also I have this image after setting dsdt:
Link to comment
Share on other sites

Ok, delete the DSDT, and use this:

attachicon.giforg.chameleon.Boot.plist.zip

 

 

Hi guys just a tips...

This page is updated -> Intel HD4000, Haswell and Broadwell Inject AAPL,ig-platform-id

 

Anyway... 

...    <key>InjectIntel-ig</key>
    <string>03006601</string>
    <key>IntelCapriFB</key>
    <string>3</string>
    <key>Kernel Flags</key>
    <string>-v kext-dev-mode=1 darkwake=0</string>...

The InjectIntel-ig key have priority over all the other bootloader gma value injector

The priority is:
1° InjectIntel-ig
2° IntelXxxxFB
3° the default setting (based on BIOS memory for Ivy, and default ig for Haswell and Broadwell)

so the IntelCapriFB http://forge.voodooprojects.org/p/chameleon/source/tree/HEAD/trunk/i386/libsaio/gma.c#L107

{ 0x03,0x00,0x66,0x01 },//3 "AAPL,ig-platform-id" //FB: 64MB, Pipes: 2, Ports: 2, FBMem: 2

is redundant and never will be used --> http://forge.voodooprojects.org/p/chameleon/source/tree/HEAD/trunk/i386/libsaio/gma.c#L717

	if (getValueForKey(kAAPLCustomIG, &value, &len, &bootInfo->chameleonConfig) && len == AAPL_LEN_IVY * 2)
	{
	uint8_t new_aapl0[AAPL_LEN_IVY];
	
	if (hex2bin(value, new_aapl0, AAPL_LEN_IVY) == 0)
	{
	memcpy(default_aapl_ivy, new_aapl0, AAPL_LEN_IVY);
	
	verbose("\tUsing user supplied AAPL,ig-platform-id\n");
	verbose("\tAAPL,ig-platform-id: %02x%02x%02x%02x\n",
	default_aapl_ivy[0], default_aapl_ivy[1], default_aapl_ivy[2], default_aapl_ivy[3]);
	}
	devprop_add_value(device, "AAPL,ig-platform-id", default_aapl_ivy, AAPL_LEN_IVY);
	}
	else if (getIntForKey(kIntelCapriFB, &n_igs, &bootInfo->chameleonConfig))
	{
	if ((n_igs >= 0) || (n_igs <= 11))
	{
	verbose("\tAAPL,ig-platform-id was set in org.chameleon.Boot.plist with value %d\n", n_igs);
	devprop_add_value(device, "AAPL,ig-platform-id", ivy_bridge_ig_vals[n_igs], 4);
	}
	else
	{
	verbose("\tAAPL,ig-platform-id was set in org.chameleon.Boot.plist with bad value please choose a number between 0 and 11.\n");
	}
	}
	else
	{
	uint32_t ig_platform_id;
	uint32_t ram = (((getVBEVideoRam() + 512) / 1024) + 512) / 1024;
	switch (ram)
	{
	case 96:
	ig_platform_id = 0x01660000; // 96mb Mobile
	break;
	
	case 64:
	ig_platform_id = 0x01660009; // 64mb Mobile
	break;
	
	case 32:
	ig_platform_id = 0x01620005; // 32mb Desktop
	break;
	
	default:
	printf("\tPlease specify 96, 64, or 32MB RAM for the HD4000 in the bios.\n"
	"\tThe selected %dMB RAM configuration is not supported for the  HD4000.\n", ram);
	pause();
	return false;// Exit early before the AAPL,ig-platform-id property is set.
	break;
	}
	devprop_add_value(device, "AAPL,ig-platform-id", (uint8_t *)&ig_platform_id, 4);
	} 

(remove the InjectIntel-ig to "activate it")

 

Also Chameleon and Enoch not need kext-dev-mode=1 Kernel Flag because is internally inject during the boot process where needed...

 

Other thing...

Ipgenabler is not a Chameleon/Enoch flag.

 

ErmaC

  • Like 1
Link to comment
Share on other sites

Can you create a dsdt with all this?

Short answer:

No

 

Long answer:

All the process explained is exactly the opposite of create a DSDT...

this process is to help the final user to keep his hands off from DSDT edits...

 

ErmaC

  • Like 1
Link to comment
Share on other sites

i don't understand your processus, I'm newbie in this domain.

You have 2 (3) way to inject data for "drive" your HD4000

1) Use "FULL" DSDT injection so all the needed data as been set into your custom DSDT... so GraphicsEnabler=No

2) Use Bootloader Injection... where your "factory" DSDT is "untouched" for your Intel gfx... so GraphicsEnabler=Yes IntelCapriFB=3 (or other value)

3) Use a mixed of both method DSDT edits + Bootloader injection for ex the ig value are injected by the bootloader and the duallink and other thing are hardcoded into your DSDT...

 

Then binpatch (patch the kext for your card) is other things...

 

ErmaC

  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...