From 2aca802e85201d6da75ffa6e7a26454770154fc8 Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Sat, 20 Dec 2025 19:16:49 -0600 Subject: [PATCH] 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 Reviewed-on: https://review.coreboot.org/c/coreboot/+/90582 Reviewed-by: Sean Rhodes Tested-by: build bot (Jenkins) --- .../google/brya/acpi/cnvi_bt_reset.asl | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/mainboard/google/brya/acpi/cnvi_bt_reset.asl b/src/mainboard/google/brya/acpi/cnvi_bt_reset.asl index 6e84522145..4fd2ad7449 100644 --- a/src/mainboard/google/brya/acpi/cnvi_bt_reset.asl +++ b/src/mainboard/google/brya/acpi/cnvi_bt_reset.asl @@ -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 + }) + } }