Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 1 addition & 41 deletions drivers/bluetooth/hci/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -151,47 +151,6 @@ config BT_STM32WB0
help
ST STM32WB0 HCI Bluetooth interface

config BT_SILABS_EFR32
bool "Silabs EFR32 HCI driver"
default y
depends on DT_HAS_SILABS_BT_HCI_EFR32_ENABLED
depends on ZEPHYR_HAL_SILABS_MODULE_BLOBS || BUILD_ONLY_NO_BLOBS
depends on SOC_GECKO_HAS_RADIO
select SOC_GECKO_USE_RAIL
select PSA_CRYPTO
select SILABS_SISDK_PROTOCOL_CRYPTO
select HAS_BT_CTLR
select BT_CTLR_PHY_UPDATE_SUPPORT
select BT_CTLR_PER_INIT_FEAT_XCHG_SUPPORT
select BT_CTLR_DATA_LEN_UPDATE_SUPPORT
select BT_CTLR_EXT_REJ_IND_SUPPORT
select BT_CTLR_CHAN_SEL_2_SUPPORT
select BT_CTLR_CONN_RSSI_SUPPORT
select BT_CTLR_ADV_EXT_SUPPORT
select BT_CTLR_PRIVACY_SUPPORT
select BT_CTLR_PHY_2M_SUPPORT
select BT_CTLR_SYNC_PERIODIC_SUPPORT
select BT_CTLR_SYNC_TRANSFER_RECEIVER_SUPPORT
select BT_CTLR_SYNC_TRANSFER_SENDER_SUPPORT
help
Use Silicon Labs binary Bluetooth library to connect to the
controller.

source "drivers/bluetooth/hci/Kconfig.silabs"

config BT_SILABS_SIWX91X
bool "Silabs SiWx91x Bluetooth interface"
default y
depends on DT_HAS_SILABS_SIWX91X_BT_HCI_ENABLED
select SILABS_SIWX91X_NWP
select ENTROPY_GENERATOR
help
Use Silicon Labs Wiseconnect 3.x Bluetooth library to connect to the controller.

# SiWx917 BLE controller currently does not support HCI Command: Host Number of Completed Packets
configdefault BT_HCI_ACL_FLOW_CONTROL
default n if BT_SILABS_SIWX91X

config BT_USERCHAN
bool
depends on BOARD_NATIVE_SIM
Expand Down Expand Up @@ -308,6 +267,7 @@ source "drivers/bluetooth/hci/Kconfig.esp32"
source "drivers/bluetooth/hci/Kconfig.infineon"
source "drivers/bluetooth/hci/Kconfig.nxp"
source "drivers/bluetooth/hci/Kconfig.stm32"
source "drivers/bluetooth/hci/Kconfig.silabs"

config BT_DRIVER_QUIRK_NO_AUTO_DLE
bool "Host auto-initiated Data Length Update quirk"
Expand Down
62 changes: 58 additions & 4 deletions drivers/bluetooth/hci/Kconfig.silabs
Original file line number Diff line number Diff line change
@@ -1,6 +1,60 @@
# Copyright (c) 2025 Silicon Laboratories Inc.
#
# SPDX-License-Identifier: Apache-2.0

config BT_SILABS_SIWX91X
bool "Silabs SiWx91x Bluetooth interface"
default y
depends on DT_HAS_SILABS_SIWX91X_BT_HCI_ENABLED
select SILABS_SIWX91X_NWP
select ENTROPY_GENERATOR
help
Use Silicon Labs Wiseconnect 3.x Bluetooth library to connect to the controller.

# SiWx917 BLE controller currently does not support HCI Command: Host Number of Completed Packets
configdefault BT_HCI_ACL_FLOW_CONTROL
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wrong indent

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what exactly is wrong? It pass the compliance test.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ipankr all Kconfig definitions should start at the beginning of the line. Furthermore, I thought configdefault was only valid for Kconfig.defconfig files, but seems like there's no check for that either.

Copy link
Contributor

