[coreboot-gerrit] New patch to review for coreboot: a26c35a Winbond W83627HF: Rename and move ASL snippet to `acpi/superio.asl`

Paul Menzel (paulepanter@users.sourceforge.net) gerrit at coreboot.org
Thu Mar 28 13:50:44 CET 2013


Paul Menzel (paulepanter at users.sourceforge.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2937

-gerrit

commit a26c35a2c3544e1a470ac2dffbe78e6a7ea8bc83
Author: Paul Menzel <paulepanter at users.sourceforge.net>
Date:   Thu Mar 28 13:46:16 2013 +0100

    Winbond W83627HF: Rename and move ASL snippet to `acpi/superio.asl`
    
    Put the ASL snippet for inclusion in the DSDT under the `acpi/`
    folder as it is done for the other Super I/O devices.
    
        $ find src/superio/ -name *asl
        src/superio/ite/it8772f/acpi/superio.asl
        src/superio/smsc/mec1308/acpi/superio.asl
        src/superio/smsc/sio1007/acpi/superio.asl
        src/superio/winbond/w83627hf/devtree.asl
    
    Change-Id: Id10cd8897592b780c9fd3bd6b45ada4cf1fcf33e
    Signed-off-by: Paul Menzel <paulepanter at users.sourceforge.net>
---
 src/superio/winbond/w83627hf/acpi/superio.asl | 1473 +++++++++++++++++++++++++
 src/superio/winbond/w83627hf/devtree.asl      | 1473 -------------------------
 2 files changed, 1473 insertions(+), 1473 deletions(-)

diff --git a/src/superio/winbond/w83627hf/acpi/superio.asl b/src/superio/winbond/w83627hf/acpi/superio.asl
new file mode 100644
index 0000000..69017fe
--- /dev/null
+++ b/src/superio/winbond/w83627hf/acpi/superio.asl
@@ -0,0 +1,1473 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2011 Christoph Grenz <christophg+cb at grenz-bonn.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/*
+ * include this file into a mainboard's DSDT _SB device tree and it will expose the
+ * W83627HF SuperIO and its functionality.
+ *
+ * Devices are marked as nonexistant if they got 0x00000000 as I/O base address
+ * (compatibility with legacy bios, which disables logical devices that way)
+ *
+ * It allows the change of IO ports, IRQs and DMA settings on most logical
+ * devices, disabling and reenabling logical devices and controlling power
+ * saving mode on logical devices or the whole chip.
+ *
+ * Notes:
+ * - ECP mode of parallel port not implemented, DMA settings of parallel port
+ *   will be reset on DSDT init
+ * - Hardware monitor is only shown as "Motherboard Resource", shows no real
+ *   functionality
+ *
+ * Controllable through preprocessor macros:
+ * NO_W83627HF_FDC:      don't expose the floppy disk controller
+ * NO_W83627HF_FDC_ENUM: don't try to enumerate the connected floppy drives
+ * NO_W83627HF_PPORT:    don't expose the parallel port
+ * NO_W83627HF_UARTA:    don't expose the first serial port
+ * NO_W83627HF_UARTB:    don't expose the second serial port (already hidden
+ *                       if UARTB is configured as IRDA port by firmware)
+ * NO_W83627HF_IRDA:     don't expose the IRDA port (already hidden if UARTB is
+ *                       configured as serial port by firmware)
+ * NO_W83627HF_CIR:      don't expose the Consumer Infrared functionality
+ * NO_W83627HF_KBC:      don't expose the keyboard controller
+ * NO_W83627HF_PS2M:     don't expose the PS/2 mouse functionality of the
+ *                       keyboard controller
+ * NO_W83627HF_GAME:     don't expose the game port
+ * NO_W83627HF_MIDI:     don't expose the MIDI port
+ * NO_W83627HF_HWMON:    don't expose the hardware monitor as
+ *                       PnP "Motherboard Ressource"
+ * W83627HF_KBC_COMPAT:  show the keyboard controller and the PS/2 mouse as
+ *                       enabled if it is disabled but an address is assigned
+ *                       to it. This may be neccessary in some cases.
+ *
+ * Datasheet: "W83627HF/F WINBOND I/O" rev. 6.0
+ * http://www.itox.com/pages/support/wdt/W83627HF.pdf
+ */
+
+Device(SIO) {
+	Name (_HID, EisaId("PNP0A05"))
+	Name (_STR, Unicode("Winbond W83627HF SuperIO"))
+	Name (_UID, "w83627hf")
+
+	/* Mutex for accesses to the configuration ports (prolog and epilog commands are used, so synchronization is useful) */
+	Mutex(CRMX, 1)
+
+	/* SuperIO configuration ports */
+	OperationRegion (CREG, SystemIO, 0x2E, 0x02)
+	Field (CREG, ByteAcc, NoLock, Preserve)
+	{
+		ADDR,   8,
+		DATA,   8
+	}
+	IndexField (ADDR, DATA, ByteAcc, NoLock, Preserve)
+	{
+		Offset (0x02),
+		RST,    1,     /* Soft reset */
+		,       7,
+		Offset (0x07),
+		LDN,    8,     /* Logical device selector */
+		Offset (0x20),
+		DID,    8,     /* Device ID */
+		DREV,   8,     /* Device Revision */
+		FDPW,   1,     /* FDC Power Down */
+		,       2,
+		PRPW,   1,     /* PRT Power Down */
+		UAPW,   1,     /* UART A Power Down */
+		UBPW,   1,     /* UART B Power Down */
+		HWPW,   1,     /* HWM Power Down */
+		,       1,
+		IPD,    1,     /* Immediate Chip Power Down */
+		,       7,
+		PNPS,   1,     /* PnP Address Select Register Default Value Mode */
+		,       1,
+		KBCR,   1,     /* KBC enabled after system reset (read-only) */
+		,       3,
+		CLKS,   1,     /* Clock select */
+		AQ16,   1,     /* 16bit Address Qualification */
+		FDCT,   1,     /* Tristate FDC (?) */
+		,       2,
+		PRTT,   1,     /* Tristate parallel port (?) */
+		URAT,   1,     /* Tristate UART A (?) */
+		URBT,   1,     /* Tristate UART B (?) */
+		,       2,
+		URAI,   1,     /* UART A Legacy IRQ Select Disable */
+		URBI,   1,     /* UART B Legacy IRQ Select Disable */
+		PRTI,   1,     /* Parallel Port Legacy IRQ/DRQ Select Disable */
+		FDCI,   1,     /* FDC Legacy IRQ/DRQ Select Disable */
+		,       1,
+		LCKC,   1,     /* Lock Configuration Registers */
+		Offset (0x29),
+		IO3S,   8,     /* GPIO3 pin selection register */
+		ACTR,   1,     /* Logical device activation */
+		ACT1,   1,     /* Logical part activation 1 (mostly unused) */
+		ACT2,   1,     /* Logical part activation 2 (mostly unused) */
+		,       5,
+		Offset (0x60),
+		IO1H,   8,      /* First I/O port base - high byte */
+		IO1L,   8,      /* First I/O port base - low byte */
+		IO2H,   8,      /* Second I/O port base - high byte */
+		IO2L,   8,      /* Second I/O port base - low byte */
+		Offset (0x70),
+		IRQ0,   8,      /* First IRQ */
+		Offset (0x72),
+		IRQ1,   8,      /* First IRQ */
+		Offset (0x74),
+		DMA0,   8,      /* DMA */
+		Offset (0xE0),
+		/* CRE0-CRE4: function logical device dependant, seems to be reserved for ACPI settings */
+		CRE0,   8,
+		CRE1,   8,
+		CRE2,   8,
+		CRE3,   8,
+		CRE4,   8,
+		Offset (0xF0),
+		/* OPT1-OPTA aka CRF0-CRF9: function logical device dependant */
+		OPT1,   8,
+		OPT2,   8,
+		OPT3,   8,
+		OPT4,   8,
+		OPT5,   8,
+		OPT6,   8,
+		OPT7,   8,
+		OPT8,   8,
+		OPT9,   8,
+		OPTA,   8
+	}
+
+	Method (_CRS)
+	{
+		Return (ResourceTemplate () {
+		IO (Decode16, 0x002E, 0x002E, 0x02, 0x01) /* Announce the used I/O ports to the OS */
+		IO (Decode16, 0x004E, 0x004E, 0x01, 0x01) /* this port is used in some configurations, so announce it to be sure */
+		})
+	}
+
+	/* Enter configuration mode (and aquire mutex)
+	   Method must be run before accesssing the configuration region.
+	   Parameter is the LDN which should be accessed. Values >= 0xFF mean
+	   no LDN switch should be done.
+	*/
+	Method (ENCM, 1)
+	{
+		Acquire (CRMX, 0xFFFF)
+		Store (0x87, ADDR)
+		Store (0x87, ADDR)
+		If (LLess(Arg0, 0xFF)) {
+			Store(Arg0, LDN)
+		}
+	}
+
+	/* Exit configuration mode (and release mutex)
+	   Method must be run after accessing the configuration region.
+	*/
+	Method (EXCM)
+	{
+		Store (0xAA, ADDR)
+		Release (CRMX)
+	}
+
+	/* PM: indicate IPD (Immediate Power Down) bit state as D0/D2 */
+	Method (_PSC) {
+		ENCM (0xFF)
+		Store (IPD, Local0)
+		EXCM ()
+		If (Local0) { Return (2) }
+		Else { Return (0) }
+	}
+
+	/* PM: Switch to D0 by setting IPD low  */
+	Method (_PS0) {
+		ENCM (0xFF)
+		Store (Zero, IPD)
+		EXCM ()
+	}
+
+	/* PM: Switch to D2 by setting IPD high  */
+	Method (_PS2) {
+		ENCM (0xFF)
+		Store (One, IPD)
+		EXCM ()
+	}
+
+	#ifndef NO_W83627HF_FDC
+	/* =================== Floppy Disk Controller ================ */
+	Device (FDC0) {
+		Name (_HID, EisaId ("PNP0700"))
+		Name (_STR, Unicode ("W83627HF Floppy Disk Controller"))
+		Name (_UID, "w83627hf-fdc")
+
+		#ifndef NO_W83627HF_FDC_ENUM
+		/* Initialization method: Should be run once on boot
+		   If FDC is active, enumerate all connected devices */
+		Method (_INI) {
+			ENCM (0)
+			Store (ACTR, Local0)
+			Store (IO1H, Local1)
+			Store (IO1L, Local2)
+			EXCM ()
+			ShiftLeft(Local1, 8, Local1)
+			Or(Local1, Local2, Local1)
+			If (Local0) {
+				/* Try probing drives and save result in _FDE */
+				PROB(Local1)
+			}
+		}
+		#endif
+
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM (0)
+			If (ACTR) {
+				Store (0x0F, Local0)
+			}
+			ElseIf (LOr (IO1H, IO1L))
+			{
+				Store (0x0D, Local0)
+			}
+			EXCM ()
+			Return (Local0)
+		}
+
+		/* Current power state (Returns 1 if LDN in power saving mode,
+		 * 2 if whole chip is powered down), 0 else
+		 */
+		Method (_PSC) {
+			Store(^^_PSC (), Local0)
+			If (Local0) { Return (Local0) }
+			ENCM (0xFF)
+			Store (FDPW, Local0)
+			EXCM ()
+			If (Local0) { Return (1) }
+			Else { Return (0) }
+		}
+		/* Disable power saving mode */
+		Method (_PS0) {
+			ENCM (0xFF)
+			Store (Zero, FDPW)
+			EXCM ()
+		}
+		/* Enable power saving mode */
+		Method (_PS1) {
+			ENCM (0xFF)
+			Store (One, FDPW)
+			EXCM ()
+		}
+
+		Method (_DIS)
+		{
+			ENCM (0)
+			Store (Zero, ACTR)
+			EXCM ()
+		}
+
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x07, IO0)
+				IRQNoFlags () {6}
+				DMA (Compatibility, NotBusMaster, Transfer8) {2}
+			})
+
+			/* Get IO port info */
+			ENCM (0)
+			Store(IO1L, Local0)
+			Store(IO1H, Local1)
+			EXCM ()
+
+			/* Calculate full IO port address */
+			Or(ShiftLeft(Local1, 8), Local0, Local0)
+
+			/* Modify the resource template and return it */
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMIN)
+			Store (Local0, IMAX)
+			Return (CRS)
+		}
+
+		Method (_PRS)
+		{
+			Return (ResourceTemplate ()
+			{
+				StartDependentFnNoPri ()
+				{
+					IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x07)
+					IRQNoFlags () {6}
+					DMA (Compatibility, NotBusMaster, Transfer8) {2}
+				}
+				EndDependentFn ()
+			})
+		}
+
+		#ifndef NO_W83627HF_FDC_ENUM
+		Name(_FDE, Buffer(){0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
+		#endif
+
+		Method (PROB, 1) {
+			#ifndef NO_W83627HF_FDC_ENUM
+			/* Try probing drives and save result in _FDE
+			   Probing is done through selecting and activating a drive
+			   and reading 0x03F7 aka the "shared IDE and floppy register"
+			   as any value there besides zero seems to indicate a
+			   connected drive.
+			*/
+			OperationRegion (FIO1, SystemIO, Arg0, 0x06)
+			Field (FIO1, ByteAcc, NoLock, Preserve)
+			{
+				Offset(0x02),
+				SELE,  2,
+				RSTL,  1,
+				IDMA,  1,
+				ACT1,  1,
+				ACT2,  1,
+				ACT3,  1,
+				ACT4,  1,
+				Offset(0x04),
+				BSY1,  1,
+				BSY2,  1,
+				BSY3,  1,
+				BSY4,  1,
+				BUSY,  1,
+				NDMA,  1,
+				IODI,  1,
+				RDY,   1,
+				DATA,  8,
+			}
+			OperationRegion (FIO2, SystemIO, 0x3F7, 0x01)
+
+			CreateByteField (_FDE, 3, FD1)
+			CreateByteField (_FDE, 7, FD2)
+			CreateByteField (_FDE, 11, FD3)
+			CreateByteField (_FDE, 15, FD4)
+
+			Store(One, ACT1)
+			Store(0, SELE)
+			Sleep(0x64)
+			If (FIO2) { Store (One, FD1) }
+
+			Store(Zero, ACT1)
+			Store(One, ACT2)
+			Store(1, SELE)
+			Sleep(0x64)
+			If (FIO2) { Store (One, FD2) }
+
+			Store(Zero, ACT2)
+			Store(One, ACT3)
+			Store(2, SELE)
+			Sleep(0x64)
+			If (FIO2) { Store (One, FD3) }
+
+			Store(Zero, ACT3)
+			Store(One, ACT4)
+			Store(3, SELE)
+			Sleep(0x64)
+			If (FIO2) { Store (One, FD4) }
+			Store(Zero, ACT4)
+			Store(Zero, SELE)
+			#endif
+		}
+
+
+		Method (_SRS, 1, Serialized)
+		{
+			Name (TMPL, ResourceTemplate () {
+				IO (Decode16, 0, 0, 1, 7, IO0)
+				IRQNoFlags (IRQ0) {}
+				DMA (Compatibility, NotBusMaster, Transfer8, DMA0) {}
+			})
+			CreateWordField (Arg0, IO0._MIN, IOA0)
+			CreateByteField (Arg0, IRQ0._INT, IRQL)
+			CreateByteField (Arg0, DMA0._DMA, DMCH)
+
+			Divide(IOA0, 256, Local0, Local1)
+
+			ENCM (0)
+			Store (Local0, IO1L)
+			Store (Local1, IO1H)
+			Store (One, ACTR)
+			EXCM ()
+
+			/* Try probing drives and save result in _FDE */
+			PROB(IOA0)
+		}
+	}
+	#endif
+
+	#ifndef NO_W83627HF_PPORT
+	/* ======================== Parallel Port ======================== */
+	/* Currently no ECP support */
+	Device (PAR0) {
+		Name (_HID, EisaId ("PNP0400"))
+		Name (_DDN, "LPT1")
+		Name (_UID, "w83627hf-pport")
+
+		Method (MODE, 1) {
+			And(Arg0, 0x07, Local0)
+			ENCM (1)
+			And(OPT1, 0x3, Local1)
+			Or(Local1, Local0, OPT1)
+			EXCM()
+		}
+
+		Method (_INI)
+		{
+			/* Deactivate DMA, even if set by BIOS. We don't announce it
+			   through _CRS and it's only useful in ECP mode which we
+			   don't support at the moment. */
+			ENCM (1)
+			Store (0x04, DMA0)
+			EXCM ()
+		}
+
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM (1)
+			And(OPT1, 0x3, Local1)
+			If (ACTR) {
+				If (LNotEqual(Local1, 2)) {
+					Store (0x0D, Local0)
+				} Else {
+					Store (0x0D, Local0)
+				}
+			}
+			ElseIf (LOr (IO1H, IO1L))
+			{
+				Store (0x0D, Local0)
+			}
+			EXCM ()
+			Return (Local0)
+		}
+
+		Method (_PSC) {
+			Store(^^_PSC (), Local0)
+			If (Local0) { Return (Local0) }
+			ENCM (0xFF)
+			Store (PRPW, Local0)
+			EXCM ()
+			If (Local0) { Return (1) }
+			Else { Return (0) }
+		}
+		Method (_PS0) {
+			ENCM (0xFF)
+			Store (Zero, PRPW)
+			EXCM ()
+		}
+		Method (_PS1) {
+			ENCM (0xFF)
+			Store (One, PRPW)
+			EXCM ()
+		}
+
+		Method (_DIS) {
+			ENCM (1)
+			Store (Zero, ACTR)
+			EXCM ()
+		}
+
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate ()
+			{
+				IO (Decode16, 0x0000, 0x0000, 0x04, 0x08, IO0)
+				IRQNoFlags (IRQX) {}
+			})
+			CreateWordField (CRS, IO0._MIN, IOP0)
+			CreateWordField (CRS, IO0._MAX, IOR0)
+			CreateByteField (CRS, IO0._ALN, IOAL)
+			CreateByteField (CRS, IO0._LEN, IOLE)
+			CreateWordField (CRS, IRQX._INT, IRQW)
+
+			/* Get device settings */
+			ENCM (1)
+			Store (IO1L, Local0)
+			Store (IO1H, Local1)
+			Store (OPT1, Local2)
+			Store (IRQ0, Local5)
+			EXCM ()
+			/* Calculate IO port and modify template */
+			Or(ShiftLeft(Local1, 8), Local0, Local0)
+			Store(Local1, IOP0)
+			Store(Local1, IOR0)
+
+			/* Set align and length based on active parallel port mode */
+			And(Local2, 0x3, Local3)
+			And(Local2, 0x4, Local4)
+			If (Local4) {
+				Store(0x04, IOAL)
+			}
+			If (LEqual (Local0, 0xBC))
+			{
+				Store (0x04, IOLE)
+			}
+			Else
+			{
+				Store (0x08, IOLE)
+			}
+			/* Calculate IRQ bitmap */
+			Store (One, Local0)
+			ShiftLeft (Local0, Local5, IRQW)
+			/* Return resource template */
+			Return (CRS)
+		}
+
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFn (0,1)
+			{
+				IO (Decode16, 0x0378, 0x0378, 0x04, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (0,1)
+			{
+				IO (Decode16, 0x0278, 0x0278, 0x04, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (0,1)
+			{
+				IO (Decode16, 0x03BC, 0x03BC, 0x04, 0x04)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (0,0)
+			{
+				IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (0,0)
+			{
+				IO (Decode16, 0x0278, 0x0278, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (2,0)
+			{
+				IO (Decode16, 0x0100, 0x0FFC, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (2,1)
+			{
+				IO (Decode16, 0x0100, 0x0FFC, 0x04, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			EndDependentFn ()
+		})
+
+		Method (_SRS, 1, Serialized)
+		{
+			Name (TMPL, ResourceTemplate () {
+				IO (Decode16, 0, 0, 4, 4, IO0)
+				IRQNoFlags (IRQX) {}
+			})
+			CreateWordField (Arg0, IO0._MIN, IOA0)
+			CreateWordField (Arg0, IO0._MIN, IOA1)
+			CreateByteField (Arg0, IO0._ALN, IOAL)
+			CreateByteField (Arg0, IO0._LEN, IOLE)
+			CreateWordField (Arg0, IRQX._INT, IRQL)
+
+			If (LEqual(IOAL, 4)) {
+				Store(0x0, Local2)
+			} else  {
+				Store(0x1, Local2)
+			}
+
+			Divide(IOA0, 256, Local0, Local1)
+
+			ENCM (1)
+			/* IO port */
+			Store (Local0, IO1L)
+			Store (Local1, IO1H)
+			/* Mode */
+			Store (OPT1, Local3)
+			And (Local3, 0xF8, Local3)
+			Or (Local2, Local3, OPT1)
+			/* DMA off */
+			Store (0x04, DMA0)
+			/* IRQ */
+			Subtract(FindSetLeftBit (IRQL), 1, IRQ0)
+			/* Activate */
+			Store (One, ACTR)
+			EXCM ()
+		}
+	}
+	#endif
+
+	#ifndef NO_W83627HF_UARTA
+	/* =========================== UART A ============================ */
+	Device (SER0) {
+		Name (_HID, EisaId ("PNP0501"))
+		Name (_UID, "w83627hf-uarta")
+		Name (_DDN, "COM1")
+
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM (2)
+			If (ACTR) {
+				Store (0x0F, Local0)
+			}
+			ElseIf (LOr (IO1H, IO1L))
+			{
+				Store (0x0D, Local0)
+			}
+			EXCM ()
+			Return (Local0)
+		}
+
+		Method (_PSC) {
+			Store(^^_PSC (), Local0)
+			If (Local0) { Return (Local0) }
+			ENCM (0xFF)
+			Store (UAPW, Local0)
+			EXCM ()
+			If (Local0) { Return (1) }
+			Else { Return (0) }
+		}
+		Method (_PS0) {
+			ENCM (0xFF)
+			Store (Zero, UAPW)
+			EXCM ()
+		}
+		Method (_PS1) {
+			ENCM (0xFF)
+			Store (One, UAPW)
+			EXCM ()
+		}
+
+		Method (_DIS)
+		{
+			ENCM (2)
+			Store (Zero, ACTR)
+			EXCM ()
+		}
+
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
+				IRQNoFlags (IRQX) {6}
+			})
+			ENCM (2)
+			Store(IO1L, Local0)
+			Store(IO1H, Local1)
+			Store(IRQ0, Local2)
+			EXCM ()
+			Or(ShiftLeft(Local1, 8), Local0, Local0)
+
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			Store (Local0, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMAX)
+
+			CreateWordField (CRS, IRQX._INT, IRQW)
+			Store (One, Local3)
+			ShiftLeft (Local3, Local2, IRQW)
+
+			Return (CRS)
+		}
+
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFn (0,0) {
+				IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (0,0) {
+				IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (1,0) {
+				IO (Decode16, 0x03E8, 0x03E8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (1,0) {
+				IO (Decode16, 0x02E8, 0x02E8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (2,0) {
+				IO (Decode16, 0x0100, 0x0FF8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			EndDependentFn()
+		})
+
+		Method (_SRS, 1, Serialized)
+		{
+			Name (TMPL, ResourceTemplate () {
+				IO (Decode16, 0, 0, 1, 6, IO0)
+				IRQNoFlags (IRQX) {}
+			})
+			CreateWordField (Arg0, IO0._MIN, IOA0)
+			CreateByteField (Arg0, IRQX._INT, IRQL)
+
+			Divide(IOA0, 256, Local0, Local1)
+
+			Subtract(FindSetLeftBit (IRQL), 1, Local3)
+
+			ENCM (2)
+			Store (Local0, IO1L)
+			Store (Local1, IO1H)
+			Store (Local3, IRQ0)
+			Store (One, ACTR)
+			EXCM ()
+		}
+	}
+	#endif
+
+	#ifndef NO_W83627HF_UARTB
+	/* =========================== UART B ============================ */
+	Device (SER1) {
+		Name (_HID, EisaId ("PNP0501"))
+		Name (_UID, "w83627hf-uartb")
+		Name (_DDN, "COM2")
+
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM (3)
+			If (LNot(And(OPT2, 0x30)))
+			{
+				If (ACTR) {
+					Store (0x0F, Local0)
+				}
+				ElseIf (LOr (IO1H, IO1L))
+				{
+					Store (0x0D, Local0)
+				}
+			}
+			EXCM ()
+			Return (Local0)
+		}
+
+		Method (_PSC) {
+			Store(^^_PSC (), Local0)
+			If (Local0) { Return (Local0) }
+			ENCM (0xFF)
+			Store (UBPW, Local0)
+			EXCM ()
+			If (Local0) { Return (1) }
+			Else { Return (0) }
+		}
+		Method (_PS0) {
+			ENCM (0xFF)
+			Store (Zero, UBPW)
+			EXCM ()
+		}
+		Method (_PS1) {
+			ENCM (0xFF)
+			Store (One, UBPW)
+			EXCM ()
+		}
+
+		Method (_DIS)
+		{
+			ENCM (3)
+			Store (Zero, ACTR)
+			EXCM ()
+		}
+
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
+				IRQNoFlags (IRQX) {6}
+			})
+			ENCM (3)
+			Store(IO1L, Local0)
+			Store(IO1H, Local1)
+			Store(IRQ0, Local2)
+			EXCM ()
+			Or(ShiftLeft(Local1, 8), Local0, Local0)
+
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			Store (Local0, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMAX)
+
+			CreateWordField (CRS, IRQX._INT, IRQW)
+			Store (One, Local3)
+			ShiftLeft (Local3, Local2, IRQW)
+
+			Return (CRS)
+		}
+
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFn (0,0) {
+				IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (0,0) {
+				IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (1,0) {
+				IO (Decode16, 0x03E8, 0x03E8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (1,0) {
+				IO (Decode16, 0x02E8, 0x02E8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (2,0) {
+				IO (Decode16, 0x0100, 0x0FF8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			EndDependentFn()
+		})
+
+		Method (_SRS, 1, Serialized)
+		{
+			Name (TMPL, ResourceTemplate () {
+				IO (Decode16, 0, 0, 1, 8, IO0)
+				IRQNoFlags (IRQX) {}
+			})
+			CreateWordField (Arg0, IO0._MIN, IOA0)
+			CreateByteField (Arg0, IRQX._INT, IRQL)
+
+			Divide(IOA0, 256, Local0, Local1)
+
+			Subtract(FindSetLeftBit (IRQL), 1, Local3)
+
+			ENCM (3)
+			Store (Local0, IO1L)
+			Store (Local1, IO1H)
+			Store (Local3, IRQ0)
+			Store (One, ACTR)
+			EXCM ()
+		}
+	}
+	#endif
+
+	#ifndef NO_W83627HF_IRDA
+	/* ======================== UART B (IRDA) ======================== */
+	Device (IRDA) {
+		Name (_HID, EisaId ("PNP0510"))
+		Name (_UID, "w83627hf-irda")
+		Name (_STR, Unicode("IrDA Port"))
+
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM (3)
+			If (And(OPT2, 0x30))
+			{
+				If (ACTR) {
+					Store (0x0F, Local0)
+				}
+				ElseIf (LOr (IO1H, IO1L))
+				{
+					Store (0x0D, Local0)
+				}
+			}
+			EXCM ()
+			Return (Local0)
+		}
+
+		Method (_PSC) {
+			Store(^^_PSC (), Local0)
+			If (Local0) { Return (Local0) }
+			ENCM (0xFF)
+			Store (UBPW, Local0)
+			EXCM ()
+			If (Local0) { Return (1) }
+			Else { Return (0) }
+		}
+		Method (_PS0) {
+			ENCM (0xFF)
+			Store (Zero, UBPW)
+			EXCM ()
+		}
+		Method (_PS1) {
+			ENCM (0xFF)
+			Store (One, UBPW)
+			EXCM ()
+		}
+
+		Method (_DIS)
+		{
+			ENCM (3)
+			Store (Zero, ACTR)
+			EXCM ()
+		}
+
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
+				IRQNoFlags (IRQX) {6}
+			})
+			ENCM (3)
+			Store(IO1H, Local1)
+			Store(IO1L, Local0)
+			Store(IRQ0, Local2)
+			EXCM ()
+			Or(ShiftLeft(Local1, 8), Local0, Local0)
+
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			Store (Local0, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMAX)
+
+			CreateWordField (CRS, IRQX._INT, IRQW)
+			Store (One, Local3)
+			ShiftLeft (Local3, Local2, IRQW)
+
+			Return (CRS)
+		}
+
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFn (0,0) {
+				IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (1,0) {
+				IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (0,0) {
+				IO (Decode16, 0x03E8, 0x03E8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (0,0) {
+				IO (Decode16, 0x02E8, 0x02E8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			StartDependentFn (2,0) {
+				IO (Decode16, 0x0100, 0x0FF8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			EndDependentFn()
+		})
+
+		Method (_SRS, 1, Serialized)
+		{
+			Name (TMPL, ResourceTemplate () {
+				IO (Decode16, 0, 0, 1, 8, IO0)
+				IRQNoFlags (IRQX) {}
+			})
+			CreateWordField (Arg0, IO0._MIN, IOA0)
+			CreateByteField (Arg0, IRQX._INT, IRQL)
+
+			Divide(IOA0, 256, Local0, Local1)
+
+			Subtract(FindSetLeftBit (IRQL), 1, Local3)
+
+			ENCM (3)
+			Store (Local0, IO1L)
+			Store (Local1, IO1H)
+			Store (Local3, IRQ0)
+			Store (One, ACTR)
+			EXCM ()
+		}
+	}
+	#endif
+
+	#ifndef NO_W83627HF_CIR
+	/* ========================= Consumer IR ========================= */
+	Device (CIR0)
+	{
+		Name (_HID, EisaId ("WEC1022")) /* Should be the correct one */
+		Name (_UID, "w83627hf-cir")
+		Name (_STR, Unicode("Winbond Consumer Infrared Transceiver"))
+
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM (6)
+			If (ACTR) {
+				Store (0x0F, Local0)
+			}
+			ElseIf (LOr (IO1H, IO1L))
+			{
+				Store (0x0D, Local0)
+			}
+			EXCM ()
+			Return (Local0)
+		}
+
+		Method (_DIS)
+		{
+			ENCM (6)
+			Store (Zero, ACTR)
+			EXCM ()
+		}
+
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
+				IRQNoFlags (IRQX) {6}
+			})
+			ENCM (6)
+			Store(IO1L, Local0)
+			Store(IO1H, Local1)
+			Store(IRQ0, Local2)
+			EXCM ()
+			Or(ShiftLeft(Local1, 8), Local0, Local0)
+
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			Store (Local0, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMAX)
+
+			CreateWordField (CRS, IRQX._INT, IRQW)
+			Store (One, Local3)
+			ShiftLeft (Local3, Local2, IRQW)
+
+			Return (CRS)
+		}
+
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFn (0,0) {
+				IO (Decode16, 0x0100, 0x0FF8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
+			}
+			EndDependentFn()
+		})
+
+		Method (_SRS, 1, Serialized)
+		{
+			Name (TMPL, ResourceTemplate () {
+				IO (Decode16, 0, 0, 1, 8, IO0)
+				IRQNoFlags (IRQX) {}
+			})
+			CreateWordField (Arg0, IO0._MIN, IOA0)
+			CreateByteField (Arg0, IRQX._INT, IRQL)
+
+			Divide(IOA0, 256, Local0, Local1)
+
+			Subtract(FindSetLeftBit (IRQL), 1, Local3)
+
+			ENCM (6)
+			Store (Local0, IO1L)
+			Store (Local1, IO1H)
+			Store (Local3, IRQ0)
+			Store (One, ACTR)
+			EXCM ()
+		}
+	}
+	#endif
+
+	#ifndef NO_W83627HF_KBC
+	/* ===================== Keyboard Controller ===================== */
+	Device (KBD0)
+	{
+		Name (_HID, EisaId ("PNP0303"))
+		Name (_UID, "w83627hf-kbc")
+
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM (5)
+			If (ACTR) {
+				Store (0x0F, Local0)
+			}
+			ElseIf (Lor(LOr (IO1H, IO1L), LOr (IO2H, IO2L)))
+			{
+				#ifdef W83627HF_KBC_COMPAT
+				Store (0x0F, Local0)
+				#else
+				Store (0x0D, Local0)
+				#endif
+			}
+			EXCM ()
+			Return (Local0)
+		}
+
+		Method (_DIS)
+		{
+			ENCM (5)
+			Store (Zero, ACTR)
+			EXCM ()
+			Notify(PS2M, 1)
+		}
+
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IRQNoFlags (IRQX) {}
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO0)
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO1)
+			})
+			ENCM (5)
+			Store(IO1L, Local0)
+			Store(IO1H, Local1)
+			Store(IO2L, Local2)
+			Store(IO2H, Local3)
+			Store(IRQ0, Local4)
+			EXCM ()
+
+			Or(ShiftLeft(Local1, 8), Local0, Local0)
+			Or(ShiftLeft(Local3, 8), Local2, Local2)
+
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			Store (Local0, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMAX)
+
+			CreateWordField (CRS, IO1._MIN, I1MI)
+			Store (Local2, I1MI)
+			CreateWordField (CRS, IO1._MAX, I1MA)
+			Store (Local2, I1MA)
+
+			CreateWordField (CRS, IRQX._INT, IRQW)
+			Store (One, Local5)
+			ShiftLeft (Local5, Local4, IRQW)
+
+			Return (CRS)
+		}
+
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFn (0,0) {
+				IRQNoFlags () {1}
+				IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
+				IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
+			}
+			EndDependentFn()
+		})
+
+		Method (_SRS, 1, Serialized)
+		{
+			Name (TMPL, ResourceTemplate () {
+				IRQNoFlags (IRQX) {}
+				IO (Decode16, 0, 0, 1, 1, IO0)
+				IO (Decode16, 0, 0, 1, 1, IO1)
+			})
+			CreateWordField (Arg0, IO0._MIN, IOA0)
+			CreateWordField (Arg0, IO1._MIN, IOA1)
+			CreateByteField (Arg0, IRQX._INT, IRQL)
+
+			Divide(IOA0, 256, Local0, Local1)
+			Divide(IOA1, 256, Local2, Local3)
+
+			Subtract(FindSetLeftBit (IRQL), 1, Local4)
+
+			ENCM (5)
+			Store (Local0, IO1L)
+			Store (Local1, IO1H)
+			Store (Local2, IO2L)
+			Store (Local3, IO2H)
+			Store (Local4, IRQ0)
+			Store (One, ACTR)
+			EXCM ()
+			Notify(PS2M, 1)
+		}
+	}
+	#ifndef NO_W83627HF_PS2M
+	Device (PS2M)
+	{
+		Name (_HID, EisaId ("PNP0F13"))
+		Name (_UID, "w83627hf-ps2m")
+
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM (5)
+			If (LAnd(ACTR, IRQ1) ) {
+				Store (0x0F, Local0)
+			}
+			ElseIf (Lor(LOr (IO1H, IO1L), LOr (IO2H, IO2L)))
+			{
+				#ifdef W83627HF_KBC_COMPAT
+				Store (0x0F, Local0)
+				#else
+				Store (0x0D, Local0)
+				#endif
+			}
+			EXCM ()
+			Return (Local0)
+		}
+
+		Method (_DIS)
+		{
+			ENCM (5)
+			Store (Zero, IRQ1)
+			EXCM ()
+		}
+
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IRQNoFlags (IRQX) {}
+			})
+			ENCM (5)
+			Store(IRQ1, Local4)
+			EXCM ()
+
+			CreateWordField (CRS, IRQX._INT, IRQW)
+			Store (One, Local5)
+			ShiftLeft (Local5, Local4, IRQW)
+
+			Return (CRS)
+		}
+
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFn (0,0) {
+				IRQNoFlags () {12}
+			}
+			StartDependentFn (2,0) {
+				IRQNoFlags () {1,3,4,5,6,7,9,10,11}
+			}
+			EndDependentFn()
+		})
+
+		Method (_SRS, 1, Serialized)
+		{
+			Name (TMPL, ResourceTemplate () {
+				IRQNoFlags (IRQX) {}
+			})
+			CreateByteField (Arg0, IRQX._INT, IRQL)
+
+			Subtract(FindSetLeftBit (IRQL), 1, Local0)
+
+			ENCM (5)
+			Store (Local0, IRQ1)
+			/* Only activates if KBD is active */
+			EXCM ()
+		}
+	}
+	#endif
+	#endif
+
+	#ifndef NO_W83627HF_GAME
+	/* ========================== Game Port ========================== */
+	Device (GAME)
+	{
+		Name (_HID, EisaId ("PNPB02F"))
+		Name (_STR, Unicode ("Joystick/Game Port"))
+		Name (_UID, "w83627hf-game")
+
+		Method (_STA) {
+			Store(0, Local0)
+			ENCM (7)
+			If (LOr(IO1L, IO1H)) {
+				If (LOr(ACTR, ACT1)) {
+					Store (0x0F, Local0)
+				}
+				Else {
+					Store (0x0D, Local0)
+				}
+			}
+			EXCM ()
+			Return (Local0)
+		}
+
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO0)
+				IRQNoFlags (IRQX) {}
+			})
+			ENCM (7)
+			Store(IO1L, Local0)
+			Store(IO1H, Local1)
+			Store(IRQ0, Local2)
+			EXCM ()
+
+			Or(ShiftLeft(Local1, 8), Local0, Local0)
+
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMIN)
+			Store (Local0, IMAX)
+
+			If (Local2) {
+				CreateWordField (CRS, IRQX._INT, IRQW)
+				Store (One, Local3)
+				ShiftLeft (Local3, Local2, IRQW)
+			}
+
+			Return (CRS)
+		}
+
+	}
+	#endif
+
+	#ifndef NO_W83627HF_MIDI
+	/* ========================== MIDI Port ========================== */
+	Device (MIDI)
+	{
+		Name (_HID, EisaId ("PNPB006"))
+		Name (_STR, Unicode ("MPU-401 Compatible MIDI Port"))
+		Name (_UID, "w83627hf-midi")
+
+		Method (_STA)
+		{
+			Store(0, Local0)
+			ENCM (7)
+			If (LOr(IO2L, IO2H)) {
+				If (LOr(ACTR, ACT2)) {
+					Store (0x0F, Local0)
+				}
+				Else {
+					Store (0x0D, Local0)
+				}
+			}
+			EXCM ()
+			Return (Local0)
+		}
+
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x02, 0x02, IO0)
+				IRQNoFlags (IRQX) {}
+			})
+			ENCM (7)
+			Store(IO2L, Local0)
+			Store(IO2H, Local1)
+			Store(IRQ1, Local2)
+			EXCM ()
+
+			Or(ShiftLeft(Local1, 8), Local0, Local0)
+
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMIN)
+			Store (Local0, IMAX)
+
+			If (Local2) {
+				CreateWordField (CRS, IRQX._INT, IRQW)
+				Store (One, Local3)
+				ShiftLeft (Local3, Local2, IRQW)
+			}
+
+			Return (CRS)
+		}
+
+	}
+	#endif
+
+	/* ==== Suspend LED control if it is connected to the SuperIO ==== */
+	Method (SLED, 1)
+	{
+		ENCM (9)
+		Store(OPT4, Local0)
+		And(Local0, 63, Local0)
+		Or(Local0, ShiftLeft(And(Arg0, 0x03), 6), OPT4)
+		EXCM ()
+	}
+
+	/* ===== Power LED control if it is connected to the SuperIO ===== */
+	Method (PLED, 1)
+	{
+		ENCM (8)
+		Store(OPT4, Local0)
+		And(Local0, 63, Local0)
+		Or(Local0, ShiftLeft(And(Arg0, 0x03), 6), OPT4)
+		EXCM ()
+	}
+
+	#ifndef NO_W83627HF_HWMON
+	/* ====================== Hardware Monitor ======================= */
+	Device (HMON)
+	{
+		Name (_HID, EisaId ("PNP0C02")) // TODO: find better matching ID
+		Name (_STR, Unicode("W83627 Hardware Monitor"))
+		Name (_UID, "w83627hf-hwmon")
+
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM (11)
+			If (ACTR) {
+				Store (0x0F, Local0)
+			}
+			ElseIf (LOr (IO1H, IO1L))
+			{
+				Store (0x0D, Local0)
+			}
+			EXCM ()
+			Return (Local0)
+		}
+
+		Method (_PSC)
+		{
+			Store(^^_PSC (), Local0)
+			If (Local0) { Return (Local0) }
+			ENCM (0xFF)
+			Store (HWPW, Local0)
+			EXCM ()
+			If (Local0) { Return (1) }
+			Else { Return (0) }
+		}
+
+		Method (_PS0)
+		{
+			ENCM (0xFF)
+			Store (Zero, HWPW)
+			EXCM ()
+		}
+
+		Method (_PS1)
+		{
+			ENCM (0xFF)
+			Store (One, HWPW)
+			EXCM ()
+		}
+
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x08, 0x02, IO0)
+				IRQNoFlags (IRQX) {}
+			})
+			ENCM (11)
+			Store(IO1L, Local0)
+			Store(IO1H, Local1)
+			Store(IRQ1, Local2)
+			EXCM ()
+
+			Or(ShiftLeft(Local1, 8), Local0, Local0)
+
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMIN)
+			Store (Local0, IMAX)
+
+			If (Local2) {
+				CreateWordField (CRS, IRQX._INT, IRQW)
+				Store (One, Local3)
+				ShiftLeft (Local3, Local2, IRQW)
+			}
+			Return (CRS)
+		}
+	}
+	#endif
+
+	/* Returns the wake source register.
+	   It is cleared after reading.
+	   Bit 0: Keyboard wake-up event
+	   Bit 1: Mouse wake-up event
+	   Bit 2: Power button event
+	   Bit 3: CIR wake-up event
+	   Bit 4: Power loss event
+	   Bit 5: VSB power loss status
+	*/
+	Method (WAKS)
+	{
+		ENCM (10)
+		Store (CRE3, Local0)
+		EXCM ()
+		Return (Local0)
+	}
+}
diff --git a/src/superio/winbond/w83627hf/devtree.asl b/src/superio/winbond/w83627hf/devtree.asl
deleted file mode 100644
index 69017fe..0000000
--- a/src/superio/winbond/w83627hf/devtree.asl
+++ /dev/null
@@ -1,1473 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2011 Christoph Grenz <christophg+cb at grenz-bonn.de>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/*
- * include this file into a mainboard's DSDT _SB device tree and it will expose the
- * W83627HF SuperIO and its functionality.
- *
- * Devices are marked as nonexistant if they got 0x00000000 as I/O base address
- * (compatibility with legacy bios, which disables logical devices that way)
- *
- * It allows the change of IO ports, IRQs and DMA settings on most logical
- * devices, disabling and reenabling logical devices and controlling power
- * saving mode on logical devices or the whole chip.
- *
- * Notes:
- * - ECP mode of parallel port not implemented, DMA settings of parallel port
- *   will be reset on DSDT init
- * - Hardware monitor is only shown as "Motherboard Resource", shows no real
- *   functionality
- *
- * Controllable through preprocessor macros:
- * NO_W83627HF_FDC:      don't expose the floppy disk controller
- * NO_W83627HF_FDC_ENUM: don't try to enumerate the connected floppy drives
- * NO_W83627HF_PPORT:    don't expose the parallel port
- * NO_W83627HF_UARTA:    don't expose the first serial port
- * NO_W83627HF_UARTB:    don't expose the second serial port (already hidden
- *                       if UARTB is configured as IRDA port by firmware)
- * NO_W83627HF_IRDA:     don't expose the IRDA port (already hidden if UARTB is
- *                       configured as serial port by firmware)
- * NO_W83627HF_CIR:      don't expose the Consumer Infrared functionality
- * NO_W83627HF_KBC:      don't expose the keyboard controller
- * NO_W83627HF_PS2M:     don't expose the PS/2 mouse functionality of the
- *                       keyboard controller
- * NO_W83627HF_GAME:     don't expose the game port
- * NO_W83627HF_MIDI:     don't expose the MIDI port
- * NO_W83627HF_HWMON:    don't expose the hardware monitor as
- *                       PnP "Motherboard Ressource"
- * W83627HF_KBC_COMPAT:  show the keyboard controller and the PS/2 mouse as
- *                       enabled if it is disabled but an address is assigned
- *                       to it. This may be neccessary in some cases.
- *
- * Datasheet: "W83627HF/F WINBOND I/O" rev. 6.0
- * http://www.itox.com/pages/support/wdt/W83627HF.pdf
- */
-
-Device(SIO) {
-	Name (_HID, EisaId("PNP0A05"))
-	Name (_STR, Unicode("Winbond W83627HF SuperIO"))
-	Name (_UID, "w83627hf")
-
-	/* Mutex for accesses to the configuration ports (prolog and epilog commands are used, so synchronization is useful) */
-	Mutex(CRMX, 1)
-
-	/* SuperIO configuration ports */
-	OperationRegion (CREG, SystemIO, 0x2E, 0x02)
-	Field (CREG, ByteAcc, NoLock, Preserve)
-	{
-		ADDR,   8,
-		DATA,   8
-	}
-	IndexField (ADDR, DATA, ByteAcc, NoLock, Preserve)
-	{
-		Offset (0x02),
-		RST,    1,     /* Soft reset */
-		,       7,
-		Offset (0x07),
-		LDN,    8,     /* Logical device selector */
-		Offset (0x20),
-		DID,    8,     /* Device ID */
-		DREV,   8,     /* Device Revision */
-		FDPW,   1,     /* FDC Power Down */
-		,       2,
-		PRPW,   1,     /* PRT Power Down */
-		UAPW,   1,     /* UART A Power Down */
-		UBPW,   1,     /* UART B Power Down */
-		HWPW,   1,     /* HWM Power Down */
-		,       1,
-		IPD,    1,     /* Immediate Chip Power Down */
-		,       7,
-		PNPS,   1,     /* PnP Address Select Register Default Value Mode */
-		,       1,
-		KBCR,   1,     /* KBC enabled after system reset (read-only) */
-		,       3,
-		CLKS,   1,     /* Clock select */
-		AQ16,   1,     /* 16bit Address Qualification */
-		FDCT,   1,     /* Tristate FDC (?) */
-		,       2,
-		PRTT,   1,     /* Tristate parallel port (?) */
-		URAT,   1,     /* Tristate UART A (?) */
-		URBT,   1,     /* Tristate UART B (?) */
-		,       2,
-		URAI,   1,     /* UART A Legacy IRQ Select Disable */
-		URBI,   1,     /* UART B Legacy IRQ Select Disable */
-		PRTI,   1,     /* Parallel Port Legacy IRQ/DRQ Select Disable */
-		FDCI,   1,     /* FDC Legacy IRQ/DRQ Select Disable */
-		,       1,
-		LCKC,   1,     /* Lock Configuration Registers */
-		Offset (0x29),
-		IO3S,   8,     /* GPIO3 pin selection register */
-		ACTR,   1,     /* Logical device activation */
-		ACT1,   1,     /* Logical part activation 1 (mostly unused) */
-		ACT2,   1,     /* Logical part activation 2 (mostly unused) */
-		,       5,
-		Offset (0x60),
-		IO1H,   8,      /* First I/O port base - high byte */
-		IO1L,   8,      /* First I/O port base - low byte */
-		IO2H,   8,      /* Second I/O port base - high byte */
-		IO2L,   8,      /* Second I/O port base - low byte */
-		Offset (0x70),
-		IRQ0,   8,      /* First IRQ */
-		Offset (0x72),
-		IRQ1,   8,      /* First IRQ */
-		Offset (0x74),
-		DMA0,   8,      /* DMA */
-		Offset (0xE0),
-		/* CRE0-CRE4: function logical device dependant, seems to be reserved for ACPI settings */
-		CRE0,   8,
-		CRE1,   8,
-		CRE2,   8,
-		CRE3,   8,
-		CRE4,   8,
-		Offset (0xF0),
-		/* OPT1-OPTA aka CRF0-CRF9: function logical device dependant */
-		OPT1,   8,
-		OPT2,   8,
-		OPT3,   8,
-		OPT4,   8,
-		OPT5,   8,
-		OPT6,   8,
-		OPT7,   8,
-		OPT8,   8,
-		OPT9,   8,
-		OPTA,   8
-	}
-
-	Method (_CRS)
-	{
-		Return (ResourceTemplate () {
-		IO (Decode16, 0x002E, 0x002E, 0x02, 0x01) /* Announce the used I/O ports to the OS */
-		IO (Decode16, 0x004E, 0x004E, 0x01, 0x01) /* this port is used in some configurations, so announce it to be sure */
-		})
-	}
-
-	/* Enter configuration mode (and aquire mutex)
-	   Method must be run before accesssing the configuration region.
-	   Parameter is the LDN which should be accessed. Values >= 0xFF mean
-	   no LDN switch should be done.
-	*/
-	Method (ENCM, 1)
-	{
-		Acquire (CRMX, 0xFFFF)
-		Store (0x87, ADDR)
-		Store (0x87, ADDR)
-		If (LLess(Arg0, 0xFF)) {
-			Store(Arg0, LDN)
-		}
-	}
-
-	/* Exit configuration mode (and release mutex)
-	   Method must be run after accessing the configuration region.
-	*/
-	Method (EXCM)
-	{
-		Store (0xAA, ADDR)
-		Release (CRMX)
-	}
-
-	/* PM: indicate IPD (Immediate Power Down) bit state as D0/D2 */
-	Method (_PSC) {
-		ENCM (0xFF)
-		Store (IPD, Local0)
-		EXCM ()
-		If (Local0) { Return (2) }
-		Else { Return (0) }
-	}
-
-	/* PM: Switch to D0 by setting IPD low  */
-	Method (_PS0) {
-		ENCM (0xFF)
-		Store (Zero, IPD)
-		EXCM ()
-	}
-
-	/* PM: Switch to D2 by setting IPD high  */
-	Method (_PS2) {
-		ENCM (0xFF)
-		Store (One, IPD)
-		EXCM ()
-	}
-
-	#ifndef NO_W83627HF_FDC
-	/* =================== Floppy Disk Controller ================ */
-	Device (FDC0) {
-		Name (_HID, EisaId ("PNP0700"))
-		Name (_STR, Unicode ("W83627HF Floppy Disk Controller"))
-		Name (_UID, "w83627hf-fdc")
-
-		#ifndef NO_W83627HF_FDC_ENUM
-		/* Initialization method: Should be run once on boot
-		   If FDC is active, enumerate all connected devices */
-		Method (_INI) {
-			ENCM (0)
-			Store (ACTR, Local0)
-			Store (IO1H, Local1)
-			Store (IO1L, Local2)
-			EXCM ()
-			ShiftLeft(Local1, 8, Local1)
-			Or(Local1, Local2, Local1)
-			If (Local0) {
-				/* Try probing drives and save result in _FDE */
-				PROB(Local1)
-			}
-		}
-		#endif
-
-		Method (_STA)
-		{
-			Store (0x00, Local0)
-			ENCM (0)
-			If (ACTR) {
-				Store (0x0F, Local0)
-			}
-			ElseIf (LOr (IO1H, IO1L))
-			{
-				Store (0x0D, Local0)
-			}
-			EXCM ()
-			Return (Local0)
-		}
-
-		/* Current power state (Returns 1 if LDN in power saving mode,
-		 * 2 if whole chip is powered down), 0 else
-		 */
-		Method (_PSC) {
-			Store(^^_PSC (), Local0)
-			If (Local0) { Return (Local0) }
-			ENCM (0xFF)
-			Store (FDPW, Local0)
-			EXCM ()
-			If (Local0) { Return (1) }
-			Else { Return (0) }
-		}
-		/* Disable power saving mode */
-		Method (_PS0) {
-			ENCM (0xFF)
-			Store (Zero, FDPW)
-			EXCM ()
-		}
-		/* Enable power saving mode */
-		Method (_PS1) {
-			ENCM (0xFF)
-			Store (One, FDPW)
-			EXCM ()
-		}
-
-		Method (_DIS)
-		{
-			ENCM (0)
-			Store (Zero, ACTR)
-			EXCM ()
-		}
-
-		Method (_CRS)
-		{
-			Name (CRS, ResourceTemplate () {
-				IO (Decode16, 0x0000, 0x0000, 0x01, 0x07, IO0)
-				IRQNoFlags () {6}
-				DMA (Compatibility, NotBusMaster, Transfer8) {2}
-			})
-
-			/* Get IO port info */
-			ENCM (0)
-			Store(IO1L, Local0)
-			Store(IO1H, Local1)
-			EXCM ()
-
-			/* Calculate full IO port address */
-			Or(ShiftLeft(Local1, 8), Local0, Local0)
-
-			/* Modify the resource template and return it */
-			CreateWordField (CRS, IO0._MIN, IMIN)
-			CreateWordField (CRS, IO0._MAX, IMAX)
-			Store (Local0, IMIN)
-			Store (Local0, IMAX)
-			Return (CRS)
-		}
-
-		Method (_PRS)
-		{
-			Return (ResourceTemplate ()
-			{
-				StartDependentFnNoPri ()
-				{
-					IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x07)
-					IRQNoFlags () {6}
-					DMA (Compatibility, NotBusMaster, Transfer8) {2}
-				}
-				EndDependentFn ()
-			})
-		}
-
-		#ifndef NO_W83627HF_FDC_ENUM
-		Name(_FDE, Buffer(){0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
-		#endif
-
-		Method (PROB, 1) {
-			#ifndef NO_W83627HF_FDC_ENUM
-			/* Try probing drives and save result in _FDE
-			   Probing is done through selecting and activating a drive
-			   and reading 0x03F7 aka the "shared IDE and floppy register"
-			   as any value there besides zero seems to indicate a
-			   connected drive.
-			*/
-			OperationRegion (FIO1, SystemIO, Arg0, 0x06)
-			Field (FIO1, ByteAcc, NoLock, Preserve)
-			{
-				Offset(0x02),
-				SELE,  2,
-				RSTL,  1,
-				IDMA,  1,
-				ACT1,  1,
-				ACT2,  1,
-				ACT3,  1,
-				ACT4,  1,
-				Offset(0x04),
-				BSY1,  1,
-				BSY2,  1,
-				BSY3,  1,
-				BSY4,  1,
-				BUSY,  1,
-				NDMA,  1,
-				IODI,  1,
-				RDY,   1,
-				DATA,  8,
-			}
-			OperationRegion (FIO2, SystemIO, 0x3F7, 0x01)
-
-			CreateByteField (_FDE, 3, FD1)
-			CreateByteField (_FDE, 7, FD2)
-			CreateByteField (_FDE, 11, FD3)
-			CreateByteField (_FDE, 15, FD4)
-
-			Store(One, ACT1)
-			Store(0, SELE)
-			Sleep(0x64)
-			If (FIO2) { Store (One, FD1) }
-
-			Store(Zero, ACT1)
-			Store(One, ACT2)
-			Store(1, SELE)
-			Sleep(0x64)
-			If (FIO2) { Store (One, FD2) }
-
-			Store(Zero, ACT2)
-			Store(One, ACT3)
-			Store(2, SELE)
-			Sleep(0x64)
-			If (FIO2) { Store (One, FD3) }
-
-			Store(Zero, ACT3)
-			Store(One, ACT4)
-			Store(3, SELE)
-			Sleep(0x64)
-			If (FIO2) { Store (One, FD4) }
-			Store(Zero, ACT4)
-			Store(Zero, SELE)
-			#endif
-		}
-
-
-		Method (_SRS, 1, Serialized)
-		{
-			Name (TMPL, ResourceTemplate () {
-				IO (Decode16, 0, 0, 1, 7, IO0)
-				IRQNoFlags (IRQ0) {}
-				DMA (Compatibility, NotBusMaster, Transfer8, DMA0) {}
-			})
-			CreateWordField (Arg0, IO0._MIN, IOA0)
-			CreateByteField (Arg0, IRQ0._INT, IRQL)
-			CreateByteField (Arg0, DMA0._DMA, DMCH)
-
-			Divide(IOA0, 256, Local0, Local1)
-
-			ENCM (0)
-			Store (Local0, IO1L)
-			Store (Local1, IO1H)
-			Store (One, ACTR)
-			EXCM ()
-
-			/* Try probing drives and save result in _FDE */
-			PROB(IOA0)
-		}
-	}
-	#endif
-
-	#ifndef NO_W83627HF_PPORT
-	/* ======================== Parallel Port ======================== */
-	/* Currently no ECP support */
-	Device (PAR0) {
-		Name (_HID, EisaId ("PNP0400"))
-		Name (_DDN, "LPT1")
-		Name (_UID, "w83627hf-pport")
-
-		Method (MODE, 1) {
-			And(Arg0, 0x07, Local0)
-			ENCM (1)
-			And(OPT1, 0x3, Local1)
-			Or(Local1, Local0, OPT1)
-			EXCM()
-		}
-
-		Method (_INI)
-		{
-			/* Deactivate DMA, even if set by BIOS. We don't announce it
-			   through _CRS and it's only useful in ECP mode which we
-			   don't support at the moment. */
-			ENCM (1)
-			Store (0x04, DMA0)
-			EXCM ()
-		}
-
-		Method (_STA)
-		{
-			Store (0x00, Local0)
-			ENCM (1)
-			And(OPT1, 0x3, Local1)
-			If (ACTR) {
-				If (LNotEqual(Local1, 2)) {
-					Store (0x0D, Local0)
-				} Else {
-					Store (0x0D, Local0)
-				}
-			}
-			ElseIf (LOr (IO1H, IO1L))
-			{
-				Store (0x0D, Local0)
-			}
-			EXCM ()
-			Return (Local0)
-		}
-
-		Method (_PSC) {
-			Store(^^_PSC (), Local0)
-			If (Local0) { Return (Local0) }
-			ENCM (0xFF)
-			Store (PRPW, Local0)
-			EXCM ()
-			If (Local0) { Return (1) }
-			Else { Return (0) }
-		}
-		Method (_PS0) {
-			ENCM (0xFF)
-			Store (Zero, PRPW)
-			EXCM ()
-		}
-		Method (_PS1) {
-			ENCM (0xFF)
-			Store (One, PRPW)
-			EXCM ()
-		}
-
-		Method (_DIS) {
-			ENCM (1)
-			Store (Zero, ACTR)
-			EXCM ()
-		}
-
-		Method (_CRS)
-		{
-			Name (CRS, ResourceTemplate ()
-			{
-				IO (Decode16, 0x0000, 0x0000, 0x04, 0x08, IO0)
-				IRQNoFlags (IRQX) {}
-			})
-			CreateWordField (CRS, IO0._MIN, IOP0)
-			CreateWordField (CRS, IO0._MAX, IOR0)
-			CreateByteField (CRS, IO0._ALN, IOAL)
-			CreateByteField (CRS, IO0._LEN, IOLE)
-			CreateWordField (CRS, IRQX._INT, IRQW)
-
-			/* Get device settings */
-			ENCM (1)
-			Store (IO1L, Local0)
-			Store (IO1H, Local1)
-			Store (OPT1, Local2)
-			Store (IRQ0, Local5)
-			EXCM ()
-			/* Calculate IO port and modify template */
-			Or(ShiftLeft(Local1, 8), Local0, Local0)
-			Store(Local1, IOP0)
-			Store(Local1, IOR0)
-
-			/* Set align and length based on active parallel port mode */
-			And(Local2, 0x3, Local3)
-			And(Local2, 0x4, Local4)
-			If (Local4) {
-				Store(0x04, IOAL)
-			}
-			If (LEqual (Local0, 0xBC))
-			{
-				Store (0x04, IOLE)
-			}
-			Else
-			{
-				Store (0x08, IOLE)
-			}
-			/* Calculate IRQ bitmap */
-			Store (One, Local0)
-			ShiftLeft (Local0, Local5, IRQW)
-			/* Return resource template */
-			Return (CRS)
-		}
-
-		Name (_PRS, ResourceTemplate ()
-		{
-			StartDependentFn (0,1)
-			{
-				IO (Decode16, 0x0378, 0x0378, 0x04, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (0,1)
-			{
-				IO (Decode16, 0x0278, 0x0278, 0x04, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (0,1)
-			{
-				IO (Decode16, 0x03BC, 0x03BC, 0x04, 0x04)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (0,0)
-			{
-				IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (0,0)
-			{
-				IO (Decode16, 0x0278, 0x0278, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (2,0)
-			{
-				IO (Decode16, 0x0100, 0x0FFC, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (2,1)
-			{
-				IO (Decode16, 0x0100, 0x0FFC, 0x04, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			EndDependentFn ()
-		})
-
-		Method (_SRS, 1, Serialized)
-		{
-			Name (TMPL, ResourceTemplate () {
-				IO (Decode16, 0, 0, 4, 4, IO0)
-				IRQNoFlags (IRQX) {}
-			})
-			CreateWordField (Arg0, IO0._MIN, IOA0)
-			CreateWordField (Arg0, IO0._MIN, IOA1)
-			CreateByteField (Arg0, IO0._ALN, IOAL)
-			CreateByteField (Arg0, IO0._LEN, IOLE)
-			CreateWordField (Arg0, IRQX._INT, IRQL)
-
-			If (LEqual(IOAL, 4)) {
-				Store(0x0, Local2)
-			} else  {
-				Store(0x1, Local2)
-			}
-
-			Divide(IOA0, 256, Local0, Local1)
-
-			ENCM (1)
-			/* IO port */
-			Store (Local0, IO1L)
-			Store (Local1, IO1H)
-			/* Mode */
-			Store (OPT1, Local3)
-			And (Local3, 0xF8, Local3)
-			Or (Local2, Local3, OPT1)
-			/* DMA off */
-			Store (0x04, DMA0)
-			/* IRQ */
-			Subtract(FindSetLeftBit (IRQL), 1, IRQ0)
-			/* Activate */
-			Store (One, ACTR)
-			EXCM ()
-		}
-	}
-	#endif
-
-	#ifndef NO_W83627HF_UARTA
-	/* =========================== UART A ============================ */
-	Device (SER0) {
-		Name (_HID, EisaId ("PNP0501"))
-		Name (_UID, "w83627hf-uarta")
-		Name (_DDN, "COM1")
-
-		Method (_STA)
-		{
-			Store (0x00, Local0)
-			ENCM (2)
-			If (ACTR) {
-				Store (0x0F, Local0)
-			}
-			ElseIf (LOr (IO1H, IO1L))
-			{
-				Store (0x0D, Local0)
-			}
-			EXCM ()
-			Return (Local0)
-		}
-
-		Method (_PSC) {
-			Store(^^_PSC (), Local0)
-			If (Local0) { Return (Local0) }
-			ENCM (0xFF)
-			Store (UAPW, Local0)
-			EXCM ()
-			If (Local0) { Return (1) }
-			Else { Return (0) }
-		}
-		Method (_PS0) {
-			ENCM (0xFF)
-			Store (Zero, UAPW)
-			EXCM ()
-		}
-		Method (_PS1) {
-			ENCM (0xFF)
-			Store (One, UAPW)
-			EXCM ()
-		}
-
-		Method (_DIS)
-		{
-			ENCM (2)
-			Store (Zero, ACTR)
-			EXCM ()
-		}
-
-		Method (_CRS)
-		{
-			Name (CRS, ResourceTemplate () {
-				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
-				IRQNoFlags (IRQX) {6}
-			})
-			ENCM (2)
-			Store(IO1L, Local0)
-			Store(IO1H, Local1)
-			Store(IRQ0, Local2)
-			EXCM ()
-			Or(ShiftLeft(Local1, 8), Local0, Local0)
-
-			CreateWordField (CRS, IO0._MIN, IMIN)
-			Store (Local0, IMIN)
-			CreateWordField (CRS, IO0._MAX, IMAX)
-			Store (Local0, IMAX)
-
-			CreateWordField (CRS, IRQX._INT, IRQW)
-			Store (One, Local3)
-			ShiftLeft (Local3, Local2, IRQW)
-
-			Return (CRS)
-		}
-
-		Name (_PRS, ResourceTemplate ()
-		{
-			StartDependentFn (0,0) {
-				IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (0,0) {
-				IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (1,0) {
-				IO (Decode16, 0x03E8, 0x03E8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (1,0) {
-				IO (Decode16, 0x02E8, 0x02E8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (2,0) {
-				IO (Decode16, 0x0100, 0x0FF8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			EndDependentFn()
-		})
-
-		Method (_SRS, 1, Serialized)
-		{
-			Name (TMPL, ResourceTemplate () {
-				IO (Decode16, 0, 0, 1, 6, IO0)
-				IRQNoFlags (IRQX) {}
-			})
-			CreateWordField (Arg0, IO0._MIN, IOA0)
-			CreateByteField (Arg0, IRQX._INT, IRQL)
-
-			Divide(IOA0, 256, Local0, Local1)
-
-			Subtract(FindSetLeftBit (IRQL), 1, Local3)
-
-			ENCM (2)
-			Store (Local0, IO1L)
-			Store (Local1, IO1H)
-			Store (Local3, IRQ0)
-			Store (One, ACTR)
-			EXCM ()
-		}
-	}
-	#endif
-
-	#ifndef NO_W83627HF_UARTB
-	/* =========================== UART B ============================ */
-	Device (SER1) {
-		Name (_HID, EisaId ("PNP0501"))
-		Name (_UID, "w83627hf-uartb")
-		Name (_DDN, "COM2")
-
-		Method (_STA)
-		{
-			Store (0x00, Local0)
-			ENCM (3)
-			If (LNot(And(OPT2, 0x30)))
-			{
-				If (ACTR) {
-					Store (0x0F, Local0)
-				}
-				ElseIf (LOr (IO1H, IO1L))
-				{
-					Store (0x0D, Local0)
-				}
-			}
-			EXCM ()
-			Return (Local0)
-		}
-
-		Method (_PSC) {
-			Store(^^_PSC (), Local0)
-			If (Local0) { Return (Local0) }
-			ENCM (0xFF)
-			Store (UBPW, Local0)
-			EXCM ()
-			If (Local0) { Return (1) }
-			Else { Return (0) }
-		}
-		Method (_PS0) {
-			ENCM (0xFF)
-			Store (Zero, UBPW)
-			EXCM ()
-		}
-		Method (_PS1) {
-			ENCM (0xFF)
-			Store (One, UBPW)
-			EXCM ()
-		}
-
-		Method (_DIS)
-		{
-			ENCM (3)
-			Store (Zero, ACTR)
-			EXCM ()
-		}
-
-		Method (_CRS)
-		{
-			Name (CRS, ResourceTemplate () {
-				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
-				IRQNoFlags (IRQX) {6}
-			})
-			ENCM (3)
-			Store(IO1L, Local0)
-			Store(IO1H, Local1)
-			Store(IRQ0, Local2)
-			EXCM ()
-			Or(ShiftLeft(Local1, 8), Local0, Local0)
-
-			CreateWordField (CRS, IO0._MIN, IMIN)
-			Store (Local0, IMIN)
-			CreateWordField (CRS, IO0._MAX, IMAX)
-			Store (Local0, IMAX)
-
-			CreateWordField (CRS, IRQX._INT, IRQW)
-			Store (One, Local3)
-			ShiftLeft (Local3, Local2, IRQW)
-
-			Return (CRS)
-		}
-
-		Name (_PRS, ResourceTemplate ()
-		{
-			StartDependentFn (0,0) {
-				IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (0,0) {
-				IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (1,0) {
-				IO (Decode16, 0x03E8, 0x03E8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (1,0) {
-				IO (Decode16, 0x02E8, 0x02E8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (2,0) {
-				IO (Decode16, 0x0100, 0x0FF8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			EndDependentFn()
-		})
-
-		Method (_SRS, 1, Serialized)
-		{
-			Name (TMPL, ResourceTemplate () {
-				IO (Decode16, 0, 0, 1, 8, IO0)
-				IRQNoFlags (IRQX) {}
-			})
-			CreateWordField (Arg0, IO0._MIN, IOA0)
-			CreateByteField (Arg0, IRQX._INT, IRQL)
-
-			Divide(IOA0, 256, Local0, Local1)
-
-			Subtract(FindSetLeftBit (IRQL), 1, Local3)
-
-			ENCM (3)
-			Store (Local0, IO1L)
-			Store (Local1, IO1H)
-			Store (Local3, IRQ0)
-			Store (One, ACTR)
-			EXCM ()
-		}
-	}
-	#endif
-
-	#ifndef NO_W83627HF_IRDA
-	/* ======================== UART B (IRDA) ======================== */
-	Device (IRDA) {
-		Name (_HID, EisaId ("PNP0510"))
-		Name (_UID, "w83627hf-irda")
-		Name (_STR, Unicode("IrDA Port"))
-
-		Method (_STA)
-		{
-			Store (0x00, Local0)
-			ENCM (3)
-			If (And(OPT2, 0x30))
-			{
-				If (ACTR) {
-					Store (0x0F, Local0)
-				}
-				ElseIf (LOr (IO1H, IO1L))
-				{
-					Store (0x0D, Local0)
-				}
-			}
-			EXCM ()
-			Return (Local0)
-		}
-
-		Method (_PSC) {
-			Store(^^_PSC (), Local0)
-			If (Local0) { Return (Local0) }
-			ENCM (0xFF)
-			Store (UBPW, Local0)
-			EXCM ()
-			If (Local0) { Return (1) }
-			Else { Return (0) }
-		}
-		Method (_PS0) {
-			ENCM (0xFF)
-			Store (Zero, UBPW)
-			EXCM ()
-		}
-		Method (_PS1) {
-			ENCM (0xFF)
-			Store (One, UBPW)
-			EXCM ()
-		}
-
-		Method (_DIS)
-		{
-			ENCM (3)
-			Store (Zero, ACTR)
-			EXCM ()
-		}
-
-		Method (_CRS)
-		{
-			Name (CRS, ResourceTemplate () {
-				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
-				IRQNoFlags (IRQX) {6}
-			})
-			ENCM (3)
-			Store(IO1H, Local1)
-			Store(IO1L, Local0)
-			Store(IRQ0, Local2)
-			EXCM ()
-			Or(ShiftLeft(Local1, 8), Local0, Local0)
-
-			CreateWordField (CRS, IO0._MIN, IMIN)
-			Store (Local0, IMIN)
-			CreateWordField (CRS, IO0._MAX, IMAX)
-			Store (Local0, IMAX)
-
-			CreateWordField (CRS, IRQX._INT, IRQW)
-			Store (One, Local3)
-			ShiftLeft (Local3, Local2, IRQW)
-
-			Return (CRS)
-		}
-
-		Name (_PRS, ResourceTemplate ()
-		{
-			StartDependentFn (0,0) {
-				IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (1,0) {
-				IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (0,0) {
-				IO (Decode16, 0x03E8, 0x03E8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (0,0) {
-				IO (Decode16, 0x02E8, 0x02E8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			StartDependentFn (2,0) {
-				IO (Decode16, 0x0100, 0x0FF8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			EndDependentFn()
-		})
-
-		Method (_SRS, 1, Serialized)
-		{
-			Name (TMPL, ResourceTemplate () {
-				IO (Decode16, 0, 0, 1, 8, IO0)
-				IRQNoFlags (IRQX) {}
-			})
-			CreateWordField (Arg0, IO0._MIN, IOA0)
-			CreateByteField (Arg0, IRQX._INT, IRQL)
-
-			Divide(IOA0, 256, Local0, Local1)
-
-			Subtract(FindSetLeftBit (IRQL), 1, Local3)
-
-			ENCM (3)
-			Store (Local0, IO1L)
-			Store (Local1, IO1H)
-			Store (Local3, IRQ0)
-			Store (One, ACTR)
-			EXCM ()
-		}
-	}
-	#endif
-
-	#ifndef NO_W83627HF_CIR
-	/* ========================= Consumer IR ========================= */
-	Device (CIR0)
-	{
-		Name (_HID, EisaId ("WEC1022")) /* Should be the correct one */
-		Name (_UID, "w83627hf-cir")
-		Name (_STR, Unicode("Winbond Consumer Infrared Transceiver"))
-
-		Method (_STA)
-		{
-			Store (0x00, Local0)
-			ENCM (6)
-			If (ACTR) {
-				Store (0x0F, Local0)
-			}
-			ElseIf (LOr (IO1H, IO1L))
-			{
-				Store (0x0D, Local0)
-			}
-			EXCM ()
-			Return (Local0)
-		}
-
-		Method (_DIS)
-		{
-			ENCM (6)
-			Store (Zero, ACTR)
-			EXCM ()
-		}
-
-		Method (_CRS)
-		{
-			Name (CRS, ResourceTemplate () {
-				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
-				IRQNoFlags (IRQX) {6}
-			})
-			ENCM (6)
-			Store(IO1L, Local0)
-			Store(IO1H, Local1)
-			Store(IRQ0, Local2)
-			EXCM ()
-			Or(ShiftLeft(Local1, 8), Local0, Local0)
-
-			CreateWordField (CRS, IO0._MIN, IMIN)
-			Store (Local0, IMIN)
-			CreateWordField (CRS, IO0._MAX, IMAX)
-			Store (Local0, IMAX)
-
-			CreateWordField (CRS, IRQX._INT, IRQW)
-			Store (One, Local3)
-			ShiftLeft (Local3, Local2, IRQW)
-
-			Return (CRS)
-		}
-
-		Name (_PRS, ResourceTemplate ()
-		{
-			StartDependentFn (0,0) {
-				IO (Decode16, 0x0100, 0x0FF8, 0x08, 0x08)
-				IRQNoFlags () {3,4,5,7,9,10,11,12}
-			}
-			EndDependentFn()
-		})
-
-		Method (_SRS, 1, Serialized)
-		{
-			Name (TMPL, ResourceTemplate () {
-				IO (Decode16, 0, 0, 1, 8, IO0)
-				IRQNoFlags (IRQX) {}
-			})
-			CreateWordField (Arg0, IO0._MIN, IOA0)
-			CreateByteField (Arg0, IRQX._INT, IRQL)
-
-			Divide(IOA0, 256, Local0, Local1)
-
-			Subtract(FindSetLeftBit (IRQL), 1, Local3)
-
-			ENCM (6)
-			Store (Local0, IO1L)
-			Store (Local1, IO1H)
-			Store (Local3, IRQ0)
-			Store (One, ACTR)
-			EXCM ()
-		}
-	}
-	#endif
-
-	#ifndef NO_W83627HF_KBC
-	/* ===================== Keyboard Controller ===================== */
-	Device (KBD0)
-	{
-		Name (_HID, EisaId ("PNP0303"))
-		Name (_UID, "w83627hf-kbc")
-
-		Method (_STA)
-		{
-			Store (0x00, Local0)
-			ENCM (5)
-			If (ACTR) {
-				Store (0x0F, Local0)
-			}
-			ElseIf (Lor(LOr (IO1H, IO1L), LOr (IO2H, IO2L)))
-			{
-				#ifdef W83627HF_KBC_COMPAT
-				Store (0x0F, Local0)
-				#else
-				Store (0x0D, Local0)
-				#endif
-			}
-			EXCM ()
-			Return (Local0)
-		}
-
-		Method (_DIS)
-		{
-			ENCM (5)
-			Store (Zero, ACTR)
-			EXCM ()
-			Notify(PS2M, 1)
-		}
-
-		Method (_CRS)
-		{
-			Name (CRS, ResourceTemplate () {
-				IRQNoFlags (IRQX) {}
-				IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO0)
-				IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO1)
-			})
-			ENCM (5)
-			Store(IO1L, Local0)
-			Store(IO1H, Local1)
-			Store(IO2L, Local2)
-			Store(IO2H, Local3)
-			Store(IRQ0, Local4)
-			EXCM ()
-
-			Or(ShiftLeft(Local1, 8), Local0, Local0)
-			Or(ShiftLeft(Local3, 8), Local2, Local2)
-
-			CreateWordField (CRS, IO0._MIN, IMIN)
-			Store (Local0, IMIN)
-			CreateWordField (CRS, IO0._MAX, IMAX)
-			Store (Local0, IMAX)
-
-			CreateWordField (CRS, IO1._MIN, I1MI)
-			Store (Local2, I1MI)
-			CreateWordField (CRS, IO1._MAX, I1MA)
-			Store (Local2, I1MA)
-
-			CreateWordField (CRS, IRQX._INT, IRQW)
-			Store (One, Local5)
-			ShiftLeft (Local5, Local4, IRQW)
-
-			Return (CRS)
-		}
-
-		Name (_PRS, ResourceTemplate ()
-		{
-			StartDependentFn (0,0) {
-				IRQNoFlags () {1}
-				IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
-				IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
-			}
-			EndDependentFn()
-		})
-
-		Method (_SRS, 1, Serialized)
-		{
-			Name (TMPL, ResourceTemplate () {
-				IRQNoFlags (IRQX) {}
-				IO (Decode16, 0, 0, 1, 1, IO0)
-				IO (Decode16, 0, 0, 1, 1, IO1)
-			})
-			CreateWordField (Arg0, IO0._MIN, IOA0)
-			CreateWordField (Arg0, IO1._MIN, IOA1)
-			CreateByteField (Arg0, IRQX._INT, IRQL)
-
-			Divide(IOA0, 256, Local0, Local1)
-			Divide(IOA1, 256, Local2, Local3)
-
-			Subtract(FindSetLeftBit (IRQL), 1, Local4)
-
-			ENCM (5)
-			Store (Local0, IO1L)
-			Store (Local1, IO1H)
-			Store (Local2, IO2L)
-			Store (Local3, IO2H)
-			Store (Local4, IRQ0)
-			Store (One, ACTR)
-			EXCM ()
-			Notify(PS2M, 1)
-		}
-	}
-	#ifndef NO_W83627HF_PS2M
-	Device (PS2M)
-	{
-		Name (_HID, EisaId ("PNP0F13"))
-		Name (_UID, "w83627hf-ps2m")
-
-		Method (_STA)
-		{
-			Store (0x00, Local0)
-			ENCM (5)
-			If (LAnd(ACTR, IRQ1) ) {
-				Store (0x0F, Local0)
-			}
-			ElseIf (Lor(LOr (IO1H, IO1L), LOr (IO2H, IO2L)))
-			{
-				#ifdef W83627HF_KBC_COMPAT
-				Store (0x0F, Local0)
-				#else
-				Store (0x0D, Local0)
-				#endif
-			}
-			EXCM ()
-			Return (Local0)
-		}
-
-		Method (_DIS)
-		{
-			ENCM (5)
-			Store (Zero, IRQ1)
-			EXCM ()
-		}
-
-		Method (_CRS)
-		{
-			Name (CRS, ResourceTemplate () {
-				IRQNoFlags (IRQX) {}
-			})
-			ENCM (5)
-			Store(IRQ1, Local4)
-			EXCM ()
-
-			CreateWordField (CRS, IRQX._INT, IRQW)
-			Store (One, Local5)
-			ShiftLeft (Local5, Local4, IRQW)
-
-			Return (CRS)
-		}
-
-		Name (_PRS, ResourceTemplate ()
-		{
-			StartDependentFn (0,0) {
-				IRQNoFlags () {12}
-			}
-			StartDependentFn (2,0) {
-				IRQNoFlags () {1,3,4,5,6,7,9,10,11}
-			}
-			EndDependentFn()
-		})
-
-		Method (_SRS, 1, Serialized)
-		{
-			Name (TMPL, ResourceTemplate () {
-				IRQNoFlags (IRQX) {}
-			})
-			CreateByteField (Arg0, IRQX._INT, IRQL)
-
-			Subtract(FindSetLeftBit (IRQL), 1, Local0)
-
-			ENCM (5)
-			Store (Local0, IRQ1)
-			/* Only activates if KBD is active */
-			EXCM ()
-		}
-	}
-	#endif
-	#endif
-
-	#ifndef NO_W83627HF_GAME
-	/* ========================== Game Port ========================== */
-	Device (GAME)
-	{
-		Name (_HID, EisaId ("PNPB02F"))
-		Name (_STR, Unicode ("Joystick/Game Port"))
-		Name (_UID, "w83627hf-game")
-
-		Method (_STA) {
-			Store(0, Local0)
-			ENCM (7)
-			If (LOr(IO1L, IO1H)) {
-				If (LOr(ACTR, ACT1)) {
-					Store (0x0F, Local0)
-				}
-				Else {
-					Store (0x0D, Local0)
-				}
-			}
-			EXCM ()
-			Return (Local0)
-		}
-
-		Method (_CRS)
-		{
-			Name (CRS, ResourceTemplate () {
-				IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO0)
-				IRQNoFlags (IRQX) {}
-			})
-			ENCM (7)
-			Store(IO1L, Local0)
-			Store(IO1H, Local1)
-			Store(IRQ0, Local2)
-			EXCM ()
-
-			Or(ShiftLeft(Local1, 8), Local0, Local0)
-
-			CreateWordField (CRS, IO0._MIN, IMIN)
-			CreateWordField (CRS, IO0._MAX, IMAX)
-			Store (Local0, IMIN)
-			Store (Local0, IMAX)
-
-			If (Local2) {
-				CreateWordField (CRS, IRQX._INT, IRQW)
-				Store (One, Local3)
-				ShiftLeft (Local3, Local2, IRQW)
-			}
-
-			Return (CRS)
-		}
-
-	}
-	#endif
-
-	#ifndef NO_W83627HF_MIDI
-	/* ========================== MIDI Port ========================== */
-	Device (MIDI)
-	{
-		Name (_HID, EisaId ("PNPB006"))
-		Name (_STR, Unicode ("MPU-401 Compatible MIDI Port"))
-		Name (_UID, "w83627hf-midi")
-
-		Method (_STA)
-		{
-			Store(0, Local0)
-			ENCM (7)
-			If (LOr(IO2L, IO2H)) {
-				If (LOr(ACTR, ACT2)) {
-					Store (0x0F, Local0)
-				}
-				Else {
-					Store (0x0D, Local0)
-				}
-			}
-			EXCM ()
-			Return (Local0)
-		}
-
-		Method (_CRS)
-		{
-			Name (CRS, ResourceTemplate () {
-				IO (Decode16, 0x0000, 0x0000, 0x02, 0x02, IO0)
-				IRQNoFlags (IRQX) {}
-			})
-			ENCM (7)
-			Store(IO2L, Local0)
-			Store(IO2H, Local1)
-			Store(IRQ1, Local2)
-			EXCM ()
-
-			Or(ShiftLeft(Local1, 8), Local0, Local0)
-
-			CreateWordField (CRS, IO0._MIN, IMIN)
-			CreateWordField (CRS, IO0._MAX, IMAX)
-			Store (Local0, IMIN)
-			Store (Local0, IMAX)
-
-			If (Local2) {
-				CreateWordField (CRS, IRQX._INT, IRQW)
-				Store (One, Local3)
-				ShiftLeft (Local3, Local2, IRQW)
-			}
-
-			Return (CRS)
-		}
-
-	}
-	#endif
-
-	/* ==== Suspend LED control if it is connected to the SuperIO ==== */
-	Method (SLED, 1)
-	{
-		ENCM (9)
-		Store(OPT4, Local0)
-		And(Local0, 63, Local0)
-		Or(Local0, ShiftLeft(And(Arg0, 0x03), 6), OPT4)
-		EXCM ()
-	}
-
-	/* ===== Power LED control if it is connected to the SuperIO ===== */
-	Method (PLED, 1)
-	{
-		ENCM (8)
-		Store(OPT4, Local0)
-		And(Local0, 63, Local0)
-		Or(Local0, ShiftLeft(And(Arg0, 0x03), 6), OPT4)
-		EXCM ()
-	}
-
-	#ifndef NO_W83627HF_HWMON
-	/* ====================== Hardware Monitor ======================= */
-	Device (HMON)
-	{
-		Name (_HID, EisaId ("PNP0C02")) // TODO: find better matching ID
-		Name (_STR, Unicode("W83627 Hardware Monitor"))
-		Name (_UID, "w83627hf-hwmon")
-
-		Method (_STA)
-		{
-			Store (0x00, Local0)
-			ENCM (11)
-			If (ACTR) {
-				Store (0x0F, Local0)
-			}
-			ElseIf (LOr (IO1H, IO1L))
-			{
-				Store (0x0D, Local0)
-			}
-			EXCM ()
-			Return (Local0)
-		}
-
-		Method (_PSC)
-		{
-			Store(^^_PSC (), Local0)
-			If (Local0) { Return (Local0) }
-			ENCM (0xFF)
-			Store (HWPW, Local0)
-			EXCM ()
-			If (Local0) { Return (1) }
-			Else { Return (0) }
-		}
-
-		Method (_PS0)
-		{
-			ENCM (0xFF)
-			Store (Zero, HWPW)
-			EXCM ()
-		}
-
-		Method (_PS1)
-		{
-			ENCM (0xFF)
-			Store (One, HWPW)
-			EXCM ()
-		}
-
-		Method (_CRS)
-		{
-			Name (CRS, ResourceTemplate () {
-				IO (Decode16, 0x0000, 0x0000, 0x08, 0x02, IO0)
-				IRQNoFlags (IRQX) {}
-			})
-			ENCM (11)
-			Store(IO1L, Local0)
-			Store(IO1H, Local1)
-			Store(IRQ1, Local2)
-			EXCM ()
-
-			Or(ShiftLeft(Local1, 8), Local0, Local0)
-
-			CreateWordField (CRS, IO0._MIN, IMIN)
-			CreateWordField (CRS, IO0._MAX, IMAX)
-			Store (Local0, IMIN)
-			Store (Local0, IMAX)
-
-			If (Local2) {
-				CreateWordField (CRS, IRQX._INT, IRQW)
-				Store (One, Local3)
-				ShiftLeft (Local3, Local2, IRQW)
-			}
-			Return (CRS)
-		}
-	}
-	#endif
-
-	/* Returns the wake source register.
-	   It is cleared after reading.
-	   Bit 0: Keyboard wake-up event
-	   Bit 1: Mouse wake-up event
-	   Bit 2: Power button event
-	   Bit 3: CIR wake-up event
-	   Bit 4: Power loss event
-	   Bit 5: VSB power loss status
-	*/
-	Method (WAKS)
-	{
-		ENCM (10)
-		Store (CRE3, Local0)
-		EXCM ()
-		Return (Local0)
-	}
-}



More information about the coreboot-gerrit mailing list