RehabMan -
Great intro, and thanks!
I'm getting started with DSDT disassembly for my ThinkPad T-61 (I actually have 5 of them), and have found three different packages of the un-modded Intel iASL to do this (dated 2012-04-20, 2015-12-18, 2017-06-29). Admittedly, these are dated with standard BIOS (well, almost - they have the Middleton Mod which eliminated the WiFi Card "whitelist" and "unlocked" the SATA restriction so it will run at SATA 2).
As start, I found a "pre-packaged" Yosemite 10.10.1 (now 10.10.5) with Chameleon 2.3svn r2838, and yes, it works, kind of... It is enough of a jump-start that I can do it the "right" way.
So far, I have tried the three PC iASL.exe disassemblers to get the gist of what the DSDT is. The results of dis-assembling the DSDT are:
1. 2012-04-20 - it worked, throwing 3 warnings
9169 Warning Not all control paths return a value (WMAB) Method (WMAB, 3, NotSerialized)
12707 Warning Not all control paths return a value (_Q15) Method (_Q15, 0, NotSerialized)
12717 Warning Reserved method should not return a value (_Q15) Return (0x00)
2. 2015-12-18 - it worked, throwing the same 3 warnings, plus an "1 external control methods found"
3. 2017-06-29 - it immediately threw an unpaired brackets error - clearing that, the same 3 warnings plus the same "1 external control methods found" message
4. In several areas, it appears that pointers to objects are made explicit in different iASLs. e.g.
Device PCI0; Device LPC; Scope \_SB.PCI0.LPC; Device LECP
CreateWordField (EPBF, \_SB.PCI0.LPC.LECP._Y21._MIN, ECN0)
CreateWordField (EPBF, \_SB.PCI0.LPC.LECP._Y21._MAX, ECX0)
becomes:
CreateWordField (EPBF, 0x02, ECN0)
CreateWordField (EPBF, 0x04, ECX0)
is one form preferred? Does it matter?
Looking at these more closely, it is clear that this is supposed to be a hierarchical "tree" model extending through the various "Scopes". However, it appears that the tree looks somewhat "scrambled" (e.g. Scope \SB_ appears several places as does Scope \_SB.PCI0.LPC.EC, etc.). I might assume that in a "perfect" world, that these would be strictly hierarchical by ASCII characters, but over time, snippets of code, were inserted and removed, not entirely in the "right place". (this is something I often do when starting a coding project to get the "feel" of where this is going.)
When looking at two files at once with Notepad++ in Compare mode, there is clearly more material in 2015 and 2017 versions that 2012. Both 2015 and 2017 have "shifts" in "alignment" towards the end of the files, and the 2017 file with an unpaired bracket somewhere. (This looks suspiciously like de-compiling parsing errors that seem to vary from one release of iASL to another, and may not get fully corrected.)
I would suppose that somewhere the compiler should spit out roughly "correct" .aml regardless.
So my questions are:
1. For older an BIOS (2011-03-18), to what level of ACPI specs does the DSDT (and SSDT which I haven't looked at yet) near to adhere to work with a given MacOS.
2. Now that I have the "overview", I take it next step is use your version of MacIASL do to the decompile edits, and recompile. Is this something you revise periodically and where is the best repo?
https://bitbucket.org/RehabMan/os-x-maciasl-patchmatic/downloads/ ?
https://code.google.com/archive/p/os-x-maciasl-patchmatic/downloads for older? Is there a version I should be using?
3. You provided a list of common re-names elsewhere:
GFX0 -> IGPU
SAT0 -> SATA
EHC1 -> EH01
EHC2 -> EH02
XHCI -> XHC
HECI -> IMEI
MEI -> IMEI
LPC -> LPCB
HDAS -> HDEF
AZAL -> HDEF
Is this something to do proactively, or is this a situation for a patch?
Thanks in advance!
-----------
Quick addendum - I did try both your and the other fork of MaciASL. Yours appears to to have 2016-12-13 iASL, the other 2010-03-31. They behave like the others I tried. The earlier de-compiles cleanly, the later not. I notice that both have the ability to choose between ACPI 4, 5.0, and 5.1, but no differences in e-compiling. Is this only for compiling? Also, I see no way, other than running iASL by a command line to but in the switches to bring in the various SSDT's to help with external references. Am I missing out on something, and is this something that is easier to run with the Windows with .bat file to pass parameters along? (My old few UNIX command line and makefile skills are really rusty, my apologies.)
ThinkPad T-61 (x5)
BIOS - 2.29 (Middleton mod - 2011-03-18)
CPU - Intel Core 2 Duo T-9500
Graphics - nVidia FX-570-M, nVidia NVS-140-M
LCDs - 1440x900. 1600x1200, 1920x1200
Northbridge - Intel PM-965
ATA Controller - Intel 82801-HBM ICH-8-M
Audio - Intel PM-965
USB Controllers - Intel ICH-8 USB, Intel ICH-8 USB2
Ethernet - intel 82566-MM Gigabyte Ethernet
PS/2 TouchStick/Touchpad - Lenovo/Synaptics
Bluetooth - Lenovo - Broadcom?
DVD - Matsushita UJDA-775
PCMCIA/media Controller - Ricoh R-5-C-476 ii
Modem - Conexant HDA CX-11254
RAM - 8 GB
SSD - Samsung Evo/Pro 850 500 GB