@nordicjm nordicjm Oct 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is no Kconfig option compliance check, not sure where you got that from. There is one check which checks spacing, it does not check any validity of Kconfig files, and another that checks for "Enable" in the name, and another that checks if it is loadable, that is the extent of testing, e.g. a 700 line file will pass CI

default n if BT_SILABS_SIWX91X

config BT_SILABS_EFR32
bool "Silabs EFR32 HCI driver"
default y
depends on DT_HAS_SILABS_BT_HCI_EFR32_ENABLED
depends on ZEPHYR_HAL_SILABS_MODULE_BLOBS || BUILD_ONLY_NO_BLOBS
depends on SOC_GECKO_HAS_RADIO
select SOC_GECKO_USE_RAIL
select PSA_CRYPTO
select SILABS_SISDK_PROTOCOL_CRYPTO
select HAS_BT_CTLR

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to keep it for the readability.

# Features supported by all EFR32 devices
select BT_CTLR_PHY_UPDATE_SUPPORT
select BT_CTLR_PER_INIT_FEAT_XCHG_SUPPORT
select BT_CTLR_DATA_LEN_UPDATE_SUPPORT
select BT_CTLR_EXT_REJ_IND_SUPPORT
select BT_CTLR_CHAN_SEL_2_SUPPORT
select BT_CTLR_CONN_RSSI_SUPPORT
select BT_CTLR_ADV_EXT_SUPPORT
select BT_CTLR_PRIVACY_SUPPORT
select BT_CTLR_SYNC_PERIODIC_SUPPORT
select BT_CTLR_SYNC_TRANSFER_RECEIVER_SUPPORT
select BT_CTLR_SYNC_TRANSFER_SENDER_SUPPORT

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to keep it for the readability.

# Features supported by some EFR32 devices
select BT_CTLR_PHY_2M_SUPPORT if HAS_HW_EFR32_RADIO_BLE_2M
select BT_CTLR_PHY_CODED_SUPPORT if HAS_HW_EFR32_RADIO_BLE_CODED
select BT_CTLR_CHANNEL_SOUNDING_SUPPORT if HAS_HW_EFR32_RADIO_CS
select BT_CTLR_DF_SUPPORT if HAS_HW_EFR32_RADIO_CTE_TX
select BT_CTLR_DF_CTE_TX_SUPPORT if HAS_HW_EFR32_RADIO_CTE_TX
select BT_CTLR_DF_CTE_RX_SUPPORT if HAS_HW_EFR32_RADIO_CTE_RX
select BT_CTLR_DF_CTE_RX_SAMPLE_1US_SUPPORT if HAS_HW_EFR32_RADIO_CTE_RX
select BT_CTLR_DF_ANT_SWITCH_1US_SUPPORT if HAS_HW_EFR32_RADIO_CTE_TX
select BT_CTLR_DF_ANT_SWITCH_2US_SUPPORT if HAS_HW_EFR32_RADIO_CTE_TX
select BT_SILABS_EFR32_HIGH_POWER if HAS_HW_EFR32_RADIO_TX_HIGH_POWER

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to keep it for the readability.

Copy link
Contributor

@nordicjm nordicjm Oct 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

help
Use Silicon Labs binary Bluetooth library to connect to the
controller.

menu "EFR32 Bluetooth Controller Configuration"
depends on BT_SILABS_EFR32

Expand Down Expand Up @@ -60,11 +114,11 @@ config BT_SILABS_EFR32_MAX_QUEUED_ADV_REPORTS
Additional advertising reports are dropped.

config BT_SILABS_EFR32_HIGH_POWER
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do you need this when you have it in dts, and it has it's own kconfig below?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is a declaration. DT just selects it if hw supports it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is a symbol in Kconfig which is auto generated, you don't need a duplicate symbol

bool "High power transmission"
bool
help
Normally the transmit power is limited to 10 dBm. Enable this option
to allow the controller to transmit at higher power levels. Note that
this feature is not available on all devices.
Normally the transmit power is limited to 10 dBm. This option
is automatically enabled on devices with high power PA support
and allows the controller to transmit at higher power levels.

