[coreboot] Patch set updated for coreboot: bf0b4aa w83627hf: drop Scope(\_SB) from ASL include

Christoph Grenz (christophg+cb@grenz-bonn.de) gerrit at coreboot.org
Sun Oct 30 17:16:05 CET 2011


Christoph Grenz (christophg+cb at grenz-bonn.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/298

-gerrit

commit bf0b4aa13894a22e8d00b583bd62591e36c75a4f
Author: Christoph Grenz <christophg+cb at grenz-bonn.de>
Date:   Wed Oct 19 02:26:07 2011 +0200

    w83627hf: drop Scope(\_SB) from ASL include
    
    Drop explicit Scope(\_SB) from devtree.asl as it forces the SuperIO
    to appear as child of the root device.
    devtree.asl then needs to be included at a reasonable position inside
    the \_SB device tree.
    
    Change-Id: I72a57eddc5ec5f9763fdf789094a7be042758256
    Signed-off-by: Christoph Grenz <christophg+cb at grenz-bonn.de>
---
 src/superio/winbond/w83627hf/devtree.asl | 2494 +++++++++++++++---------------
 1 files changed, 1245 insertions(+), 1249 deletions(-)

diff --git a/src/superio/winbond/w83627hf/devtree.asl b/src/superio/winbond/w83627hf/devtree.asl
index 2e31de5..ddac22e 100644
--- a/src/superio/winbond/w83627hf/devtree.asl
+++ b/src/superio/winbond/w83627hf/devtree.asl
@@ -18,8 +18,8 @@
  */
 
 /*
- * include this file into a mainboard's DSDT and it will expose the W83627HF
- * SuperIO and its functionality in the _SB device tree.
+ * 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)
@@ -56,960 +56,827 @@
  * http://www.itox.com/pages/support/wdt/W83627HF.pdf
  */
 
-Scope (\_SB)
-{
+Device(SIO) {
+	Name (_HID, EisaId("PNP0A05"))
+	Name (_STR, Unicode("Winbond W83627HF SuperIO"))
+	Name (_UID, "w83627hf")
 
-	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)
 
-		/* 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
+	}
 
-		/* 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
-		}
+	Name (_CRS, 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 */
+	})
 
-		Name (_CRS, 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.
+	*/
+	Method (ENCM)
+	{
+		Acquire (CRMX, 0xFFFF)
+		Store (0x87, ADDR)
+		Store (0x87, ADDR)
+	}
 
-		/* Enter configuration mode (and aquire mutex)
-		   Method must be run before accesssing the configuration region.
-		*/
-		Method (ENCM)
-		{
-			Acquire (CRMX, 0xFFFF)
-			Store (0x87, ADDR)
-			Store (0x87, ADDR)
+	/* Exit configuration mode (and release mutex)
+	   Method must be run after accessing the configuration region.
+	*/
+	Method (EXCM)
+	{
+		Release (CRMX)
+		Store (0xAA, ADDR)
+	}
+
+	/* PM: indicate IPD (Immediate Power Down) bit state as D0/D2 */
+	Method (_PSC) {
+		ENCM ()
+		Store (IPD, Local0)
+		EXCM ()
+		If (Local0) { Return (2) }
+		Else { Return (0) }
+	}
+
+	/* PM: Switch to D0 by setting IPD low  */
+	Method (_PS0) {
+		ENCM ()
+		Store (Zero, IPD)
+		EXCM ()
+	}
+
+	/* PM: Switch to D2 by setting IPD high  */
+	Method (_PS2) {
+		ENCM ()
+		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 ()
+			Store (0x00, LDN)
+			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
 
-		/* Exit configuration mode (and release mutex)
-		   Method must be run after accessing the configuration region.
-		*/
-		Method (EXCM)
+		Method (_STA)
 		{
-			Release (CRMX)
-			Store (0xAA, ADDR)
+			Store (0x00, Local0)
+			ENCM ()
+			Store (0x00, LDN)
+			If (ACTR) {
+				Store (0x0F, Local0)
+			}
+			ElseIf (LOr (IO1H, IO1L))
+			{
+				Store (0x0D, Local0)
+			}
+			EXCM ()
+			Return (Local0)
 		}
 
-		/* PM: indicate IPD (Immediate Power Down) bit state as D0/D2 */
 		Method (_PSC) {
+			Store(^^_PSC (), Local0)
+			If (Local0) { Return (Local0) }
 			ENCM ()
-			Store (IPD, Local0)
+			Store (FDPW, Local0)
 			EXCM ()
-			If (Local0) { Return (2) }
+			If (Local0) { Return (1) }
 			Else { Return (0) }
 		}
-
-		/* PM: Switch to D0 by setting IPD low  */
 		Method (_PS0) {
 			ENCM ()
-			Store (Zero, IPD)
+			Store (Zero, FDPW)
+			EXCM ()
+		}
+		Method (_PS1) {
+			ENCM ()
+			Store (One, FDPW)
 			EXCM ()
 		}
 
-		/* PM: Switch to D2 by setting IPD high  */
-		Method (_PS2) {
+		Method (_DIS)
+		{
 			ENCM ()
-			Store (One, IPD)
+			Store (0x00, LDN)
+			Store (Zero, ACTR)
 			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")
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x06, IO0)
+				IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
+				IRQNoFlags () {6}
+				DMA (Compatibility, NotBusMaster, Transfer8) {2}
+			})
+			ENCM ()
+			Store (0x00, LDN)
+			Store(IO1H, Local0)
+			Store(IO1L, Local1)
+			EXCM ()
+			ShiftLeft(Local1, 8, Local1)
+			Or (Local1, Local0, Local0)
 
-			#ifndef NO_W83627HF_FDC_ENUM
-			/* Initialization method: Should be run once on boot
-			   If FDC is active, enumerate all connected devices */
-			Method (_INI) {
-				ENCM ()
-				Store (0x00, LDN)
-				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
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			Store (Local0, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMAX)
+
+			Return (CRS)
+		}
 
-			Method (_STA)
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFnNoPri ()
 			{
-				Store (0x00, Local0)
-				ENCM ()
-				Store (0x00, LDN)
-				If (ACTR) {
-					Store (0x0F, Local0)
-				}
-				ElseIf (LOr (IO1H, IO1L))
-				{
-					Store (0x0D, Local0)
-				}
-				EXCM ()
-				Return (Local0)
+				IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
+				IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
+				IRQNoFlags () {6}
+				DMA (Compatibility, NotBusMaster, Transfer8) {2}
 			}
+			EndDependentFn ()
+		})
 
-			Method (_PSC) {
-				Store(^^_PSC (), Local0)
-				If (Local0) { Return (Local0) }
-				ENCM ()
-				Store (FDPW, Local0)
-				EXCM ()
-				If (Local0) { Return (1) }
-				Else { Return (0) }
-			}
-			Method (_PS0) {
-				ENCM ()
-				Store (Zero, FDPW)
-				EXCM ()
-			}
-			Method (_PS1) {
-				ENCM ()
-				Store (One, FDPW)
-				EXCM ()
-			}
+		#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 (_DIS)
+		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)
 			{
-				ENCM ()
-				Store (0x00, LDN)
-				Store (Zero, ACTR)
-				EXCM ()
+				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)
 
