Jump to content
Sign in to follow this  
PolishApple

"Poradnik" dla HD4400/HD4600 + kontrola jasności + PM

Recommended Posts

Odpalanie HD4400/HD4600 Mobile

1. FakeID

#HD4600 Mobile:

  • FakeID - stosujemy poprawkę do Clover'a lub do DSDT/SSDT
    Clover:
    <key>Devices</key>
    <dict>
    <key>FakeID</key>
    <dict>
    <key>IntelGFX</key>
    <string>0x04128086</string>
    

    DSDT/SSDT - gotowa poprawka do użycia z maciasl.app:

    into method label _DSM parent_adr 0x00020000 remove_entry;
    into device name_adr 0x00020000 insert
    begin
    Method (_DSM, 4, NotSerialized)\n
    {\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
    "device-id", Buffer() { 0x12, 0x04, 0x00, 0x00 },\n
    "AAPL,ig-platform-id", Buffer() { 0x06, 0x00, 0x26, 0x0a },\n
    "hda-gfx", Buffer() { "onboard-1" },\n
    "model", Buffer() { "Intel HD 4600" },\n
    })\n
    }\n
    end;

     

 

#HD4400 Mobile:

 

  • FakeID - stosujemy poprawkę do Clover'a lub do DSDT/SSDT
    Clover:
    <key>Devices</key>
    <dict>
    <key>FakeID</key>
    <dict>
    <key>IntelGFX</key>
    <string>0x04128086</string>
    

     DSDT/SSDT - gotowa poprawka do użycia z maciasl.app:

    into method label _DSM parent_adr 0x00020000 remove_entry;
    into device name_adr 0x00020000 insert
    begin
    Method (_DSM, 4, NotSerialized)\n
    {\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
    "device-id", Buffer() { 0x12, 0x04, 0x00, 0x00 },\n
    "AAPL,ig-platform-id", Buffer() { 0x06, 0x00, 0x26, 0x0a },\n
    "hda-gfx", Buffer() { "onboard-1" },\n
    "model", Buffer() { "Intel HD 4400" },\n
    })\n
    }\n
    end;

     

Fix dla problemów z wyświetlaniem menu bar'a :> - problem nie występuje zawsze!!!

Dodajemy go do config.plist, sekcja KextToPatch

<dict>
	<key>Name</key>
	<string>AppleIntelFramebufferAzul</string>
	<key>Comment</key>
	<string>0x0a260006 9MB cursor bytes patch</string>
	<key>Find</key>
	<string>0600260a01030303000000020000300100006000</string>
	<key>Replace</key>
	<string>0600260a01030303000000020000300100009000</string>
</dict> 

#Inny sposób :>

Jeśli straszne jest nam dodawanie poprawek FakeID do Clover'a lub DSDT/SSDT możemy użyć kexta który doda FakeID za nas:>

https://bitbucket.org/RehabMan/os-x-fake-pci-id/downloads

 

Po rozpakowaniu paczki wchodzimy w ~/Release i kopiujemy:

- FakePCIID_HD4600_HD4400.kext

- FakePCIID.kext

do S/L/E lub folderu kexts Clover'a (przypomnienie dla osób używających folderu OEM by kexty wrzucić tam, a nie do głównego folderu) 

 

2. Injekcja - do Clover'a

<key>Graphics</key>
<dict>
<key>Inject</key>
<dict>
<key>Intel</key>
<true/>
</dict>
<key>ig-platform-id</key>
<string>0x0a260006</string>

Zmiana nazwy w DSDT oraz SSDT

Aby uzyskać pełny PM, a tym samym wydłużyć czas pracy na baterii (AGPM) należy przemianować istniejące wpisy na IGPU.

 

#Zależnie od obecnego nazewnictwa należy wybrać odpowiednią poprawkę:

GFX0 - https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/graphics/graphics_Rename-PCI0_GFX0.txt

 

VID - https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/graphics/graphics_Rename-PCI0_VID.txt

 

Patch stosujemy w DSDT oraz SSDTxx!!!

 

Kontrola jasności - gotowy patch do użycia z maciasl.app

Dodajemy go do DSDT/SSDT (należy ustalić gdzie znajduje się sekcja naszej grafiki) + Intelbacklight.kext https://github.com/RehabMan/OS-X-Intel-Backlight

