mb/google/brya: add cnvi BT recovery mechanism

Add BT _PRR related methods to mitigate BT lost issue.

Refer to Intel TA#837249, toggling BTEN, BT_IF_SELECT, and
BT_RESET_GPIO to recovery BT device when BT became a low-speed usb
device.

BUG=b:451095940
TEST=Run reboot stress and check kernel log, BT could be recovery.
usb 3-10: new full-speed USB device number 4 using xhci_hcd
usb 3-10: New USB device found, idVendor=8087, idProduct=0033,
bcdDevice= 0.00
usb 3-10: New USB device strings: Mfr=0, Product=0, SerialNumber=0
usb 3-10: using ACPI '\_SB.PCI0.XHCI.RHUB.HS10' for 'reset' GPIO lookup
usb 3-10: USB disconnect, device number 4
usb 3-10: new low-speed USB device number 5 using xhci_hcd
usb 3-10: device descriptor read/64, error -71
usb 3-10: device descriptor read/64, error -71
usb 3-10: new low-speed USB device number 6 using xhci_hcd
usb 3-10: device descriptor read/64, error -71
usb 3-10: device descriptor read/64, error -71
usb 3-10: new full-speed USB device number 7 using xhci_hcd
usb 3-10: New USB device found, idVendor=8087, idProduct=0033,
bcdDevice= 0.00

Change-Id: I0d485a9102676624da28d5d681ea4510444e17bd
Signed-off-by: Simon Yang <simon1.yang@intel.com>
Signed-off-by: Jamie Chen <jamie.chen@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/89384
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
This commit is contained in:
Simon Yang 2025-09-30 19:53:51 +08:00 committed by Subrata Banik
commit fba8c14c27
2 changed files with 55 additions and 0 deletions

View file

@ -0,0 +1,53 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <variant/gpio.h>
/* If variants use other GPIO for BT_RESET
Define it at variant/gpio.h */
#ifndef BT_RESET_GPIO
#define BT_RESET_GPIO GPP_D4
#endif
#define CNV_BTEN GPP_VGPIO_0
#define CNV_BT_IF_SELECT GPP_VGPIO_5
External (\_SB.PCI0.CTXS, MethodObj)
External (\_SB.PCI0.STXS, MethodObj)
Scope (\_SB.PCI0.XHCI.RHUB.HS10)
{
PowerResource (CTTR, 0x00, 0x0000)
{
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (One)
}
Method (_ON, 0, NotSerialized) // _ON_: Power On
{
\_SB.PCI0.STXS(CNV_BTEN);
\_SB.PCI0.STXS(CNV_BT_IF_SELECT);
\_SB.PCI0.STXS(BT_RESET_GPIO);
Sleep (105)
}
Method (_OFF, 0, NotSerialized) // _OFF: Power Off
{
\_SB.PCI0.CTXS(CNV_BTEN);
\_SB.PCI0.CTXS(CNV_BT_IF_SELECT);
\_SB.PCI0.CTXS(BT_RESET_GPIO);
Sleep (105)
}
}
Name (_PRR, Package (0x01) // _PRR: Power Resource for Reset
{
CTTR
})
Name (_PR0, Package (0x01) // _PR0: Power Resources for D0
{
CTTR
})
}

View file

@ -46,4 +46,6 @@ DefinitionBlock(
#if CONFIG(INCLUDE_NVIDIA_GPU_ASL)
#include "acpi/gpu_top.asl"
#endif
#include "acpi/cnvi_bt_reset.asl"
}