-			Method (_CRS)
-			{
-				Name (CRS, ResourceTemplate () {
-					IO (Decode16, 0x0000, 0x0000, 0x01, 0x06, IO0)
-					IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
-					IRQNoFlags () {6}
-					DMA (Compatibility, NotBusMaster, Transfer8) {2}
-				})
-				ENCM ()
-				Store (0x00, LDN)
-				Store(IO1H, Local0)
-				Store(IO1L, Local1)
-				EXCM ()
-				ShiftLeft(Local1, 8, Local1)
-				Or (Local1, Local0, Local0)
+			CreateByteField (_FDE, 3, FD1)
+			CreateByteField (_FDE, 7, FD2)
+			CreateByteField (_FDE, 11, FD3)
+			CreateByteField (_FDE, 15, FD4)
 
-				CreateWordField (CRS, IO0._MIN, IMIN)
-				Store (Local0, IMIN)
-				CreateWordField (CRS, IO0._MAX, IMAX)
-				Store (Local0, IMAX)
+			Store(One, ACT1)
+			Store(0, SELE)
+			Sleep(0x64)
+			If (FIO2) { Store (One, FD1) }
 
-				Return (CRS)
-			}
+			Store(Zero, ACT1)
+			Store(One, ACT2)
+			Store(1, SELE)
+			Sleep(0x64)
+			If (FIO2) { Store (One, FD2) }
 
-			Name (_PRS, ResourceTemplate ()
-			{
-				StartDependentFnNoPri ()
-				{
-					IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
-					IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
-					IRQNoFlags () {6}
-					DMA (Compatibility, NotBusMaster, Transfer8) {2}
-				}
-				EndDependentFn ()
-			})
+			Store(Zero, ACT2)
+			Store(One, ACT3)
+			Store(2, SELE)
+			Sleep(0x64)
+			If (FIO2) { Store (One, FD3) }
 
-			#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})
+			Store(Zero, ACT3)
+			Store(One, ACT4)
+			Store(3, SELE)
+			Sleep(0x64)
+			If (FIO2) { Store (One, FD4) }
+			Store(Zero, ACT4)
+			Store(Zero, SELE)
 			#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, 6, IO0)
-					IO (Decode16, 0, 0, 1, 1, IO1)
-					IRQNoFlags (IRQ0) {}
-					DMA (Compatibility, NotBusMaster, Transfer8, DMA0) {}
-				})
-				CreateWordField (Arg0, IO0._MIN, IOA0)
-				CreateWordField (Arg0, IO1._MIN, IOA1)
-				CreateByteField (Arg0, IRQ0._INT, IRQL)
-				CreateByteField (Arg0, DMA0._DMA, DMCH)
+		Method (_SRS, 1, Serialized)
+		{
+			Name (TMPL, ResourceTemplate () {
+				IO (Decode16, 0, 0, 1, 6, IO0)
+				IO (Decode16, 0, 0, 1, 1, IO1)
+				IRQNoFlags (IRQ0) {}
+				DMA (Compatibility, NotBusMaster, Transfer8, DMA0) {}
+			})
+			CreateWordField (Arg0, IO0._MIN, IOA0)
+			CreateWordField (Arg0, IO1._MIN, IOA1)
+			CreateByteField (Arg0, IRQ0._INT, IRQL)
+			CreateByteField (Arg0, DMA0._DMA, DMCH)
 
-				Divide(IOA0, 256, Local0, Local1)
-				ShiftRight(Local1, 8, Local1)
+			Divide(IOA0, 256, Local0, Local1)
+			ShiftRight(Local1, 8, Local1)
 
-				ENCM ()
-				Store (0, LDN)
-				Store (Local1, IO1H)
-				Store (Local0, IO1L)
-				Store (One, ACTR)
-				EXCM ()
+			ENCM ()
+			Store (0, LDN)
+			Store (Local1, IO1H)
+			Store (Local0, IO1L)
+			Store (One, ACTR)
+			EXCM ()
 
-				/* Try probing drives and save result in _FDE */
-				PROB(IOA0)
-			}
+			/* Try probing drives and save result in _FDE */
+			PROB(IOA0)
 		}
-		#endif
+	}
+	#endif
 
-		#ifndef NO_W83627HF_PPORT
-		/* ======================== Parallel Port ======================== */
-		/* Currently no ECP support */
-		Device (PAR0) {
-			Name (_HID, EisaId ("PNP0400"))
-			Name (_DDN, "LPT1")
-			Name (_UID, "w83627hf-pport")
+	#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 ()
-				Store (0x01, LDN)
-				And(OPT1, 0x3, Local1)
-				Or(Local1, Local0, OPT1)
-				EXCM()
-			}
+		Method (MODE, 1) {
+			And(Arg0, 0x07, Local0)
+			ENCM ()
+			Store (0x01, LDN)
+			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 ()
-				Store (0x01, LDN)
-				Store (0x04, DMA0)
-				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 ()
+			Store (0x01, LDN)
+			Store (0x04, DMA0)
+			EXCM ()
+		}
 
-			Method (_STA)
-			{
-				Store (0x00, Local0)
-				ENCM ()
-				Store (0x01, LDN)
-				And(OPT1, 0x3, Local1)
-				If (ACTR) {
-					If (LNotEqual(Local1, 2)) {
-						Store (0x0D, Local0)
-					} Else {
-						Store (0x0D, Local0)
-					}
-				}
-				ElseIf (LOr (IO1H, IO1L))
-				{
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM ()
+			Store (0x01, LDN)
+			And(OPT1, 0x3, Local1)
+			If (ACTR) {
+				If (LNotEqual(Local1, 2)) {
+					Store (0x0D, Local0)
+				} Else {
 					Store (0x0D, Local0)
 				}
-				EXCM ()
-				Return (Local0)
 			}
-
-			Method (_PSC) {
-				Store(^^_PSC (), Local0)
-				If (Local0) { Return (Local0) }
-				ENCM ()
-				Store (PRPW, Local0)
-				EXCM ()
-				If (Local0) { Return (1) }
-				Else { Return (0) }
-			}
-			Method (_PS0) {
-				ENCM ()
-				Store (Zero, PRPW)
-				EXCM ()
-			}
-			Method (_PS1) {
-				ENCM ()
-				Store (One, PRPW)
-				EXCM ()
-			}
-
-			Method (_DIS) {
-				ENCM ()
-				Store (0x01, LDN)
-				Store (Zero, ACTR)
-				EXCM ()
-			}
-
-			Method (_CRS)
+			ElseIf (LOr (IO1H, IO1L))
 			{
-				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)
-
-				ENCM ()
-				Store (0x01, LDN)
-				Store (IO1L, Local0)
-				Store (IO1H, Local1)
-				Store (OPT1, Local2)
-				Store (IRQ0, Local5)
-				EXCM ()
-				ShiftLeft(Local1, 8, Local1)
-				Or (Local1, Local0, Local1)
+				Store (0x0D, Local0)
+			}
+			EXCM ()
+			Return (Local0)
+		}
 