#Maintained by: RehabMan for: Laptop Patches
#graphics_PNLF_haswell.txt
# Note: This patch should be applied to the DSDT or SSDT that defines
# your integrated graphics device (always at _ADR 0x00020000)
#
# This patch works for both Haswell and Broadwell graphics
#

into_all device label PNLF remove_entry;
into_all device name_adr 0x00020000 code_regex (OperationRegion\s\(RMPC,\sPCI_Config[^\}]*\}) remove_matched;

into device name_adr 0x00020000 insert
begin
OperationRegion (RMPC, PCI_Config, 0x10, 4)\n
Field (RMPC, AnyAcc, NoLock, Preserve)\n
{\n
    BAR1,32,\n
}\n
Device (PNLF)\n
{\n
    // normal PNLF declares (note some of this probably not necessary)\n
    Name (_ADR, Zero)\n
    Name (_HID, EisaId ("APP0002"))\n
    Name (_CID, "backlight")\n
    Name (_UID, 15)\n
    Name (_STA, 0x0B)\n
    //define hardware register access for brightness\n
    // lower nibble of BAR1 is status bits and not part of the address\n
    OperationRegion (BRIT, SystemMemory, And(^BAR1, Not(0xF)), 0xe1184)\n
    Field (BRIT, AnyAcc, Lock, Preserve)\n
    {\n
        Offset(0x48250),\n
        LEV2, 32,\n
        LEVL, 32,\n
        Offset(0x70040),\n
        P0BL, 32,\n
        Offset(0xc8250),\n
        LEVW, 32,\n
        LEVX, 32,\n
        Offset(0xe1180),\n
        PCHL, 32,\n
    }\n
    // LMAX: use 0xad9/0x56c/0x5db to force OS X value\n
    //       or use any arbitrary value\n
    //       or use 0 to capture BIOS setting\n
    Name (LMAX, 0xad9)\n
    // KMAX: defines the unscaled range in the _BCL table below\n
    Name (KMAX, 0xad9)\n
    // _INI deals with differences between native setting and desired\n
    Method (_INI, 0, NotSerialized)\n
    {\n
        // This 0xC value comes from looking what OS X initializes this\n
        // register to after display sleep (using ACPIDebug/ACPIPoller)\n
        Store(0xC0000000, LEVW)\n
        // determine LMAX to use\n
        If (LNot(LMAX)) { Store(ShiftRight(LEVX,16), LMAX) }\n
        If (LNot(LMAX)) { Store(KMAX, LMAX) }\n
        If (LNotEqual(LMAX, KMAX))\n
        {\n
            // Scale all the values in _BCL to the PWM max in use\n
            Store(0, Local0)\n
            While (LLess(Local0, SizeOf(_BCL)))\n
            {\n
                Store(DerefOf(Index(_BCL,Local0)), Local1)\n
                Divide(Multiply(Local1,LMAX), KMAX,, Local1)\n
                Store(Local1, Index(_BCL,Local0))\n
                Increment(Local0)\n
            }\n
            // Also scale XRGL and XRGH values\n
            Divide(Multiply(XRGL,LMAX), KMAX,, XRGL)\n
            Divide(Multiply(XRGH,LMAX), KMAX,, XRGH)\n
        }\n
        // adjust values to desired LMAX\n
        Store(ShiftRight(LEVX,16), Local1)\n
        If (LNotEqual(Local1, LMAX))\n
        {\n
            Store(And(LEVX,0xFFFF), Local0)\n
            If (LOr(LNot(Local0),LNot(Local1))) { Store(LMAX, Local0) Store(LMAX, Local1) }\n
            Divide(Multiply(Local0,LMAX), Local1,, Local0)\n
            //REVIEW: wait for vblank before setting new PWM config\n
            //Store(P0BL, Local7)\n
            //While (LEqual (P0BL, Local7)) {}\n
            Store(Or(Local0,ShiftLeft(LMAX,16)), LEVX)\n
        }\n
    }\n
    // _BCM/_BQC: set/get for brightness level\n
    Method (_BCM, 1, NotSerialized)\n
    {\n
        // store new backlight level\n
        Store(Match(_BCL, MGE, Arg0, MTR, 0, 2), Local0)\n
        If (LEqual(Local0, Ones)) { Subtract(SizeOf(_BCL), 1, Local0) }\n
        Store(Or(DerefOf(Index(_BCL,Local0)),ShiftLeft(LMAX,16)), LEVX)\n
    }\n
    Method (_BQC, 0, NotSerialized)\n
    {\n
        Store(Match(_BCL, MGE, And(LEVX, 0xFFFF), MTR, 0, 2), Local0)\n
        If (LEqual(Local0, Ones)) { Subtract(SizeOf(_BCL), 1, Local0) }\n
        Return(DerefOf(Index(_BCL, Local0)))\n
    }\n
    Method (_DOS, 1, NotSerialized)\n
    {\n
        // Note: Some systems have this defined in DSDT, so uncomment\n
        // the next line if that is the case.\n
        //External(^^_DOS, MethodObj)\n
        ^^_DOS(Arg0)\n
    }\n
    // extended _BCM/_BQC for setting "in between" levels\n
    Method (XBCM, 1, NotSerialized)\n
    {\n
        // store new backlight level\n
        If (LGreater(Arg0, XRGH)) { Store(XRGH, Arg0) }\n
        If (LAnd(Arg0, LLess(Arg0, XRGL))) { Store(XRGL, Arg0) }\n
        Store(Or(Arg0,ShiftLeft(LMAX,16)), LEVX)\n
    }\n
    Method (XBQC, 0, NotSerialized)\n
    {\n
        Store(And(LEVX,0xFFFF), Local0)\n
        If (LGreater(Local0, XRGH)) { Store(XRGH, Local0) }\n
        If (LAnd(Local0, LLess(Local0, XRGL))) { Store(XRGL, Local0) }\n
        Return(Local0)\n
    }\n
    // Set XOPT bit 0 to disable smooth transitions\n
    // Set XOPT bit 1 to wait for native BacklightHandler\n
    // Set XOPT bit 2 to force use of native BacklightHandler\n
    Name (XOPT, 0x02)\n
    // XRGL/XRGH: defines the valid range\n
    Name (XRGL, 25)\n
    Name (XRGH, 2777)\n
    // _BCL: returns list of valid brightness levels\n
    // first two entries describe ac/battery power levels\n
    Name (_BCL, Package()\n
    {\n
        2777,\n
        748,\n
        0,\n
        35, 39, 44, 50,\n
        58, 67, 77, 88,\n
        101, 115, 130, 147,\n
        165, 184, 204, 226,\n
        249, 273, 299, 326,\n
        354, 383, 414, 446,\n
        479, 514, 549, 587,\n
        625, 665, 706, 748,\n
        791, 836, 882, 930,\n
        978, 1028, 1079, 1132,\n
        1186, 1241, 1297, 1355,\n
        1414, 1474, 1535, 1598,\n
        1662, 1728, 1794, 1862,\n
        1931, 2002, 2074, 2147,\n
        2221, 2296, 2373, 2452,\n
        2531, 2612, 2694, 2777,\n
    })\n
}\n
end;

