Showing posts with label MacManx86. Show all posts
Showing posts with label MacManx86. Show all posts

Monday, February 27, 2012

Chimera 1.8.0 Source

The Chimera 1.8.0 source is now available for downloading. Here is the link to the commit: http://forge.voodooprojects.org/p/chameleon/source/commit/1832/
    There is a standalone installer, available at tonymacx86.com/downloads. For bug reporting, feature requests, and general feedback please use the Chimera forum.

    -tonymacx86 & MacMan

    Related Posts:
    Chimera 1.8 Change Log
    Chimera 1.8 Update: OS X 10.8 Mountain Lion Support
    For discussions on this and other topics, register today at tonymacx86.com!

    Friday, February 24, 2012

    Chimera 1.8.0 Change Log

    Here are the details on specifically what I changed in Chimera 1.8.0.

    • Mountain Lion Boot Support:
    Based on cparm's patch.

    i386/boot2/boot.c
    Changed all (checkOSVersion("10.7") to ((checkOSVersion("10.7")) || (checkOSVersion("10.8")))

    i386/libsaio/bootstruct.c
    Changed:
    && (gMacOSVersion[2] == '.') && (gMacOSVersion[3] == '7'))

    To:
    && (gMacOSVersion[2] == '.') && ((gMacOSVersion[3] == '7') || (gMacOSVersion[3] == '8')))

    • Fixed showing boot volume detail:

    i386/boot2/gui.c
    Changed:
    shoWinfo = true

    To:
    shoWinfo = false

    • Trunk Commit: 1827 Xcode 4.3 compile fix:

    i386/util/fdisk/misc.c
    Changed:
    void
    putshort(p, l)
    void *p;
    u_int16_t l;

    To:
    putshort(
    void *p,
    u_int16_t l)

    • Added addtitional NVIDIA cards and fixed some card definitions using info from latest trunk, ErmaC branch and tonymacx86.com users:

    i386/libsaio/nvidia.c
    Added:
    { 0x10DE05E7, "Tesla C1060" },
    { 0x10DE061E, "Quadro FX 3700M" },
    { 0x10DE0621, "GeForce GT 230" },
    { 0x10DE062B, "GeForce 9800M GS" },
    { 0x10DE0655, "GeForce GT 120" },
    { 0x10DE06F1, "GeForce G105M" },
    { 0x10DE06FF, "HICx16 + Graphics" },
    { 0x10DE0840, "GeForce 8200M" },
    { 0x10DE0869, "GeForce 9400" },
    { 0x10DE08A0, "GeForce 320M" },
    { 0x10DE08A4, "GeForce 320M" },
    { 0x10DE0A26, "GeForce 405" },
    { 0x10DE0A27, "GeForce 405" },
    { 0x10DE0A38, "Quadro 400" },
    { 0x10DE0A76, "ION" },
    { 0x10DE0A7A, "GeForce 315M" },
    { 0x10DE0CA5, "GeForce GT 220" },
    { 0x10DE0CAC, "GeForce GT 220" },
    { 0x10DE1051, "GeForce GT 520MX" },
    { 0x10DE1084, "GeForce GTX 560" },
    { 0x10DE1087, "GeForce GTX 560 Ti 448 Cores" },
    { 0x10DE1089, "GeForce GTX 580" },
    { 0x10DE108B, "GeForce GTX 590" },
    { 0x10DE1091, "Tesla M2090" },
    { 0x10DE109B, "Quadro 7000" },
    { 0x10DE10C0, "GeForce 9300 GS" },
    { 0x10DE10D8, "NVS 300" },
    { 0x10DE1241, "GeForce GT 545" },
    { 0x10DE1243, "GeForce GT 545" },

    Changed:
    { 0x10DE0CAC, "GeForce 315" }, to { 0x10DE0CAC, "GeForce GT 220" },
    { 0x10DE0DF4, "GeForce GT 450M" }, to { 0x10DE0DF4, "GeForce GT 540M" },
    { 0x10DE109A, "N12E-Q5" }, to { 0x10DE109A, "Quadro 5010M" },

    • Added additional AMD/ATI Cards:

    i386/libsaio/ati.c
    Added from trunk, ErmaC and tonymacx86.com users:
    { 0x9440, 0x0851174B, CHIP_FAMILY_RV770, "ATI Radeon HD 4870", kMotmot },
    { 0x68BA, 0x31501682, CHIP_FAMILY_JUNIPER, "AMD Radeon HD 6770", kVervet },
    { 0x68BF, 0x31401682, CHIP_FAMILY_JUNIPER, "AMD Radeon HD 6750", kVervet },
    { 0x68C0, 0x395217AA, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5730", kNull },
    { 0x68C1, 0x02051025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x02961025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x030A1025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x033D1025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x03471025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x03561025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x03581025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x035A1025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x035C1025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x03641025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x03791025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x037E1025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68C1, 0x03821025, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5750", kNull },
    { 0x68E4, 0x1426103C, CHIP_FAMILY_CEDAR, "AMD Radeon HD 6370M ", kNull },
    { 0x68E4, 0x397917AA, CHIP_FAMILY_CEDAR, "AMD Radeon HD 6370M ", kNull },
    { 0x6719, 0x21FD1458, CHIP_FAMILY_CAYMAN, "AMD Radeon HD 6950", kGibba },
    { 0x6719, 0x186B174B, CHIP_FAMILY_CAYMAN, "AMD Radeon HD 6950", kNull },
    { 0x6720, 0x04901028, CHIP_FAMILY_BARTS, "AMD Radeon HD 6970M", kElodea },
    { 0x6739, 0x03B41043, CHIP_FAMILY_BARTS, "AMD Radeon HD 6850", kDuckweed },
    { 0x6740, 0x1631103C, CHIP_FAMILY_TURKS, "AMD FirePro M5950", kNull },
    { 0x6740, 0x3388103C, CHIP_FAMILY_TURKS, "AMD Radeon HD 6770M", kNull },
    { 0x6741, 0x1688103C, CHIP_FAMILY_TURKS, "AMD Radeon HD 7690M", kNull },
    { 0x6758, 0x00121028, CHIP_FAMILY_TURKS, "AMD Radeon HD 6670", kBulrushes },
    { 0x6759, 0x20121787, CHIP_FAMILY_TURKS, "AMD Radeon HD 6570", kPithecia },
    { 0x6760, 0x00031179, CHIP_FAMILY_CAICOS, "AMD Radeon HD 6450M", kNull },
    { 0x6779, 0xE180174B, CHIP_FAMILY_CAICOS, "AMD Radeon HD 6450", kPithecia },

    • Added the following missing AMD/ATI default card definitions:

    i386/libsaio/ati.c
    { 0x944A, 0x00000000, CHIP_FAMILY_RV770, "ATI Radeon HD 4800 Series", kMotmot },
    { 0x9480, 0x00000000, CHIP_FAMILY_RV730, "ATI Mobility Radeon HD 4650 Series", kGliff },
    { 0x9553, 0x00000000, CHIP_FAMILY_RV710, "ATI Radeon HD 4300/4500 Series", kShrike },
    { 0x9581, 0x00000000, CHIP_FAMILY_RV630, "ATI Radeon HD 3600 Series", kNull },
    { 0x9583, 0x00000000, CHIP_FAMILY_RV630, "ATI Radeon HD 3600 Series", kNull },
    { 0x9588, 0x00000000, CHIP_FAMILY_RV630, "ATI Radeon HD 2600 XT Series", kNull },
    { 0x9589, 0x00000000, CHIP_FAMILY_RV630, "ATI Radeon HD 3610 Series", kNull },
    { 0x9591, 0x00000000, CHIP_FAMILY_RV635, "ATI Radeon HD 3600 Series", kNull },
    { 0x68A1, 0x00000000, CHIP_FAMILY_CYPRESS, "ATI Mobility Radeon HD 5800 Series", kNomascus },
    { 0x68A8, 0x00000000, CHIP_FAMILY_CYPRESS, "AMD Radeon HD 6800M Series", kUakari },
    { 0x68BF, 0x00000000, CHIP_FAMILY_JUNIPER, "AMD Radeon HD 6700 Series", kVervet },
    { 0x68C0, 0x00000000, CHIP_FAMILY_REDWOOD, "AMD Radeon HD 6570M/5700 Series", kNull },
    { 0x68C1, 0x00000000, CHIP_FAMILY_REDWOOD, "AMD Radeon HD 6500M/5600/5700 Series", kNull },
    { 0x68E0, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Mobility Radeon HD 5400 Series", kEulemur },
    { 0x68E1, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Mobility Radeon HD 5400 Series", kEulemur },
    { 0x68E4, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Radeon HD 6300M Series", kNull },
    { 0x6750, 0x00000000, CHIP_FAMILY_TURKS, "AMD Radeon HD 6600A Series", kNull },

    • Added the following missing AMD/ATI chip family:

    i386/libsaio/ati.c
    Added CHIP_FAMILY_RV790 to chip_family_t;
    Added "RV790" to chip_family_name[]

    • Made the following cosmetic changes for AMD/ATI cards:

    i386/libsaio/ati.c
    • Changed all vendor names in radeon_cards to ATI as that would be contrary to what Apple would report.
    • For any specific card configuration that contained a generic name using something like "ATI Radeon HD 4800 Series" changed it to the specific card name and removed "Series".
    • Added "Series" to any generic card configuration to signify it's a generic and not card specific.
    • Corrected a bunch of card names.
    There is a standalone installer, available at tonymacx86.com/downloads. For bug reporting, feature requests, and general feedback please use the Chimera forum.

    -MacMan tonymacx86  
    For discussions on this and other topics, register today at tonymacx86.com!

    Tuesday, December 13, 2011

    Chimera 1.7.0 Change Log

    Back ported the following Chameleon commits:
    • r1671 Updated credits
    • r1674 Improved Multi-drive boot support from dmazar.
    • r1710 Fix for kernel flags not being passed to kernel on RAID volumes.
    Added the following AMD GPUs:
    • 0x9440, 0x114A174B, CHIP_FAMILY_RV770, "Sapphire Radeon HD4870 Vapor-X", kCardinal
    • 0x954F, 0x20081787, CHIP_FAMILY_RV710, "ATI Radeon HD 4350", kNull
    • 0x6899, 0xE174174B, CHIP_FAMILY_CYPRESS, "ATI Radeon HD 5850", kUakari
    • 0x68A0, 0x043A1028, CHIP_FAMILY_CYPRESS, "ATI Mobility Radeon HD 5870", kNomascus
    • 0x68B8, 0x21F61458, CHIP_FAMILY_JUNIPER, "ATI Radeon HD 5770", kVervet
    • 0x68B8, 0x200A1787, CHIP_FAMILY_JUNIPER, "ATI Radeon HD 5770", kVervet
    • 0x68BE, 0x22881787, CHIP_FAMILY_JUNIPER, "ATI Radeon HD 5750", kVervet
    • 0x68F9, 0x010E1002, CHIP_FAMILY_CEDAR, "ATI Radeon HD 5450", kEulemur
    • 0x68F9, 0x03741043, CHIP_FAMILY_CEDAR, "ATI Radeon HD 5450", kEulemur
    • 0x68F9, 0x23401462, CHIP_FAMILY_CEDAR, "ATI Radeon HD 5450", kEulemur
    • 0x68F9, 0xE145174B, CHIP_FAMILY_CEDAR, "ATI Radeon HD 5450", kEulemur
    • 0x68F9, 0xE153174B, CHIP_FAMILY_CEDAR, "ATI Radeon HD 5450", kEulemur
    • 0x6719, 0x0B001002, CHIP_FAMILY_CAYMAN, "AMD Radeon HD 6950", kGibba
    • 0x6719, 0x20101787, CHIP_FAMILY_CAYMAN, "AMD Radeon HD 6950", kGibba
    • 0x6720, 0x04BA1028, CHIP_FAMILY_BARTS, "AMD Radeon HD 6970M", kElodea
    • 0x6738, 0x31071682, CHIP_FAMILY_BARTS, "AMD Radeon HD 6870", kDuckweed
    • 0x6738, 0x31081682, CHIP_FAMILY_BARTS, "AMD Radeon HD 6870", kDuckweed
    • 0x6738, 0x174B174B, CHIP_FAMILY_BARTS, "AMD Radeon HD 6870", kBulrushes
    • 0x6739, 0xAA881002, CHIP_FAMILY_BARTS, "AMD Radeon HD 6850", kDuckweed
    • 0x6740, 0x1D121043, CHIP_FAMILY_TURKS, "AMD Radeon HD 6730M", kNull
    • 0x6760, 0x165A103C, CHIP_FAMILY_CAICOS, "AMD Radeon HD 6470M", kNull
    • 0x6760, 0x167D103C, CHIP_FAMILY_CAICOS, "AMD Radeon HD 6470M", kNull
    • 0x68A0, 0x00000000, CHIP_FAMILY_CYPRESS, "ATI Radeon HD 5800M Series", kNomascus
    • 0x68BA, 0x00000000, CHIP_FAMILY_JUNIPER, "ATI Radeon HD 6770 Series", kVervet
    • 0x6719, 0x00000000, CHIP_FAMILY_CAYMAN, "AMD Radeon HD 6950 Series", kGibbas
    Added a change that should hopefully allow the ability to override kNull frame buffer definitions.

    Added the following NVIDIA GPUs:
    • 0x10DE06DF, "Tesla M2070-Q" 
    • 0x10DE0DCD, "GeForce GT 555M" 
    • 0x10DE0DCE, "GeForce GT 555M" 
    • 0x10DE0DD6, "GeForce GT 550M" 
    • 0x10DE0DDA, "Quadro 2000M" 
    • 0x10DE0DEC, "GeForce GT 525M" 
    • 0x10DE0DED, "GeForce GT 520M" 
    • 0x10DE0DF4, "GeForce GT 450M" 
    • 0x10DE0DF5, "GeForce GT 525M" 
    • 0x10DE0DF6, "GeForce GT 550M" 
    • 0x10DE0DF7, "GeForce GT 520M" 
    • 0x10DE0DFA, "Quadro 1000M" 
    • 0x10DE0E31, "GeForce GTX 485M" 
    • 0x10DE0E3A, "Quadro 3000M" 
    • 0x10DE0E3B, "Quadro 4000M" 
    • 0x10DE1054, "GeForce GT 410M" 
    • 0x10DE1057, "Quadro NVS 4200M" 
    • 0x10DE107F, "NVIDIA GF119-ES" 
    • 0x10DE10C5, "GeForce 405" 
    • 0x10DE1201, "GeForce GTX 560" 
    • 0x10DE1251, "GeForce GTX 560M"
    Added the following cards to the NVIDIA memory detection bug workaround:
    • GT 440 Device ID 0x0DE0 
    • GT 525M Device ID 0x0DEC
    There is a standalone installer, available at tonymacx86.com/downloads. For bug reporting, feature requests, and general feedback please use the Chimera forum.

    -MacMan tonymacx86  
    For discussions on this and other topics, register today at tonymacx86.com!

    Saturday, September 10, 2011

    Chimera 1.5.4 Change Log


    It's been a busy couple of weeks since I released Chimera 1.5.0. I delayed this blog post due to the updates I had to make to fix and support additional AMD cards and the Facetime issue. This revision is based on  Chameleon 2.0 Revision 1394 which is the code base for the official release of Chameleon 2.0. Since Chimera 1.4 was released the Chameleon team has included some of what I did in Chimera 1.4 to the trunk. I have also have been supplying some fixes and enhancements to the Chameleon trunk to make future updates of Chimera easier.

    The main features in this release are:
    • Support for additional NVIDA and AMD video controllers
    • Inclusion or correction fo some AMD frame buffer names 
    • Facetime fix from olegpronin at insanelymac (of which I have added a new Boot key to bypass this fix if needed (thanks to Lnx2Mac for the idea.))
    • Sandy Bridge HD Graphics support based on the work valv started to support the Mobile HD 3000 controller. I've enhanced it to support mobile and desktop controllers.
    Here are the specific edits for this version and as a reminder, all lines starting with a dash will be the name of the affected file starting at the branch root.

    General fixes and enhancements:
     - i386/boot2/boot.h
       Added #define kSkipFTFix  "SkipFTFix" for disabling the Facetime fix code.
     - i386/libsaio/ati.c
       Enhanced some of the debug messages for ports and frame buffers.
       Added a debug message to display the number of ports the cards VBIOS is reporting.
       Changed default frame buffer for the HD 6670 and HD 6450 to Bulrushes
       Added the following additional AMD cards:
      { 0x68BF, 0x220E1458, CHIP_FAMILY_JUNIPER, "ATI Radeon HD 6750", kVervet },
            { 0x6738, 0x00D01002, CHIP_FAMILY_BARTS,    "AMD Radeon HD 6870", kDuckweed },
            { 0x6738, 0x21FA1002, CHIP_FAMILY_BARTS,    "AMD Radeon HD 6870", kDuckweed },
    { 0x6738, 0x21FA1458, CHIP_FAMILY_BARTS,    "AMD Radeon HD 6870", kDuckweed },
    { 0x6738, 0x31031682, CHIP_FAMILY_BARTS,    "AMD Radeon HD 6870", kDuckweed },
    { 0x6738, 0x31041682, CHIP_FAMILY_BARTS,    "AMD Radeon HD 6870", kDuckweed },
    { 0x6738, 0xE178174B, CHIP_FAMILY_BARTS,    "AMD Radeon HD 6870", kDuckweed },
    { 0x6738, 0x20101787, CHIP_FAMILY_BARTS,    "AMD Radeon HD 6870", kDuckweed },
    { 0x6738, 0x23051787, CHIP_FAMILY_BARTS,    "AMD Radeon HD 6870", kDuckweed },
    { 0x6739, 0x24411462, CHIP_FAMILY_BARTS,    "AMD Radeon HD 6850", kDuckweed },
    { 0x6739, 0xE177174B, CHIP_FAMILY_BARTS,    "AMD Radeon HD 6850", kDuckweed },
    { 0x6758, 0x67581002, CHIP_FAMILY_TURKS,    "AMD Radeon HD 6670", kBulrushes },
    { 0x6758, 0x22051458, CHIP_FAMILY_TURKS,   "AMD Radeon HD 6670", kBulrushes },
    { 0x6758, 0x31811682, CHIP_FAMILY_TURKS,     "AMD Radeon HD 6670", kBulrushes },
    { 0x6758, 0x31831682, CHIP_FAMILY_TURKS,     "AMD Radeon HD 6670", kBulrushes },
    { 0x6758, 0xE1941746, CHIP_FAMILY_TURKS,     "AMD Radeon HD 6670", kBulrushes },
    { 0x6779, 0x64501092, CHIP_FAMILY_CAICOS,   "AMD Radeon HD 6450", kBulrushes },
    { 0x6779, 0xE164174B, CHIP_FAMILY_CAICOS,   "AMD Radeon HD 6450", kBulrushes },
     - i386/libsaio/fake_efi.c
       Added olegpronin's Facetime fix
       Added the ability to bypass this fix at boot time using the boot key of SkipFTFix=Yes
     - i386/libsaio/gma.c
       Added valv's code for Mobile HD 3000 Graphics support
       Added support for Mobile HD 2000
       Added support for desktop HD 2000 and HD 3000
       Added specific code for HD 2000 and HD 3000
       Added a work around for desktop HD 3000's to work with unpatched kexts or DSDT edits.
     - i386/libsaio/nvidia.c
       Added the following new device ID:
      { 0x10DE1086, "GeForce GTX 570" },

    Chimera Specific Changes:
     - i386/boot2/prompt.c
       Changed Chameleon to Chimera and hardcoded version information
     - i386/libsaio/fake_efi.c
       Changed FIRMWARE_VENDOR from Chameleon 2.0 to Chimera 1.5

    For bug reporting, feature requests, and general feedback please use the Chimera forum

    -MacMan & tonymacx86 
    For discussions on this and other topics, register today at tonymacx86.com!

    Monday, July 11, 2011

    Minimal DSDT Edits for Gigabyte Socket 1155 Motherboards


    I started researching and testing what edits from my New Minimal DSDT Edits for Gigabyte Socket 1156 Motherboards were or weren't needed on the Socket 1155 boards. The good news is that the majority of the edits carry over, but some are not needed. For example, we don't need to inject anything for the USB ports to be fully recognized. But there are a couple of required Socket 1155 specific edits.

    The following is a guide for editing the extracted DSDT. The first thing you will need to do is the required edits so that the DSDT will compile. They are:

    1) "Reserved method must return a value"

     Add to the end of _WAK

            Return (Package (0x02)
            {
                0x00,
                0x00
            })
         
    2) "Method local variable is not initialized"

     In Scope (\_SI)

    Change both:

      Store (Local0, Local0)
     
     To:

     Store (0x00, Local0)

    3) "Use of compiler reserved name"

     Replace all _T_ with T_

    4) "Effective AML package length is zero"

     Change:

      Name (RPMV, Package (0x00) {})

     To:

      Name (RPMV, Package (Zero) {})

    5) "Result is not used, operator has no effect"

     Change:

      Or (0x03, PARM)

     To:

      Or (PARM, 0x03, PARM)

    The first required edit is to include Method DTGP for passing configuration parameters to OS X. Next up is renaming device names to follow Apple's conventions. They are renaming all PX40 to LPCB, PX43 to SBUS, all AZAL to HDEF, Device (IDE1) to Device (SATA) and it's sub-device ports from Device (PRIM) to Device (PRT0) and Device (SECD) to Device (PRT1), deleting Device (IDE2) (unused) and finally renaming the USB device names, USBE to EHC1 and USE2 to EHC2

    Now that we have all of the correct device names now we need to add some missing information. For the SMBus we need to add the following to Device (SBUS) as a nested sub-device:

                    Device (BUS0)
                    {
                        Name (_CID, "smbus")
                        Name (_ADR, 0x00)
                        Device (DVL0)
                        {
                            Name (_ADR, 0x57)
                            Name (_CID, "diagsvault")
                            Method (_DSM, 4, NotSerialized)
                            {
                                Store (Package (0x02)
                                    {
                                       "address",
                                        0x57
                                    }, Local0)
                                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                                Return (Local0)
                            }
                        }
                    }

    For ALC8xxHDA to work correctly we need to inject into Device (HDEF) codec information. Here is an example of what needs to be added for a board using and an ALC889 codec:

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x04)
                            {
                                "layout-id",
                                Buffer (0x04)
                                {
                                    0x79, 0x03, 0x00, 0x00   // decimal 889
                                },
                                "PinConfigurations",
                                Buffer (Zero)
                                {
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

    For other codecs you will need to change the layout-id to match your codec.

    There is a problem with Audio break ups that can be corrected in the DSDT. The first is in Device (PIC) remove these two lines:

      IRQNoFlags ()
                    {2}

    The other fix for audio break ups is in Device (TMR) where we need to change:

                        Method (_CRS, 0, NotSerialized)
                        {
                            If (LGreaterEqual (OSFX, 0x03))
                            {
                                If (HPTF)
                                {
                                    Return (ATT6)
                                }
                                Else
                                {
                                    Return (ATT5)
                                }
                            }
                            Else
                            {
                                Return (ATT5)
                            }
                        }

    To:
                        Method (_CRS, 0, NotSerialized)
                        {
                            Return (ATT6)
                        }

    The next fix is to prevent kernel panics in AppleIntelCPUPowerManagement at boot time. This fix is easy; just change Method (_STA, 0, NotSerialized) to Return (0x0F) and to change Method (_CRS, 0, NotSerialized) to Return (ATT3).

    The final edit is to allow you to use the power button to put the computer to sleep.  In Device (PWRB) change Name (_HID, EisaId ("PNP0C0C")) to Name (_CID, EisaId ("PNP0C0C")).

    If you don't want to bother with these edits, you can download pre-edited DSDTs from the tonymacx86.com DSDT Database.



    For discussions on this and other topics, register today at http://www.tonymacx86.com/

    Monday, February 28, 2011

    My 5,000th Post on tonymacx86 Forum

    I've just posted my 5,000th post on the tonymacx86 Forum, In this post I've recapped my Hackintosh and tonymacx86 experience. If you've wondered how I got started and what all I've done, check it out.

    Monday, December 6, 2010

    Graphics Card Support and Mac OS X

    The issue with graphics cards in OS X is that there are what is called a "Reference Design" which is based on what ATI/AMD or NVIDIA provides to manufactures for a baseline hardware design. Then there is what cards manufacturers ship, either a "Reference Design" or their own unique spin on that hardware. They do this unique spin to set their card part from the "Reference Design" cards. That is fine in Windows, but can create problems in OS X. Apple typically uses a "Reference Design" or very close to one in their graphics cards.


    So where am I going with this. Apple ships and supports a limited set of ATI/AMD "Reference Design" cards in OS X, they do not provide support for all models or any major variations from the "Reference Design". The reason being that the ATI/AMD architecture requires specific model driver support. For example in 10.6 Apple only supports some 46xx and 48xx cards, there is no OOB support for the 45xx cards. So that is why you see patches and/or modifications for Apple's drivers to support some of these other cards.

    The ATI/AMD 5xxx cards are finally easier to install. This has more to do with the GraphicsEnabler technology used within Hackintoshing, Kabyl's boot loader and ATY_Init. Even then you are limited to what cards are supported Out Of BOX (OOB) by Apple. For example the following are the only desktop ATI 5xxx cards Apple supports OOB:

    ATI Radeon HD 5800 Series:        Device ID 0x6898
    ATI Radeon HD 5800 Series:        Device ID 0x6899
    ATI Radeon HD 5700 Series:        Device ID 0x68B8
    ATI Radeon HD 5600 Series:        Device ID 0x68D8
    ATI Radeon HD 5500 Series:        Device ID 0x68D9

    If your card's device id is not in this list, then you need to add your device ID to ATI5000Controller.kext and possibly ATIRadeonX3000.kext. This is great workaround but will be needed to be done after each and any Apple software update that touches the ATI drivers. Ouch.


    NVIDIA cards use a different architecture and allows for a more generic driver than can support more models and variations. The new 4xx cards are based on a new architecture nicknamed "Fermi" and require new drivers.  Check out this article on Tony's blog for our solutions for NVIDIA 4xx cards.

    So until Apple ships support for more cards or allows AMD and NVIDIA to ship generic drivers, graphics card support is a challenge.

    Wednesday, November 17, 2010

    Minimal DSDT Edits for Gigabyte Socket 1366 Motherboards


    Since I posted Minimal DSDT Edits for Gigabyte Socket 1156 Motherboards I picked up a Gigabyte X58A-UD3R Rev 2.0 motherboard as part of the post tonymacx86 and I did for the CustoMac Pro 2010 project on his blog.

    I started researching and testing what edits from my Socket 1156 post were or weren't needed on this board. The good news is that the majority of the edits carry over, but some are not needed. For example, we don't need to inject anything for the USB ports to be fully recognized. But there are a couple of required Socket 1366 specific edits.

    The following is a guide for editing the extracted DSDT from the new Hackintosh-friendly BIOSes only. If you don't have a new Hackintosh-friendly BIOS, as I described in a previous post, you will have to have to manually edit the DSDT for the CMOS reset issue. You will also need to do the three required edits needed regardless of BIOS version. They are to include Method DTGP, add Return Package at the end of _WAK and fix the "Method local variable is not initialized (Local0)" error.

    Now let’s review the common edits that are valid for the Socket 1356 and Socket 1156 motherboards.

    First up are the cosmetic changes. Gigabyte uses generic device names in its DSDT instead of descriptive names like Apple does. One example is Gigabyte uses PX40 instead of LPCB for the LPC Interface Bridge. So the first thing we can do is to search for PX40 and do a global replace with LPCB. The next is to rename the System Management Bus (SMBus) device PX43 to SBUS. Next would be to rename Device (IDE1) to Device (SATA) and then within it rename Device (PRIM) to Device (PRT0) and Device (SECD) to Device (PRT1). The final cosmetic edits deal with USB. You can rename the devices to more appropriate ones as shown within this list:

    Rename USB0 to UHC1
    Rename USB1 to UHC2
    Rename USB2 to UHC3
    Rename USB3 to UHC4
    Rename USB4 to UHC5
    Rename USB5 to UHC6
    Rename USBE to EHC1
    Rename USE2 to EHC2

    Next we need to add to Device (SBUS) a sub-device named Device (BUS0) as seen here:

                    Device (BUS0)
                    {
                        Name (_CID, "smbus")
                        Name (_ADR, 0x00)
                        Device (DVL0)
                        {
                            Name (_ADR, 0x57)
                            Name (_CID, "diagsvault")
                            Method (_DSM, 4, NotSerialized)
                            {
                                Store (Package (0x02)
                                      {
                                        "address",
                                         0x57
                                      }, Local0)
                                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                                Return (Local0)
                            }
                        }
                    }

    The next edit is for audio. Gigabyte uses a device name of AZAL, so we need to do a global replace with HDEF. Then we need to add codec information to Device (HDEF). All that is required is to inject layout-id and PinConfigurations.

    Here is an example of what needs to be added for a board using an ALC889 codec and using our Legacy889HDA.kext:

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x04)
                            {
                                "layout-id",
                                Buffer (0x04)
                                {
                                    0x79, 0x03, 0x00, 0x00
                                },
                                "PinConfigurations",
                                Buffer (Zero)
                                {
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

    There is a problem with Audio break ups in 10.6.3 and later that can be corrected in the DSDT. The first is in Device (PIC) remove these two lines:

                    IRQNoFlags ()
                    {2}

    The other fix for audio break ups is in Device (TMR) where Gigabyte has not yet added Hackintosh logic. We need to change:

                        Method (_CRS, 0, NotSerialized)
                        {
                            If (LGreaterEqual (OSFX, 0x03))
                            {
                                If (HPTF)
                                {
                                    Return (ATT6)
                                }
                                Else
                                {
                                    Return (ATT5)
                                }
                            }
                            Else
                            {
                                Return (ATT5)
                            }
                        }

    To:
                        Method (_CRS, 0, NotSerialized)
                        {
                            Return (ATT6)
                        }

    Gigabyte has not yet added Hackintosh logic to Device (HPET), so you will get kernel panics in AppleIntelCPUPowerManagement. The fix is easy; just change Method (_STA, 0, NotSerialized) to Return (0x0F) and to change Method (_CRS, 0, NotSerialized) to Return (ATT3).

    The next edit allows use of the power button to put the computer to sleep.  In Device (PWRB) change Name (_HID, EisaId ("PNP0C0C")) to Name (_CID, EisaId ("PNP0C0C")).

    One fix we can do in a Socket 1366 DSDT that I haven't been able to figure out how to do in a Socket 1156 DSDT, is cure the orange external drive icon issue. In Device (SATA) you need to add the following code:

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "device-id",
                                Buffer (0x04)
                                {
                                    0x81, 0x26, 0x00, 0x00
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

    For the final edits, we can thank insanelymac user mm67. His modification enables shutdown without a kernel panic (KP). This is a two part edit, of which for the first part after:

        OperationRegion (APMP, SystemIO, 0xB2, 0x02)
        Field (APMP, ByteAcc, NoLock, Preserve)
        {
            APMC,   8,
            APMD,   8
        }

    Insert:

        OperationRegion (PMRS, SystemIO, 0x0430, 0x01)
        Field (PMRS, ByteAcc, NoLock, Preserve)
        {
            , 4,
            SLPE, 1
        }

    For the second part change:

        Method (\_PTS, 1, NotSerialized)
        {
            Or (Arg0, 0xF0, Local0)
            Store (Local0, DBG1)
            OSTP ()
            If (LEqual (Arg0, 0x01)) {}
            If (LEqual (Arg0, 0x03)) {}
            If (LEqual (Arg0, 0x05))
            {
                Store (0x99, SMIP)
            }

    To:

        Method (\_PTS, 1, NotSerialized)
        {
            Or (Arg0, 0xF0, Local0)
            Store (Local0, DBG1)
            OSTP ()
            If (LEqual (Arg0, 0x01)) {}
            If (LEqual (Arg0, 0x03)) {}
            If (LEqual (Arg0, 0x05))
            {
                Store (0x99, SMIP)
                Store (0x00, SLPE)
                Sleep (0x10)
            }

    So with these edits you'll have a fully functional Socket 1366 DSDT for Gigabyte motherboards. If you don't want to tackle these edits yourself, we maintain a database at tonymacx86 with all of these edits already applied. You will always find the latest versions listed here and can access the complete database here.

    If you don't see your Gigabyte Socket 1156 or Socket 1366 motherboard or version listed. You can submit it on the tonymacx86 Forum by clicking here. The instructions are at the top of the topic. After we receive it and verify that it is vanilla, we will do the edits and upload it to the database.

    For discussions on this and other topics, register today at the tonymacx86 Forum!

    Sunday, July 18, 2010

    Typo in New Minimal DSDT Edits for Gigabyte Socket 1156 Motherboards

    I was notified that there is a typo in the USBE/EHCI and USE2/EHC2 device edits section of my article New Minimal DSDT Edits for Gigabyte Socket 1156 Motherboards.

    In that section:
                                "AAPL,current-extra",
                                0x04C,
    Should be:
                                "AAPL,current-extra",
                                0x044C,

    So that it matches what an iMac with a Core i5/i7 reports.

    I have corrected the original article and I would suggest using this correction in your edits.

    Many thanks to rekursor for finding this.

    Wednesday, June 9, 2010

    New Minimal DSDT Edits for Gigabyte Socket 1156 Motherboards



    We know that using a DSDT is the best way to create a vanilla Hackintosh build.  The problem is that there have been numerous articles and forum posts on editing that are based on old versions of Gigabyte BIOS extracts. Many of them are retreads of the same information and are more complex than necessary. Since I am now doing the DSDT edits for the tonymacx86.com DSDT Database, I wanted to figure out what was the least amount of edits I can do, while trying to make the edits match a real Mac as much as possible.

    Gigabyte's latest release cycle of P55/H55 BIOS updates in May 2010 includes a few Hackintosh-friendly enhancements.  They've included the CMOS reset fix and some other changes.  However, these modifications are not complete and some edits still need to be made. The way to tell if you have the Hackintosh-friendly BIOS is to search the decompiled DSDT for AMAC. If you find "Name (AMAC, 0x00)" then you have the new BIOS.

    The following is a guide for editing the extracted DSDT from the new Hackintosh-friendly BIOSes only. Some of these edits can be used with the older BIOS extracts, but has not been tested or is the complete list for those versions.

    First here are some cosmetic changes that will make your system look more Mac like. Gigabyte uses generic device names in it's DSDT instead of descriptive names like Apple does. One example is Gigabyte use PX40 instead of LPCB for the LPC Interface Bridge. So the first thing we can do is to search for PX40 and do a global replace with LPCB. The next is to rename the System Management Bus (SMBus) device PX43 to SBUS. Next would be to rename Device (IDE1) to Device (SATA) and then within it rename Device (PRIM) to Device (PRT0) and Device (SECD) to Device (PRT1). The final cosmetic edits deal with USB. You can rename the devices to more appropriate ones as shown within this table:

    Rename USB0 to UHC1
    Rename USB1 to UHC2
    Rename USB2 to UHC3
    Rename USB3 to UHC4
    Rename USB4 to UHC5
    Rename USB5 to UHC6
    Rename USB6 to UHC7
    Rename USBE to EHC1
    Rename USE2 to EHC2

    There are three required edits needed regardless of BIOS version. They are to include Method DTGP, add Return Package at the end of _WAK and fix the "Method local variable is not initialized (Local0)" error. 

    Now let’s review the new edits. One of the common edits has been to add a Device (BUS0). The problem I found is that sometimes it was added to the incorrect place or was coded incorrectly. The proper place for this device is as a sub-device within Device (SBUS). Here is what the correct device code should look like:


                    Device (BUS0)
                    {
                        Name (_CID, "smbus")
                        Name (_ADR, 0x00)
                        Device (DVL0)
                        {

                            Name (_ADR, 0x57)
                            Name (_CID, "diagsvault")

                            Method (_DSM, 4, NotSerialized)
                            {
                                Store (Package (0x02)
                                    {
                                           "address", 
                                           0x57
                                    }, Local0)
                                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                                Return (Local0)
                            }

                        }
                    }

    The next edit is for audio. Gigabyte uses a device name of AZAL, so we need to do a global replace with HDEF. Then we need to add codec information to Device (HDEF). Here I found that a lot of edits were injecting a lot of information that wasn't need. All that is required is to inject layout-id and PinConfigurations. Here is an example of what needs to be added for a board using and an ALC889 codec and using our Legacy889HDA.kext:

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x04)
                            {
                                "layout-id",
                                Buffer (0x04)
                                {
                                    0x79, 0x03, 0x00, 0x00   // decimal 889
                                },
                                "PinConfigurations",
                                Buffer (Zero)
                                {
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

    There is a problem with Audio break ups in 10.6.3 that can be corrected in the DSDT. The first is in Device (PIC) remove these two lines:

    IRQNoFlags ()
                    {2}

    The other fix for audio break ups is in Device (TMR) where Gigabyte has not yet added Hackintosh logic. We need to change:

                        Method (_CRS, 0, NotSerialized)
                        {
                            If (LGreaterEqual (OSFX, 0x03))
                            {
                                If (HPTF)
                                {
                                    Return (ATT6)
                                }
                                Else
                                {
                                    Return (ATT5)
                                }
                            }
                            Else
                            {
                                Return (ATT5)
                            }
                        }

    To:

                        Method (_CRS, 0, NotSerialized)
                        {
                            Return (ATT6)
                        }

    Gigabyte has not yet added Hackintosh logic to Device (HPET), so you will get kernel panics in AppleIntelCPUPowerManagement. The fix is easy; just change Method (_STA, 0, NotSerialized) to Return (0x0F) and to change Method (_CRS, 0, NotSerialized) to Return (ATT3).

    tonymacx86.com forum user Lnx2Mac brought this next edit to my attention. This edit allows use of the power button to put the computer to sleep.  In Device (PWRB) change Name (_HID, EisaId ("PNP0C0C")) to Name (_CID, EisaId ("PNP0C0C")).

    It seems that if the USB devices have no device-id or it's incorrect you won't have any USB 1.1 devices. So you have to add the following code to each USBx/UHCx device to enable it in Snow Leopard.

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "device-id",
                                Buffer (0x04)
                                {
                                    0x34, 0x3A, 0x00, 0x00
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

    I have found that the same device-id can be used for each USBx/UHCx device. They don't have to be unique, just valid.

    Likewise for the USBE/EHC1 and USE2/EHC2 devices we need to add the following code:

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x08)
                            {
                                "AAPL,current-available",
                                0x05DC,
                                "AAPL,current-extra",
                                0x044C,
                                "AAPL,current-in-sleep",
                                0x09C4,
                                "device-id",
                                Buffer (0x04)
                                {
                                    0x3A, 0x3A, 0x00, 0x00
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

    The "AAPL, ..." insertion is for compatibility and for native USB power savings.  Again, it is safe to use duplicate device-ids.

    If you have a Gigabyte P55/H55 motherboard whose current DSDT is not in the tonymacx86.com DSDT Database, you can submit it on the tonymacx86.com forum by clicking here.  The instructions are at the top of the topic.  After we receive it and verify that it is vanilla, we will do the edits and upload it to the database.

    For discussions on this and other topics, register today at tonymacx86.com!