-				And(Local2, 0x3, Local3)
-				And(Local2, 0x4, Local4)
-				If (Local4) {
-					Store(0x04, IOAL)
-				}
+		Method (_PSC) {
+			Store(^^_PSC (), Local0)
+			If (Local0) { Return (Local0) }
+			ENCM ()
+			Store (PRPW, Local0)
+			EXCM ()
+			If (Local0) { Return (1) }
+			Else { Return (0) }
+		}
+		Method (_PS0) {
+			ENCM ()
+			Store (Zero, PRPW)
+			EXCM ()
+		}
+		Method (_PS1) {
+			ENCM ()
+			Store (One, PRPW)
+			EXCM ()
+		}
 
-				Store(Local1, IOP0)
-				Store(Local1, IOR0)
+		Method (_DIS) {
+			ENCM ()
+			Store (0x01, LDN)
+			Store (Zero, ACTR)
+			EXCM ()
+		}
 
-				If (LEqual (Local0, 0xBC))
-				{
-					Store (0x04, IOLE)
-				}
-				Else
-				{
-					Store (0x08, IOLE)
-				}
+		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)
 
-				Store (One, Local0)
-				ShiftLeft (Local0, Local5, IRQW)
+			ENCM ()
+			Store (0x01, LDN)
+			Store (IO1L, Local0)
+			Store (IO1H, Local1)
+			Store (OPT1, Local2)
+			Store (IRQ0, Local5)
+			EXCM ()
+			ShiftLeft(Local1, 8, Local1)
+			Or (Local1, Local0, Local1)
 
-				Return (CRS)
+			And(Local2, 0x3, Local3)
+			And(Local2, 0x4, Local4)
+			If (Local4) {
+				Store(0x04, IOAL)
 			}
 
-			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 ()
-			})
+			Store(Local1, IOP0)
+			Store(Local1, IOR0)
 
-			Method (_SRS, 1, Serialized)
+			If (LEqual (Local0, 0xBC))
 			{
-				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)
-				}
+				Store (0x04, IOLE)
+			}
+			Else
+			{
+				Store (0x08, IOLE)
+			}
 
-				Divide(IOA0, 256, Local0, Local1)
-				ShiftRight(Local1, 8, Local1)
+			Store (One, Local0)
+			ShiftLeft (Local0, Local5, IRQW)
 
-				ENCM ()
-				Store (0x01, LDN)
-				Store (Local1, IO1H)
-				Store (Local0, IO1L)
-				/*Mode*/
-				Store (OPT1, Local3)
-				And (Local3, 0xF8, Local3)
-				Or (Local2, Local3, OPT1)
-				/*DMA off*/
-				Store (0x04, DMA0)
-				/*IRQ*/
-				FindSetLeftBit (IRQL, Local3)
-				Subtract (Local3, 0x01, Local3)
-				Store (Local3, IRQ0)
-				/*Activate*/
-				Store (One, ACTR)
-				EXCM ()
-			}
+			Return (CRS)
 		}
-		#endif
 
-		#ifndef NO_W83627HF_UARTA
-		/* =========================== UART A ============================ */
-		Device (SER0) {
-			Name (_HID, EisaId ("PNP0501"))
-			Name (_UID, "w83627hf-uarta")
-			Name (_DDN, "COM1")
-
-			Method (_STA)
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFn (0,1)
 			{
-				Store (0x00, Local0)
-				ENCM ()
-				Store (0x02, LDN)
-				If (ACTR) {
-					Store (0x0F, Local0)
-				}
-				ElseIf (LOr (IO1H, IO1L))
-				{
-					Store (0x0D, Local0)
-				}
-				EXCM ()
-				Return (Local0)
+				IO (Decode16, 0x0378, 0x0378, 0x04, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
 			}
-
-			Method (_PSC) {
-				Store(^^_PSC (), Local0)
-				If (Local0) { Return (Local0) }
-				ENCM ()
-				Store (UAPW, Local0)
-				EXCM ()
-				If (Local0) { Return (1) }
-				Else { Return (0) }
+			StartDependentFn (0,1)
+			{
+				IO (Decode16, 0x0278, 0x0278, 0x04, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
 			}
-			Method (_PS0) {
-				ENCM ()
-				Store (Zero, UAPW)
-				EXCM ()
+			StartDependentFn (0,1)
+			{
+				IO (Decode16, 0x03BC, 0x03BC, 0x04, 0x04)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
 			}
-			Method (_PS1) {
-				ENCM ()
-				Store (One, UAPW)
-				EXCM ()
+			StartDependentFn (0,0)
+			{
+				IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
 			}
-
-			Method (_DIS)
+			StartDependentFn (0,0)
 			{
-				ENCM ()
-				Store (0x02, LDN)
-				Store (Zero, ACTR)
-				EXCM ()
+				IO (Decode16, 0x0278, 0x0278, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
 			}
-
-			Method (_CRS)
+			StartDependentFn (2,0)
 			{
-				Name (CRS, ResourceTemplate () {
-					IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
-					IRQNoFlags (IRQX) {6}
-				})
-				ENCM ()
-				Store (0x02, LDN)
-				Store(IO1H, Local1)
-				Store(IO1L, Local0)
-				Store(IRQ0, Local2)
-				EXCM ()
-				ShiftLeft(Local1, 8, Local1)
-				Or (Local1, 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)
+				IO (Decode16, 0x0100, 0x0FFC, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
 			}
-
-			Name (_PRS, ResourceTemplate ()
+			StartDependentFn (2,1)
 			{
-				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()
-			})
+				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, 1, 6, IO0)
-					IRQNoFlags (IRQX) {}
-				})
-				CreateWordField (Arg0, IO0._MIN, IOA0)
-				CreateByteField (Arg0, IRQX._INT, IRQL)
+		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)
 
-				Divide(IOA0, 256, Local0, Local1)
-				ShiftRight(Local1, 8, Local1)
+			If (LEqual(IOAL, 4)) {
+				Store(0x0, Local2)
+			} else  {
+				Store(0x1, Local2)
+			}
 
-				FindSetLeftBit (IRQL, Local3)
-				Subtract (Local3, 0x01, Local3)
+			Divide(IOA0, 256, Local0, Local1)
+			ShiftRight(Local1, 8, Local1)
 
-				ENCM ()
-				Store (2, LDN)
-				Store (Local1, IO1H)
-				Store (Local0, IO1L)
-				Store (Local3, IRQ0)
-				Store (One, ACTR)
-				EXCM ()
-			}
+			ENCM ()
+			Store (0x01, LDN)
+			Store (Local1, IO1H)
+			Store (Local0, IO1L)
+			/*Mode*/
+			Store (OPT1, Local3)
+			And (Local3, 0xF8, Local3)
+			Or (Local2, Local3, OPT1)
+			/*DMA off*/
+			Store (0x04, DMA0)
+			/*IRQ*/
+			FindSetLeftBit (IRQL, Local3)
+			Subtract (Local3, 0x01, Local3)
+			Store (Local3, IRQ0)
+			/*Activate*/
+			Store (One, ACTR)
+			EXCM ()
 		}
-		#endif
+	}
+	#endif
 
-		#ifndef NO_W83627HF_UARTB
-		/* =========================== UART B ============================ */
-		Device (SER1) {
-			Name (_HID, EisaId ("PNP0501"))
-			Name (_UID, "w83627hf-uartb")
-			Name (_DDN, "COM2")
+	#ifndef NO_W83627HF_UARTA
+	/* =========================== UART A ============================ */
+	Device (SER0) {
+		Name (_HID, EisaId ("PNP0501"))
+		Name (_UID, "w83627hf-uarta")
+		Name (_DDN, "COM1")
 
-			Method (_STA)
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM ()
+			Store (0x02, LDN)
+			If (ACTR) {
+				Store (0x0F, Local0)
+			}
+			ElseIf (LOr (IO1H, IO1L))
 			{
-				Store (0x00, Local0)
-				ENCM ()
-				Store (0x03, LDN)
-				If (LNot(And(OPT2, 0x30)))
-				{
-					If (ACTR) {
-						Store (0x0F, Local0)
-					}
-					ElseIf (LOr (IO1H, IO1L))
-					{
-						Store (0x0D, Local0)
-					}
-				}
-				EXCM ()
-				Return (Local0)
+				Store (0x0D, Local0)
 			}
+			EXCM ()
+			Return (Local0)
+		}
 
-			Method (_PSC) {
-				Store(^^_PSC (), Local0)
-				If (Local0) { Return (Local0) }
-				ENCM ()
-				Store (UBPW, Local0)
-				EXCM ()
-				If (Local0) { Return (1) }
-				Else { Return (0) }
-			}
-			Method (_PS0) {
-				ENCM ()
-				Store (Zero, UBPW)
-				EXCM ()
-			}
-			Method (_PS1) {
-				ENCM ()
-				Store (One, UBPW)
-				EXCM ()
-			}
+		Method (_PSC) {
+			Store(^^_PSC (), Local0)
+			If (Local0) { Return (Local0) }
+			ENCM ()
+			Store (UAPW, Local0)
+			EXCM ()
+			If (Local0) { Return (1) }
+			Else { Return (0) }
+		}
+		Method (_PS0) {
+			ENCM ()
+			Store (Zero, UAPW)
+			EXCM ()
+		}
+		Method (_PS1) {
+			ENCM ()
+			Store (One, UAPW)
+			EXCM ()
+		}
 
-			Method (_DIS)
-			{
-				ENCM ()
-				Store (0x03, LDN)
-				Store (Zero, ACTR)
-				EXCM ()
-			}
+		Method (_DIS)
+		{
+			ENCM ()
+			Store (0x02, LDN)
+			Store (Zero, ACTR)
+			EXCM ()
+		}
 
-			Method (_CRS)
-			{
-				Name (CRS, ResourceTemplate () {
-					IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
-					IRQNoFlags (IRQX) {6}
-				})
-				ENCM ()
-				Store (0x03, LDN)
-				Store(IO1H, Local1)
-				Store(IO1L, Local0)
-				Store(IRQ0, Local2)
-				EXCM ()
-				ShiftLeft(Local1, 8, Local1)
-				Or (Local1, Local0, Local0)
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
+				IRQNoFlags (IRQX) {6}
+			})
+			ENCM ()
+			Store (0x02, LDN)
+			Store(IO1H, Local1)
+			Store(IO1L, Local0)
+			Store(IRQ0, Local2)
+			EXCM ()
+			ShiftLeft(Local1, 8, Local1)
+			Or (Local1, Local0, Local0)
 
-				CreateWordField (CRS, IO0._MIN, IMIN)
-				Store (Local0, IMIN)
-				CreateWordField (CRS, IO0._MAX, IMAX)
-				Store (Local0, IMAX)
+			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)
+			CreateWordField (CRS, IRQX._INT, IRQW)
+			Store (One, Local3)
+			ShiftLeft (Local3, Local2, IRQW)
 
