drivers/usb/intel_bluetooth: 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: I8aa49ee2220ba2ea39b343ea9a9486fca9f5f3d5
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/87241
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Sean Rhodes 2025-04-09 12:44:30 +01:00 committed by Matt DeVillier
commit ea17ba0cf2

View file

@ -48,6 +48,11 @@ void acpi_device_intel_bt(const struct acpi_gpio *enable_gpio,
const struct acpi_gpio *reset_gpio,
bool audio_offload)
{
/*
* Name (_S0W, 3)
*/
acpigen_write_name_integer("_S0W", ACPI_DEVICE_SLEEP_D3_HOT);
/*
* Name (RDLY, 0x69)
*/
@ -233,32 +238,6 @@ void acpi_device_intel_bt(const struct acpi_gpio *enable_gpio,
}
acpigen_pop_len();
/*
* Method (_PS0, 0, NotSerialized)
* {
* \_SB.PCI0.SBTE(1)
* }
*/
acpigen_write_method("_PS0", 0);
{
acpigen_emit_namestring("\\_SB.PCI0.SBTE");
acpigen_emit_byte(1);
}
acpigen_pop_len();
/*
* Name (_PS3, Package (0x01)
* {
* \_SB.PCI0.SBTE(0)
* }
*/
acpigen_write_method("_PS3", 0);
{
acpigen_emit_namestring("\\_SB.PCI0.SBTE");
acpigen_emit_byte(0);
}
acpigen_pop_len();
/*
* Method (AOLD, 0, NotSerialized)
* {