As of 10.12.4 (currently the latest Sierra update), OS X refuses to boot unless the AppleSMC supports a third I/O port, which provides the current error status when read.
New since v1: - 1/3: don't touch the default OSK string, as it's unnecessary at this time - 2/3: don't consolidate I/O regions, leave as-is for data and cmd; This patch now implements the error-code state machine, AND adds an i/o region dedicaded to the error status port, complete with read/write access methods. - 3/3: optional patch setting access width to 1-byte on data and cmd i/o regions. Tested on OS X versions 10.[6..12]. > This series consists of three patches: > > - 1/3: indentation/whitespace cleanup for applesmc.c to the point > where it now passes scripts/checkpatc.pl, and allows > subsequent changes to look nice in diff-patch format :) > > - 2/3: consolidate Port I/O into a single region, and invoke > appropriate read/write methods based on the offset being > accessed > > - 3/3: implement read-only error/status port, and update > data and command read/write methods to correctly > maintain the state machine for keeping the status_1e > value up to date. Gabriel L. Somlo (3): applesmc: cosmetic whitespace and indentation cleanup applesmc: implement error status port applesmc: fix port i/o access width hw/misc/applesmc.c | 219 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 155 insertions(+), 64 deletions(-) -- 2.7.4