-				Return (CRS)
+			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()
+		})
 
-			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, 6, IO0)
+				IRQNoFlags (IRQX) {}
 			})
+			CreateWordField (Arg0, IO0._MIN, IOA0)
+			CreateByteField (Arg0, IRQX._INT, IRQL)
 
-			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)
-				ShiftRight(Local1, 8, Local1)
+			Divide(IOA0, 256, Local0, Local1)
+			ShiftRight(Local1, 8, Local1)
 
-				FindSetLeftBit (IRQL, Local3)
-				Subtract (Local3, 0x01, Local3)
+			FindSetLeftBit (IRQL, Local3)
+			Subtract (Local3, 0x01, Local3)
 
-				ENCM ()
-				Store (3, LDN)
-				Store (Local1, IO1H)
-				Store (Local0, IO1L)
-				Store (Local3, IRQ0)
-				Store (One, ACTR)
-				EXCM ()
-			}
+			ENCM ()
+			Store (2, LDN)
+			Store (Local1, IO1H)
+			Store (Local0, IO1L)
+			Store (Local3, IRQ0)
+			Store (One, ACTR)
+			EXCM ()
 		}
-		#endif
+	}
+	#endif
 
-		#ifndef NO_W83627HF_IRDA
-		/* ======================== UART B (IRDA) ======================== */
-		Device (IRDA) {
-			Name (_HID, EisaId ("PNP0510"))
-			Name (_UID, "w83627hf-irda")
-			Name (_STR, Unicode("IrDA Port"))
+	#ifndef NO_W83627HF_UARTB
+	/* =========================== UART B ============================ */
+	Device (SER1) {
+		Name (_HID, EisaId ("PNP0501"))
+		Name (_UID, "w83627hf-uartb")
+		Name (_DDN, "COM2")
 
-			Method (_STA)
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM ()
+			Store (0x03, LDN)
+			If (LNot(And(OPT2, 0x30)))
 			{
-				Store (0x00, Local0)
-				ENCM ()
-				Store (0x03, LDN)
-				If (And(OPT2, 0x30))
+				If (ACTR) {
+					Store (0x0F, Local0)
+				}
+				ElseIf (LOr (IO1H, IO1L))
 				{
-					If (ACTR) {
-						Store (0x0F, Local0)
-					}
-					ElseIf (LOr (IO1H, IO1L))
-					{
-						Store (0x0D, Local0)
-					}
+					Store (0x0D, Local0)
 				}
-				EXCM ()
-				Return (Local0)
 			}
+			EXCM ()
+			Return (Local0)
+		}
 
-			Method (_PSC) {
-				Store(^^_PSC (), Local0)
-				If (Local0) { Return (Local0) }
-				ENCM ()
-				Store (UBPW, Local0)
-				EXCM ()
-				If (Local0) { Return (1) }
-				Else { Return (0) }
-			}
-			Method (_PS0) {
-				ENCM ()
-				Store (Zero, UBPW)
-				EXCM ()
-			}
-			Method (_PS1) {
-				ENCM ()
-				Store (One, UBPW)
-				EXCM ()
-			}
+		Method (_PSC) {
+			Store(^^_PSC (), Local0)
+			If (Local0) { Return (Local0) }
+			ENCM ()
+			Store (UBPW, Local0)
+			EXCM ()
+			If (Local0) { Return (1) }
+			Else { Return (0) }
+		}
+		Method (_PS0) {
+			ENCM ()
+			Store (Zero, UBPW)
+			EXCM ()
+		}
+		Method (_PS1) {
+			ENCM ()
+			Store (One, UBPW)
+			EXCM ()
+		}
 
-			Method (_DIS)
-			{
-				ENCM ()
-				Store (0x03, LDN)
-				Store (Zero, ACTR)
-				EXCM ()
-			}
+		Method (_DIS)
+		{
+			ENCM ()
+			Store (0x03, LDN)
+			Store (Zero, ACTR)
+			EXCM ()
+		}
 
-			Method (_CRS)
-			{
-				Name (CRS, ResourceTemplate () {
-					IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
-					IRQNoFlags (IRQX) {6}
-				})
-				ENCM ()
-				Store (0x03, LDN)
-				Store(IO1H, Local1)
-				Store(IO1L, Local0)
-				Store(IRQ0, Local2)
-				EXCM ()
-				ShiftLeft(Local1, 8, Local1)
-				Or (Local1, Local0, Local0)
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
+				IRQNoFlags (IRQX) {6}
+			})
+			ENCM ()
+			Store (0x03, LDN)
+			Store(IO1H, Local1)
+			Store(IO1L, Local0)
+			Store(IRQ0, Local2)
+			EXCM ()
+			ShiftLeft(Local1, 8, Local1)
+			Or (Local1, Local0, Local0)
 