config BT_SILABS_EFR32_HIGH_POWER_AFH
bool "Adaptive frequency hopping for high power transmitters"
Expand Down
2 changes: 1 addition & 1 deletion dts/arm/nordic/nrf52820.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
ieee802154-supported;
ble-2mbps-supported;
ble-coded-phy-supported;
tx-high-power-supported;
ble-tx-high-power-supported;

ieee802154: ieee802154 {
compatible = "nordic,nrf-ieee802154";
Expand Down
2 changes: 1 addition & 1 deletion dts/arm/nordic/nrf52833.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
ieee802154-supported;
ble-2mbps-supported;
ble-coded-phy-supported;
tx-high-power-supported;
ble-tx-high-power-supported;

ieee802154: ieee802154 {
compatible = "nordic,nrf-ieee802154";
Expand Down
2 changes: 1 addition & 1 deletion dts/arm/nordic/nrf52840.dtsi
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* SPDX-License-Identifier: Apache-2.0 */

Check warning on line 1 in dts/arm/nordic/nrf52840.dtsi

View workflow job for this annotation

GitHub Actions / Run compliance checks on patch series (PR)

Copyright missing

dts/arm/nordic/nrf52840.dtsi:1 File has no SPDX-FileCopyrightText header, consider adding one.

#include <arm/armv7-m.dtsi>
#include <nordic/nrf_common.dtsi>
Expand Down Expand Up @@ -105,7 +105,7 @@
ieee802154-supported;
ble-2mbps-supported;
ble-coded-phy-supported;
tx-high-power-supported;
ble-tx-high-power-supported;

ieee802154: ieee802154 {
compatible = "nordic,nrf-ieee802154";
Expand Down
3 changes: 3 additions & 0 deletions dts/arm/silabs/xg21/efr32xg21.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
pa-initial-power-dbm = <10>;
pa-ramp-time-us = <10>;
pa-voltage-mv = <3300>;
ble-2mbps-supported;
ble-coded-phy-supported;
ble-tx-high-power-supported;

bt_hci_silabs: bt_hci_silabs {
compatible = "silabs,bt-hci-efr32";
Expand Down
5 changes: 5 additions & 0 deletions dts/arm/silabs/xg22/efr32xg22.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@
pa-initial-power-dbm = <10>;
pa-ramp-time-us = <2>;
pa-voltage-mv = <3300>;
ble-2mbps-supported;
ble-coded-phy-supported;
ble-cte-tx-supported;
ble-cte-rx-supported;
ble-tx-high-power-supported;

pti: pti {
compatible = "silabs,pti";
Expand Down
6 changes: 6 additions & 0 deletions dts/arm/silabs/xg24/efr32xg24.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@
pa-initial-power-dbm = <10>;
pa-ramp-time-us = <10>;
pa-voltage-mv = <3300>;
ble-2mbps-supported;
ble-coded-phy-supported;
ble-cte-tx-supported;
ble-cte-rx-supported;
ble-cs-supported;
ble-tx-high-power-supported;

bt_hci_silabs: bt_hci_silabs {
compatible = "silabs,bt-hci-efr32";
Expand Down
4 changes: 4 additions & 0 deletions dts/arm/silabs/xg27/efr32xg27.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
pa-initial-power-dbm = <10>;
pa-ramp-time-us = <2>;
pa-voltage-mv = <3300>;
ble-2mbps-supported;
ble-coded-phy-supported;
ble-cte-tx-supported;
ble-tx-high-power-supported;

bt_hci_silabs: bt_hci_silabs {
compatible = "silabs,bt-hci-efr32";
Expand Down
4 changes: 4 additions & 0 deletions dts/arm/silabs/xg29/efr32xg29.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
pa-initial-power-dbm = <10>;
pa-ramp-time-us = <2>;
pa-voltage-mv = <3300>;
ble-2mbps-supported;
ble-coded-phy-supported;
ble-cte-tx-supported;
ble-tx-high-power-supported;

bt_hci_silabs: bt_hci_silabs {
compatible = "silabs,bt-hci-efr32";
Expand Down
42 changes: 42 additions & 0 deletions dts/bindings/bluetooth/ble-radio.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Copyright (c) 2025 Nordic Semiconductor ASA
# Copyright (c) 2025 Silicon Laboratories Inc.
# SPDX-License-Identifier: Apache-2.0

description: |
Base binding for Bluetooth LE radio hardware capabilities.
These properties describe hardware-supported Bluetooth features based on
the Bluetooth Core Specification. They are read-only and indicate what
the hardware is capable of, not what features are currently enabled.
properties:
# Bluetooth 5.0
ble-2mbps-supported:
type: boolean
description: |
2 Mbps PHY support (Bluetooth 5.0 specification).
ble-coded-phy-supported:
type: boolean
description: |
Coded PHY support for Long Range (Bluetooth 5.0 specification).
# Bluetooth 5.1
ble-cte-tx-supported:
type: boolean
description: |
Constant Tone Extension transmission for Direction Finding in Angle
of Departure mode (Bluetooth 5.1 specification).
ble-cte-rx-supported:
type: boolean
description: |
Constant Tone Extension reception with IQ sampling for Direction Finding
in Angle of Arrival mode. Requires ble-cte-tx-supported capability
(Bluetooth 5.1 specification).
# Bluetooth 6.0
ble-cs-supported:
type: boolean
description: |
BLE Channel Sounding feature support (Bluetooth 6.0 specification).
21 changes: 2 additions & 19 deletions dts/bindings/net/wireless/nordic,nrf-radio.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ description: |
compatible: "nordic,nrf-radio"

include: [base.yaml]
include: [base.yaml, ble-radio.yaml]

properties:
reg:
Expand Down Expand Up @@ -212,25 +212,8 @@ properties:
If set, indicates that the radio hardware supports the IEEE 802.15.4
mode.
ble-2mbps-supported:
type: boolean
description: |
If set, indicates that the radio hardware supports the 2 Mbps BLE mode.
ble-coded-phy-supported:
type: boolean
description: |
If set, indicates that the radio hardware supports coded BLE PHY.
tx-high-power-supported:
ble-tx-high-power-supported:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
ble-tx-high-power-supported:
tx-high-power-supported:

Isnt this use of front-end-module, or Tx gain in the multi-protocol radio, right? There is nothing Bluetooth Technology related here, right?

If this is specific to Bluetooth Technology LE Power Class 1 feature, then lets name it accordingly and update the description.

type: boolean
description: |
If set, indicates that the radio hardware supports high TX power
settings.
cs-supported:
type: boolean
description: |
If set, the radio hardware supports the BLE Channel Sounding feature.
This property should be treated as read-only and should not be overridden;
the correct value is provided for your target's SoC already.
11 changes: 10 additions & 1 deletion dts/bindings/net/wireless/silabs,series2-radio.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: |
compatible: "silabs,series2-radio"

include: [base.yaml]
include: [base.yaml, ble-radio.yaml]

properties:
reg:
Expand Down Expand Up @@ -56,3 +56,12 @@ properties:
property is not set, no sub-GHz PA is enabled.
enum:
- highest

ble-tx-high-power-supported:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even though this isn't based on any spec, but since there's a property with the identical name in the nRF binding, perhaps we'd still want this in the common base binding to avoid duplication (with a mention in the description that the meaning is implementation-specific?). Thoughts from @cvinayak?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see https://github.com/zephyrproject-rtos/zephyr/pull/97994/files#r2451718718

tx-high-power-supported is very generic to wireless. Can we or do we already have a generic,radio.yaml ? this should go there.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would not put it into a common base, exactly because it is not in the spec and it is very vendor specific

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

because it is not in the spec

Hence, requesting to revert back to tx-high-power-supported and associate it with Bluetooth.

type: boolean
description: |
If set, indicates that the radio hardware supports high TX power settings.
This is a vendor-specific capability that enables transmission beyond
standard power levels (typically >10 dBm).
This property should be treated as read-only and should not be overridden;
the correct value is provided for your target's SoC already.
2 changes: 1 addition & 1 deletion dts/vendor/nordic/nrf54h20.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,7 @@
status = "disabled";
ble-2mbps-supported;
ble-coded-phy-supported;
cs-supported;
ble-cs-supported;
dfe-supported;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dfe-supported ? ble-dfe-supported, right?

ieee802154-supported;
interrupts = <44 NRF_DEFAULT_IRQ_PRIORITY>;
Expand Down
2 changes: 1 addition & 1 deletion dts/vendor/nordic/nrf54l_05_10_15.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@
ieee802154-supported;
ble-2mbps-supported;
ble-coded-phy-supported;
cs-supported;
ble-cs-supported;

ieee802154: ieee802154 {
compatible = "nordic,nrf-ieee802154";
Expand Down
2 changes: 1 addition & 1 deletion dts/vendor/nordic/nrf54lm20a.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@
ieee802154-supported;
ble-2mbps-supported;
ble-coded-phy-supported;
cs-supported;
ble-cs-supported;

ieee802154: ieee802154 {
compatible = "nordic,nrf-ieee802154";
Expand Down
4 changes: 2 additions & 2 deletions soc/nordic/common/Kconfig.peripherals
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ config HAS_HW_NRF_RADIO_BLE_CODED
def_bool $(dt_nodelabel_bool_prop,radio,ble-coded-phy-supported)

config HAS_HW_NRF_RADIO_CS
def_bool $(dt_nodelabel_bool_prop,radio,cs-supported)
def_bool $(dt_nodelabel_bool_prop,radio,ble-cs-supported)

config HAS_HW_NRF_RADIO_DFE
def_bool $(dt_nodelabel_bool_prop,radio,dfe-supported)
Expand All @@ -215,7 +215,7 @@ config HAS_HW_NRF_RADIO_IEEE802154
def_bool $(dt_nodelabel_bool_prop,radio,ieee802154-supported)

config HAS_HW_NRF_RADIO_TX_PWR_HIGH
def_bool $(dt_nodelabel_bool_prop,radio,tx-high-power-supported)
def_bool $(dt_nodelabel_bool_prop,radio,ble-tx-high-power-supported)

config HAS_HW_NRF_REGULATORS
def_bool $(dt_compat_enabled,$(DT_COMPAT_NORDIC_NRF_REGULATORS))
Expand Down
23 changes: 23 additions & 0 deletions soc/silabs/silabs_s2/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,27 @@ config SILABS_DEVICE_IS_MODULE
bool
default n

# Hardware capability flags (auto-detected from Device Tree)
# Bluetooth 5.0
config HAS_HW_EFR32_RADIO_BLE_2M
def_bool $(dt_nodelabel_bool_prop,radio,ble-2mbps-supported)

config HAS_HW_EFR32_RADIO_BLE_CODED
def_bool $(dt_nodelabel_bool_prop,radio,ble-coded-phy-supported)

# Bluetooth 5.1
config HAS_HW_EFR32_RADIO_CTE_TX
def_bool $(dt_nodelabel_bool_prop,radio,ble-cte-tx-supported)

config HAS_HW_EFR32_RADIO_CTE_RX
def_bool $(dt_nodelabel_bool_prop,radio,ble-cte-rx-supported) && HAS_HW_EFR32_RADIO_CTE_TX

# Bluetooth 6.0
config HAS_HW_EFR32_RADIO_CS
def_bool $(dt_nodelabel_bool_prop,radio,ble-cs-supported)

# Vendor-specific
config HAS_HW_EFR32_RADIO_TX_HIGH_POWER
def_bool $(dt_nodelabel_bool_prop,radio,ble-tx-high-power-supported)

endif
Loading