From b69d93c7b1e5c0d871b5bee10b64c483ac2896fb Mon Sep 17 00:00:00 2001 From: Alessandro Manganaro Date: Thu, 1 Aug 2024 10:31:20 +0200 Subject: [PATCH] drivers: bluetooth: hci: Fix stm32wb BLE behavior Implementing HCI setup function to have a correct and proper initialization procedure to fix #75318 issue (cherry picked from commit 7ca2072ed08c1d8def71b7038611a542dd3fe464) Original-Signed-off-by: Alessandro Manganaro GitOrigin-RevId: 7ca2072ed08c1d8def71b7038611a542dd3fe464 Cr-Build-Id: 8740450565536499009 Cr-Build-Url: https://cr-buildbucket.appspot.com/build/8740450565536499009 Change-Id: I4c3a74a8b336f136c54048bd08d58da665c0962f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/zephyr/+/5762726 Tested-by: Jeremy Bettis Reviewed-by: Jeremy Bettis Commit-Queue: Jeremy Bettis Tested-by: ChromeOS Prod (Robot) --- drivers/bluetooth/hci/ipm_stm32wb.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/bluetooth/hci/ipm_stm32wb.c b/drivers/bluetooth/hci/ipm_stm32wb.c index 7e672636b8febe..f476083dc8cb88 100644 --- a/drivers/bluetooth/hci/ipm_stm32wb.c +++ b/drivers/bluetooth/hci/ipm_stm32wb.c @@ -565,6 +565,19 @@ static int bt_ipm_open(const struct device *dev, bt_hci_recv_t recv) K_PRIO_COOP(CONFIG_BT_DRIVER_RX_HIGH_PRIO), 0, K_NO_WAIT); + hci->recv = recv; + + LOG_DBG("IPM Channel Open Completed"); + + return 0; +} + +static int bt_ipm_setup(const struct device *dev, const struct bt_hci_setup_params *params) +{ + ARG_UNUSED(params); + ARG_UNUSED(dev); + int err; + #ifdef CONFIG_BT_HCI_HOST err = bt_ipm_ble_init(); if (err) { @@ -572,9 +585,7 @@ static int bt_ipm_open(const struct device *dev, bt_hci_recv_t recv) } #endif /* CONFIG_BT_HCI_HOST */ - hci->recv = recv; - - LOG_DBG("IPM Channel Open Completed"); + LOG_DBG("IPM Channel Setup Completed"); return 0; } @@ -613,6 +624,7 @@ static const struct bt_hci_driver_api drv = { .close = bt_ipm_close, #endif .send = bt_ipm_send, + .setup = bt_ipm_setup, }; static int _bt_ipm_init(const struct device *dev)