-				CreateWordField (CRS, IO0._MIN, IMIN)
-				Store (Local0, IMIN)
-				CreateWordField (CRS, IO0._MAX, IMAX)
-				Store (Local0, IMAX)
+			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)
+			CreateWordField (CRS, IRQX._INT, IRQW)
+			Store (One, Local3)
+			ShiftLeft (Local3, Local2, IRQW)
 
-				Return (CRS)
+			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()
+		})
 
-			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)
 
-			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)
-				ShiftRight(Local1, 8, Local1)
+			Divide(IOA0, 256, Local0, Local1)
+			ShiftRight(Local1, 8, Local1)
 
-				FindSetLeftBit (IRQL, Local3)
-				Subtract (Local3, 0x01, Local3)
+			FindSetLeftBit (IRQL, Local3)
+			Subtract (Local3, 0x01, Local3)
 
-				ENCM ()
-				Store (3, LDN)
-				Store (Local1, IO1H)
-				Store (Local0, IO1L)
-				Store (Local3, IRQ0)
-				Store (One, ACTR)
-				EXCM ()
-			}
+			ENCM ()
+			Store (3, LDN)
+			Store (Local1, IO1H)
+			Store (Local0, IO1L)
+			Store (Local3, IRQ0)
+			Store (One, ACTR)
+			EXCM ()
 		}
-		#endif
+	}
+	#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"))
+	#ifndef NO_W83627HF_IRDA
+	/* ======================== UART B (IRDA) ======================== */
+	Device (IRDA) {
+		Name (_HID, EisaId ("PNP0510"))
+		Name (_UID, "w83627hf-irda")
+		Name (_STR, Unicode("IrDA Port"))
 
-			Method (_STA)
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM ()
+			Store (0x03, LDN)
+			If (And(OPT2, 0x30))
 			{
-				Store (0x00, Local0)
-				ENCM ()
-				Store (0x06, LDN)
 				If (ACTR) {
 					Store (0x0F, Local0)
 				}
@@ -1017,508 +884,637 @@ Scope (\_SB)
 				{
 					Store (0x0D, Local0)
 				}
-				EXCM ()
-				Return (Local0)
 			}
+			EXCM ()
+			Return (Local0)
+		}
 
-			Method (_DIS)
-			{
-				ENCM ()
-				Store (0x06, LDN)
-				Store (Zero, ACTR)
-				EXCM ()
-			}
+		Method (_PSC) {
+			Store(^^_PSC (), Local0)
+			If (Local0) { Return (Local0) }
+			ENCM ()
+			Store (UBPW, Local0)
+			EXCM ()
+			If (Local0) { Return (1) }
+			Else { Return (0) }
+		}
+		Method (_PS0) {
+			ENCM ()
+			Store (Zero, UBPW)
+			EXCM ()
+		}
+		Method (_PS1) {
+			ENCM ()
+			Store (One, UBPW)
+			EXCM ()
+		}
 
-			Method (_CRS)
-			{
-				Name (CRS, ResourceTemplate () {
-					IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
-					IRQNoFlags (IRQX) {6}
-				})
-				ENCM ()
-				Store (0x03, LDN)
-				Store(IO1H, Local1)
-				Store(IO1L, Local0)
-				Store(IRQ0, Local2)
-				EXCM ()
-				ShiftLeft(Local1, 8, Local1)
-				Or (Local1, Local0, Local0)
+		Method (_DIS)
+		{
+			ENCM ()
+			Store (0x03, LDN)
+			Store (Zero, ACTR)
+			EXCM ()
+		}
 
-				CreateWordField (CRS, IO0._MIN, IMIN)
-				Store (Local0, IMIN)
-				CreateWordField (CRS, IO0._MAX, IMAX)
-				Store (Local0, IMAX)
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
+				IRQNoFlags (IRQX) {6}
+			})
+			ENCM ()
+			Store (0x03, LDN)
+			Store(IO1H, Local1)
+			Store(IO1L, Local0)
+			Store(IRQ0, Local2)
+			EXCM ()
+			ShiftLeft(Local1, 8, Local1)
+			Or (Local1, Local0, Local0)
 
-				CreateWordField (CRS, IRQX._INT, IRQW)
-				Store (One, Local3)
-				ShiftLeft (Local3, Local2, IRQW)
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			Store (Local0, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMAX)
 
-				Return (CRS)
+			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()
+		})
 
-			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)
 
-			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)
-				ShiftRight(Local1, 8, Local1)
+			Divide(IOA0, 256, Local0, Local1)
+			ShiftRight(Local1, 8, Local1)
 
-				FindSetLeftBit (IRQL, Local3)
-				Subtract (Local3, 0x01, Local3)
+			FindSetLeftBit (IRQL, Local3)
+			Subtract (Local3, 0x01, Local3)
 
-				ENCM ()
-				Store (6, LDN)
-				Store (Local1, IO1H)
-				Store (Local0, IO1L)
-				Store (Local3, IRQ0)
-				Store (One, ACTR)
-				EXCM ()
-			}
+			ENCM ()
+			Store (3, LDN)
+			Store (Local1, IO1H)
+			Store (Local0, IO1L)
+			Store (Local3, IRQ0)
+			Store (One, ACTR)
+			EXCM ()
 		}
-		#endif
+	}
+	#endif
 
-		#ifndef NO_W83627HF_KBC
-		/* ===================== Keyboard Controller ===================== */
-		Device (KBD0) {
-			Name (_HID, EisaId ("PNP0303"))
-			Name (_CID, 0x0B03D041)
-			Name (_UID, "w83627hf-kbc")
+	#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 ()
-				Store (0x05, LDN)
-				If (ACTR) {
-					Store (0x0F, Local0)
-				}
-				ElseIf (Lor(LOr (IO1H, IO1L), LOr (IO2H, IO2L)))
-				{
-					Store (0x0D, Local0)
-				}
-				EXCM ()
-				Return (Local0)
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM ()
+			Store (0x06, LDN)
+			If (ACTR) {
+				Store (0x0F, Local0)
 			}
-
-			Method (_DIS)
+			ElseIf (LOr (IO1H, IO1L))
 			{
-				ENCM ()
-				Store (0x05, LDN)
-				Store (Zero, ACTR)
-				EXCM ()
-				Notify(PS2M, 1)
+				Store (0x0D, Local0)
 			}
+			EXCM ()
+			Return (Local0)
+		}
 
