Bug #40
Updated by Philipp Deppenwiese almost 9 years ago
...and possibly on other hardware.
Changeset: https://review.coreboot.org/12817
The specific change to AML I ran into involves _S5:
<pre>
--- dsdt.dsl_6911219 2016-04-11 03:59:18.610400722 +0200
+++ dsdt.dsl_64b35f3 2016-04-11 03:59:18.546402408 +0200
@@ -1,34 +1,36 @@
/*
* Intel ACPI Component Architecture
- * AML/ASL+ Disassembler version 20150619-64
- * Copyright (c) 2000 - 2015 Intel Corporation
+ * AML/ASL+ Disassembler version 20160318-64
+ * Copyright (c) 2000 - 2016 Intel Corporation
*
* Disassembling to symbolic ASL+ operators
*
- * Disassembly of dsdt.aml, Mon Apr 11 03:59:56 2016
+ * Disassembly of dsdt.aml, Mon Apr 11 04:02:42 2016
*
* Original Table Header:
* Signature "DSDT"
- * Length 0x000034F6 (13558)
+ * Length 0x0000359C (13724)
* Revision 0x02
- * Checksum 0x66 **** Incorrect checksum, should be 0x77
+ * Checksum 0xCC
* OEM ID "COREv4"
* OEM Table ID "COREBOOT"
* OEM Revision 0x20110725 (537986853)
* Compiler ID "INTL"
- * Compiler Version 0x20150619 (538248729)
+ * Compiler Version 0x20160318 (538313496)
*/
-DefinitionBlock ("dsdt.aml", "DSDT", 2, "COREv4", "COREBOOT", 0x20110725)
+DefinitionBlock ("", "DSDT", 2, "COREv4", "COREBOOT", 0x20110725)
{
/*
- * iASL Warning: There were 3 external control methods found during
- * disassembly, but additional ACPI tables to resolve these externals
- * were not specified. This resulting disassembler output file may not
- * compile because the disassembler did not know how many arguments
- * to assign to these methods. To specify the tables needed to resolve
- * external control method references, the -e option can be used to
- * specify the filenames. Note: SSDTs can be dynamically loaded at
+ * iASL Warning: There were 2 external control methods found during
+ * disassembly, but only 0 were resolved (2 unresolved). Additional
+ * ACPI tables may be required to properly disassemble the code. This
+ * resulting disassembler output file may not compile because the
+ * disassembler did not know how many arguments to assign to the
+ * unresolved methods. Note: SSDTs can be dynamically loaded at
* runtime and may or may not be available via the host OS.
+ *
+ * To specify the tables needed to resolve external control method
+ * references, the -e option can be used to specify the filenames.
* Example iASL invocations:
* iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml
* iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml
@@ -45,19 +47,15 @@
* because the disassembler had to guess at the number of arguments
* required for each:
*/
- External (G***, MethodObj) // Warning: Unresolved method, guessing 4 arguments
- External (NVSA, MethodObj) // Warning: Unresolved method, guessing 1 arguments
- External (RS**, MethodObj) // Warning: Unresolved method, guessing 6 arguments
-
- External (_PR_.CP00, UnknownObj)
+ External (_PR_.CP00, DeviceObj)
External (_PR_.CP00._PSS, UnknownObj)
- External (_PR_.CP01, UnknownObj)
- External (_PR_.CP02, UnknownObj)
- External (_PR_.CP03, UnknownObj)
- External (_PR_.CP04, UnknownObj)
- External (_PR_.CP05, UnknownObj)
- External (_PR_.CP06, UnknownObj)
- External (_PR_.CP07, UnknownObj)
+ External (_PR_.CP01, DeviceObj)
+ External (_PR_.CP02, DeviceObj)
+ External (_PR_.CP03, DeviceObj)
+ External (_PR_.CP04, DeviceObj)
+ External (_PR_.CP05, DeviceObj)
+ External (_PR_.CP06, DeviceObj)
+ External (_PR_.CP07, DeviceObj)
External (_SB_.PCI0.LPCB.SIO_.SMBX.LPCB.LNKA, UnknownObj)
External (_SB_.PCI0.LPCB.SIO_.SMBX.LPCB.LNKB, UnknownObj)
External (_SB_.PCI0.LPCB.SIO_.SMBX.LPCB.LNKC, UnknownObj)
@@ -68,7 +66,11 @@
External (_SB_.PCI0.LPCB.SIO_.SMBX.LPCB.LNKH, UnknownObj)
External (_SB_.PCI0.LPCB.SIO_.SMBX.XHC_.POSC, UnknownObj)
External (_TZ_.SKIN, UnknownObj)
- External (LCD0, UnknownObj)
+ External (_TZ_.THRM, UnknownObj)
+ External (G***, MethodObj) // Warning: Unknown method, guessing 4 arguments
+ External (LCD0, DeviceObj)
+ External (NVSA, UnknownObj)
+ External (RS**, MethodObj) // Warning: Unknown method, guessing 6 arguments
OperationRegion (APMP, SystemIO, 0xB2, 0x02)
Field (APMP, ByteAcc, NoLock, Preserve)
@@ -164,152 +166,154 @@
Name (PICM, Zero)
Name (DSEN, One)
- OperationRegion (GNVS, SystemMemory, NVSA (0x0F00), Field (GNVS, ByteAcc, NoLock, Preserve)
- {
- OSYS, 16,
- SMIF, 8,
- PRM0, 8,
- PRM1, 8,
- SCIF, 8,
- PRM2, 8,
- PRM3, 8,
- LCKF, 8,
- PRM4, 8,
- PRM5, 8,
- P80D, 32,
- LIDS, 8,
- PWRS, 8,
- TLVL, 8,
- FLVL, 8,
- TCRT, 8,
- TPSV, 8,
- TMAX, 8,
- F0OF, 8,
- F0ON, 8,
- F0PW, 8,
- F1OF, 8,
- F1ON, 8,
- F1PW, 8,
- F2OF, 8,
- F2ON, 8,
- F2PW, 8,
- F3OF, 8,
- F3ON, 8,
- F3PW, 8,
- F4OF, 8,
- F4ON, 8,
- F4PW, 8,
- TMPS, 8,
- Offset (0x28),
- APIC, 8,
- MPEN, 8,
- PCP0, 8,
- PCP1, 8,
- PPCM, 8,
- PCNT, 8,
- Offset (0x32),
- NATP, 8,
- S5U0, 8,
- S5U1, 8,
- S3U0, 8,
- S3U1, 8,
- S33G, 8,
- CMEM, 32,
- IGDS, 8,
- TLST, 8,
- CADL, 8,
- PADL, 8,
- CSTE, 16,
- NSTE, 16,
- SSTE, 16,
- NDID, 8,
- DID1, 32,
- DID2, 32,
- DID3, 32,
- DID4, 32,
- DID5, 32,
- Offset (0x64),
- BLCS, 8,
- BRTL, 8,
- ODDS, 8,
- Offset (0x6E),
- ALSE, 8,
- ALAF, 8,
- LLOW, 8,
- LHIH, 8,
- Offset (0x78),
- EMAE, 8,
- EMAP, 16,
- EMAL, 16,
- Offset (0x82),
- MEFE, 8,
- Offset (0x8C),
- TPMP, 8,
- TPME, 8,
- Offset (0x96),
- GTF0, 56,
- GTF1, 56,
- GTF2, 56,
- IDEM, 8,
- IDET, 8,
- Offset (0xB2),
- XHCI, 8,
- Offset (0xB4),
- ASLB, 32,
- IBTT, 8,
- IPAT, 8,
- ITVF, 8,
- ITVM, 8,
- IPSC, 8,
- IBLC, 8,
- IBIA, 8,
- ISSC, 8,
- I409, 8,
- I509, 8,
- I609, 8,
- I709, 8,
- IDMM, 8,
- IDMS, 8,
- IF1E, 8,
- HVCO, 8,
- NXD1, 32,
- NXD2, 32,
- NXD3, 32,
- NXD4, 32,
- NXD5, 32,
- NXD6, 32,
- NXD7, 32,
- NXD8, 32,
- ISCI, 8,
- PAVP, 8,
- Offset (0xEB),
- OSCC, 8,
- NPCE, 8,
- PLFL, 8,
- BREV, 8,
- DPBM, 8,
- DPCM, 8,
- DPDM, 8,
- ALFP, 8,
- IMON, 8,
- MMIO, 8,
- Offset (0x100),
- VBT0, 32,
- VBT1, 32,
- VBT2, 32,
- VBT3, 16,
- VBT4, 2048,
- VBT5, 512,
- VBT6, 512,
- VBT7, 32,
- VBT8, 32,
- VBT9, 32,
- CHVD, 24576,
- VBTA, 32,
- MEHH, 256,
- RMOB, 32,
- RMOL, 32
- })
+ OperationRegion (GNVS, SystemMemory, NVSA, 0x0F00)
+ Field (GNVS, ByteAcc, NoLock, Preserve)
+ {
+ OSYS, 16,
+ SMIF, 8,
+ PRM0, 8,
+ PRM1, 8,
+ SCIF, 8,
+ PRM2, 8,
+ PRM3, 8,
+ LCKF, 8,
+ PRM4, 8,
+ PRM5, 8,
+ P80D, 32,
+ LIDS, 8,
+ PWRS, 8,
+ TLVL, 8,
+ FLVL, 8,
+ TCRT, 8,
+ TPSV, 8,
+ TMAX, 8,
+ F0OF, 8,
+ F0ON, 8,
+ F0PW, 8,
+ F1OF, 8,
+ F1ON, 8,
+ F1PW, 8,
+ F2OF, 8,
+ F2ON, 8,
+ F2PW, 8,
+ F3OF, 8,
+ F3ON, 8,
+ F3PW, 8,
+ F4OF, 8,
+ F4ON, 8,
+ F4PW, 8,
+ TMPS, 8,
+ Offset (0x28),
+ APIC, 8,
+ MPEN, 8,
+ PCP0, 8,
+ PCP1, 8,
+ PPCM, 8,
+ PCNT, 8,
+ Offset (0x32),
+ NATP, 8,
+ S5U0, 8,
+ S5U1, 8,
+ S3U0, 8,
+ S3U1, 8,
+ S33G, 8,
+ CMEM, 32,
+ IGDS, 8,
+ TLST, 8,
+ CADL, 8,
+ PADL, 8,
+ CSTE, 16,
+ NSTE, 16,
+ SSTE, 16,
+ NDID, 8,
+ DID1, 32,
+ DID2, 32,
+ DID3, 32,
+ DID4, 32,
+ DID5, 32,
+ Offset (0x64),
+ BLCS, 8,
+ BRTL, 8,
+ ODDS, 8,
+ Offset (0x6E),
+ ALSE, 8,
+ ALAF, 8,
+ LLOW, 8,
+ LHIH, 8,
+ Offset (0x78),
+ EMAE, 8,
+ EMAP, 16,
+ EMAL, 16,
+ Offset (0x82),
+ MEFE, 8,
+ Offset (0x8C),
+ TPMP, 8,
+ TPME, 8,
+ Offset (0x96),
+ GTF0, 56,
+ GTF1, 56,
+ GTF2, 56,
+ IDEM, 8,
+ IDET, 8,
+ Offset (0xB2),
+ XHCI, 8,
+ Offset (0xB4),
+ ASLB, 32,
+ IBTT, 8,
+ IPAT, 8,
+ ITVF, 8,
+ ITVM, 8,
+ IPSC, 8,
+ IBLC, 8,
+ IBIA, 8,
+ ISSC, 8,
+ I409, 8,
+ I509, 8,
+ I609, 8,
+ I709, 8,
+ IDMM, 8,
+ IDMS, 8,
+ IF1E, 8,
+ HVCO, 8,
+ NXD1, 32,
+ NXD2, 32,
+ NXD3, 32,
+ NXD4, 32,
+ NXD5, 32,
+ NXD6, 32,
+ NXD7, 32,
+ NXD8, 32,
+ ISCI, 8,
+ PAVP, 8,
+ Offset (0xEB),
+ OSCC, 8,
+ NPCE, 8,
+ PLFL, 8,
+ BREV, 8,
+ DPBM, 8,
+ DPCM, 8,
+ DPDM, 8,
+ ALFP, 8,
+ IMON, 8,
+ MMIO, 8,
+ Offset (0x100),
+ VBT0, 32,
+ VBT1, 32,
+ VBT2, 32,
+ VBT3, 16,
+ VBT4, 2048,
+ VBT5, 512,
+ VBT6, 512,
+ VBT7, 32,
+ VBT8, 32,
+ VBT9, 32,
+ CHVD, 24576,
+ VBTA, 32,
+ MEHH, 256,
+ RMOB, 32,
+ RMOL, 32
+ }
+
Method (S3UE, 0, NotSerialized)
{
S3U0 = One
@@ -557,36 +561,30 @@
\_PR.CP07
})
}
- Else
+ ElseIf ((PCNT >= 0x04))
{
- If ((PCNT >= 0x04))
+ Return (Package (0x04)
{
- Return (Package (0x04)
- {
- \_PR.CP00,
- \_PR.CP01,
- \_PR.CP02,
- \_PR.CP03
- })
- }
- Else
+ \_PR.CP00,
+ \_PR.CP01,
+ \_PR.CP02,
+ \_PR.CP03
+ })
+ }
+ ElseIf ((PCNT >= 0x02))
+ {
+ Return (Package (0x02)
{
- If ((PCNT >= 0x02))
- {
- Return (Package (0x02)
- {
- \_PR.CP00,
- \_PR.CP01
- })
- }
- Else
- {
- Return (Package (0x01)
- {
- \_PR.CP00
- })
- }
- }
+ \_PR.CP00,
+ \_PR.CP01
+ })
+ }
+ Else
+ {
+ Return (Package (0x01)
+ {
+ \_PR.CP00
+ })
}
}
@@ -842,7 +840,7 @@
Local1 = SizeOf (\_PR.CP00._PSS)
While ((Local0 < Local1))
{
- Local2 = (DerefOf (Index (DerefOf (Index (\_PR.CP00._PSS, Local0)), 0x04)) >> 0x08)
+ Local2 = (DerefOf (DerefOf (\_PR.CP00._PSS [Local0]) [0x04]) >> 0x08)
If ((Local2 == Arg0))
{
Return ((Local0 - One))
@@ -1149,17 +1147,17 @@
Local2 = 0x02
While ((Local2 < (SizeOf (BRIG) - One)))
{
- Local3 = DerefOf (Index (BRIG, Local2))
+ Local3 = DerefOf (BRIG [Local2])
Local3 = ((Local3 * Local1) / 0x64)
If ((Local0 <= Local3))
{
- Return (DerefOf (Index (BRIG, Local2)))
+ Return (DerefOf (BRIG [Local2]))
}
Local2 += One
}
- Return (DerefOf (Index (BRIG, Local2)))
+ Return (DerefOf (BRIG [Local2]))
}
Name (BRCT, Zero)
@@ -1199,7 +1197,7 @@
Local0--
}
- XBCM (DerefOf (Index (BRIG, Local0)))
+ XBCM (DerefOf (BRIG [Local0]))
}
}
@@ -1217,7 +1215,7 @@
Local0++
}
- XBCM (DerefOf (Index (BRIG, Local0)))
+ XBCM (DerefOf (BRIG [Local0]))
}
}
@@ -1760,71 +1758,59 @@
Return (IQAP) /* \_SB_.PCI0.IRQM.IQAP */
}
}
- Else
+ ElseIf ((Match (Package (0x02)
+ {
+ 0x02,
+ 0x06
+ }, MEQ, _T_0, MTR, Zero, Zero) != Ones))
{
- If ((Match (Package (0x02)
- {
- 0x02,
- 0x06
- }, MEQ, _T_0, MTR, Zero, Zero) != Ones))
+ If (PICM)
{
- If (PICM)
- {
- Return (IQBA) /* \_SB_.PCI0.IRQM.IQBA */
- }
- Else
- {
- Return (IQBP) /* \_SB_.PCI0.IRQM.IQBP */
- }
+ Return (IQBA) /* \_SB_.PCI0.IRQM.IQBA */
}
Else
{
- If ((Match (Package (0x02)
- {
- 0x03,
- 0x07
- }, MEQ, _T_0, MTR, Zero, Zero) != Ones))
- {
- If (PICM)
- {
- Return (IQCA) /* \_SB_.PCI0.IRQM.IQCA */
- }
- Else
- {
- Return (IQCP) /* \_SB_.PCI0.IRQM.IQCP */
- }
- }
- Else
- {
- If ((Match (Package (0x02)
- {
- 0x04,
- 0x08
- }, MEQ, _T_0, MTR, Zero, Zero) != Ones))
- {
- If (PICM)
- {
- Return (IQDA) /* \_SB_.PCI0.IRQM.IQDA */
- }
- Else
- {
- Return (IQDP) /* \_SB_.PCI0.IRQM.IQDP */
- }
- }
- Else
- {
- If (PICM)
+ Return (IQBP) /* \_SB_.PCI0.IRQM.IQBP */
+ }
+ }
+ ElseIf ((Match (Package (0x02)
{
- Return (IQDA) /* \_SB_.PCI0.IRQM.IQDA */
- }
- Else
+ 0x03,
+ 0x07
+ }, MEQ, _T_0, MTR, Zero, Zero) != Ones))
+ {
+ If (PICM)
+ {
+ Return (IQCA) /* \_SB_.PCI0.IRQM.IQCA */
+ }
+ Else
+ {
+ Return (IQCP) /* \_SB_.PCI0.IRQM.IQCP */
+ }
+ }
+ ElseIf ((Match (Package (0x02)
{
- Return (IQDP) /* \_SB_.PCI0.IRQM.IQDP */
- }
- }
- }
+ 0x04,
+ 0x08
+ }, MEQ, _T_0, MTR, Zero, Zero) != Ones))
+ {
+ If (PICM)
+ {
+ Return (IQDA) /* \_SB_.PCI0.IRQM.IQDA */
+ }
+ Else
+ {
+ Return (IQDP) /* \_SB_.PCI0.IRQM.IQDP */
}
}
+ ElseIf (PICM)
+ {
+ Return (IQDA) /* \_SB_.PCI0.IRQM.IQDA */
+ }
+ Else
+ {
+ Return (IQDP) /* \_SB_.PCI0.IRQM.IQDP */
+ }
Break
}
@@ -2162,19 +2148,13 @@
{
Local1 = 0x0F
}
- Else
+ ElseIf ((Local0 == 0x02))
{
- If ((Local0 == 0x02))
- {
- Local1 = 0x03
- }
- Else
- {
- If ((Local0 == 0x03))
- {
- Local1 = Zero
- }
- }
+ Local1 = 0x03
+ }
+ ElseIf ((Local0 == 0x03))
+ {
+ Local1 = Zero
}
Local0 = (RPM3 & 0xFFFFFFF0)
@@ -3018,13 +2998,13 @@
Method (_BIF, 0, Serialized) // _BIF: Battery Information
{
- Index (PBIF, One) = SWAB (BTDA)
- Index (PBIF, 0x02) = SWAB (BTDF)
- Index (PBIF, 0x04) = SWAB (BTDV)
- Index (PBIF, 0x06) = SWAB (BTDL)
- Index (PBIF, 0x09) = BATM /* \BATM */
- Index (PBIF, 0x0A) = BATS /* \BATS */
- Index (PBIF, 0x0C) = BATV /* \BATV */
+ PBIF [One] = SWAB (BTDA)
+ PBIF [0x02] = SWAB (BTDF)
+ PBIF [0x04] = SWAB (BTDV)
+ PBIF [0x06] = SWAB (BTDL)
+ PBIF [0x09] = BATM /* \BATM */
+ PBIF [0x0A] = BATS /* \BATS */
+ PBIF [0x0C] = BATV /* \BATV */
Return (PBIF) /* \_SB_.PCI0.LPCB.EC0_.BAT0.PBIF */
}
@@ -3043,7 +3023,7 @@
Local4 = (Local0 & 0x04)
Local1 |= Local4
- Index (PBST, Zero) = Local1
+ PBST [Zero] = Local1
If ((Local1 != BSTP))
{
BSTP = Local1
@@ -3057,7 +3037,7 @@
Local1++
}
- Index (PBST, One) = Local1
+ PBST [One] = Local1
Local1 = SWAB (BTRA)
If (((Local1 != 0xFFFFFFFF) && (Local1 >= 0x8000)))
{
@@ -3076,8 +3056,8 @@
}
}
- Index (PBST, 0x02) = Local1
- Index (PBST, 0x03) = SWAB (BTVO)
+ PBST [0x02] = Local1
+ PBST [0x03] = SWAB (BTVO)
Return (PBST) /* \_SB_.PCI0.LPCB.EC0_.BAT0.PBST */
}
}
@@ -4054,7 +4034,8 @@
Name (_S5, Package (0x04) // _S5_: S5 System State
{
0x07,
- 0x07,
+ Zero,
+ Zero,
Zero,
Zero
})
</pre>