Thanks for this fantastic thread and, in particular, your patience, Toleda. Much appreciated.
After some fiddling I now got power management working as far as I think it's possible. In the hope that I can give something back to this discussion here are some gotchas that I ran into, plus the solutions. Most of the solutions can be found in or deduced from other messages in this thread, but maybe this summary helps someone.
- If you have a discrete graphics card and you want your graphics card to drive your primary/only screen then you cannot use the Mac mini system definitions. The reason is that you cannot turn on the internal graphics (Intel HD4000) in this case because if you turn it on, then it must be the the one that drives the primary display. And if you don't turn on internal graphics then OS X misbehaves with a Mac mini system definition (e.g. failing Youtube video playback in Safari/Firefox), most likely because real Mac minis only have internal graphics.
- If you want playback of Apple DRM video content in iTunes, then you probably have to have the HD4000 enabled. Video playback of content with Apple DRM definitely does not work in my setup where I have the HD4000 disabled.
- If you use the iMac13,1 or 13,2 definition then (as of OS X 10.8.4) you will only be able to get two P-States, 16 and whatever the max is. (In my case that's 42 because I have an i7 3770K that I overclocked to 4.2GHz by setting the multiplier to 42 in the BIOS. I also gave 4200 as an argument to PikeRAlpha's script with which I generated the SSDT.aml file.) Now, this is not ideal, but if you can't use a Mac mini for the reasons stated above (graphics card and one screen), then that's what I believe you have to settle for. By the way, going back to Sandy Bridge land doesn't help either, with iMac12,2, which is the Sandy Bridge iMac, it's the same problem: only two P-States.
- If you're on a Gigabyte board chances are you haven't got a DSDT. If you haven't got a DSDT the name for the discrete graphics card (on a Gigabyte board) is PEG0. Unfortunately, OS X expects it to be called GFX0. In this case you have two options: 1) Create a custom DSDT in which you rename the graphics card to GFX0. This is better but also more involved. 2) If you're lazy like me you can simply find the section for your board in the Info.plist in AppleGraphicPowerManagement.kext and clone the GFX0 section changing the key to PEG0. The downside is that you have to redo this if Apple updates the kext. If you don't know what I mean by "clone" look at my attached plist file; lines 757-766 are the cloned copy of lines 747-756. You can also see that this is in the section for Mac-FC02E91DDD3FA6A4, which happens to be the board ID for iMac13,2 (as per post #1 for example).
- If you have an NVidia 6xx desktop card, then you have a card that Apple doesn't put into their iMacs. They use the mobile cards in the iMacs. So when the Apple graphics power management (AGPM) tries to look up your card (by vendor and device id) it doesn't find it and complains with the "AGPM unknown platform" warning. To fix this, you have to modify the Info.plist in AppleGraphicPowerManagement.kext. (Now you see why I was okay with being lazy to fix the PEG0 issue here, you have to touch the file anyway.) Basically, you have to find a card that's similar to yours (post #499 in this thread helps). Then you clone the section for that card and change the device id to the one of your card. You can find the device id for your card in the System Information.app, the vendor id is always 10de for NVidia. See previous point about cloning sections. In the attached Info.plist you can see that in lines 1045-1122 I have cloned the definition for the key Vendor10deDevice11a3 with a new key Vendor10deDevice1189 for my GTX670, which has vendor 10de (NVidia) and device id 1189.
- After you edit the Info.plist file in the Content directory of AppleGraphicPowerManagement.kext (often just called AGPM here), make sure that you rebuild your kernal cache before you reboot. There are several tools for this but if you're comfortable in Terminal you can just do "touch /System/Library/Extensions/" and wait until you see the corresponding messages in system.log. If you forget to rebuild the cache, you can make changes and think they're not working when, in fact, the system isn't even using them yet because it hasn't rebuilt the cache.
Like I said, no new facts in this post, but maybe some clarifications. Good luck!