-			Method (_CRS)
-			{
-				Name (CRS, ResourceTemplate () {
-					IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO0)
-					IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO1)
-					IRQNoFlags (IRQX) {}
-				})
-				ENCM ()
-				Store (0x05, LDN)
-				Store(IO1H, Local0)
-				Store(IO1L, Local1)
-				Store(IO2H, Local2)
-				Store(IO2L, Local3)
-				Store(IRQ0, Local4)
-				EXCM ()
-				ShiftLeft(Local0, 8, Local0)
-				Or (Local1, Local0, Local0)
+		Method (_DIS)
+		{
+			ENCM ()
+			Store (0x06, LDN)
+			Store (Zero, ACTR)
+			EXCM ()
+		}
 
-				ShiftLeft(Local2, 8, Local2)
-				Or (Local1, Local0, Local0)
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x08, IO0)
+				IRQNoFlags (IRQX) {6}
+			})
+			ENCM ()
+			Store (0x03, LDN)
+			Store(IO1H, Local1)
+			Store(IO1L, Local0)
+			Store(IRQ0, Local2)
+			EXCM ()
+			ShiftLeft(Local1, 8, Local1)
+			Or (Local1, Local0, Local0)
 
-				CreateWordField (CRS, IO0._MIN, IMIN)
-				Store (Local0, IMIN)
-				CreateWordField (CRS, IO0._MAX, IMAX)
-				Store (Local0, IMAX)
+			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, Local3)
+			ShiftLeft (Local3, Local2, IRQW)
 
-				CreateWordField (CRS, IRQX._INT, IRQW)
-				Store (One, Local5)
-				ShiftLeft (Local5, Local4, IRQW)
+			Return (CRS)
+		}
 
-				Return (CRS)
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFn (0,0) {
+				IO (Decode16, 0x0100, 0x0FF8, 0x08, 0x08)
+				IRQNoFlags () {3,4,5,7,9,10,11,12}
 			}
+			EndDependentFn()
+		})
 
-			Name (_PRS, ResourceTemplate ()
-			{
-				StartDependentFn (0,0) {
-					IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
-					IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
-					IRQNoFlags () {1}
-				}
-				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)
 
-			Method (_SRS, 1, Serialized)
-			{
-				Name (TMPL, ResourceTemplate () {
-					IO (Decode16, 0, 0, 1, 1, IO0)
-					IO (Decode16, 0, 0, 1, 1, IO1)
-					IRQNoFlags (IRQX) {}
-				})
-				CreateWordField (Arg0, IO0._MIN, IOA0)
-				CreateWordField (Arg0, IO1._MIN, IOA1)
-				CreateByteField (Arg0, IRQX._INT, IRQL)
+			Divide(IOA0, 256, Local0, Local1)
+			ShiftRight(Local1, 8, Local1)
 
-				Divide(IOA0, 256, Local0, Local1)
-				ShiftRight(Local1, 8, Local1)
+			FindSetLeftBit (IRQL, Local3)
+			Subtract (Local3, 0x01, Local3)
 
-				Divide(IOA1, 256, Local2, Local3)
-				ShiftRight(Local1, 8, Local1)
+			ENCM ()
+			Store (6, LDN)
+			Store (Local1, IO1H)
+			Store (Local0, IO1L)
+			Store (Local3, IRQ0)
+			Store (One, ACTR)
+			EXCM ()
+		}
+	}
+	#endif
 
-				FindSetLeftBit (IRQL, Local4)
-				Subtract (Local4, 0x01, Local4)
+	#ifndef NO_W83627HF_KBC
+	/* ===================== Keyboard Controller ===================== */
+	Device (KBD0) {
+		Name (_HID, EisaId ("PNP0303"))
+		Name (_CID, 0x0B03D041)
+		Name (_UID, "w83627hf-kbc")
 
-				ENCM ()
-				Store (5, LDN)
-				Store (Local1, IO1H)
-				Store (Local0, IO1L)
-				Store (Local3, IO2H)
-				Store (Local2, IO2L)
-				Store (Local3, IRQ0)
-				Store (One, ACTR)
-				EXCM ()
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM ()
+			Store (0x05, LDN)
+			If (ACTR) {
+				Store (0x0F, Local0)
 			}
-		}
-		#ifndef NO_W83627HF_PS2M
-		Device (PS2M) {
-			Name (_HID, EisaId ("PNP0F13"))
-			Name (_UID, "w83627hf-ps2m")
-
-			Method (_STA)
+			ElseIf (Lor(LOr (IO1H, IO1L), LOr (IO2H, IO2L)))
 			{
-				Store (0x00, Local0)
-				ENCM ()
-				Store (0x05, LDN)
-				If (LAnd(ACTR, IRQ1) ) {
-					Store (0x0F, Local0)
-				}
-				ElseIf (Lor(LOr (IO1H, IO1L), LOr (IO2H, IO2L)))
-				{
-					Store (0x0D, Local0)
-				}
-				EXCM ()
-				Return (Local0)
+				Store (0x0D, Local0)
 			}
+			EXCM ()
+			Return (Local0)
+		}
 
-			Method (_DIS)
-			{
-				ENCM ()
-				Store (0x05, LDN)
-				Store (Zero, IRQ1)
-				EXCM ()
-			}
+		Method (_DIS)
+		{
+			ENCM ()
+			Store (0x05, LDN)
+			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 ()
-				Store (0x05, LDN)
-				Store(IO1H, Local0)
-				Store(IO1L, Local1)
-				Store(IO2H, Local2)
-				Store(IO2L, Local3)
-				Store(IRQ1, Local4)
-				EXCM ()
-				ShiftLeft(Local0, 8, Local0)
-				Or (Local1, Local0, Local0)
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO0)
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO1)
+				IRQNoFlags (IRQX) {}
+			})
+			ENCM ()
+			Store (0x05, LDN)
+			Store(IO1H, Local0)
+			Store(IO1L, Local1)
+			Store(IO2H, Local2)
+			Store(IO2L, Local3)
+			Store(IRQ0, Local4)
+			EXCM ()
+			ShiftLeft(Local0, 8, Local0)
+			Or (Local1, Local0, Local0)
 
-				ShiftLeft(Local2, 8, Local2)
-				Or (Local1, Local0, Local0)
+			ShiftLeft(Local2, 8, Local2)
+			Or (Local1, Local0, Local0)
 
-				CreateWordField (CRS, IO0._MIN, IMIN)
-				Store (Local0, IMIN)
-				CreateWordField (CRS, IO0._MAX, IMAX)
-				Store (Local0, IMAX)
+			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, 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)
+			CreateWordField (CRS, IRQX._INT, IRQW)
+			Store (One, Local5)
+			ShiftLeft (Local5, Local4, IRQW)
+
+			Return (CRS)
+		}
 
-				Return (CRS)
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFn (0,0) {
+				IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
+				IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
+				IRQNoFlags () {1}
 			}
