summaryrefslogtreecommitdiffstats
path: root/src/soc/amd/picasso/acpi/sb_fch.asl
diff options
context:
space:
mode:
authorRaul E Rangel <rrangel@chromium.org>2020-06-10 16:29:22 -0600
committerPatrick Georgi <pgeorgi@google.com>2020-06-22 12:23:07 +0000
commita31a76976097c7d7b28b7cf0f67cb2d6c66ded48 (patch)
tree4bf19ed862b368eccaab720ff8ca5202321acd16 /src/soc/amd/picasso/acpi/sb_fch.asl
parenta3db721633b8e2f226af60864562af192e5576e2 (diff)
downloadcoreboot-a31a76976097c7d7b28b7cf0f67cb2d6c66ded48.tar.gz
coreboot-a31a76976097c7d7b28b7cf0f67cb2d6c66ded48.tar.bz2
coreboot-a31a76976097c7d7b28b7cf0f67cb2d6c66ded48.zip
amd/picasso/acpi: Add power resources for I2C and UART
This allows the kernel to runtime suspend these devices and properly shut them down. If a tty is not used, the kernel will disable the device. I omitted UART0 because the PSP will not power the controller before accessing it. This causes PSP boot failures. See b/158772504. We also can't enable UART0 D3 until we stop using the mmio kernel command line `console=uart,mmio32,0xfedc9000`. The kernel will suspend the UART controller before it notices that the mmio address matches ttyS0. This causes the kernel to fail writing to the UART. So we need to move over to `console=ttyS0`. BUG=b:153001807, b:157617092, b:157858890, b:158772504 TEST=Boot trembyle and see I2C devices entering and exiting D3. * See the UART devices entering D3 * Made sure the i2c peripherals were still functional. * Ran suspend stress test for 40+ iterations. [ 0.349094] power-0362 __acpi_power_on : Power resource [FUR1] turned on [ 0.350627] power-0362 __acpi_power_on : Power resource [FUR2] turned on [ 0.352094] power-0362 __acpi_power_on : Power resource [FUR3] turned on [ 0.353626] power-0362 __acpi_power_on : Power resource [I2C2] turned on [ 0.376980] power-0362 __acpi_power_on : Power resource [PRIC] turned on [ 0.399997] power-0362 __acpi_power_on : Power resource [PRIC] turned on [ 0.401953] power-0362 __acpi_power_on : Power resource [I2C3] turned on [ 0.403460] power-0362 __acpi_power_on : Power resource [I2C4] turned on [ 0.483646] power-0418 __acpi_power_off : Power resource [I2C4] turned off [ 1.028404] power-0418 __acpi_power_off : Power resource [I2C3] turned off [ 1.448426] power-0418 __acpi_power_off : Power resource [I2C2] turned off [ 5.308094] power-0418 __acpi_power_off : Power resource [FUR1] turned off [ 5.340833] power-0418 __acpi_power_off : Power resource [FUR2] turned off [ 5.382041] power-0418 __acpi_power_off : Power resource [FUR3] turned off [ 5.423861] power-0362 __acpi_power_on : Power resource [I2C3] turned on [ 6.698225] power-0362 __acpi_power_on : Power resource [I2C2] turned on [ 6.856573] power-0418 __acpi_power_off : Power resource [I2C3] turned off [ 8.246970] power-0418 __acpi_power_off : Power resource [I2C2] turned off Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: I04c4a729d4cb9772ab78586fdbb695b450cc1600 Reviewed-on: https://review.coreboot.org/c/coreboot/+/42473 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/soc/amd/picasso/acpi/sb_fch.asl')
-rw-r--r--src/soc/amd/picasso/acpi/sb_fch.asl72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/soc/amd/picasso/acpi/sb_fch.asl b/src/soc/amd/picasso/acpi/sb_fch.asl
index 0801c11722b0..00774fdd4fb0 100644
--- a/src/soc/amd/picasso/acpi/sb_fch.asl
+++ b/src/soc/amd/picasso/acpi/sb_fch.asl
@@ -153,6 +153,18 @@ Device (FUR1) {
Return (Local0)
}
}
+
+ Name (_PR0, Package () { \_SB.AOAC.FUR1 })
+ Name (_PR2, Package () { \_SB.AOAC.FUR1 })
+ Name (_PR3, Package () { \_SB.AOAC.FUR1 })
+ Method (_PS0, 0, Serialized) {
+ Printf("FUR1._PS0")
+ \_SB.AOAC.FUR1.TDS = 1
+ }
+ Method (_PS3, 0, Serialized) {
+ Printf("FUR1._PS3")
+ \_SB.AOAC.FUR1.TDS = 3
+ }
}
Device (FUR2) {
@@ -184,6 +196,18 @@ Device (FUR2) {
Return (Local0)
}
}
+
+ Name (_PR0, Package () { \_SB.AOAC.FUR2 })
+ Name (_PR2, Package () { \_SB.AOAC.FUR2 })
+ Name (_PR3, Package () { \_SB.AOAC.FUR2 })
+ Method (_PS0, 0, Serialized) {
+ Printf("FUR2._PS0")
+ \_SB.AOAC.FUR2.TDS = 1
+ }
+ Method (_PS3, 0, Serialized) {
+ Printf("FUR2._PS3")
+ \_SB.AOAC.FUR2.TDS = 3
+ }
}
Device (FUR3) {
@@ -215,6 +239,18 @@ Device (FUR3) {
Return (Local0)
}
}
+
+ Name (_PR0, Package () { \_SB.AOAC.FUR3 })
+ Name (_PR2, Package () { \_SB.AOAC.FUR3 })
+ Name (_PR3, Package () { \_SB.AOAC.FUR3 })
+ Method (_PS0, 0, Serialized) {
+ Printf("FUR3._PS0")
+ \_SB.AOAC.FUR3.TDS = 1
+ }
+ Method (_PS3, 0, Serialized) {
+ Printf("FUR3._PS3")
+ \_SB.AOAC.FUR3.TDS = 3
+ }
}
Device (I2C2) {
@@ -249,6 +285,18 @@ Device (I2C2) {
{
Return (0x0F)
}
+
+ Name (_PR0, Package () { \_SB.AOAC.I2C2 })
+ Name (_PR2, Package () { \_SB.AOAC.I2C2 })
+ Name (_PR3, Package () { \_SB.AOAC.I2C2 })
+ Method (_PS0, 0, Serialized) {
+ Printf("I2C2._PS0")
+ \_SB.AOAC.I2C2.TDS = 1
+ }
+ Method (_PS3, 0, Serialized) {
+ Printf("I2C2._PS3")
+ \_SB.AOAC.I2C2.TDS = 3
+ }
}
Device (I2C3)
@@ -283,6 +331,18 @@ Device (I2C3)
{
Return (0x0F)
}
+
+ Name (_PR0, Package () { \_SB.AOAC.I2C3 })
+ Name (_PR2, Package () { \_SB.AOAC.I2C3 })
+ Name (_PR3, Package () { \_SB.AOAC.I2C3 })
+ Method (_PS0, 0, Serialized) {
+ Printf("I2C3._PS0")
+ \_SB.AOAC.I2C3.TDS = 1
+ }
+ Method (_PS3, 0, Serialized) {
+ Printf("I2C3._PS3")
+ \_SB.AOAC.I2C3.TDS = 3
+ }
}
Device (I2C4) {
@@ -317,6 +377,18 @@ Device (I2C4) {
{
Return (0x0F)
}
+
+ Name (_PR0, Package () { \_SB.AOAC.I2C4 })
+ Name (_PR2, Package () { \_SB.AOAC.I2C4 })
+ Name (_PR3, Package () { \_SB.AOAC.I2C4 })
+ Method (_PS0, 0, Serialized) {
+ Printf("I2C4._PS0")
+ \_SB.AOAC.I2C4.TDS = 1
+ }
+ Method (_PS3, 0, Serialized) {
+ Printf("I2C4._PS3")
+ \_SB.AOAC.I2C4.TDS = 3
+ }
}
Device (MISC)