Rozwiązywanie problemów:

Dodajemy do Clover'a w sekcji KextToPatch

 

 

#Zniekształcony obraz podczas przejścia z boot do pulpitu

<dict>
		<key>Comment</key>
		<string>Boot graphics glitch, 10.10.x/10.11.x (credit lisai9093, cecekpawon)</string>
		<key>Find</key>
		<data>AQAAdRc=</data>
		<key>Name</key>
		<string>IOGraphicsFamily</string>
		<key>Replace</key>
		<data>AQAA6xc=</data>
</dict>

Poradnik oparty o:

-https://github.com/RehabMan/OS-X-Clover-Laptop-Config

-http://www.tonymacx86.com/yosemite-laptop-support/145427-fix-intel-hd4200-hd4400-hd4600-mobile-yosemite.html

Share this post


Link to post
Share on other sites

Dzięki, przykleiłem.

 

Mam od razu pytanie:

 

Aby uzyskać pełny PM, a tym samym wydłużyć czas pracy na baterii (AGPM) należy przemianować istniejące wpisy na IGPU.

Jakieś źródło/obserwacja? To dotyczy tylko HD 4400/HD 4600, czy starszych też?

U mnie (HD 3000) karta jest w DSDT jako VID i mam wrażenie, że AGPM jest. I teraz nie wiem, czy powinienem zmieniać nazwę...

 

Aha, i ten patch na regulację podświetlenia to jakiś specjalny dla Haswell/Broadwell, nie wymagający dodatkowo kexta?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.