soc/intel/cnvi: Replace _PRx methods with _S0W object
The previous implementation used _PS0 and _PS3 methods to control the device power states. These are now replaced by a _S0W object to better align with both coreboot's existing RTD3 driver, and the examples in the ACPI specification. This ensures that the Bluetooth device is recognized as capable of reaching D3Hot when the system is in S0. Test=build and boot starlite_adl with Windows and Linux, check Bluetooth is functional and power draw decreases ~0.4W with no devices connected. Change-Id: I6762b4a2a2454d4e4de2b25e3e5db17df5a8fc63 Signed-off-by: Sean Rhodes <sean@starlabs.systems> Reviewed-on: https://review.coreboot.org/c/coreboot/+/87242 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
This commit is contained in:
parent
ea17ba0cf2
commit
ffe19bb7ad
1 changed files with 5 additions and 38 deletions
|
|
@ -86,6 +86,11 @@ static void cnvw_fill_ssdt(const struct device *dev)
|
|||
acpigen_write_field("CWAR", fields2, ARRAY_SIZE(fields2),
|
||||
FIELD_BYTEACC | FIELD_NOLOCK | FIELD_PRESERVE);
|
||||
|
||||
/*
|
||||
* Name (_S0W, 3)
|
||||
*/
|
||||
acpigen_write_name_integer("_S0W", ACPI_DEVICE_SLEEP_D3_HOT);
|
||||
|
||||
/*
|
||||
* Name (PRRS, Zero)
|
||||
*/
|
||||
|
|
@ -355,44 +360,6 @@ static void cnvw_fill_ssdt(const struct device *dev)
|
|||
}
|
||||
acpigen_pop_len();
|
||||
|
||||
/*
|
||||
* Method (_PS0, 0, NotSerialized)
|
||||
* {
|
||||
* If (CondRefOf (\_SB.PCI0.CNVC)) {
|
||||
* \_SB.PCI0.CNVS(1)
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
acpigen_write_method("_PS0", 0);
|
||||
{
|
||||
acpigen_write_if_cond_ref_of("\\_SB.PCI0.CNVC");
|
||||
{
|
||||
acpigen_emit_namestring("\\_SB.PCI0.CNVC");
|
||||
acpigen_emit_byte(1);
|
||||
}
|
||||
acpigen_pop_len();
|
||||
}
|
||||
acpigen_pop_len();
|
||||
|
||||
/*
|
||||
* Method (_PS3, 0, NotSerialized)
|
||||
* {
|
||||
* If (CondRefOf (\_SB.PCI0.CNVC)) {
|
||||
* \_SB.PCI0.CNVS(0)
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
acpigen_write_method("_PS3", 0);
|
||||
{
|
||||
acpigen_write_if_cond_ref_of("\\_SB.PCI0.CNVC");
|
||||
{
|
||||
acpigen_emit_namestring("\\_SB.PCI0.CNVC");
|
||||
acpigen_emit_byte(0);
|
||||
}
|
||||
acpigen_pop_len();
|
||||
}
|
||||
acpigen_pop_len();
|
||||
|
||||
/*
|
||||
* Method (GPEH, 0, NotSerialized)
|
||||
* {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue