mb/google/brya/acpi/cnvi_bt_reset: Fix BT re-enumeration under Windows

The previous implementation violated ACPI spec by attempting to
implement a reset via _ON/_OFF, which are to be used exclusively for
device power management/power state transitions. As a result, under
Windows the CNVi BT device was continually re-enumerating and unable
to be used.

Fix this by moving the reset logic out of _ON/_OFF and into _RST, where
it belongs.

TEST=build/boot Win11 on google/taeko, verify BT device is functional.

Change-Id: I1627fefbf7747129344291cc8855c15dda50cf5f
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/90582
Reviewed-by: Sean Rhodes <sean@starlabs.systems>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Matt DeVillier 2025-12-20 19:16:49 -06:00
commit 2aca802e85

View file

@ -22,7 +22,7 @@ External (\_SB.PCI0.GTXS, MethodObj)
Scope (\_SB.PCI0.XHCI.RHUB.HS10)
{
PowerResource (CTTR, 0x00, 0x0000)
PowerResource (CTTR, 0x05, 0x0000)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
@ -31,32 +31,30 @@ Scope (\_SB.PCI0.XHCI.RHUB.HS10)
Method (_ON, 0, NotSerialized) // _ON_: Power On
{
If (LEqual (\_SB.PCI0.GTXS(BT_RESET_GPIO), 0)) {
\_SB.PCI0.STXS(CNV_BTEN)
\_SB.PCI0.STXS(CNV_BT_IF_SELECT)
\_SB.PCI0.STXS(BT_RESET_GPIO)
}
}
Method (_OFF, 0, NotSerialized) // _OFF: Power Off
{
If (LEqual (\_SB.PCI0.GTXS(BT_RESET_GPIO), 1)) {
\_SB.PCI0.CTXS(CNV_BTEN)
\_SB.PCI0.CTXS(CNV_BT_IF_SELECT)
\_SB.PCI0.CTXS(BT_RESET_GPIO)
Sleep (BT_RESET_DELAY_MS)
}
}
Method (_RST, 0, NotSerialized) // _RST: Device Reset
{
\_SB.PCI0.CTXS(CNV_BTEN)
\_SB.PCI0.CTXS(CNV_BT_IF_SELECT)
\_SB.PCI0.CTXS(BT_RESET_GPIO)
Sleep (BT_RESET_DELAY_MS)
\_SB.PCI0.STXS(CNV_BTEN)
\_SB.PCI0.STXS(CNV_BT_IF_SELECT)
\_SB.PCI0.STXS(BT_RESET_GPIO)
Sleep (BT_RESET_DELAY_MS)
}
}
Name (_PRR, Package (0x01) // _PRR: Power Resource for Reset
Method (_PRR, 0, NotSerialized) // _PRR: Power Resource for Reset
{
CTTR
})
Name (_PR0, Package (0x01) // _PR0: Power Resources for D0
{
CTTR
})
Return (Package (0x01)
{
CTTR
})
}
}