fantomas Posted March 20, 2014 Share Posted March 20, 2014 (edited) ----------------------------- Mise à jour 12/07/2018 ----------------------------- La sortie de macOS 10.14 Beta m'oblige à mettre ce topic à jour. Plus de détails dans ce post. ----------------------------- Mise à jour 09/06/2017 ----------------------------- La sortie de macOS 10.13 Beta m'oblige à mettre ce topic à jour. Plus de détails dans ce post. ----------------------------- Mise à jour 15/06/2016 ----------------------------- Une petite mise à jour du topic pour confirmer le bon fonctionnement du patch à la volé de Clover (r3561) avec macOS Sierra. ----------------------------- Mise à jour 24/08/2015 ----------------------------- ok, très bien, comme pour la HD6770, la nouvelle méthode du patch à la volé est de nouveau fonctionnel et avec les dernières versions de Clover. pour ma part, je suis sur El Capitan DB7 et Clover r3259 par contre, je suis toujours obligé de m’aider de l’astuce avec FakeSMC pour que mes kexts soient toujours chargés, mais au moins cela marche. iMac:~ fantomas1$ kextstat |grep AMD 50 2 0xffffff7f82254000 0x125000 0x125000 com.apple.kext.AMDSupport (1.3.6) 39F651CE-4D8C-3F07-AA1A-DA5E31560DB5 51 0 0xffffff7f823bc000 0x17f000 0x17f000 com.apple.kext.AMD4800Controller (1.3.6) 5E857144-9C17-3942-BBD6-EA0BF7A16400 65 0 0xffffff7f82387000 0x22000 0x22000 com.apple.kext.AMDFramebuffer (1.3.6) 56B10DD0-F2F5-352D-90CC-F21BA40DE828 iMac:~ fantomas1$ kextstat |grep ATI 58 0 0xffffff7f8199d000 0x230000 0x230000 com.apple.ATIRadeonX2000 (10.0.0) 11CD5686-6CFF-3FD7-9D4C-6166FA4FA130 iMac:~ fantomas1$ ioreg |grep ATY | | | | +-o ATY,Cardinal@0 | | | | | +-o ATY_Cardinal | | | | +-o ATY,Cardinal@1 | | | | | +-o ATY_Cardinal et pour config.plist, cela donne ça : ceci est juste un exemple avec ma HD4830, il va de soi que vous devez mettre Device-ID de votre carte graphique !!! Salut à tou(te)s Comme certain(e)s le savent, les cartes graphiques dites "Exotiques" ne sont pas supportés par le système d'exploitation d'Apple. En sus d'ajouter l'identifient de la carte graphique (Device ID) dans l'Info.plist du ou des kexts concernés, il faut aussi interagir sur la partie "binaire" du kext par le biais du "patching". Dans notre cas, les cartes graphiques exotiques sont les cartes AMD (anciennement ATI) de la série HD 48xx, et plus précisément les HD 4830, HD4850, HD4870x2 et HD4890.* Donc le but est de faire fonctionner ces cartes graphiques de manière stable et fluide en activant QE_CI, chose nécessaire pour en profiter pleinement du système d'exploitation. * Juste avant de commencer, vous l'avez peut-être remarqué, la HD4870 n'est pas sur la liste suscitée et pour cause c'est que cette carte graphique est nativement supportée par le système d'exploitation d'Apple. Son Device ID est 0x94401002 que vous pouvez trouvé dans l'Info.plist des kexts concernés et c'est celui-ci que nous allons utiliser afin de le remplacer par le Device ID de notre carte graphique. ** Ce tuto est fait pour fonctionner sous OS X Mavericks, mais il doit fonctionner aussi avec les autres. La seule chose différente c'est l'adresse binaire à patcher. Très bien, comme le titre le suggère, nous allons voir comment faire reconnaître ces cartes graphiques sous Clover et obtenir par la même un QE_CI activé et parfaitement fonctionnelle. Je vais utiliser ma Sapphire HD4830 512 MB GDDR3 PCI-E (comme cobaye ) pour ce test et qui a pour Device ID 0x944c1002. Pour que ce test réussisse, nous allons donc utiliser ces 2 kexts, à savoir AMD4800Controller.kext (pour la partie QE) et ATIRadeonX2000.kext (pour la partie CI) et allons ajouter notre Device ID dans l'Info.plist. via le tweak "KernelAndKextPatches" Donc les valeurs à entrer dans notre config.plist sont celle-ci : <key>KernelAndKextPatches</key> <array> <dict> <key>Name</key> <string>AMD4800Controller</string> <key>InfoPlistPatch</key> <string>Yes</string> <key>Find</key> <string>0x94401002</string> <key>Replace</key> <string>0x944C1002</string> </dict> <dict> <key>Name</key> <string>ATIRadeonX2000</string> <key>InfoPlistPatch</key> <string>Yes</string> <key>Find</key> <string>0x94401002</string> <key>Replace</key> <string>0x944C1002</string> </dict> </array> Comme vous pouvez le voir, la clé "InfoPlistPatch" sert à injecter notre Device ID "uniquement" dans Info.plist, sans y toucher à la partie "binaire" de nos kexts. La clé "Find" a pour fonction de trouver le Device ID que l'on veut remplacer par le notre en utilisant la clé "Replace". Très bien, maintenant comme nous l'avons dit au début de ce tutoriel, ajouter notre Device ID n'est pas suffisant pour faire fonctionner pleinement notre carte graphique, il faut encore interagir sur la partie "binaire" de nos kexts. Dans notre cas, il va falloir agir uniquement sur un kext, çàd sur ATIRadeonX2000.kext et plus particulièrement sur ATIRadeonX2000.kext/Contents/MacOS/ATIRadeonX2000 Et pour cela, nous allons faire comme ceci : <key>KextsToPatch</key> <array> <dict> <key>Name</key> <string>ATIRadeonX2000</string> <key>Find</key> <data>0F8394010000</data> <key>Replace</key> <data>909090909090</data> </dict> </array> Là nous pouvons voir que la clé "InfoPlistPatch" n'est pas utilisée et donc ces valeurs n'auront aucun effet sur l'Info.plist mais agiront uniquement au niveau de la partie "binaire". Et voici les valeurs en leur forme complète que vous devrez ajouter dans votre config.plist <key>KernelAndKextPatches</key> <array> <dict> <key>Name</key> <string>AMD4800Controller</string> <key>InfoPlistPatch</key> <string>Yes</string> <key>Find</key> <string>0x94401002</string> <key>Replace</key> <string>0x944C1002</string> </dict> <dict> <key>Name</key> <string>ATIRadeonX2000</string> <key>InfoPlistPatch</key> <string>Yes</string> <key>Find</key> <string>0x94401002</string> <key>Replace</key> <string>0x944C1002</string> </dict> <dict> <key>Name</key> <string>ATIRadeonX2000</string> <key>Find</key> <data>0F8394010000</data> <key>Replace</key> <data>909090909090</data> </dict> </array> Très bien, maintenant il ne nous reste plus qu'à autoriser l'injection des kexts, sans quoi le patch ne fonctionnera pas. Et nous allons le faire via le tweak "InjectKexts" comme ceci : <key>SystemParameters</key> --> clé principale <dict> <key>InjectSystemID</key> <true/> <key>InjectKexts</key> --> sous clé <string>Yes</string> </dict> Si certain(e)s d'entre vous préfèrent utiliser le logiciel "Clover Configurator" pour plus de facilité, voici comment entrer ces valeurs : Allez sur l'onglet "Kernel And Kext Patches" et faites comme ceci : *Ne faites pas attention sur le majuscule/minuscule, cela ne fait aucune différence Et pour injecter les kexts, aller sur l'onglet "System Parameters" et mettez l'option Inject Kexts sur Yes comme ceci : Voilà, vous n'avez plus qu'à enregistrer les ajustements, redémarrer votre pc et apprécier le résultat. MAIS ... seulement voilà ... il y a un problème ... Quoi ? Initialement, les kexts ne sont pas présents dans le kernelcache à cause de "OSBundleRequired=Safe Boot" (ils ne sont pas chargés en local par défaut mais en mode sans échec) et donc le patchage "à la volé" (on the fly) ne fonctionnera pas. Donc quoi, tout ça pour rien ? Non, bien-sûr, voici l'astuce pour remédier à cela : Dans un premier temps, il vous faut booter l'OS sans kernelcache. Si vous utiliser Clover Configurator, il vous suffit juste de cocher l'option "No Caches" dans l'onglet "System and Parameters" ou bien vous le faites directement dans votre config.plist : <key>SystemParameters</key> <dict> <key>InjectSystemID</key> <true/> <key>InjectKexts</key> <string>Yes</string> <key>NoCaches</key> <true/> </dict> Ceci aura donc pour effet de bloquer kernelcache et obliger boot.efi de charger le kernel et les kexts séparément. Clover et FSInject vont ensuite intercepter tous les chargements des kexts par boot.efi et changer "OSBundleRequired=Safe Boot" en "OSBundleRequired=Root" à la volé (on the fly) et forceront boot .efi à charger les kexts. Et ensuite dans un second temps, Clover va patcher l'Info.plist de ces deux kexts et la partie binaire de ATIRadeonX2000, kernel va les charger et ils seront rattachés à votre carte graphique. Une fois ceci fait (donc les kexts utilisés), il vous suffit de faire sudo touch /System/Library/Extensions. Ceci créera un nouveau kernelcache qui cette fois-ci contiendra vos kexts utilisés. Ensuite il ne vous reste plus qu'à redémarrer normalement (en décochant l'option No Caches dans Clover Configurator) et le patch fonctionnera à merveille. Oui, mais ... là aussi ... Quoi encore ? Seulement voilà, pour une raison ou une autre, il peut arriver que kernelcache se reconstruit tout seul et le patch "à la volé" ne fonctionne plus. Alors je fais quoi moi en attendant ? L'astuce la plus efficace pour le moment est d'injecter les infos de vos kexts à l'intérieur de l'Info.plist de FakeSMC.kext comme des IOKitPersonalities additionnels. ????Kézako???? Ces infos vous les trouverez dans l'Info.plist de ces 2 kexts, sous IOKitPersonalities. Les voici : Pour AMD4800Controller.kext <key>Controller</key> <dict> <key>ATY,Cardinal</key> <dict> <key>aty_config</key> <dict> <key>CFG_NO_PP</key> <true/> </dict> </dict> <key>CFBundleIdentifier</key> <string>com.apple.kext.AMD4800Controller</string> <key>IOClass</key> <string>AMD4800Controller</string> <key>IOMatchCategory</key> <string>IOFramebuffer</string> <key>IOName</key> <string>AMD4800Controller</string> <key>IOPCIMatch</key> <string>0x94401002 0x944a1002</string> <key>IOProbeScore</key> <integer>65050</integer> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>aty_config</key> <dict> <key>CFG_NO_PP</key> <false/> <key>CFG_PAA</key> <integer>0</integer> <key>CFG_USE_USCN</key> <false/> </dict> <key>aty_properties</key> <dict> <key>PP_GFXClockGatingEnabled</key> <integer>1</integer> </dict> </dict> Et pour ATIRadeonX2000.kext <key>ATIRadeonX2000</key> <dict> <key>ATIEnableWideBlitSupport</key> <true/> <key>ATIUseTearingWideBlit</key> <false/> <key>CFBundleIdentifier</key> <string>com.apple.ATIRadeonX2000</string> <key>GpuDebugPolicy</key> <integer>0</integer> <key>IOCFPlugInTypes</key> <dict> <key>ACCF0000-0000-0000-0000-000a2789904e</key> <string>ATIRadeonX2000GA.plugin</string> </dict> <key>IOClass</key> <string>ATIRadeonX2000</string> <key>IODVDBundleName</key> <string>ATIRadeonX2000VADriver</string> <key>IOKitDebug</key> <integer>0</integer> <key>IOMatchCategory</key> <string>IOAccelerator</string> <key>IOPCIMatch</key> <string>0x94001002 0x94011002 0x94021002 0x94031002 0x95811002 0x95831002 0x95881002 0x94c81002 0x94c91002 0x95001002 0x95011002 0x95051002 0x95071002 0x95041002 0x95061002 0x95981002 0x94881002 0x95991002 0x95911002 0x95931002 0x94401002 0x94421002 0x944A1002 0x945A1002 0x94901002 0x949E1002 0x94801002 0x95401002 0x95411002 0x954E1002 0x954F1002 0x95521002 0x95531002 0x94a01002</string> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>IOSourceVersion</key> <string>8.24.11</string> <key>IOVARendererID</key> <integer>16908288</integer> <key>sensor-properties</key> <array> <dict> <key>device_type</key> <data> Z3B1LXNlbnNvcg== </data> <key>location</key> <string>GPU</string> <key>name</key> <string>gpu-sensor</string> <key>polling-period</key> <data> AAAAAQAAAAA= </data> <key>reg</key> <data> AAAAAg== </data> <key>sample-period</key> <data> AAAAAACYmAA= </data> <key>sensor-id</key> <data> AAAABg== </data> <key>version</key> <data> AAAAAg== </data> <key>zone</key> <data> AAAAAg== </data> </dict> </array </dict> Et voici donc l'Info.plist de FakeSMC.kext dans son intégrité, vous pouvez jeter un oeil, histoire de voir à quoi cela ressemble : FakeSMC_Info.plist.zip Et pour les moins casse-têtes, voici FakeSMC.kext modifié que j'utilise pour charger les 2 kexts : FakeSMC.kext.zip Voilà, avec ceci, vous n'aurez plus besoin de savoir si oui ou non les kexts sont dans le kernelcache. Crédits attribués à : netkas pour son incontournable QE_CI Exotic patch (même s'il n'importe plus son support) Slice & co. pour leur bébé nommé Clover dmazar pour son astuce avec FakeSMC.kext (pour plus d'info, voir ici) duffs (rarement ici, plus sur le site de netkas) pour son astuce de comment patcher la partie binaire avec Clover, ce fût lors de la sortie de OS X Mavericks DP1 nyolc8 pour le support de QE_CI Exotic patch pour Mavericks fantomas1 pour ......... pour ... quoi déjà ? Ah ben non ... non ... pour rien ... Edited July 13, 2018 by fantomas1 topic mis à jour le 12/07/2018 10 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/ Share on other sites More sharing options...
ham4ever Posted March 20, 2014 Share Posted March 20, 2014 i tired but really that AMD4800controller doesn't load,, even i can see them injecting 0:760 0:000 KextToPatch 1: ATIRadeonX2000 (QE CI PATCH) Info.plist patch, data len: 10 0:760 0:000 KextToPatch 2: AMD4800Controller (QE CI PATCH) Info.plist patch, data len: 10 0:760 0:000 KextToPatch 3: ATIRadeonX2000 (QE CI PATCH) Kext bin patch, data len: 6 but AMD4800Controller doesn't load actually ( using nocache=Yes) maybe this is a problem 6:925 0:000 FSInjection: blocking caches, using kexts path: 'EFI\CLOVER\kexts\10.9' Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2006093 Share on other sites More sharing options...
fantomas Posted March 20, 2014 Author Share Posted March 20, 2014 hi ham4ever did you tried the trick with fakesmc? Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2006094 Share on other sites More sharing options...
ham4ever Posted March 20, 2014 Share Posted March 20, 2014 yes also fakesmc Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2006099 Share on other sites More sharing options...
fantomas Posted March 20, 2014 Author Share Posted March 20, 2014 if you want, we can use team viewer and I will take a look or put your config.plist here to see 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2006103 Share on other sites More sharing options...
ham4ever Posted March 20, 2014 Share Posted March 20, 2014 Yes that would be awesome if u can check my pc using teamviewer some progress thanks to you : now AMD4800controller is loaded but AMDframebuffer is not loaded lol 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2006106 Share on other sites More sharing options...
gils83 Posted March 29, 2014 Share Posted March 29, 2014 (edited) Aller !! je relance le débat , hormis Chameleon ou Clover , j'ai toujours le problème récurent du rafraichissement , étant motivé pour résoudre ce problème depuis 2010 !! la patience est une vertu parait-il ?! , j'en suis au device id 0x94421002 écrit dans info.plist du AMDController4800.kext , il y a bien une solution quand même ? cette 4850 1024 mérite que l'on se casse la tête non ? * Intel ACPI Component Architecture * AML Disassembler version 20091214 * * Disassembly of ./dsdt.aml, Sun Mar 30 03:31:54 2014 * * * Original Table Header: * Signature "DSDT" * Length 0x00004A26 (18982) * Revision 0x01 **** ACPI 1.0, no 64-bit math support * Checksum 0x0A * OEM ID "GBT " * OEM Table ID "GBTUACPI" * OEM Revision 0x00001000 (4096) * Compiler ID "INTL" * Compiler Version 0x20120420 (538051616) */ DefinitionBlock ("./dsdt.aml", "DSDT", 1, "GBT ", "GBTUACPI", 0x00001000) { Scope (_PR) { Processor (CPU0, 0x00, 0x00000410, 0x06) {} Processor (CPU1, 0x01, 0x00000410, 0x06) {} Processor (CPU2, 0x02, 0x00000410, 0x06) {} Processor (CPU3, 0x03, 0x00000410, 0x06) {} Processor (CPU4, 0x04, 0x00000410, 0x06) {} Processor (CPU5, 0x05, 0x00000410, 0x06) {} Processor (CPU6, 0x06, 0x00000410, 0x06) {} Processor (CPU7, 0x07, 0x00000410, 0x06) {} } Name (_S0, Package (0x04) { Zero, Zero, Zero, Zero }) Name (SS1, Package (0x04) { One, Zero, Zero, Zero }) Name (_S3, Package (0x04) { 0x05, Zero, Zero, Zero }) Name (_S4, Package (0x04) { 0x06, Zero, Zero, Zero }) Name (_S5, Package (0x04) { 0x07, Zero, Zero, Zero }) Name (FLAG, Zero) Name (STAT, Zero) OperationRegion (SMOD, SystemMemory, 0x000FF840, One) Field (SMOD, ByteAcc, NoLock, Preserve) { , 7, SUSF, 1 } OperationRegion (LBOC, SystemMemory, 0x000FF820, 0x02) Field (LBOC, ByteAcc, NoLock, Preserve) { UBMC, 1, Offset (0x02) } OperationRegion (DEBG, SystemIO, 0x80, One) Field (DEBG, ByteAcc, NoLock, Preserve) { DBG1, 8 } OperationRegion (RCRB, SystemMemory, 0xFED1C000, 0x4000) Field (RCRB, DWordAcc, Lock, Preserve) { Offset (0x3404), , 7, HPTF, 1 } OperationRegion (ELKM, SystemMemory, 0x000FFFEA, One) Field (ELKM, ByteAcc, NoLock, Preserve) { , 1, , 1, ELSO, 1, , 1, , 1, , 1, , 1 } OperationRegion (EXTM, SystemMemory, 0x000FF830, 0x10) Field (EXTM, WordAcc, NoLock, Preserve) { ROM1, 16, RMS1, 16, ROM2, 16, RMS2, 16, ROM3, 16, RMS3, 16, AMEM, 32 } OperationRegion (SMIC, SystemIO, 0xB2, One) Field (SMIC, ByteAcc, NoLock, Preserve) { SCP, 8 } OperationRegion (TCOI, SystemIO, 0x0460, 0x08) Field (TCOI, WordAcc, NoLock, Preserve) { Offset (0x04), , 9, SCIS, 1, Offset (0x06) } OperationRegion (GP2C, SystemIO, 0x042C, 0x02) Field (GP2C, ByteAcc, NoLock, Preserve) { G2C1, 8, G2C2, 8 } OperationRegion (APMP, SystemIO, 0xB2, 0x02) Field (APMP, ByteAcc, NoLock, Preserve) { APMC, 8, APMD, 8 } OperationRegion (AGPS, SystemIO, 0x0438, 0x04) Field (AGPS, ByteAcc, NoLock, Preserve) { GPSE, 16, GPSS, 16 } OperationRegion (GPCN, SystemIO, 0x0442, One) Field (GPCN, ByteAcc, NoLock, Preserve) { , 1, SWGC, 1, Offset (0x01) } Name (OSFX, One) Name (LINX, Zero) Name (AMAC, Zero) Name (OSFL, One) Method (STRC, 2, NotSerialized) { If (LNotEqual (SizeOf (Arg0), SizeOf (Arg1))) { Return (Zero) } Add (SizeOf (Arg0), One, Local0) Name (BUF0, Buffer (Local0) {}) Name (BUF1, Buffer (Local0) {}) Store (Arg0, BUF0) Store (Arg1, BUF1) While (Local0) { Decrement (Local0) If (LNotEqual (DerefOf (Index (BUF0, Local0)), DerefOf (Index ( BUF1, Local0)))) { Return (Zero) } } Return (One) } OperationRegion (INFO, SystemMemory, 0x000FF840, One) Field (INFO, ByteAcc, NoLock, Preserve) { KBDI, 1, RTCW, 1, PS2F, 1, IRFL, 2, DISE, 1, SSHU, 1 } Scope (\) { Name (PICF, Zero) Method (_PIC, 1, NotSerialized) { Store (Arg0, PICF) } } Method (_PTS, 1, NotSerialized) { Or (Arg0, 0xF0, Local0) Store (Local0, DBG1) OSTP () Or (Arg0, 0xF0, Local0) Store (Local0, DBG1) If (LEqual (Arg0, One)) {} If (LEqual (Arg0, 0x03)) {} If (LEqual (Arg0, 0x05)) { Store (0x99, SMIP) } If (LEqual (Arg0, 0x04)) { If (LNot (PICF)) { Sleep (0x64) } } } Method (_WAK, 1, NotSerialized) { Store (0xFF, DBG1) If (LEqual (Arg0, 0x04)) { If (LEqual (OSFL, One)) { Store (0x56, SMIP) } If (LEqual (OSFL, 0x02)) { Store (0x57, SMIP) } If (LEqual (OSFL, Zero)) { Store (0x58, Local0) If (LEqual (OSFX, 0x03)) { Store (0x59, Local0) } If (LEqual (OSFX, 0x05)) { Store (0x5B, Local0) } If (LEqual (OSFX, 0x07)) { Store (0x5D, Local0) } Store (Local0, SMIP) } } If (LEqual (Arg0, One)) {} If (OSFL) { Notify (\_SB.PWRB, 0x02) } Else { If (LEqual (RTCW, Zero)) { Notify (\_SB.PWRB, 0x02) } } } Scope (_SI) { Method (_MSG, 1, NotSerialized) { Store ("Local0", Local0) } Method (_SST, 1, NotSerialized) { Store ("Local0", Local0) } } Scope (_GPE) { Method (_L08, 0, NotSerialized) { Notify (\_SB.PCI0.PX40.UAR1, 0x02) } Method (_L06, 0, NotSerialized) { If (\_SB.PCI0.IGD0.GSSE) { \_SB.PCI0.IGD0.OPRN () } Else { Store (One, SCIS) } } Method (_L0D, 0, NotSerialized) { Notify (\_SB.PCI0.USBE, 0x02) Notify (\_SB.PCI0.USE2, 0x02) Notify (\_SB.PWRB, 0x02) Notify (\_SB.PCI0.AZAL, 0x02) } Method (_L0B, 0, NotSerialized) { Notify (\_SB.PCI0.HUB0, 0x02) } Method (_L09, 0, NotSerialized) { Notify (\_SB.PCI0.PEX0, 0x02) Notify (\_SB.PCI0.PEX1, 0x02) Notify (\_SB.PCI0.PEX2, 0x02) Notify (\_SB.PCI0.PEX3, 0x02) Notify (\_SB.PCI0.PEX4, 0x02) Notify (\_SB.PCI0.PEX5, 0x02) Notify (\_SB.PCI0.PEX6, 0x02) Notify (\_SB.PCI0.PEX7, 0x02) } } Scope (_SB) { Device (PWRB) { Name (_HID, EisaId ("PNP0C0C")) Method (_STA, 0, NotSerialized) { Return (0x0B) } } Device (PCI0) { Name (_HID, EisaId ("PNP0A03")) Name (_ADR, Zero) Name (_UID, One) Name (_BBN, Zero) OperationRegion (MMDR, PCI_Config, 0x90, 0x30) Scope (\) { Field (\_SB.PCI0.MMDR, AnyAcc, NoLock, Preserve) { Offset (0x08), Offset (0x10), Offset (0x18), Offset (0x20), SMBD, 32, SMBG, 32, TSMB, 32, TLUD, 32 } } Method (_S3D, 0, NotSerialized) { If (LEqual (OSFL, 0x02)) { Return (0x02) } Else { Return (0x03) } } Method (_STA, 0, NotSerialized) { Return (0x0F) } Method (_CRS, 0, NotSerialized) { Name (BUF0, ResourceTemplate () { WordBusNumber (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode, 0x0000, // Granularity 0x0000, // Range Minimum 0x003F, // Range Maximum 0x0000, // Translation Offset 0x0040, // Length ,, ) IO (Decode16, 0x0CF8, // Range Minimum 0x0CF8, // Range Maximum 0x01, // Alignment 0x08, // Length ) WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, 0x0000, // Granularity 0x0000, // Range Minimum 0x0CF7, // Range Maximum 0x0000, // Translation Offset 0x0CF8, // Length ,, , TypeStatic) WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, 0x0000, // Granularity 0x0D00, // Range Minimum 0xFFFF, // Range Maximum 0x0000, // Translation Offset 0xF300, // Length ,, , TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000A0000, // Range Minimum 0x000BFFFF, // Range Maximum 0x00000000, // Translation Offset 0x00020000, // Length ,, , AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000C0000, // Range Minimum 0x000DFFFF, // Range Maximum 0x00000000, // Translation Offset 0x00020000, // Length ,, , AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0xFED40000, // Range Minimum 0xFED44FFF, // Range Maximum 0x00000000, // Translation Offset 0x00005000, // Length ,, , AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x00100000, // Range Minimum 0xFEBFFFFF, // Range Maximum 0x00000000, // Translation Offset 0xFEB00000, // Length ,, _Y00, AddressRangeMemory, TypeStatic) }) CreateDWordField (BUF0, \_SB.PCI0._CRS._Y00._MIN, TCMM) CreateDWordField (BUF0, \_SB.PCI0._CRS._Y00._LEN, TOMM) Store (TLUD, TCMM) Subtract (0xFEC00000, TCMM, TOMM) Return (BUF0) } Name (PICM, Package (0x1F) { Package (0x04) { 0x0002FFFF, Zero, LNKA, Zero }, Package (0x04) { 0x0002FFFF, One, LNKB, Zero }, Package (0x04) { 0x0002FFFF, 0x02, LNKC, Zero }, Package (0x04) { 0x0002FFFF, 0x03, LNKD, Zero }, Package (0x04) { 0x0016FFFF, Zero, LNKA, Zero }, Package (0x04) { 0x0016FFFF, One, LNKB, Zero }, Package (0x04) { 0x0016FFFF, 0x02, LNKC, Zero }, Package (0x04) { 0x0016FFFF, 0x03, LNKD, Zero }, Package (0x04) { 0x001BFFFF, Zero, LNK0, Zero }, Package (0x04) { 0x0001FFFF, Zero, LNKA, Zero }, Package (0x04) { 0x0001FFFF, One, LNKB, Zero }, Package (0x04) { 0x0001FFFF, 0x02, LNKC, Zero }, Package (0x04) { 0x0001FFFF, 0x03, LNKD, Zero }, Package (0x04) { 0x001CFFFF, Zero, LNKA, Zero }, Package (0x04) { 0x001CFFFF, One, LNKB, Zero }, Package (0x04) { 0x001CFFFF, 0x02, LNKC, Zero }, Package (0x04) { 0x001CFFFF, 0x03, LNKD, Zero }, Package (0x04) { 0x001CFFFF, Zero, LNKA, Zero }, Package (0x04) { 0x001CFFFF, One, LNKB, Zero }, Package (0x04) { 0x001CFFFF, 0x02, LNKC, Zero }, Package (0x04) { 0x001CFFFF, 0x03, LNKD, Zero }, Package (0x04) { 0x001DFFFF, Zero, LNK1, Zero }, Package (0x04) { 0x001DFFFF, One, LNKD, Zero }, Package (0x04) { 0x001DFFFF, 0x02, LNKC, Zero }, Package (0x04) { 0x001DFFFF, 0x03, LNKA, Zero }, Package (0x04) { 0x001FFFFF, One, LNKD, Zero }, Package (0x04) { 0x001FFFFF, One, LNKD, Zero }, Package (0x04) { 0x001FFFFF, 0x02, LNKC, Zero }, Package (0x04) { 0x001AFFFF, Zero, LNKA, Zero }, Package (0x04) { 0x001AFFFF, One, LNKF, Zero }, Package (0x04) { 0x001AFFFF, 0x02, LNKC, Zero } }) Name (APIC, Package (0x23) { Package (0x04) { 0x0002FFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x0002FFFF, One, Zero, 0x11 }, Package (0x04) { 0x0002FFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x0002FFFF, 0x03, Zero, 0x13 }, Package (0x04) { 0x0016FFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x0016FFFF, One, Zero, 0x11 }, Package (0x04) { 0x0016FFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x0016FFFF, 0x03, Zero, 0x13 }, Package (0x04) { 0x001BFFFF, Zero, Zero, 0x16 }, Package (0x04) { 0x0001FFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x0001FFFF, One, Zero, 0x11 }, Package (0x04) { 0x0001FFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x0001FFFF, 0x03, Zero, 0x13 }, Package (0x04) { 0x0006FFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x0006FFFF, One, Zero, 0x11 }, Package (0x04) { 0x0006FFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x0006FFFF, 0x03, Zero, 0x13 }, Package (0x04) { 0x001CFFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x001CFFFF, One, Zero, 0x11 }, Package (0x04) { 0x001CFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x001CFFFF, 0x03, Zero, 0x13 }, Package (0x04) { 0x001CFFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x001CFFFF, One, Zero, 0x11 }, Package (0x04) { 0x001CFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x001CFFFF, 0x03, Zero, 0x13 }, Package (0x04) { 0x001DFFFF, Zero, Zero, 0x17 }, Package (0x04) { 0x001DFFFF, One, Zero, 0x13 }, Package (0x04) { 0x001DFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x001DFFFF, 0x03, Zero, 0x10 }, Package (0x04) { 0x001FFFFF, One, Zero, 0x13 }, Package (0x04) { 0x001FFFFF, One, Zero, 0x13 }, Package (0x04) { 0x001FFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x001AFFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x001AFFFF, One, Zero, 0x15 }, Package (0x04) { 0x001AFFFF, 0x02, Zero, 0x12 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } Device (IGD0) { Name (_ADR, 0x00020000) OperationRegion (IGDP, PCI_Config, 0x40, 0xC0) Field (IGDP, AnyAcc, NoLock, Preserve) { Offset (0x12), , 1, GIVD, 1, , 2, GUMA, 3, Offset (0x14), , 4, GMFN, 1, Offset (0x18), SSRW, 32, Offset (0xA4), ASLE, 8, Offset (0xA8), GSSE, 1, GSSB, 14, GSES, 1, Offset (0xB0), Offset (0xB1), CDVL, 5, Offset (0xB2), Offset (0xBC), ASLS, 32 } OperationRegion (IGDM, SystemMemory, 0xFFFF0000, 0x2040) Field (IGDM, AnyAcc, NoLock, Preserve) { SIGN, 128, SIZE, 32, OVER, 32, SVER, 256, VVER, 128, GVER, 128, MBOX, 32, Offset (0x100), DRDY, 32, CSTS, 32, CEVT, 32, Offset (0x120), DIDL, 256, CPDL, 256, CADL, 256, NADL, 256, ASLP, 32, TIDX, 32, CHPD, 32, CLID, 32, CDCK, 32, SXSW, 32, EVTS, 32, CNOT, 32, NRDY, 32, Offset (0x200), SCIE, 1, GEFC, 4, GXFC, 3, GESF, 8, Offset (0x204), PARM, 32, DSLP, 32, Offset (0x300), ARDY, 32, ASLC, 32, TCHE, 32, ALSI, 32, BCLP, 32, PFIT, 32, Offset (0x400), GVD1, 57344, IBTT, 8, IPAT, 8, ITVF, 8, ITVM, 8, IPSC, 8, IBLC, 8, IBIA, 8, ISSC, 8, I409, 8, I509, 8, I609, 8, I709, 8, IDMM, 8, IDMS, 8, IF1E, 8, GSMI, 8, HVCO, 8, LIDS, 8, CGCS, 16 } Name (DBTB, Package (0x11) { Zero, One, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x10, 0x11, 0x12, 0x13, 0x14, 0xFF }) Name (SUCC, One) Name (NVLD, 0x02) Name (CRIT, 0x04) Name (NCRT, 0x06) Method (OPRN, 0, Serialized) { Method (GBDA, 0, Serialized) { If (LEqual (GESF, Zero)) { Store (Zero, PARM) Or (PARM, One, PARM) Or (PARM, 0x08, PARM) Or (PARM, 0x10, PARM) Or (PARM, 0x20, PARM) Or (PARM, 0x40, PARM) Or (PARM, 0x0200, PARM) Store (Zero, GESF) Return (SUCC) } If (LEqual (GESF, One)) { Store (0x0240, PARM) Store (Zero, GESF) Return (SUCC) } If (LEqual (GESF, 0x04)) { Name (LOOP, Zero) And (PARM, 0xFFFFFF00, PARM) Or (DerefOf (Index (DBTB, IBTT)), PARM, PARM) Store (Zero, GESF) Return (SUCC) } If (LEqual (GESF, 0x05)) { Store (IPSC, PARM) Or (PARM, ShiftLeft (IPAT, 0x08), PARM) Add (PARM, 0x0100, PARM) Or (PARM, ShiftLeft (LIDS, 0x10), PARM) Add (PARM, 0x00010000, PARM) Or (PARM, ShiftLeft (IBIA, 0x14), PARM) Store (Zero, GESF) Return (SUCC) } If (LEqual (GESF, 0x06)) { Store (ITVF, PARM) Or (PARM, ShiftLeft (ITVM, 0x04), PARM) Store (Zero, GESF) Return (SUCC) } If (LEqual (GESF, 0x07)) { Store (GIVD, PARM) XOr (PARM, One, PARM) Or (PARM, ShiftLeft (GMFN, One), PARM) Or (PARM, 0x1800, PARM) If (LEqual (IDMM, Zero)) { Or (PARM, ShiftLeft (IDMS, 0x0D), PARM) } If (LOr (LEqual (IDMM, One), LEqual (IDMM, 0x03))) { Or (PARM, ShiftLeft (IDMS, 0x11), PARM) } Or (PARM, ShiftLeft (CGCS, 0x15), PARM) Store (One, GESF) Return (SUCC) } If (LEqual (GESF, 0x0A)) { Store (Zero, PARM) If (ISSC) { Or (0x03, PARM) } Store (Zero, GESF) Return (SUCC) } Store (Zero, GESF) Return (CRIT) } Method (SBCB, 0, Serialized) { If (LEqual (GESF, Zero)) { Store (Zero, PARM) Store (Zero, GESF) Return (SUCC) } If (LEqual (GESF, One)) { Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x03)) { Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x04)) { Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x05)) { Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x06)) { Store (And (PARM, 0x0F), ITVF) Store (ShiftRight (And (PARM, 0xF0), 0x04), ITVM) Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x07)) { Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x08)) { Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x09)) { And (PARM, 0xFF, IBTT) Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x0A)) { And (PARM, 0xFF, IPSC) If (And (ShiftRight (PARM, 0x08), 0xFF)) { And (ShiftRight (PARM, 0x08), 0xFF, IPAT) Decrement (IPAT) } And (ShiftRight (PARM, 0x14), 0x07, IBIA) Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x0B)) { And (ShiftRight (PARM, One), One, IF1E) If (And (PARM, 0x0001E000)) { And (ShiftRight (PARM, 0x0D), 0x0F, IDMS) Store (Zero, IDMM) } Else { And (ShiftRight (PARM, 0x11), 0x0F, IDMS) Store (One, IDMM) } Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x10)) { Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x11)) { Store (ShiftLeft (LIDS, 0x08), PARM) Add (PARM, 0x0100, PARM) Store (Zero, GESF) Return (SUCC) } If (LEqual (GESF, 0x12)) { If (And (PARM, One)) { If (LEqual (ShiftRight (PARM, One), One)) { Store (One, ISSC) } Else { Store (Zero, GESF) Return (CRIT) } } Else { Store (Zero, ISSC) } Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } If (LEqual (GESF, 0x13)) { Store (Zero, GESF) Store (Zero, PARM) Return (SUCC) } Store (Zero, GESF) Return (SUCC) } If (LEqual (GEFC, 0x04)) { Store (GBDA (), GXFC) } If (LEqual (GEFC, 0x06)) { Store (SBCB (), GXFC) } Store (PARM, SSRW) Store (Zero, GEFC) Store (One, SCIS) Store (Zero, GSSE) Store (Zero, SCIE) Return (Zero) } } Device (IGD1) { Name (_ADR, 0x00020001) } Device (PEG0) { Name (_ADR, 0x00010000) Method (_STA, 0, NotSerialized) { Return (0x0F) } Name (PE00, Package (0x04) { Package (0x04) { 0xFFFF, Zero, LNKA, Zero }, Package (0x04) { 0xFFFF, One, LNKB, Zero }, Package (0x04) { 0xFFFF, 0x02, LNKC, Zero }, Package (0x04) { 0xFFFF, 0x03, LNKD, Zero } }) Name (AE00, Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x10 }, Package (0x04) { 0xFFFF, One, Zero, 0x11 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x13 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PE00) } Else { Return (AE00) } } } Device (PEG1) { Name (_ADR, 0x00010001) Method (_STA, 0, NotSerialized) { Return (0x0F) } Name (PE01, Package (0x04) { Package (0x04) { 0xFFFF, Zero, LNKB, Zero }, Package (0x04) { 0xFFFF, One, LNKC, Zero }, Package (0x04) { 0xFFFF, 0x02, LNKD, Zero }, Package (0x04) { 0xFFFF, 0x03, LNKA, Zero } }) Name (AE01, Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x11 }, Package (0x04) { 0xFFFF, One, Zero, 0x12 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x13 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x10 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PE01) } Else { Return (AE01) } } } Device (PEX0) { Name (_ADR, 0x001C0000) Method (_STA, 0, NotSerialized) { Return (0x0F) } Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x09, 0x05 }) } Name (PIC0, Package (0x04) { Package (0x04) { 0xFFFF, Zero, LNKA, Zero }, Package (0x04) { 0xFFFF, One, LNKB, Zero }, Package (0x04) { 0xFFFF, 0x02, LNKC, Zero }, Package (0x04) { 0xFFFF, 0x03, LNKD, Zero } }) Name (API0, Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x10 }, Package (0x04) { 0xFFFF, One, Zero, 0x11 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x13 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PIC0) } Else { Return (API0) } } } Device (PEX1) { Name (_ADR, 0x001C0001) Method (_STA, 0, NotSerialized) { Return (0x0F) } Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x09, 0x05 }) } Name (PIC1, Package (0x04) { Package (0x04) { 0xFFFF, Zero, LNKB, Zero }, Package (0x04) { 0xFFFF, One, LNKC, Zero }, Package (0x04) { 0xFFFF, 0x02, LNKD, Zero }, Package (0x04) { 0xFFFF, 0x03, LNKA, Zero } }) Name (API1, Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x11 }, Package (0x04) { 0xFFFF, One, Zero, 0x12 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x13 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x10 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PIC1) } Else { Return (API1) } } } Device (PEX2) { Name (_ADR, 0x001C0002) Method (_STA, 0, NotSerialized) { Return (0x0F) } Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x09, 0x05 }) } Name (PIC2, Package (0x04) { Package (0x04) { 0xFFFF, Zero, LNKC, Zero }, Package (0x04) { 0xFFFF, One, LNKD, Zero }, Package (0x04) { 0xFFFF, 0x02, LNKA, Zero }, Package (0x04) { 0xFFFF, 0x03, LNKB, Zero } }) Name (API2, Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x12 }, Package (0x04) { 0xFFFF, One, Zero, 0x13 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x10 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x11 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PIC2) } Else { Return (API2) } } } Device (PEX3) { Name (_ADR, 0x001C0003) Method (_STA, 0, NotSerialized) { Return (0x0F) } Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x09, 0x05 }) } Name (PIC3, Package (0x04) { Package (0x04) { 0xFFFF, Zero, LNKD, Zero }, Package (0x04) { 0xFFFF, One, LNKA, Zero }, Package (0x04) { 0xFFFF, 0x02, LNKB, Zero }, Package (0x04) { 0xFFFF, 0x03, LNKC, Zero } }) Name (API3, Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x13 }, Package (0x04) { 0xFFFF, One, Zero, 0x10 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x11 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x12 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PIC3) } Else { Return (API3) } } } Device (PEX4) { Name (_ADR, 0x001C0004) Method (_STA, 0, NotSerialized) { Return (0x0F) } Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x09, 0x05 }) } Name (PIC4, Package (0x04) { Package (0x04) { 0xFFFF, Zero, LNKA, Zero }, Package (0x04) { 0xFFFF, One, LNKB, Zero }, Package (0x04) { 0xFFFF, 0x02, LNKC, Zero }, Package (0x04) { 0xFFFF, 0x03, LNKD, Zero } }) Name (API4, Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x10 }, Package (0x04) { 0xFFFF, One, Zero, 0x11 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x13 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PIC4) } Else { Return (API4) } } } Device (PEX5) { Name (_ADR, 0x001C0005) Method (_STA, 0, NotSerialized) { Return (0x0F) } Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x09, 0x05 }) } Name (PIC5, Package (0x04) { Package (0x04) { 0xFFFF, Zero, LNKB, Zero }, Package (0x04) { 0xFFFF, One, LNKC, Zero }, Package (0x04) { 0xFFFF, 0x02, LNKD, Zero }, Package (0x04) { 0xFFFF, 0x03, LNKA, Zero } }) Name (API5, Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x11 }, Package (0x04) { 0xFFFF, One, Zero, 0x12 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x13 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x10 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PIC5) } Else { Return (API5) } } } Device (PEX6) { Name (_ADR, 0x001C0006) Method (_STA, 0, NotSerialized) { Return (0x0F) } Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x09, 0x05 }) } Name (PIC6, Package (0x04) { Package (0x04) { 0xFFFF, Zero, LNKC, Zero }, Package (0x04) { 0xFFFF, One, LNKD, Zero }, Package (0x04) { 0xFFFF, 0x02, LNKA, Zero }, Package (0x04) { 0xFFFF, 0x03, LNKB, Zero } }) Name (API6, Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x12 }, Package (0x04) { 0xFFFF, One, Zero, 0x13 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x10 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x11 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PIC6) } Else { Return (API6) } } } Device (PEX7) { Name (_ADR, 0x001C0007) Method (_STA, 0, NotSerialized) { Return (0x0F) } Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x09, 0x05 }) } Name (PIC7, Package (0x04) { Package (0x04) { 0xFFFF, Zero, LNKD, Zero }, Package (0x04) { 0xFFFF, One, LNKA, Zero }, Package (0x04) { 0xFFFF, 0x02, LNKB, Zero }, Package (0x04) { 0xFFFF, 0x03, LNKC, Zero } }) Name (API7, Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x13 }, Package (0x04) { 0xFFFF, One, Zero, 0x10 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x11 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x12 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PIC7) } Else { Return (API7) } } } Device (HUB0) { Name (_ADR, 0x001E0000) Method (_STA, 0, NotSerialized) { Return (0x0F) } Name (PICM, Package (0x08) { Package (0x04) { 0x0004FFFF, Zero, LNKA, Zero }, Package (0x04) { 0x0004FFFF, One, LNKB, Zero }, Package (0x04) { 0x0004FFFF, 0x02, LNKC, Zero }, Package (0x04) { 0x0004FFFF, 0x03, LNKD, Zero }, Package (0x04) { 0x0005FFFF, Zero, LNKB, Zero }, Package (0x04) { 0x0005FFFF, One, LNKC, Zero }, Package (0x04) { 0x0005FFFF, 0x02, LNKD, Zero }, Package (0x04) { 0x0005FFFF, 0x03, LNKA, Zero } }) Name (APIC, Package (0x08) { Package (0x04) { 0x0004FFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x0004FFFF, One, Zero, 0x11 }, Package (0x04) { 0x0004FFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x0004FFFF, 0x03, Zero, 0x13 }, Package (0x04) { 0x0005FFFF, Zero, Zero, 0x11 }, Package (0x04) { 0x0005FFFF, One, Zero, 0x12 }, Package (0x04) { 0x0005FFFF, 0x02, Zero, 0x13 }, Package (0x04) { 0x0005FFFF, 0x03, Zero, 0x10 } }) Method (_PRT, 0, NotSerialized) { If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x0B, 0x05 }) } } Device (PX40) { Name (_ADR, 0x001F0000) OperationRegion (PREV, PCI_Config, 0x08, One) Scope (\) { Field (\_SB.PCI0.PX40.PREV, ByteAcc, NoLock, Preserve) { REV0, 8 } } OperationRegion (PIRQ, PCI_Config, 0x60, 0x04) Scope (\) { Field (\_SB.PCI0.PX40.PIRQ, ByteAcc, NoLock, Preserve) { PIRA, 8, PIRB, 8, PIRC, 8, PIRD, 8 } } OperationRegion (PIR2, PCI_Config, 0x68, 0x04) Scope (\) { Field (\_SB.PCI0.PX40.PIR2, ByteAcc, NoLock, Preserve) { PIRE, 8, PIRF, 8, PIRG, 8, PIRH, 8 } } OperationRegion (LPIO, PCI_Config, 0x80, 0x0E) Scope (\) { Field (\_SB.PCI0.PX40.LPIO, ByteAcc, NoLock, Preserve) { UAIO, 8, PRIO, 8, LPE1, 8, LPE2, 8, GN1L, 8, GN1H, 8, GN2L, 8, GN2H, 8 } Method (DISD, 1, NotSerialized) { If (LEqual (Arg0, Zero)) { And (LPE1, 0xFE, LPE1) } If (LEqual (Arg0, One)) { And (LPE1, 0xFD, LPE1) } If (LEqual (Arg0, 0x02)) { And (LPE1, 0xFB, LPE1) } If (LEqual (Arg0, 0x03)) { And (LPE1, 0xF7, LPE1) } If (LEqual (Arg0, 0x04)) { And (LPE2, 0xFC, LPE2) } If (LEqual (Arg0, 0x05)) { And (LPE1, 0xDF, LPE1) } If (LEqual (Arg0, 0x06)) { And (GN2L, 0xFE, GN2L) } } Method (CKIO, 2, NotSerialized) { If (LEqual (Arg1, Zero)) { Or (LPE1, One, LPE1) And (UAIO, 0xF0, Local0) If (LEqual (Arg0, 0x03F8)) { Or (Local0, Zero, UAIO) } If (LEqual (Arg0, 0x02F8)) { Or (Local0, One, UAIO) } If (LEqual (Arg0, 0x02E8)) { Or (Local0, 0x05, UAIO) } If (LEqual (Arg0, 0x03E8)) { Or (Local0, 0x07, UAIO) } } If (LEqual (Arg1, One)) { Or (LPE1, 0x02, LPE1) And (UAIO, 0x0F, Local0) If (LEqual (Arg0, 0x03F8)) { Or (Local0, Zero, UAIO) } If (LEqual (Arg0, 0x02F8)) { Or (Local0, 0x10, UAIO) } If (LEqual (Arg0, 0x02E8)) { Or (Local0, 0x50, UAIO) } If (LEqual (Arg0, 0x03E8)) { Or (Local0, 0x70, UAIO) } } If (LEqual (Arg1, 0x02)) { Or (LPE1, 0x04, LPE1) And (PRIO, 0xFC, Local0) If (LEqual (Arg0, 0x0378)) { Or (Local0, Zero, PRIO) } If (LEqual (Arg0, 0x0278)) { Or (Local0, One, PRIO) } If (LEqual (Arg0, 0x03BC)) { Or (Local0, 0x02, PRIO) } } If (LEqual (Arg1, 0x03)) { Or (LPE1, 0x08, LPE1) } If (LEqual (Arg1, 0x04)) { If (LEqual (Arg0, 0x0201)) { Or (LPE2, One, LPE2) } If (LEqual (Arg0, 0x0209)) { Or (LPE2, 0x02, LPE2) } } If (LEqual (Arg1, 0x06)) { If (LNotEqual (Arg0, 0xFFFF)) { And (Arg0, 0xFF, Local0) Or (Local0, One, GN2L) ShiftRight (Arg0, 0x08, GN2H) } Else { Store (Zero, GN2H) Store (Zero, GN2L) } } } } Scope (\) { Method (SLDM, 2, NotSerialized) { } } Scope (^^PCI0) { Name (LUCD, Buffer (0x7D) { /* 0000 */ 0x4C, 0x75, 0x63, 0x69, 0x64, 0x4C, 0x6F, 0x67, /* 0008 */ 0x69, 0x78, 0x00, 0x68, 0x00, 0x01, 0x00, 0x01, /* 0010 */ 0x00, 0x00, 0x00, 0x99, 0xCD, 0x35, 0x65, 0x37, /* 0018 */ 0x35, 0x36, 0x66, 0x30, 0x31, 0x36, 0x30, 0x64, /* 0020 */ 0x61, 0x36, 0x38, 0x31, 0x65, 0x32, 0x31, 0x61, /* 0028 */ 0x65, 0x32, 0x64, 0x62, 0x38, 0x66, 0x39, 0x32, /* 0030 */ 0x64, 0x31, 0x65, 0x64, 0x61, 0x63, 0x64, 0x38, /* 0038 */ 0x31, 0x35, 0x65, 0x61, 0x34, 0x36, 0x32, 0x35, /* 0040 */ 0x37, 0x62, 0x39, 0x36, 0x63, 0x37, 0x64, 0x61, /* 0048 */ 0x30, 0x32, 0x31, 0x35, 0x30, 0x32, 0x61, 0x39, /* 0050 */ 0x62, 0x35, 0x38, 0x37, 0x62, 0x30, 0x30, 0x30, /* 0058 */ 0x30, 0x32, 0x36, 0x45, 0x42, 0x63, 0x65, 0x64, /* 0060 */ 0x31, 0x36, 0x35, 0x31, 0x36, 0x33, 0x65, 0x35, /* 0068 */ 0x31, 0x65, 0x30, 0x36, 0x65, 0x30, 0x31, 0x64, /* 0070 */ 0x63, 0x34, 0x34, 0x63, 0x33, 0x35, 0x66, 0x65, /* 0078 */ 0x61, 0x33, 0x65, 0x61, 0x66 }) } Scope (\) { OperationRegion (SCPP, SystemIO, 0xB2, One) Field (SCPP, ByteAcc, NoLock, Preserve) { SMIP, 8 } } Method (^_INI, 0, NotSerialized) { If (STRC (_OS, "Microsoft Windows")) { Store (0x56, SMIP) } Else { If (STRC (_OS, "Microsoft Windows NT")) { If (CondRefOf (\_OSI, Local0)) { Store (Zero, Local2) If (_OSI ("Windows 2001")) { Store (Zero, OSFL) Store (0x59, Local1) Store (0x03, OSFX) Store (One, Local2) } If (_OSI ("Windows 2006")) { Store (Zero, OSFL) Store (0x5B, Local1) Store (0x05, OSFX) Store (One, Local2) } If (_OSI ("Windows 2009")) { Store (Zero, OSFL) Store (0x5D, Local1) Store (0x07, OSFX) Store (One, Local2) } If (LNotEqual (Local2, Zero)) { Store (Local1, SMIP) } } Else { Store (0x58, SMIP) Store (Zero, OSFL) } } Else { If (CondRefOf (\_OSI, Local0)) { If (_OSI ("Linux")) { Store (One, LINX) } If (_OSI ("Darwin")) { Store (One, AMAC) } } Store (0x57, SMIP) Store (0x02, OSFL) } } } Scope (\) { Method (OSTP, 0, NotSerialized) { If (LEqual (OSFL, One)) { Store (0x56, SMIP) } If (LEqual (OSFL, 0x02)) { Store (0x57, SMIP) } If (LEqual (OSFL, Zero)) { Store (0x58, Local1) If (LGreaterEqual (OSFX, 0x03)) { Store (0x59, Local1) If (LEqual (OSFX, 0x05)) { Store (0x5B, Local1) } If (LEqual (OSFX, 0x07)) { Store (0x5D, Local1) } } Store (Local1, SMIP) } } } Device (SYSR) { Name (_HID, EisaId ("PNP0C02")) Name (_UID, One) Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0010, // Range Minimum 0x0010, // Range Maximum 0x01, // Alignment 0x10, // Length ) IO (Decode16, 0x0022, // Range Minimum 0x0022, // Range Maximum 0x01, // Alignment 0x1E, // Length ) IO (Decode16, 0x0044, // Range Minimum 0x0044, // Range Maximum 0x01, // Alignment 0x0A, // Length ) IO (Decode16, 0x0050, // Range Minimum 0x0050, // Range Maximum 0x01, // Alignment 0x10, // Length ) IO (Decode16, 0x0062, // Range Minimum 0x0062, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x0065, // Range Minimum 0x0065, // Range Maximum 0x01, // Alignment 0x0B, // Length ) IO (Decode16, 0x0074, // Range Minimum 0x0074, // Range Maximum 0x01, // Alignment 0x0C, // Length ) IO (Decode16, 0x0091, // Range Minimum 0x0091, // Range Maximum 0x01, // Alignment 0x03, // Length ) IO (Decode16, 0x00A2, // Range Minimum 0x00A2, // Range Maximum 0x01, // Alignment 0x1E, // Length ) IO (Decode16, 0x00E0, // Range Minimum 0x00E0, // Range Maximum 0x01, // Alignment 0x10, // Length ) IO (Decode16, 0x04D0, // Range Minimum 0x04D0, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x0290, // Range Minimum 0x0290, // Range Maximum 0x01, // Alignment 0x10, // Length ) IO (Decode16, 0x0800, // Range Minimum 0x0800, // Range Maximum 0x01, // Alignment 0x06, // Length ) IO (Decode16, 0x0290, // Range Minimum 0x0290, // Range Maximum 0x01, // Alignment 0x05, // Length ) IO (Decode16, 0x0880, // Range Minimum 0x0880, // Range Maximum 0x01, // Alignment 0x10, // Length ) }) } Device (PIC) { Name (_HID, EisaId ("PNP0000")) Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0020, // Range Minimum 0x0020, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x00A0, // Range Minimum 0x00A0, // Range Maximum 0x01, // Alignment 0x02, // Length ) IRQNoFlags () {2} }) } Device (DMA1) { Name (_HID, EisaId ("PNP0200")) Name (_CRS, ResourceTemplate () { DMA (Compatibility, BusMaster, Transfer8, ) {4} IO (Decode16, 0x0000, // Range Minimum 0x0000, // Range Maximum 0x01, // Alignment 0x10, // Length ) IO (Decode16, 0x0080, // Range Minimum 0x0080, // Range Maximum 0x01, // Alignment 0x11, // Length ) IO (Decode16, 0x0094, // Range Minimum 0x0094, // Range Maximum 0x01, // Alignment 0x0C, // Length ) IO (Decode16, 0x00C0, // Range Minimum 0x00C0, // Range Maximum 0x01, // Alignment 0x20, // Length ) }) } Device (TMR) { Name (_HID, EisaId ("PNP0100")) Name (ATT5, ResourceTemplate () { IO (Decode16, 0x0040, // Range Minimum 0x0040, // Range Maximum 0x00, // Alignment 0x04, // Length ) IRQNoFlags () {0} }) Name (ATT6, ResourceTemplate () { IO (Decode16, 0x0040, // Range Minimum 0x0040, // Range Maximum 0x00, // Alignment 0x04, // Length ) }) Method (_CRS, 0, NotSerialized) { If (LGreaterEqual (OSFX, 0x03)) { If (HPTF) { Return (ATT6) } Else { Return (ATT5) } } Else { Return (ATT5) } } } Device (HPET) { Name (_HID, EisaId ("PNP0103")) Name (ATT3, ResourceTemplate () { IRQNoFlags () {0} IRQNoFlags () {8} Memory32Fixed (ReadWrite, 0xFED00000, // Address Base 0x00000400, // Address Length ) }) Name (ATT4, ResourceTemplate () { }) Method (_STA, 0, NotSerialized) { If (LGreaterEqual (OSFX, 0x03)) { If (HPTF) { Return (0x0F) } Else { Return (Zero) } } Else { Return (Zero) } } Method (_CRS, 0, NotSerialized) { If (LGreaterEqual (OSFX, 0x03)) { If (HPTF) { Return (ATT3) } Else { Return (ATT4) } } Else { Return (ATT4) } } } Device (RTC) { Name (_HID, EisaId ("PNP0B00")) Name (ATT0, ResourceTemplate () { IO (Decode16, 0x0070, // Range Minimum 0x0070, // Range Maximum 0x00, // Alignment 0x04, // Length ) IRQNoFlags () {8} }) Name (ATT1, ResourceTemplate () { IO (Decode16, 0x0070, // Range Minimum 0x0070, // Range Maximum 0x00, // Alignment 0x04, // Length ) }) Name (ATT2, ResourceTemplate () { IO (Decode16, 0x0070, // Range Minimum 0x0070, // Range Maximum 0x00, // Alignment 0x02, // Length ) IRQNoFlags () {8} }) Name (ATT3, ResourceTemplate () { IO (Decode16, 0x0070, // Range Minimum 0x0070, // Range Maximum 0x00, // Alignment 0x02, // Length ) }) Method (_CRS, 0, NotSerialized) { If (LGreaterEqual (OSFX, 0x03)) { If (HPTF) { Return (ATT1) } Else { Return (ATT0) } } Else { If (LEqual (AMAC, One)) { Return (ATT2) } Return (ATT0) } } } Device (SPKR) { Name (_HID, EisaId ("PNP0800")) Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0061, // Range Minimum 0x0061, // Range Maximum 0x01, // Alignment 0x01, // Length ) }) } Device (COPR) { Name (_HID, EisaId ("PNP0C04")) Name (_CRS, ResourceTemplate () { IO (Decode16, 0x00F0, // Range Minimum 0x00F0, // Range Maximum 0x01, // Alignment 0x10, // Length ) IRQNoFlags () {13} }) } Scope (\) { OperationRegion (WIN1, SystemIO, 0x2E, 0x02) Field (WIN1, ByteAcc, NoLock, Preserve) { INDP, 8, DATP, 8 } OperationRegion (GPIO, SystemIO, 0x0800, 0x05) Field (GPIO, ByteAcc, NoLock, Preserve) { GO01, 8, GO02, 8, GO03, 8, GO04, 8, GO05, 8 } IndexField (INDP, DATP, ByteAcc, NoLock, Preserve) { Offset (0x02), CFG, 8, Offset (0x07), LDN, 8, Offset (0x20), IDHI, 8, IDLO, 8, POWC, 8, Offset (0x30), ACTR, 8, Offset (0x60), IOAH, 8, IOAL, 8, IO2H, 8, IO2L, 8, Offset (0x70), INTR, 8, Offset (0x72), INT1, 8, Offset (0x74), DMCH, 8, Offset (0xC0), GP40, 8, Offset (0xF0), OPT1, 8, OPT2, 8, OPT3, 8, OPT4, 8 } Method (ENFG, 0, NotSerialized) { Store (0x87, INDP) Store (One, INDP) Store (0x55, INDP) Store (0x55, INDP) } Method (EXFG, 0, NotSerialized) { Store (0x02, CFG) } Method (GSRG, 1, NotSerialized) { Store (Arg0, INDP) Return (DATP) } Method (SSRG, 2, NotSerialized) { Store (Arg0, INDP) Store (Arg1, DATP) } } Device (FDC0) { Name (_HID, EisaId ("PNP0700")) Method (_STA, 0, NotSerialized) { ENFG () Store (Zero, LDN) If (ACTR) { EXFG () Return (0x0F) } Else { If (LOr (IOAH, IOAL)) { EXFG () Return (0x0D) } Else { EXFG () Return (Zero) } } } Method (_DIS, 0, NotSerialized) { ENFG () Store (Zero, LDN) Store (Zero, ACTR) SLDM (DMCH, 0x04) EXFG () DISD (0x03) } Method (_CRS, 0, NotSerialized) { Name (BUF0, ResourceTemplate () { IO (Decode16, 0x03F0, // Range Minimum 0x03F0, // Range Maximum 0x01, // Alignment 0x06, // Length _Y01) IO (Decode16, 0x03F7, // Range Minimum 0x03F7, // Range Maximum 0x01, // Alignment 0x01, // Length ) IRQNoFlags () {6} DMA (Compatibility, NotBusMaster, Transfer8, ) {2} }) CreateByteField (BUF0, \_SB.PCI0.PX40.FDC0._CRS._Y01._MIN, IOLO) CreateByteField (BUF0, 0x03, IOHI) CreateByteField (BUF0, \_SB.PCI0.PX40.FDC0._CRS._Y01._MAX, IORL) CreateByteField (BUF0, 0x05, IORH) ENFG () EXFG () Return (BUF0) } Name (_PRS, ResourceTemplate () { StartDependentFnNoPri () { IO (Decode16, 0x03F0, // Range Minimum 0x03F0, // Range Maximum 0x01, // Alignment 0x06, // Length ) IO (Decode16, 0x03F7, // Range Minimum 0x03F7, // Range Maximum 0x01, // Alignment 0x01, // Length ) IRQNoFlags () {6} DMA (Compatibility, NotBusMaster, Transfer8, ) {2} } EndDependentFn () }) Method (_SRS, 1, NotSerialized) { CreateByteField (Arg0, 0x02, IOLO) CreateByteField (Arg0, 0x03, IOHI) CreateWordField (Arg0, 0x02, IOAD) CreateWordField (Arg0, 0x19, IRQW) CreateByteField (Arg0, 0x1C, DMAV) ENFG () Store (Zero, LDN) Store (One, ACTR) SLDM (DMCH, DMCH) CKIO (IOAD, 0x03) EXFG () } } Device (UAR1) { Name (_HID, EisaId ("PNP0501")) Name (_UID, One) Method (_STA, 0, NotSerialized) { ENFG () Store (One, LDN) If (ACTR) { EXFG () Return (0x0F) } Else { If (LOr (IOAH, IOAL)) { EXFG () Return (0x0D) } Else { EXFG () Return (Zero) } } EXFG () } Method (_DIS, 0, NotSerialized) { ENFG () Store (One, LDN) Store (Zero, ACTR) EXFG () DISD (Zero) } Method (_CRS, 0, NotSerialized) { Name (BUF1, ResourceTemplate () { IO (Decode16, 0x0000, // Range Minimum 0x0000, // Range Maximum 0x01, // Alignment 0x08, // Length _Y02) IRQNoFlags (_Y03) {} }) CreateByteField (BUF1, \_SB.PCI0.PX40.UAR1._CRS._Y02._MIN, IOLO) CreateByteField (BUF1, 0x03, IOHI) CreateByteField (BUF1, \_SB.PCI0.PX40.UAR1._CRS._Y02._MAX, IORL) CreateByteField (BUF1, 0x05, IORH) CreateWordField (BUF1, \_SB.PCI0.PX40.UAR1._CRS._Y03._INT, IRQW) ENFG () Store (One, LDN) Store (IOAL, IOLO) Store (IOAL, IORL) Store (IOAH, IOHI) Store (IOAH, IORH) Store (One, Local0) ShiftLeft (Local0, INTR, IRQW) EXFG () Return (BUF1) } Name (_PRS, ResourceTemplate () { StartDependentFnNoPri () { IO (Decode16, 0x03F8, // Range Minimum 0x03F8, // Range Maximum 0x01, // Alignment 0x08, // Length ) IRQNoFlags () {3,4,5,7,9,10,11,12} } StartDependentFnNoPri () { IO (Decode16, 0x02F8, // Range Minimum 0x02F8, // Range Maximum 0x01, // Alignment 0x08, // Length ) IRQNoFlags () {3,4,5,7,9,10,11,12} } StartDependentFnNoPri () { IO (Decode16, 0x03E8, // Range Minimum 0x03E8, // Range Maximum 0x01, // Alignment 0x08, // Length ) IRQNoFlags () {3,4,5,7,9,10,11,12} } StartDependentFnNoPri () { IO (Decode16, 0x02E8, // Range Minimum 0x02E8, // Range Maximum 0x01, // Alignment 0x08, // Length ) IRQNoFlags () {3,4,5,7,9,10,11,12} } EndDependentFn () }) Method (_SRS, 1, NotSerialized) { CreateByteField (Arg0, 0x02, IOLO) CreateByteField (Arg0, 0x03, IOHI) CreateWordField (Arg0, 0x02, IOAD) CreateWordField (Arg0, 0x09, IRQW) ENFG () Store (One, LDN) Store (One, ACTR) Store (IOLO, IOAL) Store (IOHI, IOAH) FindSetRightBit (IRQW, Local0) Subtract (Local0, One, INTR) EXFG () CKIO (IOAD, Zero) } Method (_PRW, 0, NotSerialized) { If (SUSF) { Return (Package (0x02) { 0x08, 0x03 }) } Else { Return (Package (0x02) { 0x08, One }) } } Method (_PSW, 1, NotSerialized) { If (Arg0) { Or (G2C2, One, G2C2) } Else { And (G2C2, 0xFE, G2C2) } } } Device (LPT1) { Name (_HID, EisaId ("PNP0400")) Method (_STA, 0, NotSerialized) { ENFG () Store (0x03, LDN) And (OPT1, 0x02, Local0) If (LNotEqual (Local0, 0x02)) { If (ACTR) { EXFG () Return (0x0F) } Else { If (LOr (IOAH, IOAL)) { EXFG () Return (0x0D) } Else { EXFG () Return (Zero) } } } Else { EXFG () Return (Zero) } } Method (_DIS, 0, NotSerialized) { ENFG () Store (0x03, LDN) Store (Zero, ACTR) EXFG () DISD (0x02) } Method (_CRS, 0, NotSerialized) { Name (BUF5, ResourceTemplate () { IO (Decode16, 0x0000, // Range Minimum 0x0000, // Range Maximum 0x01, // Alignment 0x08, // Length _Y04) IRQNoFlags (_Y05) {} }) CreateByteField (BUF5, \_SB.PCI0.PX40.LPT1._CRS._Y04._MIN, IOLO) CreateByteField (BUF5, 0x03, IOHI) CreateByteField (BUF5, \_SB.PCI0.PX40.LPT1._CRS._Y04._MAX, IORL) CreateByteField (BUF5, 0x05, IORH) CreateByteField (BUF5, \_SB.PCI0.PX40.LPT1._CRS._Y04._LEN, IOLE) CreateWordField (BUF5, \_SB.PCI0.PX40.LPT1._CRS._Y05._INT, IRQW) ENFG () Store (0x03, LDN) Store (IOAL, IOLO) Store (IOLO, IORL) Store (IOAH, IOHI) Store (IOHI, IORH) If (LEqual (IOLO, 0xBC)) { Store (0x04, IOLE) } Else { Store (0x08, IOLE) } Store (One, Local0) Store (INTR, Local5) ShiftLeft (Local0, Local5, IRQW) EXFG () Return (BUF5) } Name (_PRS, ResourceTemplate () { StartDependentFnNoPri () { IO (Decode16, 0x0378, // Range Minimum 0x0378, // Range Maximum 0x01, // Alignment 0x08, // Length ) IRQNoFlags () {3,4,5,7,9,10,11,12} } StartDependentFnNoPri () { IO (Decode16, 0x0278, // Range Minimum 0x0278, // Range Maximum 0x01, // Alignment 0x08, // Length ) IRQNoFlags () {3,4,5,7,9,10,11,12} } StartDependentFnNoPri () { IO (Decode16, 0x03BC, // Range Minimum 0x03BC, // Range Maximum 0x01, // Alignment 0x04, // Length ) IRQNoFlags () {3,4,5,7,9,10,11,12} } EndDependentFn () }) Method (_SRS, 1, NotSerialized) { CreateByteField (Arg0, 0x02, IOLO) CreateByteField (Arg0, 0x03, IOHI) CreateWordField (Arg0, 0x02, IOAD) CreateByteField (Arg0, 0x04, IORL) CreateByteField (Arg0, 0x05, IORH) CreateWordField (Arg0, 0x09, IRQW) ENFG () Store (0x03, LDN) Store (One, ACTR) Store (IOLO, IOAL) Store (IOHI, IOAH) FindSetLeftBit (IRQW, Local0) Subtract (Local0, One, Local0) Store (Local0, INTR) EXFG () CKIO (IOAD, 0x02) } } Device (ECP1) { Name (_HID, EisaId ("PNP0401")) Method (_STA, 0, NotSerialized) { ENFG () Store (0x03, LDN) And (OPT1, 0x02, Local0) If (LEqual (Local0, 0x02)) { If (ACTR) { EXFG () Return (0x0F) } Else { If (LOr (IOAH, IOAL)) { EXFG () Return (0x0D) } Else { EXFG () Return (Zero) } } } Else { EXFG () Return (Zero) } } Method (_DIS, 0, NotSerialized) { ENFG () Store (0x03, LDN) Store (Zero, ACTR) SLDM (DMCH, 0x04) EXFG () DISD (0x02) } Method (_CRS, 0, NotSerialized) { Name (BUF6, ResourceTemplate () { IO (Decode16, 0x0000, // Range Minimum 0x0000, // Range Maximum 0x01, // Alignment 0x04, // Length _Y06) IO (Decode16, 0x0000, // Range Minimum 0x0000, // Range Maximum 0x01, // Alignment 0x04, // Length _Y07) IRQNoFlags (_Y08) {} DMA (Compatibility, NotBusMaster, Transfer8, _Y09) {} }) CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y06._MIN, IOLO) CreateByteField (BUF6, 0x03, IOHI) CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y06._MAX, IORL) CreateByteField (BUF6, 0x05, IORH) CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y06._LEN, IOLE) CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y07._MIN, IOEL) CreateByteField (BUF6, 0x0B, IOEH) CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y07._MAX, IOML) CreateByteField (BUF6, 0x0D, IOMH) CreateWordField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y08._INT, IRQW) CreateByteField (BUF6, \_SB.PCI0.PX40.ECP1._CRS._Y09._DMA, DMAC) ENFG () Store (0x03, LDN) Store (IOAL, Local2) Store (Local2, IOLO) Store (IOAH, Local3) Store (Local3, IOHI) Or (Local3, 0x04, Local3) Store (Local3, IOEH) Store (Local3, IOMH) Store (IOLO, IORL) Store (IOLO, IOEL) Store (IOLO, IOML) Store (IOHI, IORH) If (LEqual (IOLO, 0xBC)) { Store (0x04, IOLE) } Else { Store (0x08, IOLE) } Store (One, Local0) Store (INTR, Local5) ShiftLeft (Local0, Local5, IRQW) Store (One, Local0) Store (DMCH, Local5) ShiftLeft (Local0, Local5, DMAC) EXFG () Return (BUF6) } Name (_PRS, ResourceTemplate () { StartDependentFnNoPri () { IO (Decode16, 0x0378, // Range Minimum 0x0378, // Range Maximum 0x00, // Alignment 0x08, // Length ) IO (Decode16, 0x0778, // Range Minimum 0x0778, // Range Maximum 0x00, // Alignment 0x04, // Length ) IRQNoFlags () {3,4,5,7,9,10,11,12} DMA (Compatibility, NotBusMaster, Transfer8, ) {0,1,3} } StartDependentFnNoPri () { IO (Decode16, 0x0278, // Range Minimum 0x0278, // Range Maximum 0x00, // Alignment 0x08, // Length ) IO (Decode16, 0x0678, // Range Minimum 0x0678, // Range Maximum 0x00, // Alignment 0x04, // Length ) IRQNoFlags () {3,4,5,7,9,10,11,12} DMA (Compatibility, NotBusMaster, Transfer8, ) {0,1,3} } StartDependentFnNoPri () { IO (Decode16, 0x03BC, // Range Minimum 0x03BC, // Range Maximum 0x00, // Alignment 0x04, // Length ) IO (Decode16, 0x07BC, // Range Minimum 0x07BC, // Range Maximum 0x00, // Alignment 0x04, // Length ) IRQNoFlags () {3,4,5,7,9,10,11,12} DMA (Compatibility, NotBusMaster, Transfer8, ) {0,1,3} } EndDependentFn () }) Method (_SRS, 1, NotSerialized) { CreateByteField (Arg0, 0x02, IOLO) CreateByteField (Arg0, 0x03, IOHI) CreateWordField (Arg0, 0x02, IOAD) CreateWordField (Arg0, 0x11, IRQW) CreateByteField (Arg0, 0x14, DMAC) ENFG () Store (0x03, LDN) Store (One, ACTR) Store (IOLO, IOAL) Store (IOHI, IOAH) FindSetLeftBit (IRQW, Local0) Subtract (Local0, One, Local0) Store (Local0, INTR) FindSetLeftBit (DMAC, Local1) Store (DMCH, Local0) Subtract (Local1, One, DMCH) SLDM (Local0, DMCH) EXFG () CKIO (IOAD, 0x02) } } OperationRegion (KBCT, SystemIO, 0x60, 0x05) Field (KBCT, ByteAcc, NoLock, Preserve) { P060, 8, Offset (0x04), P064, 8 } Device (PS2M) { Name (_HID, EisaId ("PNP0F13")) Method (_STA, 0, NotSerialized) { If (LEqual (PS2F, Zero)) { Return (0x0F) } Else { Return (Zero) } } Method (_CRS, 0, NotSerialized) { Name (BUF1, ResourceTemplate () { IRQNoFlags () {12} }) Name (BUF2, ResourceTemplate () { IO (Decode16, 0x0060, // Range Minimum 0x0060, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0064, // Range Minimum 0x0064, // Range Maximum 0x01, // Alignment 0x01, // Length ) IRQNoFlags () {12} }) If (LEqual (KBDI, One)) { If (LEqual (OSFL, 0x02)) { Return (BUF1) } If (LEqual (OSFL, One)) { Return (BUF1) } Else { Return (BUF2) } } Else { Return (BUF1) } } } Device (PS2K) { Name (_HID, EisaId ("PNP0303")) Method (_STA, 0, NotSerialized) { If (LEqual (KBDI, One)) { Return (Zero) } Else { Return (0x0F) } } Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0060, // Range Minimum 0x0060, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0064, // Range Minimum 0x0064, // Range Maximum 0x01, // Alignment 0x01, // Length ) IRQNoFlags () {1} }) } Device (PSMR) { Name (_HID, EisaId ("PNP0C02")) Name (_UID, 0x03) Method (_STA, 0, NotSerialized) { If (LEqual (KBDI, Zero)) { Return (Zero) } If (LEqual (PS2F, Zero)) { If (LEqual (OSFL, 0x02)) { Return (0x0F) } If (LEqual (OSFL, One)) { Return (0x0F) } Return (Zero) } Return (Zero) } Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0060, // Range Minimum 0x0060, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0064, // Range Minimum 0x0064, // Range Maximum 0x01, // Alignment 0x01, // Length ) }) } Scope (\_SB.PCI0.PX40) { OperationRegion (CCCC, SystemMemory, 0x000FE2BC, 0x05) Field (CCCC, ByteAcc, NoLock, Preserve) { PPRQ, 8, PPLO, 8, PPRP, 8, PPOR, 8, TPRS, 8 } OperationRegion (CMO2, SystemIO, 0x72, 0x73) Field (CMO2, ByteAcc, NoLock, Preserve) { IND2, 8, DAT2, 8 } IndexField (IND2, DAT2, ByteAcc, NoLock, Preserve) { Offset (0xA7), PRQC, 4 } OperationRegion (TPMI, SystemMemory, 0x000FFFEA, One) Field (TPMI, ByteAcc, NoLock, Preserve) { , 3, TPME, 1 } Device (TPM) { Name (_HID, EisaId ("IFX0102")) Name (_CID, EisaId ("PNP0C31")) Method (_STA, 0, NotSerialized) { If (TPME) { Return (0x0F) } Else { Return (Zero) } } Name (_CRS, ResourceTemplate () { Memory32Fixed (ReadWrite, 0xFED40000, // Address Base 0x00005000, // Address Length ) IO (Decode16, 0x004E, // Range Minimum 0x004E, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x4700, // Range Minimum 0x4700, // Range Maximum 0x01, // Alignment 0x0C, // Length ) }) Method (UCMP, 2, NotSerialized) { If (LNotEqual (0x10, SizeOf (Arg0))) { Return (Zero) } If (LNotEqual (0x10, SizeOf (Arg1))) { Return (Zero) } Store (Zero, Local0) While (LLess (Local0, 0x10)) { If (LNotEqual (DerefOf (Index (Arg0, Local0)), DerefOf (Index ( Arg1, Local0)))) { Return (Zero) } Increment (Local0) } Return (One) } Method (_DSM, 4, Serialized) { If (LEqual (UCMP (Arg0, Buffer (0x10) { /* 0000 */ 0xA6, 0xFA, 0xDD, 0x3D, 0x1B, 0x36, 0xB4, 0x4E, /* 0008 */ 0xA4, 0x24, 0x8D, 0x10, 0x08, 0x9D, 0x16, 0x53 }), One)) { If (LEqual (Arg2, Zero)) { Return (Buffer (One) { 0x7F }) } If (LEqual (Arg2, One)) { If (LEqual (SizeOf (Arg3), Zero)) { Return (Buffer (0x04) { "1.0" }) } Return (One) } If (LEqual (Arg2, 0x02)) { If (LNotEqual (TPRS, Zero)) { If (LEqual (DerefOf (Index (Arg3, Zero)), Zero)) { Store (0xF0, SCP) Store (Zero, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), One)) { Store (0xF0, SCP) Store (One, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x02)) { Store (0xF0, SCP) Store (0x02, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x03)) { Store (0xF0, SCP) Store (0x03, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x04)) { Store (0xF0, SCP) Store (0x04, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x05)) { Store (0xF0, SCP) Store (0x05, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x06)) { Store (0xF0, SCP) Store (0x06, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x07)) { Store (0xF0, SCP) Store (0x07, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x08)) { Store (0xF0, SCP) Store (0x08, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x09)) { Store (0xF0, SCP) Store (0x09, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x0A)) { Store (0xF0, SCP) Store (0x0A, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x0B)) { Store (0xF0, SCP) Store (0x0B, PPRQ) Store (0xF1, SCP) Return (Zero) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x0C)) { Store (0xF0, SCP) Store (0x0C, PPRQ) Store (0xF1, SCP) Return (One) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x0D)) { Store (0xF0, SCP) Store (0x0D, PPRQ) Store (0xF1, SCP) Return (One) } If (LEqual (DerefOf (Index (Arg3, Zero)), 0x0E)) { Store (0xF0, SCP) Store (0x0E, PPRQ) Store (0xF1, SCP) Return (Zero) } Return (One) } Return (One) } If (LEqual (Arg2, 0x03)) { Name (TMP1, Package (0x02) { Zero, Ones }) Store (PPRQ, Index (TMP1, One)) Return (TMP1) } If (LEqual (Arg2, 0x04)) { Return (One) } If (LEqual (Arg2, 0x05)) { Name (TMP2, Package (0x03) { Zero, Ones, Ones }) Store (PPLO, Index (TMP2, One)) If (LOr (LOr (LGreater (PPLO, 0x0E), LEqual (PPLO, 0x0C)), LEqual ( PPLO, 0x0D))) { Store (0xFFFFFFF1, Index (TMP2, 0x02)) Return (TMP2) } If (LEqual (PPRP, 0xFF)) { Store (0xFFFFFFF1, Index (TMP2, 0x02)) Return (TMP2) } If (PPOR) { Store (0xFFFFFFF0, Index (TMP2, 0x02)) Return (TMP2) } Store (PPRP, Index (TMP2, 0x02)) Return (TMP2) } If (LEqual (Arg2, 0x06)) { CreateByteField (Arg3, 0x04, LAN0) CreateByteField (Arg3, 0x05, LAN1) If (LOr (LEqual (LAN0, 0x65), LEqual (LAN0, 0x45))) { If (LOr (LEqual (LAN1, 0x6E), LEqual (LAN1, 0x4E))) { Return (Zero) } } Return (One) } Return (One) } Return (Buffer (One) { 0x00 }) } } } Device (PMIO) { Name (_HID, EisaId ("PNP0C02")) Name (_UID, 0x02) Method (_CRS, 0, NotSerialized) { Name (BUF0, ResourceTemplate () { IO (Decode16, 0x0400, // Range Minimum 0x0400, // Range Maximum 0x01, // Alignment 0xD0, // Length ) IO (Decode16, 0x04D2, // Range Minimum 0x04D2, // Range Maximum 0x01, // Alignment 0x2E, // Length ) }) Return (BUF0) } } OperationRegion (CDPR, SystemIO, 0x1800, 0x01FF) Field (CDPR, ByteAcc, NoLock, Preserve) { BCLK, 8, Offset (0x10), VCC1, 8, Offset (0x12), VDDI, 8, Offset (0x14), VTTC, 8, Offset (0x16), V15C, 8, Offset (0x18), V18C, 8, Offset (0x1A), VSAC, 8, Offset (0x1C), AXGC, 8, Offset (0x1E), VIDC, 8, Offset (0x20), Offset (0xC0), VCCB, 32, VCCS, 16, Offset (0xC8), VDDB, 32, VDDS, 16, Offset (0xD0), VTTB, 32, VTTS, 16, Offset (0xD8), V15B, 32, V15S, 16, Offset (0xE0), V18B, 32, V18S, 16, Offset (0xE8), VSAB, 32, VSAS, 16, Offset (0xF0), AXGB, 32, AXGS, 16, Offset (0xF8), VIDB, 32, VIDS, 16, Offset (0x100), Offset (0x1C0), CTMP, 8, Offset (0x1C3) } Device (PTMD) { Name (_HID, EisaId ("ICD0001")) Name (_CID, EisaId ("PNP0C02")) Name (IVER, 0x10000001) Name (_STA, 0xFF) Name (_CRS, ResourceTemplate () { IO (Decode16, 0x1000, // Range Minimum 0x1000, // Range Maximum 0x01, // Alignment 0x80, // Length ) IO (Decode16, 0x1080, // Range Minimum 0x1080, // Range Maximum 0x01, // Alignment 0x80, // Length ) IO (Decode16, 0x1100, // Range Minimum 0x1100, // Range Maximum 0x01, // Alignment 0x80, // Length ) IO (Decode16, 0x1180, // Range Minimum 0x1180, // Range Maximum 0x01, // Alignment 0x80, // Length ) }) Name (TMPV, Package (0x04) { One, 0x02, Zero, Zero }) Name (VLTV, Package (0x10) { 0x09, 0x05, Zero, Zero, 0x0E, 0x06, Zero, Zero, 0x13, 0x07, Zero, Zero, 0x11, 0x08, Zero, Zero }) Name (RPMV, Package (0x00) {}) Name (RDVL, Package (0x02) { Zero, Zero }) Method (CDRD, 2, Serialized) { While (One) { Name (_T_0, Zero) Store (Arg0, _T_0) If (LEqual (_T_0, One)) { While (One) { Name (_T_1, Zero) Store (Arg1, _T_1) If (LEqual (_T_1, Zero)) { Store (VCC1, Index (RDVL, One)) } Else { If (LEqual (_T_1, 0x04)) { Store (VDDI, Index (RDVL, One)) } Else { If (LEqual (_T_1, 0x07)) { Store (VSAC, Index (RDVL, One)) } Else { If (LEqual (_T_1, 0x08)) { Store (VIDC, Index (RDVL, One)) } Else { If (LEqual (_T_1, 0x09)) { Store (V15C, Index (RDVL, One)) } Else { If (LEqual (_T_1, 0x0A)) { Store (V18C, Index (RDVL, One)) } Else { Store (One, Index (RDVL, Zero)) } } } } } } Break } } Else { If (LEqual (_T_0, 0x02)) { While (One) { Name (_T_2, Zero) Store (Arg1, _T_2) If (LEqual (_T_2, Zero)) { Store (BCLK, Index (RDVL, One)) } Else { Store (One, Index (RDVL, Zero)) } Break } } Else { Store (One, Index (RDVL, Zero)) } } Break } Return (RDVL) } Method (CDWR, 3, Serialized) { While (One) { Name (_T_0, Zero) Store (Arg0, _T_0) If (LEqual (_T_0, One)) { While (One) { Name (_T_1, Zero) Store (Arg1, _T_1) If (LEqual (_T_1, Zero)) { Store (Arg2, DBG1) Store (Arg2, VCC1) } Else { If (LEqual (_T_1, 0x04)) { Store (Arg2, DBG1) Store (Arg2, VDDI) } Else { If (LEqual (_T_1, 0x07)) { Store (Arg2, DBG1) Store (Arg2, VSAC) } Else { If (LEqual (_T_1, 0x08)) { Store (Arg2, DBG1) Store (Arg2, VIDC) } Else { If (LEqual (_T_1, 0x09)) { Store (Arg2, DBG1) Store (Arg2, V15C) } Else { If (LEqual (_T_1, 0x0A)) { Store (Arg2, V18C) } Else { Return (One) } } } } } } Break } } Else { If (LEqual (_T_0, 0x02)) { While (One) { Name (_T_2, Zero) Store (Arg1, _T_2) If (LEqual (_T_2, Zero)) { Store (Arg2, DBG1) Store (Arg2, BCLK) } Else { Return (One) } Break } } Else { Return (One) } } Break } Return (Zero) } Method (TSDD, 0, NotSerialized) { Name (TMPC, Zero) Return (TMPV) } Method (VSDD, 0, NotSerialized) { Name (VLTC, Zero) Return (VLTV) } Method (FSDD, 0, NotSerialized) { Name (RPMC, Zero) Return (RPMV) } Method (SDSP, 0, NotSerialized) { Return (0x0A) } } } Device (USBE) { Name (_ADR, 0x001D0000) Device (RHUB) { Name (_ADR, Zero) Device (PRT1) { Name (_ADR, One) Name (_UPC, Package (0x04) { 0xFF, Zero, Zero, Zero }) Name (_PLD, Package (0x10) { 0x81, Zero, Zero, Zero, Zero, Zero, Zero, Zero, 0x30, 0x1C, Zero, Zero, Zero, Zero, Zero, Zero }) } } Method (_S3D, 0, NotSerialized) { If (LEqual (OSFL, 0x02)) { Return (0x02) } Return (0x03) } Name (_PRW, Package (0x02) { 0x0D, 0x03 }) } Device (USE2) { Name (_ADR, 0x001A0000) Device (RHUB) { Name (_ADR, Zero) Device (PRT1) { Name (_ADR, One) Name (_UPC, Package (0x04) { 0xFF, Zero, Zero, Zero }) Name (_PLD, Package (0x10) { 0x81, Zero, Zero, Zero, Zero, Zero, Zero, Zero, 0x30, 0x1C, Zero, Zero, Zero, Zero, Zero, Zero }) } } Method (_S3D, 0, NotSerialized) { If (LEqual (OSFL, 0x02)) { Return (0x02) } Return (0x03) } Name (_PRW, Package (0x02) { 0x0D, 0x03 }) } Device (IDE1) { Name (_ADR, 0x001F0002) OperationRegion (PCI, PCI_Config, 0x40, 0x20) Field (PCI, DWordAcc, NoLock, Preserve) { ITM0, 16, ITM1, 16, SIT0, 4, SIT1, 4, Offset (0x08), UDC0, 2, UDC1, 2, Offset (0x0A), UDT0, 8, UDT1, 8, Offset (0x14), ICF0, 2, ICF1, 2, , 6, WPPE, 1, , 1, FAS0, 2, FAS1, 2 } Device (PRIM) { Name (_ADR, Zero) Method (_GTM, 0, NotSerialized) { Store (GTM (ITM0, SIT0, UDC0, UDT0, ICF0, FAS0), Local0) Return (Local0) } Method (_STM, 3, NotSerialized) { Store (STM (Arg0, Arg1, Arg2), Local0) CreateDWordField (Local0, Zero, ITM) CreateDWordField (Local0, 0x04, SIT) CreateDWordField (Local0, 0x08, UDC) CreateDWordField (Local0, 0x0C, UDT) CreateDWordField (Local0, 0x10, ICF) CreateDWordField (Local0, 0x14, FAS) Store (UDC, UDC0) Store (UDT, UDT0) Store (ICF, ICF0) Store (FAS, FAS0) } Device (DRV0) { Name (_ADR, Zero) Name (H15F, Zero) Method (_GTF, 0, NotSerialized) { Store (GTF0 (ITM0, SIT0, UDC0, UDT0, ICF0, H15F, FAS0), Local0) Return (Local0) } } Device (DRV1) { Name (_ADR, One) Name (H15F, Zero) Method (_GTF, 0, NotSerialized) { Store (GTF1 (ITM0, SIT0, UDC0, UDT0, ICF0, H15F, FAS0), Local0) Return (Local0) } } } Device (SECD) { Name (_ADR, One) Method (_GTM, 0, NotSerialized) { Store (GTM (ITM1, SIT1, UDC1, UDT1, ICF1, FAS1), Local0) Return (Local0) } Method (_STM, 3, NotSerialized) { Store (STM (Arg0, Arg1, Arg2), Local0) CreateDWordField (Local0, Zero, ITM) CreateDWordField (Local0, 0x04, SIT) CreateDWordField (Local0, 0x08, UDC) CreateDWordField (Local0, 0x0C, UDT) CreateDWordField (Local0, 0x10, ICF) CreateDWordField (Local0, 0x14, FAS) Store (UDC, UDC1) Store (UDT, UDT1) Store (ICF, ICF1) Store (FAS, FAS1) } Device (DRV0) { Name (_ADR, Zero) Name (H15F, Zero) Method (_GTF, 0, NotSerialized) { Store (GTF0 (ITM1, SIT1, UDC1, UDT1, ICF1, H15F, FAS1), Local0) Return (Local0) } } Device (DRV1) { Name (_ADR, One) Name (H15F, Zero) Method (_GTF, 0, NotSerialized) { Store (GTF1 (ITM1, SIT1, UDC1, UDT1, ICF1, H15F, FAS1), Local0) Return (Local0) } } } } Device (IDE2) { Name (_ADR, 0x001F0005) OperationRegion (PCI, PCI_Config, 0x40, 0x20) Field (PCI, DWordAcc, NoLock, Preserve) { ITM0, 16, ITM1, 16, SIT0, 4, SIT1, 4, Offset (0x08), UDC0, 1, , 1, UDC1, 1, Offset (0x0A), UDT0, 8, UDT1, 8, Offset (0x14), ICF0, 2, ICF1, 2, , 6, WPPE, 1, , 1, FAS0, 2, FAS1, 2 } Device (PRIM) { Name (_ADR, Zero) Method (_GTM, 0, NotSerialized) { Store (GTM (ITM0, SIT0, UDC0, UDT0, ICF0, FAS0), Local0) Return (Local0) } Method (_STM, 3, NotSerialized) { Store (STM (Arg0, Arg1, Arg2), Local0) CreateDWordField (Local0, Zero, ITM) CreateDWordField (Local0, 0x04, SIT) CreateDWordField (Local0, 0x08, UDC) CreateDWordField (Local0, 0x0C, UDT) CreateDWordField (Local0, 0x10, ICF) CreateDWordField (Local0, 0x14, FAS) Store (UDC, UDC0) Store (UDT, UDT0) Store (ICF, ICF0) Store (FAS, FAS0) } Device (DRV0) { Name (_ADR, Zero) Name (H15F, Zero) Method (_GTF, 0, NotSerialized) { Store (GTF0 (ITM0, SIT0, UDC0, UDT0, ICF0, H15F, FAS0), Local0) Return (Local0) } } Device (DRV1) { Name (_ADR, One) Name (H15F, Zero) Method (_GTF, 0, NotSerialized) { Store (GTF1 (ITM0, SIT0, UDC0, UDT0, ICF0, H15F, FAS0), Local0) Return (Local0) } } } Device (SECD) { Name (_ADR, One) Method (_GTM, 0, NotSerialized) { Store (GTM (ITM1, SIT1, UDC1, UDT1, ICF1, FAS1), Local0) Return (Local0) } Method (_STM, 3, NotSerialized) { Store (STM (Arg0, Arg1, Arg2), Local0) CreateDWordField (Local0, Zero, ITM) CreateDWordField (Local0, 0x04, SIT) CreateDWordField (Local0, 0x08, UDC) CreateDWordField (Local0, 0x0C, UDT) CreateDWordField (Local0, 0x10, ICF) CreateDWordField (Local0, 0x14, FAS) Store (UDC, UDC1) Store (UDT, UDT1) Store (ICF, ICF1) Store (FAS, FAS1) } Device (DRV0) { Name (_ADR, Zero) Name (H15F, Zero) Method (_GTF, 0, NotSerialized) { Store (GTF0 (ITM1, SIT1, UDC1, UDT1, ICF1, H15F, FAS1), Local0) Return (Local0) } } Device (DRV1) { Name (_ADR, One) Name (H15F, Zero) Method (_GTF, 0, NotSerialized) { Store (GTF1 (ITM1, SIT1, UDC1, UDT1, ICF1, H15F, FAS1), Local0) Return (Local0) } } } } Method (GTM, 6, NotSerialized) { Store (Buffer (0x14) {}, Local0) CreateDWordField (Local0, Zero, PIO0) CreateDWordField (Local0, 0x04, DMA0) CreateDWordField (Local0, 0x08, PIO1) CreateDWordField (Local0, 0x0C, DMA1) CreateDWordField (Local0, 0x10, FLAG) Store (0x10, FLAG) If (LOr (And (Arg0, 0x08), LNot (And (Arg0, One )))) { Store (0x0384, PIO0) } Else { Add (ShiftRight (And (Arg0, 0x0300), 0x08), ShiftRight (And ( Arg0, 0x3000), 0x0C), Local1) Multiply (Subtract (0x09, Local1), 0x1E, PIO0) } If (LOr (LAnd (Arg0, 0x4000), LAnd (Arg2, One))) { If (LOr (And (Arg0, 0x80), LNot (And (Arg0, 0x10 )))) { Store (0x0384, PIO1) } Else { Add (And (Arg1, 0x03), ShiftRight (And (Arg1, 0x0C), 0x02), Local1) Multiply (Subtract (0x09, Local1), 0x1E, PIO1) } } Else { Store (PIO0, PIO1) } If (And (Arg2, One)) { Subtract (0x04, And (Arg3, 0x03), Local1) If (And (Arg5, One)) { Store (0x14, DMA0) } Else { If (And (Arg4, One)) { Multiply (Local1, 0x0F, DMA0) } Else { Multiply (Local1, 0x1E, DMA0) } } } Else { Store (PIO0, DMA0) } If (LOr (LAnd (Arg0, 0x4000), LAnd (Arg2, One))) { If (And (Arg2, 0x02)) { Subtract (0x04, ShiftRight (And (Arg3, 0x30), 0x04), Local1) If (And (Arg5, 0x02)) { Store (0x14, DMA1) } Else { If (And (Arg4, 0x02)) { Multiply (Local1, 0x0F, DMA1) } Else { Multiply (Local1, 0x1E, DMA1) } } } Else { Store (PIO1, DMA1) } } Else { Store (DMA0, DMA1) } Store (Zero, FLAG) If (And (Arg0, One)) { Or (FLAG, 0x10, FLAG) } If (And (Arg2, One)) { Or (FLAG, One, FLAG) } If (And (Arg0, 0x02)) { Or (FLAG, 0x02, FLAG) } If (And (Arg2, 0x02)) { Or (FLAG, 0x04, FLAG) } If (And (Arg0, 0x20)) { Or (FLAG, 0x08, FLAG) } Return (Local0) } Method (STM, 3, NotSerialized) { Store (Buffer (0x18) {}, Local7) CreateDWordField (Local7, Zero, ITM) CreateDWordField (Local7, 0x04, SIT) CreateDWordField (Local7, 0x08, UDC) CreateDWordField (Local7, 0x0C, UDT) CreateDWordField (Local7, 0x10, ICF) CreateDWordField (Local7, 0x14, FAS) CreateDWordField (Arg0, Zero, PIO0) CreateDWordField (Arg0, 0x04, DMA0) CreateDWordField (Arg0, 0x08, PIO1) CreateDWordField (Arg0, 0x0C, DMA1) CreateDWordField (Arg0, 0x10, FLAG) Store (FLAG, Local4) Store (0x8000, Local0) If (And (Local4, 0x02)) { Or (Local0, 0x07, Local0) } If (And (Local4, 0x08)) { Or (Local0, 0x4000, Local0) Or (Local0, 0x70, Local0) } If (LAnd (LLess (DMA0, PIO0), LNot (And (Local4, One)))) { Or (Local0, 0x08, Local0) } If (LAnd (LLess (DMA1, PIO1), LNot (And (Local4, 0x04)))) { Or (Local0, 0x80, Local0) } If (PIO0) { If (LLess (PIO0, 0x0384)) { Or (Local0, One, Local0) } } If (PIO1) { If (LLess (PIO1, 0x0384)) { Or (Local0, 0x10, Local0) } } If (And (Local4, One)) { Store (PIO0, Local1) } Else { Store (DMA0, Local1) } If (Local1) { If (LLessEqual (Local1, 0x78)) { Or (Local0, 0x2300, Local0) } Else { If (LLessEqual (Local1, 0xB4)) { Or (Local0, 0x2100, Local0) } Else { If (LLessEqual (Local1, 0xF0)) { Or (Local0, 0x1000, Local0) } } } } Store (Local0, ITM) Store (Zero, Local0) If (And (Local4, 0x04)) { Store (PIO1, Local1) } Else { Store (DMA1, Local1) } If (Local1) { If (LLessEqual (Local1, 0x78)) { Store (0x0B, Local0) } Else { If (LLessEqual (Local1, 0xB4)) { Store (0x09, Local0) } Else { If (LLessEqual (Local1, 0xF0)) { Store (0x04, Local0) } } } } Store (Local0, SIT) Store (Zero, Local0) If (And (Local4, One)) { Or (Local0, One, Local0) } If (And (Local4, 0x04)) { Or (Local0, 0x02, Local0) } Store (Local0, UDC) Store (Zero, Local0) If (And (Local4, One)) { If (LEqual (DMA0, 0x14)) { Store (One, Local0) } Else { If (LLess (DMA0, 0x3C)) { Divide (DMA0, 0x0F, , Local1) } Else { Divide (DMA0, 0x1E, , Local1) } Subtract (0x04, Local1, Local0) } } If (And (Local4, 0x04)) { If (LEqual (DMA1, 0x14)) { Store (One, Local1) } Else { If (LLess (DMA1, 0x3C)) { Divide (DMA1, 0x0F, , Local1) } Else { Divide (DMA1, 0x1E, , Local1) } Subtract (0x04, Local1, Local1) } ShiftLeft (Local1, 0x04, Local1) Or (Local0, Local1, Local0) } Store (Local0, UDT) Store (Zero, Local0) If (DMA0) { If (LGreater (DMA0, 0x14)) { If (LLess (DMA0, 0x3C)) { Or (Local0, One, Local0) } } } If (DMA1) { If (LGreater (DMA1, 0x14)) { If (LLess (DMA1, 0x3C)) { Or (Local0, 0x02, Local0) } } } Store (Local0, ICF) Store (Zero, Local0) If (LEqual (DMA0, 0x14)) { Or (Local0, One, Local0) } If (LEqual (DMA1, 0x14)) { Or (Local0, 0x02, Local0) } Store (Local0, FAS) Return (Local7) } Method (H15P, 1, NotSerialized) { Name (BUFF, Buffer (0x08) { /* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }) Store (Arg0, Local0) Store (BUFF, Local1) Concatenate (Local0, Local1, Local7) CreateWordField (Local7, 0x02, CYL) CreateWordField (Local7, 0x06, HEAD) CreateWordField (Local7, 0x0C, SPT) If (LAnd (LGreaterEqual (HEAD, 0x10), LGreaterEqual (CYL, 0x2000))) { Return (SPT) } Else { Return (Zero) } } Method (GTF0, 7, NotSerialized) { Store (Buffer (0x07) { 0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF }, Local7) CreateByteField (Local7, One, MODE) If (And (Arg2, One)) { And (Arg3, 0x03, Local0) If (And (Arg6, One)) { Add (Local0, 0x04, Local0) } Else { If (And (Arg4, One)) { Add (Local0, 0x02, Local0) } } Or (Local0, 0x40, MODE) } Else { Add (ShiftRight (And (Arg0, 0x0300), 0x08), ShiftRight (And ( Arg0, 0x3000), 0x0C), Local0) If (LGreaterEqual (Local0, 0x05)) { Store (0x22, MODE) } Else { If (LGreaterEqual (Local0, 0x03)) { Store (0x21, MODE) } Else { Store (0x20, MODE) } } } Concatenate (Local7, Local7, Local6) If (LOr (And (Arg0, 0x08), LNot (And (Arg0, One )))) { If (And (Arg0, 0x02)) { Store (Zero, MODE) } Else { Store (One, MODE) } } Else { Add (ShiftRight (And (Arg0, 0x0300), 0x08), ShiftRight (And ( Arg0, 0x3000), 0x0C), Local0) If (LGreaterEqual (Local0, 0x05)) { Store (0x0C, MODE) } Else { If (LGreaterEqual (Local0, 0x03)) { Store (0x0B, MODE) } Else { Store (0x0A, MODE) } } } Concatenate (Local6, Local7, Local5) If (Arg5) { Store (Buffer (0x07) { 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x91 }, Local4) CreateByteField (Local4, One, SPT) Store (Arg5, SPT) Concatenate (Local5, Local4, Local6) Return (Local6) } Else { Return (Local5) } } Method (GTF1, 7, NotSerialized) { Store (Buffer (0x07) { 0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF }, Local7) CreateByteField (Local7, One, MODE) If (And (Arg2, 0x02)) { ShiftRight (And (Arg3, 0x30), 0x04, Local0) If (And (Arg6, 0x02)) { Add (Local0, 0x04, Local0) } Else { If (And (Arg4, 0x02)) { Add (Local0, 0x02, Local0) } } Or (Local0, 0x40, MODE) } Else { Add (ShiftRight (And (Arg1, 0x03), 0x02), And (Arg1, 0x0C), Local0) If (LGreaterEqual (Local0, 0x05)) { Store (0x22, MODE) } Else { If (LGreaterEqual (Local0, 0x03)) { Store (0x21, MODE) } Else { Store (0x20, MODE) } } } Concatenate (Local7, Local7, Local6) If (LOr (And (Arg0, 0x80), LNot (And (Arg0, 0x10 )))) { If (And (Arg0, 0x20)) { Store (Zero, MODE) } Else { Store (One, MODE) } } Else { Add (ShiftRight (And (Arg1, 0x03), 0x02), And (Arg1, 0x0C), Local0) If (LGreaterEqual (Local0, 0x05)) { Store (0x0C, MODE) } Else { If (LGreaterEqual (Local0, 0x03)) { Store (0x0B, MODE) } Else { Store (0x0A, MODE) } } } Concatenate (Local6, Local7, Local5) If (Arg5) { Store (Buffer (0x07) { 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x91 }, Local4) CreateByteField (Local4, One, SPT) Store (Arg5, SPT) Concatenate (Local5, Local4, Local6) Return (Local6) } Else { Return (Local5) } } Device (PX43) { Name (_ADR, 0x001F0003) OperationRegion (PBAS, PCI_Config, 0x20, 0x02) Field (PBAS, ByteAcc, NoLock, Preserve) { BAS0, 16 } Method (SMBB, 0, NotSerialized) { And (BAS0, 0xFFFE, Local0) Return (Local0) } } Device (AZAL) { Name (_ADR, 0x001B0000) Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x0D, 0x05 }) } } Name (BUFA, ResourceTemplate () { IRQ (Level, ActiveLow, Shared, ) {3,4,5,6,7,9,10,11,12,14,15} }) Name (BUFB, ResourceTemplate () { IRQ (Level, ActiveLow, Shared, ) {} }) CreateWordField (BUFB, One, IRQV) Device (LNKA) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, One) Method (_STA, 0, NotSerialized) { And (PIRA, 0x80, Local0) If (LEqual (Local0, 0x80)) { Return (0x09) } Else { Return (0x0B) } } Method (_PRS, 0, NotSerialized) { Return (BUFA) } Method (_DIS, 0, NotSerialized) { Or (PIRA, 0x80, PIRA) } Method (_CRS, 0, NotSerialized) { And (PIRA, 0x0F, Local0) ShiftLeft (One, Local0, IRQV) Return (BUFB) } Method (_SRS, 1, NotSerialized) { CreateWordField (Arg0, One, IRQ1) FindSetRightBit (IRQ1, Local0) Decrement (Local0) Store (Local0, PIRA) } } Device (LNKB) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, 0x02) Method (_STA, 0, NotSerialized) { And (PIRB, 0x80, Local0) If (LEqual (Local0, 0x80)) { Return (0x09) } Else { Return (0x0B) } } Method (_PRS, 0, NotSerialized) { Return (BUFA) } Method (_DIS, 0, NotSerialized) { Or (PIRB, 0x80, PIRB) } Method (_CRS, 0, NotSerialized) { And (PIRB, 0x0F, Local0) ShiftLeft (One, Local0, IRQV) Return (BUFB) } Method (_SRS, 1, NotSerialized) { CreateWordField (Arg0, One, IRQ1) FindSetRightBit (IRQ1, Local0) Decrement (Local0) Store (Local0, PIRB) } } Device (LNKC) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, 0x03) Method (_STA, 0, NotSerialized) { And (PIRC, 0x80, Local0) If (LEqual (Local0, 0x80)) { Return (0x09) } Else { Return (0x0B) } } Method (_PRS, 0, NotSerialized) { Return (BUFA) } Method (_DIS, 0, NotSerialized) { Or (PIRC, 0x80, PIRC) } Method (_CRS, 0, NotSerialized) { And (PIRC, 0x0F, Local0) ShiftLeft (One, Local0, IRQV) Return (BUFB) } Method (_SRS, 1, NotSerialized) { CreateWordField (Arg0, One, IRQ1) FindSetRightBit (IRQ1, Local0) Decrement (Local0) Store (Local0, PIRC) } } Device (LNKD) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, 0x04) Method (_STA, 0, NotSerialized) { And (PIRD, 0x80, Local0) If (LEqual (Local0, 0x80)) { Return (0x09) } Else { Return (0x0B) } } Method (_PRS, 0, NotSerialized) { Return (BUFA) } Method (_DIS, 0, NotSerialized) { Or (PIRD, 0x80, PIRD) } Method (_CRS, 0, NotSerialized) { And (PIRD, 0x0F, Local0) ShiftLeft (One, Local0, IRQV) Return (BUFB) } Method (_SRS, 1, NotSerialized) { CreateWordField (Arg0, One, IRQ1) FindSetRightBit (IRQ1, Local0) Decrement (Local0) Store (Local0, PIRD) } } Device (LNKE) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, 0x05) Method (_STA, 0, NotSerialized) { And (PIRE, 0x80, Local0) If (LEqual (Local0, 0x80)) { Return (0x09) } Else { Return (0x0B) } } Method (_PRS, 0, NotSerialized) { Return (BUFA) } Method (_DIS, 0, NotSerialized) { Or (PIRE, 0x80, PIRE) } Method (_CRS, 0, NotSerialized) { And (PIRE, 0x0F, Local0) ShiftLeft (One, Local0, IRQV) Return (BUFB) } Method (_SRS, 1, NotSerialized) { CreateWordField (Arg0, One, IRQ1) FindSetRightBit (IRQ1, Local0) Decrement (Local0) Store (Local0, PIRE) } } Device (LNKF) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, 0x06) Method (_STA, 0, NotSerialized) { And (PIRF, 0x80, Local0) If (LEqual (Local0, 0x80)) { Return (0x09) } Else { Return (0x0B) } } Method (_PRS, 0, NotSerialized) { Return (BUFA) } Method (_DIS, 0, NotSerialized) { Or (PIRF, 0x80, PIRF) } Method (_CRS, 0, NotSerialized) { And (PIRF, 0x0F, Local0) ShiftLeft (One, Local0, IRQV) Return (BUFB) } Method (_SRS, 1, NotSerialized) { CreateWordField (Arg0, One, IRQ1) FindSetRightBit (IRQ1, Local0) Decrement (Local0) Store (Local0, PIRF) } } Device (LNK0) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, 0x07) Method (_STA, 0, NotSerialized) { And (PIRG, 0x80, Local0) If (LEqual (Local0, 0x80)) { Return (0x09) } Else { Return (0x0B) } } Method (_PRS, 0, NotSerialized) { Return (BUFA) } Method (_DIS, 0, NotSerialized) { Or (PIRG, 0x80, PIRG) } Method (_CRS, 0, NotSerialized) { And (PIRG, 0x0F, Local0) ShiftLeft (One, Local0, IRQV) Return (BUFB) } Method (_SRS, 1, NotSerialized) { CreateWordField (Arg0, One, IRQ1) FindSetRightBit (IRQ1, Local0) Decrement (Local0) Store (Local0, PIRG) } } Device (LNK1) { Name (_HID, EisaId ("PNP0C0F")) Name (_UID, 0x08) Method (_STA, 0, NotSerialized) { And (PIRH, 0x80, Local0) If (LEqual (Local0, 0x80)) { Return (0x09) } Else { Return (0x0B) } } Method (_PRS, 0, NotSerialized) { Return (BUFA) } Method (_DIS, 0, NotSerialized) { Or (PIRH, 0x80, PIRH) } Method (_CRS, 0, NotSerialized) { And (PIRH, 0x0F, Local0) ShiftLeft (One, Local0, IRQV) Return (BUFB) } Method (_SRS, 1, NotSerialized) { CreateWordField (Arg0, One, IRQ1) FindSetRightBit (IRQ1, Local0) Decrement (Local0) Store (Local0, PIRH) } } Method (_PRW, 0, NotSerialized) { Return (Package (0x02) { 0x0B, 0x05 }) } Device (CWDT) { Name (_HID, EisaId ("INT3F0D")) Name (_CID, EisaId ("PNP0C02")) Name (BUF0, ResourceTemplate () { IO (Decode16, 0x0454, // Range Minimum 0x0454, // Range Maximum 0x04, // Alignment 0x04, // Length ) }) Method (_STA, 0, Serialized) { Return (0x0F) } Method (_CRS, 0, Serialized) { Return (BUF0) } } } Device (MEM) { Name (_HID, EisaId ("PNP0C01")) Method (_CRS, 0, NotSerialized) { Name (BUF0, ResourceTemplate () { Memory32Fixed (ReadWrite, 0x000F0000, // Address Base 0x00004000, // Address Length _Y0B) Memory32Fixed (ReadWrite, 0x000F4000, // Address Base 0x00004000, // Address Length _Y0C) Memory32Fixed (ReadWrite, 0x000F8000, // Address Base 0x00004000, // Address Length _Y0D) Memory32Fixed (ReadWrite, 0x000FC000, // Address Base 0x00004000, // Address Length _Y0E) Memory32Fixed (ReadWrite, 0x00000000, // Address Base 0x00060000, // Address Length _Y0A) Memory32Fixed (ReadWrite, 0x00000000, // Address Base 0x000A0000, // Address Length ) Memory32Fixed (ReadWrite, 0x00100000, // Address Base 0x00000000, // Address Length _Y11) Memory32Fixed (ReadWrite, 0x00000000, // Address Base 0x00000000, // Address Length _Y12) Memory32Fixed (ReadWrite, 0xFEC00000, // Address Base 0x00001000, // Address Length ) Memory32Fixed (ReadWrite, 0xFED10000, // Address Base 0x0000E000, // Address Length ) Memory32Fixed (ReadWrite, 0xFED20000, // Address Base 0x00070000, // Address Length ) Memory32Fixed (ReadWrite, 0xFEE00000, // Address Base 0x00001000, // Address Length ) Memory32Fixed (ReadWrite, 0xFFB00000, // Address Base 0x00080000, // Address Length ) Memory32Fixed (ReadWrite, 0xFFF00000, // Address Base 0x00100000, // Address Length ) Memory32Fixed (ReadWrite, 0x000E0000, // Address Base 0x00010000, // Address Length _Y0F) Memory32Fixed (ReadWrite, 0x20000000, // Address Base 0x00200000, // Address Length ) Memory32Fixed (ReadWrite, 0x40000000, // Address Base 0x00100000, // Address Length ) Memory32Fixed (ReadWrite, 0xFFF00000, // Address Base 0x00010000, // Address Length _Y10) }) CreateDWordField (BUF0, \_SB.MEM._CRS._Y0A._BAS, ACMM) CreateDWordField (BUF0, \_SB.MEM._CRS._Y0B._BAS, RMA1) CreateDWordField (BUF0, \_SB.MEM._CRS._Y0B._LEN, RSS1) CreateDWordField (BUF0, \_SB.MEM._CRS._Y0C._BAS, RMA2) CreateDWordField (BUF0, \_SB.MEM._CRS._Y0C._LEN, RSS2) CreateDWordField (BUF0, \_SB.MEM._CRS._Y0D._BAS, RMA3) CreateDWordField (BUF0, \_SB.MEM._CRS._Y0D._LEN, RSS3) CreateDWordField (BUF0, \_SB.MEM._CRS._Y0E._BAS, RMA4) CreateDWordField (BUF0, \_SB.MEM._CRS._Y0E._LEN, RSS4) CreateDWordField (BUF0, \_SB.MEM._CRS._Y0F._BAS, ERMA) CreateDWordField (BUF0, \_SB.MEM._CRS._Y0F._LEN, ERMS) CreateDWordField (BUF0, \_SB.MEM._CRS._Y10._BAS, ISMB) CreateDWordField (BUF0, \_SB.MEM._CRS._Y10._LEN, ISMS) CreateDWordField (BUF0, \_SB.MEM._CRS._Y11._LEN, EXTM) CreateDWordField (BUF0, \_SB.MEM._CRS._Y12._BAS, USMA) CreateDWordField (BUF0, \_SB.MEM._CRS._Y12._LEN, USMS) Add (AMEM, 0x00060000, USMA) Add (USMS, 0x00020000, USMS) Subtract (AMEM, 0x00100000, EXTM) If (LNotEqual (ROM1, Zero)) { Store (RMA1, RMA2) ShiftLeft (ROM1, 0x08, Local0) Store (Local0, RMA1) ShiftLeft (RMS1, 0x08, Local0) Store (Local0, RSS1) Store (0x8000, RSS2) } If (LNotEqual (ROM2, Zero)) { Store (RMA2, RMA3) ShiftLeft (ROM2, 0x08, Local0) Store (Local0, RMA2) ShiftLeft (RMS2, 0x08, Local0) Store (Local0, RSS2) Store (0xC000, RSS3) } If (LNotEqual (ROM3, Zero)) { Store (RMA3, RMA4) ShiftLeft (ROM3, 0x08, Local0) Store (Local0, RMA3) ShiftLeft (RMS3, 0x08, Local0) Store (Local0, RSS3) Store (0x00010000, RSS4) } Store (ERMA, Local1) If (LGreater (RMA1, 0x000D0000)) { If (LLess (RMA1, 0x000F0000)) { Add (RMA1, RSS1, Local0) If (LGreater (Local0, 0x000E0000)) { If (LGreater (Local0, Local1)) { Store (Local0, Local1) } } } } If (LGreater (RMA2, 0x000D0000)) { If (LLess (RMA2, 0x000F0000)) { Add (RMA2, RSS2, Local0) If (LGreater (Local0, 0x000E0000)) { If (LGreater (Local0, Local1)) { Store (Local0, Local1) } } } } If (LGreater (RMA3, 0x000D0000)) { If (LLess (RMA3, 0x000F0000)) { Add (RMA3, RSS3, Local0) If (LGreater (Local0, 0x000E0000)) { If (LGreater (Local0, Local1)) { Store (Local0, Local1) } } } } If (LGreater (Local1, ERMA)) { Subtract (Local1, ERMA, Local0) If (LLessEqual (Local0, 0x00010000)) { Store (Local1, ERMA) Subtract (0x00010000, Local0, ERMS) } } Store (TSMB, ISMB) Subtract (TLUD, TSMB, ISMS) Store (AMEM, ACMM) Return (BUF0) } } Device (FWH) { Name (_HID, EisaId ("INT0800")) Method (_CRS, 0, NotSerialized) { Name (FWH0, ResourceTemplate () { Memory32Fixed (ReadWrite, 0xFFB80000, // Address Base 0x00080000, // Address Length ) }) Return (FWH0) } } Device (PCI0.EXPL) { Name (_HID, EisaId ("PNP0C02")) Name (_UID, 0x04) Method (_CRS, 0, NotSerialized) { Name (BUF0, ResourceTemplate () { Memory32Fixed (ReadWrite, 0xF4000000, // Address Base 0x04000000, // Address Length ) }) Return (BUF0) } } } } Edited March 30, 2014 by gils83 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2008447 Share on other sites More sharing options...
gils83 Posted March 31, 2014 Share Posted March 31, 2014 up !! personne dans cette maison ? Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2009009 Share on other sites More sharing options...
fantomas Posted March 31, 2014 Author Share Posted March 31, 2014 on est là, gilou mais tu as essayé le tuto ? Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2009014 Share on other sites More sharing options...
fantomas Posted June 6, 2014 Author Share Posted June 6, 2014 -------------------------------- mise à jour du 06/06/2014 -------------------------------- l'injection des kexts à la volé fonctionne très bien sous OS X Yosemite 10.10 DP1, avec les dernières versions de Clover voici le QE_CI Exotic patch pour les HD 48xx series <key>KernelAndKextPatches</key> <dict> <key>AppleRTC</key> <false/> <key>KextsToPatch</key> <array> <dict> <key>Name</key> <string>AMD4800Controller</string> <key>Find</key> <string>0x94401002</string> <key>Replace</key> <string>0x944c1002</string> <key>Comment</key> <string>QE_CI patch</string> <key>InfoPlistPatch</key> <true/> </dict> <dict> <key>Name</key> <string>ATIRadeonX2000</string> <key>Find</key> <string>0x94401002</string> <key>Replace</key> <string>0x944c1002</string> <key>Comment</key> <string>QE_CI patch</string> <key>InfoPlistPatch</key> <true/> </dict> <dict> <key>Name</key> <string>ATIRadeonX2000</string> <key>Find</key> <data> D4ObAQAA </data> <key>Replace</key> <data> kJCQkJCQ </data> <key>Comment</key> <string>QE_CI patch</string> </dict> </array> </dict> et voici le patch via Clover Configurator 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2025975 Share on other sites More sharing options...
ham4ever Posted June 6, 2014 Share Posted June 6, 2014 it never wanna work with my ati4850 system id 0x94421002 and no cache command doesn't with Yosemite , clover stuck in 10 seconds something line. i edit ati4800controller plist and then i copy it , but i would like if i do all by clover in case when update Yosemite 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2026526 Share on other sites More sharing options...
zet120 Posted June 15, 2014 Share Posted June 15, 2014 Hi, For OS X 10.8 and 10.9 my graphics card HD4850 (9442 1002) run VGA BIOS appended to the DSDT. Unfortunately, the new system Yosemite it does not work. I tried the method described above, but unfortunately it does not want to. Clover - 2703 config.plist --> klik There is a solution to this problem? Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2030391 Share on other sites More sharing options...
fantomas Posted June 15, 2014 Author Share Posted June 15, 2014 hi the common problem is that the kexts are not loaded you can check it with kext wizard do you tried the trick with FakeSMC (injecting the informations of your kexts inside the Info. plist as additional IOKitPersonalities)? Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2030466 Share on other sites More sharing options...
zet120 Posted June 15, 2014 Share Posted June 15, 2014 Yes, I tried to trick IOKitPersonalities, unfortunately, does not work. But it is a success. Install QE_CI Exotic patch OS X Yosemite_10.10_DP1 to /S/L/E plus Chameleon 2380 However, the future is worth to find a solution by Clover….. 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2030476 Share on other sites More sharing options...
fantomas Posted June 15, 2014 Author Share Posted June 15, 2014 as a second solution, I was going to suggest you the QE_CI Exotic patch glad that it works for you but don't give up the Clover solution is really great & easy Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2030503 Share on other sites More sharing options...
fantomas Posted June 17, 2014 Author Share Posted June 17, 2014 -------------------------------- mise à jour du 17/06/2014 -------------------------------- l'injection des kexts à la volé fonctionne très bien sous OS X Yosemite 10.10 DP2, avec les dernières versions de Clover QE_CI Exotic patch pour les HD 48xx series reste le même que pour la DP1, le voici <key>KernelAndKextPatches</key> <dict> <key>AppleRTC</key> <false/> <key>KextsToPatch</key> <array> <dict> <key>Name</key> <string>AMD4800Controller</string> <key>Find</key> <string>0x94401002</string> <key>Replace</key> <string>0x944c1002</string> <key>Comment</key> <string>QE_CI patch</string> <key>InfoPlistPatch</key> <true/> </dict> <dict> <key>Name</key> <string>ATIRadeonX2000</string> <key>Find</key> <string>0x94401002</string> <key>Replace</key> <string>0x944c1002</string> <key>Comment</key> <string>QE_CI patch</string> <key>InfoPlistPatch</key> <true/> </dict> <dict> <key>Name</key> <string>ATIRadeonX2000</string> <key>Find</key> <data> D4ObAQAA </data> <key>Replace</key> <data> kJCQkJCQ </data> <key>Comment</key> <string>QE_CI patch</string> </dict> </array> </dict> et voici ce même patch via Clover Configurator 2 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2031393 Share on other sites More sharing options...
Blame73 Posted June 21, 2014 Share Posted June 21, 2014 -------------------------------- mise à jour du 17/06/2014 -------------------------------- l'injection des kexts à la volé fonctionne très bien sous OS X Yosemite 10.10 DP2, avec les dernières versions de Clover QE_CI Exotic patch pour les HD 48xx series reste le même que pour la DP1, le voici <key>KernelAndKextPatches</key> <dict> <key>AppleRTC</key> <false/> <key>KextsToPatch</key> <array> <dict> <key>Name</key> <string>AMD4800Controller</string> <key>Find</key> <string>0x94401002</string> <key>Replace</key> <string>0x944c1002</string> <key>Comment</key> <string>QE_CI patch</string> <key>InfoPlistPatch</key> <true/> </dict> <dict> <key>Name</key> <string>ATIRadeonX2000</string> <key>Find</key> <string>0x94401002</string> <key>Replace</key> <string>0x944c1002</string> <key>Comment</key> <string>QE_CI patch</string> <key>InfoPlistPatch</key> <true/> </dict> <dict> <key>Name</key> <string>ATIRadeonX2000</string> <key>Find</key> <data> D4ObAQAA </data> <key>Replace</key> <data> kJCQkJCQ </data> <key>Comment</key> <string>QE_CI patch</string> </dict> </array> </dict> et voici ce même patch via Clover Configurator KernelAndKextPatches_tab.png Hey fantomas1, thanks for your work. One question: do I have to put the script in the EFI\CLOVER\config.plist? Thanks! 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2032796 Share on other sites More sharing options...
fantomas Posted June 21, 2014 Author Share Posted June 21, 2014 you're welcome yes, you have to put it in EFI\CLOVER\config.plist and it will do the job for you (patch the kexts 'on the fly') 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2032814 Share on other sites More sharing options...
Blame73 Posted June 21, 2014 Share Posted June 21, 2014 (edited) I put it in the config.plist and I correctly see it even in the clover configurator, but still no QE/CI just a 1280x1024 resolution and a very lag system... any advices? BTW I got an ATI 4890 (that I correctly see in system information) Thanks again. Nevermind, I finally did it! I think the problem was I had the npci=0x2000 flag. Once I removed it it worked! Thanks again, it also works with the OS X 10.10 (14A261i) update I just installed! Edited June 21, 2014 by Blame73 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2032945 Share on other sites More sharing options...
gils83 Posted June 22, 2014 Share Posted June 22, 2014 je ne sais pas pour ma Sapphire HD 4850 1024 (vga/dvi/Hdmi) sur Yosemite , je l'ai vendu et contant de m'en être débarrassé , j'ai remarqué que les plugin gpu fakesmc (hw monitor) me posaient de gros problèmes d'écran noir aléatoire sur ma HD 6670 1024 et le gel d'écran sur ma hd 5450 512 , depuis que j'ai viré ces satanés plugin gpu du fakesmc (tant pis pour la température) , je n'ai plus aucun problème , la HD 4670 supporte sans problème . voir aussi avec GraphicsInjector=No FBConfig=Eulemur (Clover) drapeau indispensable pour ma HD 5450 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2032976 Share on other sites More sharing options...
fantomas Posted June 22, 2014 Author Share Posted June 22, 2014 @ Blame73 I'm glad just the last thing, tell me what it says when you tape this command in Terminal ioreg grep ATY Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2032986 Share on other sites More sharing options...
Blame73 Posted June 22, 2014 Share Posted June 22, 2014 @ Blame73 I'm glad just the last thing, tell me what it says when you tape this command in Terminal ioreg grep ATY I'll tell you in 5 minutes, I'm on my ML partition now 'cause I was checking performances. I got half the performance on Yosemite (on OpenCL OceanWave and LuxMark_v2) than I have on ML. Is it normal? Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2033033 Share on other sites More sharing options...
fantomas Posted June 22, 2014 Author Share Posted June 22, 2014 maybe, maybe not it's why I need to see if the right framebuffer is loaded ioreg |grep ATY 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2033035 Share on other sites More sharing options...
Blame73 Posted June 22, 2014 Share Posted June 22, 2014 maybe, maybe not it's why I need to see if the right framebuffer is loaded ioreg |grep ATY Here it is: Davides-iMac:~ davide$ ioreg |grep ATY | | | | +-o ATY,MotMot@0 <class AtiFbStub, id 0x1000002ea, registered, matched, active, busy 0 (3 ms), retain 8> | | | | | +-o ATY_MotMot <class AMDFramebuffer, id 0x1000002ec, registered, matched, active, busy 0 (2 ms), retain 18> | | | | +-o ATY,MotMot@1 <class AtiFbStub, id 0x1000002eb, registered, matched, active, busy 0 (0 ms), retain 8> | | | | | +-o ATY_MotMot <class AMDFramebuffer, id 0x1000002f2, registered, matched, active, busy 0 (0 ms), retain 15> Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2033037 Share on other sites More sharing options...
fantomas Posted June 22, 2014 Author Share Posted June 22, 2014 ok I think MotMot has poor performance in Yosemite change it to Cardinal, tell me if it's a little better in my case, with my hd4830, I saw better performance with Cardinal changing framebuffer to Cardinal, some users have resolved their problem with dual display 1 Link to comment https://www.insanelymac.com/forum/topic/296949-tuto-qe_ci-exotic-patch-via-clover/#findComment-2033039 Share on other sites More sharing options...
Recommended Posts