+			EndDependentFn()
+		})
 
-			Name (_PRS, ResourceTemplate ()
-			{
-				StartDependentFn (0,0) {
-					IRQNoFlags () {12}
-				}
-				StartDependentFn (2,0) {
-					IRQNoFlags () {1,3,4,5,6,7,9,10,11,12}
-				}
-				EndDependentFn()
+		Method (_SRS, 1, Serialized)
+		{
+			Name (TMPL, ResourceTemplate () {
+				IO (Decode16, 0, 0, 1, 1, IO0)
+				IO (Decode16, 0, 0, 1, 1, IO1)
+				IRQNoFlags (IRQX) {}
 			})
+			CreateWordField (Arg0, IO0._MIN, IOA0)
+			CreateWordField (Arg0, IO1._MIN, IOA1)
+			CreateByteField (Arg0, IRQX._INT, IRQL)
 
-			Method (_SRS, 1, Serialized)
-			{
-				Name (TMPL, ResourceTemplate () {
-					IRQNoFlags (IRQX) {}
-				})
-				CreateByteField (Arg0, IRQX._INT, IRQL)
+			Divide(IOA0, 256, Local0, Local1)
+			ShiftRight(Local1, 8, Local1)
 
-				FindSetLeftBit (IRQL, Local0)
-				Subtract (Local0, 0x01, Local0)
+			Divide(IOA1, 256, Local2, Local3)
+			ShiftRight(Local1, 8, Local1)
 
-				ENCM ()
-				Store (5, LDN)
-				Store (Local0, IRQ1)
-				/* Only activates if KBD is active */
-				Store (One, ACTR)
-				EXCM ()
-			}
-		}
-		#endif
-		#endif
+			FindSetLeftBit (IRQL, Local4)
+			Subtract (Local4, 0x01, Local4)
 
-		#ifndef NO_W83627HF_GAME
-		/* ========================== Game Port ========================== */
-		Device (GAME) {
-			Name (_HID, EisaId ("PNPB02F"))
-			Name (_STR, Unicode ("Joystick/Game Port"))
-			Name (_UID, "w83627hf-game")
+			ENCM ()
+			Store (5, LDN)
+			Store (Local1, IO1H)
+			Store (Local0, IO1L)
+			Store (Local3, IO2H)
+			Store (Local2, IO2L)
+			Store (Local3, IRQ0)
+			Store (One, ACTR)
+			EXCM ()
+		}
+	}
+	#ifndef NO_W83627HF_PS2M
+	Device (PS2M) {
+		Name (_HID, EisaId ("PNP0F13"))
+		Name (_UID, "w83627hf-ps2m")
 
-			Method (_STA) {
-				ENCM ()
-				Store(0, Local0)
-				Store (0x07, LDN)
-				If (LOr(IO1L, IO1H)) {
-					If (LOr(ACTR, ACT1)) {
-						Store (0x0F, Local0)
-					}
-					Else {
-						Store (0x0D, Local0)
-					}
-				}
-				EXCM ()
-				Return (Local0)
+		Method (_STA)
+		{
+			Store (0x00, Local0)
+			ENCM ()
+			Store (0x05, LDN)
+			If (LAnd(ACTR, IRQ1) ) {
+				Store (0x0F, Local0)
 			}
-
-			Method (_CRS)
+			ElseIf (Lor(LOr (IO1H, IO1L), LOr (IO2H, IO2L)))
 			{
-				Name (CRS, ResourceTemplate () {
-					IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO0)
-					IRQNoFlags (IRQX) {}
-				})
-				ENCM ()
-				Store (0x07, LDN)
-				Store(IO1H, Local0)
-				Store(IO1L, Local1)
-				Store(IRQ0, Local2)
-				EXCM ()
-				ShiftLeft(Local0, 8, Local0)
-				Or (Local1, Local0, Local0)
-
-				CreateWordField (CRS, IO0._MIN, IMIN)
-				Store (Local0, IMIN)
-				CreateWordField (CRS, IO0._MAX, IMAX)
-				Store (Local0, IMAX)
-
-				If (Local2) {
-					CreateWordField (CRS, IRQX._INT, IRQW)
-					Store (One, Local3)
-					ShiftLeft (Local3, Local2, IRQW)
-				}
-
-				Return (CRS)
+				Store (0x0D, Local0)
 			}
+			EXCM ()
+			Return (Local0)
+		}
 
+		Method (_DIS)
+		{
+			ENCM ()
+			Store (0x05, LDN)
+			Store (Zero, IRQ1)
+			EXCM ()
 		}
-		#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 (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IRQNoFlags (IRQX) {}
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO0)
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO1)
+			})
+			ENCM ()
+			Store (0x05, LDN)
+			Store(IO1H, Local0)
+			Store(IO1L, Local1)
+			Store(IO2H, Local2)
+			Store(IO2L, Local3)
+			Store(IRQ1, Local4)
+			EXCM ()
+			ShiftLeft(Local0, 8, Local0)
+			Or (Local1, Local0, Local0)
+
+			ShiftLeft(Local2, 8, Local2)
+			Or (Local1, Local0, Local0)
 
-			Method (_STA) {
-				ENCM ()
-				Store(0, Local0)
-				Store (0x07, LDN)
-				If (LOr(IO2L, IO2H)) {
-					If (LOr(ACTR, ACT2)) {
-						Store (0x0F, Local0)
-					}
-					Else {
-						Store (0x0D, Local0)
-					}
-				}
-				EXCM ()
-				Return (Local0)
-			}
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			Store (Local0, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMAX)
 
-			Method (_CRS)
-			{
-				Name (CRS, ResourceTemplate () {
-					IO (Decode16, 0x0000, 0x0000, 0x02, 0x02, IO0)
-					IRQNoFlags (IRQX) {}
-				})
-				ENCM ()
-				Store (0x07, LDN)
-				Store(IO2H, Local0)
-				Store(IO2L, Local1)
-				Store(IRQ1, Local2)
-				EXCM ()
-				ShiftLeft(Local0, 8, Local0)
-				Or (Local1, Local0, Local0)
+			CreateWordField (CRS, IO1._MIN, I1MI)
+			Store (Local2, I1MI)
+			CreateWordField (CRS, IO1._MAX, I1MA)
+			Store (Local2, I1MA)
 
-				CreateWordField (CRS, IO0._MIN, IMIN)
-				Store (Local0, IMIN)
-				CreateWordField (CRS, IO0._MAX, IMAX)
-				Store (Local0, IMAX)
+			CreateWordField (CRS, IRQX._INT, IRQW)
+			Store (One, Local5)
+			ShiftLeft (Local5, Local4, IRQW)
 
-				If (Local2) {
-					CreateWordField (CRS, IRQX._INT, IRQW)
-					Store (One, Local3)
-					ShiftLeft (Local3, Local2, IRQW)
-				}
+			Return (CRS)
+		}
 
