Patchwork ck804 ACPI PIC/APIC interrupt logic

login
register
about
Submitter Jonathan A. Kollasch
Date 2011-05-23 19:28:45
Message ID <20110523192845.GQ24800@tarantulon.kollasch.net>
Download mbox | patch
Permalink /patch/2987/
State New, archived
Headers show

Comments

Jonathan A. Kollasch - 2011-05-23 19:28:45
Add ACPI automatic PIC/APIC interrupt routing logic for ck804.

Signed-off-by: Jonathan Kollasch <jakllsch@kollasch.net>
Stefan Reinauer - 2011-05-23 19:53:49
* Jonathan A. Kollasch <jakllsch@kollasch.net> [110523 21:28]:
> Add ACPI automatic PIC/APIC interrupt routing logic for ck804.
> 
> Signed-off-by: Jonathan Kollasch <jakllsch@kollasch.net>

> Index: src/southbridge/nvidia/ck804/acpi/ck804.asl
> ===================================================================
> --- src/southbridge/nvidia/ck804/acpi/ck804.asl	(revision 0)
> +++ src/southbridge/nvidia/ck804/acpi/ck804.asl	(revision 0)
> @@ -0,0 +1,918 @@
> +/* For _CRS */
> +Method (ILM0, 1, Serialized) {

For Methods the { should be on a new line.

> +	      If (LEqual (Arg0, 8)) {
white spaces look messed up

> +		Return (20)
> +	} ElseIf (LEqual (Arg0, 13)) {
> +		Return (21)
> +	} ElseIf (LEqual (Arg0, 2)) {
> +		Return (22)
> +	} ElseIf (LEqual (Arg0, 1)) {
> +		Return (23)
> +	} Else {
> +		Return (0)
> +	}
> +}
> +/* For _SRS */
> +Method (MLI0, 1, Serialized) {
> +	      If (LEqual (Arg0, 20)) {
> +		Return (8)

ditto

> +/* For _CRS */
> +Method (ILM1, 1, Serialized) {
> +	      If (LEqual (Arg0, 8)) {
> +		Return (16)

... and here

> +/* For _SRS */
> +Method (MLI1, 1, Serialized) {
> +	      If (LEqual (Arg0, 16)) {
> +		Return (8)

.. here too.

> +Device (APIB) {
> +	Name (_HID, EISAID ("PNP0C0F"))

Can you call these LNKA/LNKB... we used those names in all other targets
afaict.
Jonathan A. Kollasch - 2011-05-25 16:59:54
On Mon, May 23, 2011 at 09:53:49PM +0200, Stefan Reinauer wrote:
> * Jonathan A. Kollasch <jakllsch@kollasch.net> [110523 21:28]:
> > Add ACPI automatic PIC/APIC interrupt routing logic for ck804.
> > 
> > Signed-off-by: Jonathan Kollasch <jakllsch@kollasch.net>
> 
> > Index: src/southbridge/nvidia/ck804/acpi/ck804.asl
> > ===================================================================
> > --- src/southbridge/nvidia/ck804/acpi/ck804.asl	(revision 0)
> > +++ src/southbridge/nvidia/ck804/acpi/ck804.asl	(revision 0)
> > @@ -0,0 +1,918 @@
> > +/* For _CRS */
> > +Method (ILM0, 1, Serialized) {
> 
> For Methods the { should be on a new line.
> 
> > +	      If (LEqual (Arg0, 8)) {
> white spaces look messed up

No, that was intentional, i wanted the LEqual to line up,
though then I didn't pad the single character numbers ...

> 
> > +		Return (20)
> > +	} ElseIf (LEqual (Arg0, 13)) {
> > +		Return (21)
> > +	} ElseIf (LEqual (Arg0, 2)) {
> > +		Return (22)
> > +	} ElseIf (LEqual (Arg0, 1)) {
> > +		Return (23)
> > +	} Else {
> > +		Return (0)
> > +	}
> > +}
> > +/* For _SRS */
> > +Method (MLI0, 1, Serialized) {
> > +	      If (LEqual (Arg0, 20)) {
> > +		Return (8)
> 
> ditto

too much indentation inside?

> 
> > +/* For _CRS */
> > +Method (ILM1, 1, Serialized) {
> > +	      If (LEqual (Arg0, 8)) {
> > +		Return (16)
> 
> ... and here
> 
> > +/* For _SRS */
> > +Method (MLI1, 1, Serialized) {
> > +	      If (LEqual (Arg0, 16)) {
> > +		Return (8)
> 
> .. here too.
> 
> > +Device (APIB) {
> > +	Name (_HID, EISAID ("PNP0C0F"))
> 
> Can you call these LNKA/LNKB... we used those names in all other targets
> afaict.

This is intentional, I need a link Device for APIC and PIC for each
device.

	Jonathan Kollasch
Stefan Reinauer - 2011-06-02 18:24:49
* Jonathan A. Kollasch <jakllsch@kollasch.net> [110525 18:59]:
> > > +	      If (LEqual (Arg0, 8)) {
> > white spaces look messed up
> 
> No, that was intentional, i wanted the LEqual to line up,
> though then I didn't pad the single character numbers ...

Sorry not sure what you were trying to achieve. As long as the code
looks like 

        If (LEqual (Arg0, 8)) {
                ....
        } ElseIf (LEqual (Arg0, 13)) {
                ....
        } ...

you should be fine

> > > +Device (APIB) {
> > > +	Name (_HID, EISAID ("PNP0C0F"))
> > 
> > Can you call these LNKA/LNKB... we used those names in all other targets
> > afaict.
> 
> This is intentional, I need a link Device for APIC and PIC for each
> device.


Yes, you should handle the APIC/PIC cases in your LNKA/LNKB/... nodes.
I think we should still call them LNKA/LNKB/... for readability of the
code.


                Device (LNKB)
                {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x02)
                        ...
                        /* Current Resources - return irq set up in BIOS */
                        Method (_CRS, 0, NotSerialized)
                        {
                                ...
                                If (LNot (PICF)) {
                                        Return (CRSP)
                                } Else {
                                        Return (CRSA)
                                }
                        }
                        ...
                }

Patch

Index: src/southbridge/nvidia/ck804/acpi/ck804.asl
===================================================================
--- src/southbridge/nvidia/ck804/acpi/ck804.asl	(revision 0)
+++ src/southbridge/nvidia/ck804/acpi/ck804.asl	(revision 0)
@@ -0,0 +1,918 @@ 
+Device (LPCB) {
+	Name (_ADR, 0x00010000)
+	OperationRegion (LPC0, PCI_Config, 0x00, 0x100)
+	Field (LPC0, AnyAcc, NoLock, Preserve) {
+		Offset (0x7c),
+		INTA, 4, INTB, 4,
+		INTC, 4, INTD, 4,
+		INTE, 4, INTF, 4,
+		INTG, 4, INTH, 4,
+
+		INTI, 4, INTJ, 4,
+		INTK, 4, INTL, 4,
+		INTM, 4, INTN, 4,
+		INTO, 4, INTP, 4,
+
+		INTQ, 4, INTR, 4,
+		INTS, 4, INTT, 4,
+		INTU, 4, INTV, 4,
+		INTW, 4, INTX, 4,
+	}
+}
+Name (PRS0, ResourceTemplate () {
+	Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, ) {
+		/* 5,  7, 10, 11, */
+		20, 21, 22, 23,
+	}
+})
+/* For _CRS */
+Method (ILM0, 1, Serialized) {
+	      If (LEqual (Arg0, 8)) {
+		Return (20)
+	} ElseIf (LEqual (Arg0, 13)) {
+		Return (21)
+	} ElseIf (LEqual (Arg0, 2)) {
+		Return (22)
+	} ElseIf (LEqual (Arg0, 1)) {
+		Return (23)
+	} Else {
+		Return (0)
+	}
+}
+/* For _SRS */
+Method (MLI0, 1, Serialized) {
+	      If (LEqual (Arg0, 20)) {
+		Return (8)
+	} ElseIf (LEqual (Arg0, 21)) {
+		Return (13)
+	} ElseIf (LEqual (Arg0, 22)) {
+		Return (2)
+	} ElseIf (LEqual (Arg0, 23)) {
+		Return (1)
+	} Else {
+		Return (0)
+	}
+}
+Name (PRS1, ResourceTemplate () {
+	Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, ) {
+		/* 5,  7, 10, 11, */
+		16, 17, 18, 19,
+	}
+})
+/* For _CRS */
+Method (ILM1, 1, Serialized) {
+	      If (LEqual (Arg0, 8)) {
+		Return (16)
+	} ElseIf (LEqual (Arg0, 1)) {
+		Return (17)
+	} ElseIf (LEqual (Arg0, 2)) {
+		Return (18)
+	} ElseIf (LEqual (Arg0, 13)) {
+		Return (19)
+	} Else {
+		Return (0)
+	}
+}
+/* For _SRS */
+Method (MLI1, 1, Serialized) {
+	      If (LEqual (Arg0, 16)) {
+		Return (8)
+	} ElseIf (LEqual (Arg0, 17)) {
+		Return (1)
+	} ElseIf (LEqual (Arg0, 18)) {
+		Return (2)
+	} ElseIf (LEqual (Arg0, 19)) {
+		Return (13)
+	} Else {
+		Return (0)
+	}
+}
+Device (LPIA) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x00001)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTA) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTA)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTA, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTA)
+	}
+}
+Device (APIA) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x10001)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTA) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTA)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS1)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM1(\_SB.PCI0.LPCB.INTA), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		
+		Store(MLI1(LIRQ), \_SB.PCI0.LPCB.INTA)
+	}
+}
+Device (LPIB) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x00002)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTB) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTB)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTB, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTB)
+	}
+}
+Device (APIB) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x10002)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTB) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTB)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS1)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM1(\_SB.PCI0.LPCB.INTB), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		
+		Store(MLI1(LIRQ), \_SB.PCI0.LPCB.INTB)
+	}
+}
+Device (LPIC) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x00003)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTC) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTC)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTC, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTC)
+	}
+}
+Device (APIC) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x10003)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTC) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTC)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS1)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM1(\_SB.PCI0.LPCB.INTC), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		
+		Store(MLI1(LIRQ), \_SB.PCI0.LPCB.INTC)
+	}
+}
+Device (LPID) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x00004)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTD) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTD)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTD, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTD)
+	}
+}
+Device (APID) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x10004)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTD) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTD)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS1)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM1(\_SB.PCI0.LPCB.INTD), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		
+		Store(MLI1(LIRQ), \_SB.PCI0.LPCB.INTD)
+	}
+}
+#if 0
+Device (IRQE) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x10005)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTE) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTE)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTE, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTE)
+	}
+}
+#endif
+Device (LLAS) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x00006)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTK) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTK)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTK, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTK)
+	}
+}
+Device (ALAS) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x10006)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTK) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTK)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS0)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM0(\_SB.PCI0.LPCB.INTK), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTK)
+	}
+}
+Device (LUOH) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x00007)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTQ) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTQ)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTQ, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTQ)
+	}
+}
+Device (AUOH) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x10007)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTQ) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTQ)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS0)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM0(\_SB.PCI0.LPCB.INTQ), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTQ)
+	}
+}
+Device (LUEH) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x00008)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTL) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTL)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTL, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTL)
+	}
+}
+Device (AUEH) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x10008)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTL) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTL)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS0)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM0(\_SB.PCI0.LPCB.INTL), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTL)
+	}
+}
+Device (LAUD) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x00009)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTU) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTU)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTU, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTU)
+	}
+}
+Device (AAUD) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x10009)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTU) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTU)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS0)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM0(\_SB.PCI0.LPCB.INTU), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTU)
+	}
+}
+Device (LMOD) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x0000A)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTV) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTV)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTV, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTV)
+	}
+}
+Device (AMOD) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x1000A)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTV) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTV)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS0)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM0(\_SB.PCI0.LPCB.INTV), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTV)
+	}
+}
+Device (LPA0) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x0000C)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTW) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTW)
+		Store (0, \_SB.PCI0.LPCB.INTX)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTW, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTW)
+		Store(Local0, \_SB.PCI0.LPCB.INTX)
+	}
+}
+Device (APA0) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x1000C)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTW) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTW)
+		Store (0, \_SB.PCI0.LPCB.INTX)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS0)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM0(\_SB.PCI0.LPCB.INTW), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTW)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTX)
+	}
+}
+Device (LSA0) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x0000D)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTP) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTP)
+		Store (0, \_SB.PCI0.LPCB.INTG)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTP, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTP)
+		Store(Local0, \_SB.PCI0.LPCB.INTG)
+	}
+}
+Device (ASA0) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x1000D)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTP) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTP)
+		Store (0, \_SB.PCI0.LPCB.INTG)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS0)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM0(\_SB.PCI0.LPCB.INTP), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTP)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTG)
+	}
+}
+Device (LSA1) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x0000E)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTO) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTO)
+		Store (0, \_SB.PCI0.LPCB.INTF)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTO, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTO)
+		Store(Local0, \_SB.PCI0.LPCB.INTF)
+	}
+}
+Device (ASA1) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x1000E)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTO) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTO)
+		Store (0, \_SB.PCI0.LPCB.INTF)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS0)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM0(\_SB.PCI0.LPCB.INTO), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTO)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTF)
+	}
+}
+Device (LEMA) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x0000F)
+	Method (_STA, 0, Serialized) {
+		if (\_SB.PCI0.LPCB.INTS) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTS)
+	}
+	Name (_PRS, ResourceTemplate () {
+		IRQ(Level, ActiveLow, Shared) {5, 7, 10, 11}
+	})
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			IRQ(Level, ActiveLow, Shared) {}
+		})
+		CreateWordField(LRTL, 1, LIRQ)
+		ShiftLeft(1, \_SB.PCI0.LPCB.INTS, LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateWordField(Arg0, 1, LIRQ)
+		FindSetRightBit(LIRQ, Local0)
+		Decrement(Local0)
+		Store(Local0, \_SB.PCI0.LPCB.INTS)
+	}
+}
+Device (AEMA) {
+	Name (_HID, EISAID ("PNP0C0F"))
+	Name (_UID, 0x1000F)
+	Method (_STA, 0, Serialized) {
+		If (\_SB.PCI0.LPCB.INTS) {
+			Return (0xb)
+		} Else {
+			Return (0x9)
+		}
+	}
+	Method (_DIS, 0, Serialized) {
+		Store (0, \_SB.PCI0.LPCB.INTS)
+	}
+	Method (_PRS, 0, Serialized) {
+		Return (PRS0)
+	}
+	Method (_CRS, 0, Serialized) {
+		Name (LRTL, ResourceTemplate() {
+			Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,,) { 0 }
+		})
+		CreateDWordField (LRTL, 5, LIRQ)
+		Store(ILM0(\_SB.PCI0.LPCB.INTS), LIRQ)
+		Return (LRTL)
+	}
+	Method (_SRS, 1, Serialized) {
+		CreateDWordField(Arg0, 5, LIRQ)
+		Store(MLI0(LIRQ), \_SB.PCI0.LPCB.INTS)
+	}
+}