summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Huang <tony-huang@quanta.corp-partner.google.com>2021-05-03 09:35:56 +0800
committerFurquan Shaikh <furquan@google.com>2021-05-05 01:16:29 +0000
commit1282b007be8c4ee2c6193a71f66b66ef989be4b3 (patch)
tree92114cc9b2c97e32ba2d46ac808c9d09fa9fd713
parentd6612a420cc351afc5cf8c28fcb435a27fbb7faf (diff)
downloadcoreboot-1282b007be8c4ee2c6193a71f66b66ef989be4b3.tar.xz
drivers/i2c/generic: Set S0W to D3hot for wake device
If device is supported as a wake source, _S0W should be set to D3hot. This ensures that the device is put into D3hot by the OSPM. Power resource(PRIC) for the device is listed in both _PR0 and _PR3. Thus, it ensures that the OSPM does not turn off power resource when device is put into D0 and D3hot. Hence, it is capable of waking the system from D3hot state. However, if it is put into D3cold, then the power resource is turned off by the OSPM. The devices we are currently looking at for touchscreen/touchpad do not really support auxiliary power and so do not support wake from D3cold. BUG=b:186070097 TEST=build and check device wake state _S0W set to 3 in ssdt table. Change-Id: I34e4b2350875530d3337be700276bcc4fb1f810a Signed-off-by: Tony Huang <tony-huang@quanta.corp-partner.google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/52847 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
-rw-r--r--Documentation/acpi/devicetree.md4
-rw-r--r--src/drivers/i2c/generic/generic.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/Documentation/acpi/devicetree.md b/Documentation/acpi/devicetree.md
index f121698ed5..c184fa04e3 100644
--- a/Documentation/acpi/devicetree.md
+++ b/Documentation/acpi/devicetree.md
@@ -65,7 +65,7 @@ Scope (\_SB.PCI0.I2C0)
0x0000002D,
}
})
- Name (_S0W, 0x04) // _S0W: S0 Device Wake State
+ Name (_S0W, ACPI_DEVICE_SLEEP_D3_HOT) // _S0W: S0 Device Wake State
Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake
{
0x15, // GPE #21
@@ -196,7 +196,7 @@ for more details on ACPI methods)
### _S0W (S0 Device Wake State)
_S0W indicates the deepest S0 sleep state this device can wake itself from,
-which in this case is 4, representing _D3cold_.
+which in this case is ACPI_DEVICE_SLEEP_D3_HOT, representing _D3hot_.
### _PRW (Power Resources for Wake)
_PRW indicates the power resources and events required for wake. There are no
diff --git a/src/drivers/i2c/generic/generic.c b/src/drivers/i2c/generic/generic.c
index 1c7267e897..656b9e6c16 100644
--- a/src/drivers/i2c/generic/generic.c
+++ b/src/drivers/i2c/generic/generic.c
@@ -98,7 +98,7 @@ void i2c_generic_fill_ssdt(const struct device *dev,
/* Wake capabilities */
if (config->wake) {
- acpigen_write_name_integer("_S0W", 4);
+ acpigen_write_name_integer("_S0W", ACPI_DEVICE_SLEEP_D3_HOT);
acpigen_write_PRW(config->wake, 3);
}