-				Return (CRS)
+		Name (_PRS, ResourceTemplate ()
+		{
+			StartDependentFn (0,0) {
+				IRQNoFlags () {12}
 			}
+			StartDependentFn (2,0) {
+				IRQNoFlags () {1,3,4,5,6,7,9,10,11,12}
+			}
+			EndDependentFn()
+		})
+
+		Method (_SRS, 1, Serialized)
+		{
+			Name (TMPL, ResourceTemplate () {
+				IRQNoFlags (IRQX) {}
+			})
+			CreateByteField (Arg0, IRQX._INT, IRQL)
+
+			FindSetLeftBit (IRQL, Local0)
+			Subtract (Local0, 0x01, Local0)
 
+			ENCM ()
+			Store (5, LDN)
+			Store (Local0, IRQ1)
+			/* Only activates if KBD is active */
+			Store (One, ACTR)
+			EXCM ()
 		}
-		#endif
+	}
+	#endif
+	#endif
 
-		/* ==== Suspend LED control if it is connected to the SuperIO ==== */
-		Method (SLED, 1) {
+	#ifndef NO_W83627HF_GAME
+	/* ========================== Game Port ========================== */
+	Device (GAME) {
+		Name (_HID, EisaId ("PNPB02F"))
+		Name (_STR, Unicode ("Joystick/Game Port"))
+		Name (_UID, "w83627hf-game")
+
+		Method (_STA) {
 			ENCM ()
-			Store (9, LDN)
-			Store(OPT4, Local0)
-			And(Local0, 63, Local0)
-			Or(Local0, ShiftLeft(And(Arg0, 0x03), 6), OPT4)
+			Store(0, Local0)
+			Store (0x07, LDN)
+			If (LOr(IO1L, IO1H)) {
+				If (LOr(ACTR, ACT1)) {
+					Store (0x0F, Local0)
+				}
+				Else {
+					Store (0x0D, Local0)
+				}
+			}
 			EXCM ()
+			Return (Local0)
 		}
 
-		/* ===== Power LED control if it is connected to the SuperIO ===== */
-		Method (PLED, 1) {
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x01, 0x01, IO0)
+				IRQNoFlags (IRQX) {}
+			})
 			ENCM ()
-			Store (8, LDN)
-			Store(OPT4, Local0)
-			And(Local0, 63, Local0)
-			Or(Local0, ShiftLeft(And(Arg0, 0x03), 6), OPT4)
+			Store (0x07, LDN)
+			Store(IO1H, Local0)
+			Store(IO1L, Local1)
+			Store(IRQ0, Local2)
 			EXCM ()
+			ShiftLeft(Local0, 8, Local0)
+			Or (Local1, Local0, Local0)
+
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			Store (Local0, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMAX)
+
+			If (Local2) {
+				CreateWordField (CRS, IRQX._INT, IRQW)
+				Store (One, Local3)
+				ShiftLeft (Local3, Local2, IRQW)
+			}
+
+			Return (CRS)
 		}
 
-		#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")
+	}
+	#endif
 
-			Method (_STA)
-			{
-				Store (0x00, Local0)
-				ENCM ()
-				Store (0x0B, LDN)
-				If (ACTR) {
+	#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) {
+			ENCM ()
+			Store(0, Local0)
+			Store (0x07, LDN)
+			If (LOr(IO2L, IO2H)) {
+				If (LOr(ACTR, ACT2)) {
 					Store (0x0F, Local0)
 				}
-				ElseIf (LOr (IO1H, IO1L))
-				{
+				Else {
 					Store (0x0D, Local0)
 				}
-				EXCM ()
-				Return (Local0)
 			}
+			EXCM ()
+			Return (Local0)
+		}
 
-			Method (_PSC) {
-				Store(^^_PSC (), Local0)
-				If (Local0) { Return (Local0) }
-				ENCM ()
-				Store (HWPW, Local0)
-				EXCM ()
-				If (Local0) { Return (1) }
-				Else { Return (0) }
-			}
-			Method (_PS0) {
-				ENCM ()
-				Store (Zero, HWPW)
-				EXCM ()
-			}
-			Method (_PS1) {
-				ENCM ()
-				Store (One, HWPW)
-				EXCM ()
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x02, 0x02, IO0)
+				IRQNoFlags (IRQX) {}
+			})
+			ENCM ()
+			Store (0x07, LDN)
+			Store(IO2H, Local0)
+			Store(IO2L, Local1)
+			Store(IRQ1, Local2)
+			EXCM ()
+			ShiftLeft(Local0, 8, Local0)
+			Or (Local1, Local0, Local0)
+
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			Store (Local0, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			Store (Local0, IMAX)
+
+			If (Local2) {
+				CreateWordField (CRS, IRQX._INT, IRQW)
+				Store (One, Local3)
+				ShiftLeft (Local3, Local2, IRQW)
 			}
 
-			Method (_CRS)
-			{
-				Name (CRS, ResourceTemplate () {
-					IO (Decode16, 0x0000, 0x0000, 0x08, 0x02, IO0)
-					IRQNoFlags (IRQX) {}
-				})
-				ENCM ()
-				Store (0x0B, LDN)
-				Store(IO1H, Local0)
-				Store(IO1L, Local1)
-				Store(IRQ1, Local2)
-				EXCM ()
-				ShiftLeft(Local0, 8, Local0)
-				Or (Local1, Local0, Local0)
+			Return (CRS)
+		}
 
-				CreateWordField (CRS, IO0._MIN, IMIN)
-				Store (Local0, IMIN)
-				CreateWordField (CRS, IO0._MAX, IMAX)
-				Store (Local0, IMAX)
+	}
+	#endif
 
-				If (Local2) {
-					CreateWordField (CRS, IRQX._INT, IRQW)
-					Store (One, Local3)
-					ShiftLeft (Local3, Local2, IRQW)
-				}
-				Return (CRS)
+	/* ==== Suspend LED control if it is connected to the SuperIO ==== */
+	Method (SLED, 1) {
+		ENCM ()
+		Store (9, LDN)
+		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 ()
+		Store (8, LDN)
+		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 ()
+			Store (0x0B, LDN)
+			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 ()
+			Store (HWPW, Local0)
+			EXCM ()
+			If (Local0) { Return (1) }
+			Else { Return (0) }
+		}
+		Method (_PS0) {
+			ENCM ()
+			Store (Zero, HWPW)
+			EXCM ()
+		}
+		Method (_PS1) {
+			ENCM ()
+			Store (One, HWPW)
+			EXCM ()
 		}
-		#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) {
+		Method (_CRS)
+		{
+			Name (CRS, ResourceTemplate () {
+				IO (Decode16, 0x0000, 0x0000, 0x08, 0x02, IO0)
+				IRQNoFlags (IRQX) {}
+			})
 			ENCM ()
 			Store (0x0B, LDN)
-			Store (CRE3, Local0)
+			Store(IO1H, Local0)
+			Store(IO1L, Local1)
+			Store(IRQ1, Local2)
 			EXCM ()
-			Return (Local0)
+			ShiftLeft(Local0, 8, Local0)
+			Or (Local1, Local0, Local0)
+
+			CreateWordField (CRS, IO0._MIN, IMIN)
+			Store (Local0, IMIN)
+			CreateWordField (CRS, IO0._MAX, IMAX)
+			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 ()
+		Store (0x0A, LDN)
+		Store (CRE3, Local0)
+		EXCM ()
+		Return (Local0)
+	}
 }




More information about the coreboot mailing list