Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
a55a7f9
boards: silabs: xg24_dk2601b: Enable commander runner
asmellby Nov 25, 2025
dccdadf
drivers: bluetooth: efr32: move Silabs Kconfig settings
ipankr Oct 21, 2025
f2896c7
dts: bluetooth: add base binding for BLE radio hardware capabilities
ipankr Oct 21, 2025
9a19347
dts: bindings: Rename generic-fem-two-ctrl-pins to radio-fem-two-ctrl…
ipankr Oct 31, 2025
8e24947
dts: bindings: Rename gpio-radio-coex to radio-gpio-coex
ipankr Oct 31, 2025
19a1f76
drivers: watchdog: siwx91x: Fix pause in sleep
smalae Nov 16, 2025
cc66821
tests: watchdog: wdt_basic_api: Enable PM
smalae Nov 16, 2025
a0e086f
soc: silabs: Fix clock control dependency declarations
asmellby Nov 27, 2025
847516c
drivers: power_domain: siwx91x: fix the link between pd and cpu state
Martinhoff-maker Nov 26, 2025
f2c5e95
drivers: spi: siwx91x: ensure device runtime is released on error
Martinhoff-maker Nov 26, 2025
14ada0b
drivers: dma: siwx91x: replace pm_state with pm_device (udma and gpdma)
Martinhoff-maker Nov 26, 2025
ef286cb
drivers: dma: siwx91x: fix interrupt flag reset
Martinhoff-maker Nov 26, 2025
58e1a5c
drivers: i2s: siwx91x: ensure device runtime is released
Martinhoff-maker Nov 26, 2025
3f6f568
soc: silabs: siwx91x: removed sscanf for nwp firmware version check
Martinhoff-maker Nov 27, 2025
daae59b
drivers: wifi: siwx91x: Fix AP mode channel status when using auto ch…
silabs-MuzaffarA Nov 20, 2025
ebf609a
tests: drivers: pwm: Add pwm_api overlay and update yaml file
fimohame Nov 14, 2025
c9b76e6
tests: drivers: counter: Add counter_basic_api overlay file
fimohame Nov 14, 2025
58255cd
tests: drivers: rtc: Add rtc_api overlay and update yaml file
fimohame Nov 14, 2025
b893a98
tests: dma: siwx917_rb4342a: Add chan_blen_transfer overlay files
fimohame Nov 14, 2025
656dc91
drivers: entropy: gecko_trng: Fully initialize on read
asmellby Nov 28, 2025
50aafe1
drivers: wifi: siwx91x: Fix link mode query for AP mode in channel 14
silabs-MuzaffarA Nov 24, 2025
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
2 changes: 1 addition & 1 deletion boards/ezurio/bl654_dvk/bl654_dvk_nrf52840_pa.dts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
/* Information from Nordic SDK-Based Application Development and SKY66112 datasheet */
nrf_radio_fem: fem {
status = "okay";
compatible = "generic-fem-two-ctrl-pins";
compatible = "radio-fem-two-ctrl-pins";
ctx-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
crx-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
ctx-settle-time-us = <23>;
Expand Down
4 changes: 3 additions & 1 deletion boards/panasonic/pan1783/pan1783a_pa_evb_nrf5340_cpunet.dts
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@
};

nrf_radio_fem: fem_node {
compatible = "skyworks,sky66407-11", "generic-fem-two-ctrl-pins";
compatible = "skyworks,sky66407-11", "radio-fem-two-ctrl-pins";
ctx-gpios = <&gpio0 19 GPIO_ACTIVE_HIGH>;
crx-gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
ctx-settle-time-us = <5>;
crx-settle-time-us = <5>;
};
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ supported:
- wifi
- rtc
- counter
- pwm
vendor: silabs
3 changes: 3 additions & 0 deletions boards/silabs/dev_kits/xg24_dk2601b/board.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@

board_runner_args(jlink "--device=EFR32MG24BxxxF1536" "--reset-after-load")
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)

board_runner_args(silabs_commander "--device=${CONFIG_SOC}")
include(${ZEPHYR_BASE}/boards/common/silabs_commander.board.cmake)
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ supported:
- pwm
- uart
- watchdog
- rtc
- counter
- wifi
vendor: silabs
2 changes: 1 addition & 1 deletion boards/u-blox/ubx_bmd345eval/ubx_bmd345eval_nrf52840.dts
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@
};

nrf_radio_fem: fem {
compatible = "generic-fem-two-ctrl-pins";
compatible = "radio-fem-two-ctrl-pins";
ctx-gpios = <&gpio1 5 0>;
ctx-settle-time-us = <1>;
crx-gpios = <&gpio1 6 0>;
Expand Down
1 change: 1 addition & 0 deletions drivers/adc/Kconfig.silabs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ config ADC_SILABS_IADC
bool "Silabs Incremental ADC driver"
default y
depends on DT_HAS_SILABS_IADC_ENABLED
depends on CLOCK_CONTROL
select SILABS_SISDK_IADC
select ADC_CONFIGURABLE_INPUTS
help
Expand Down
43 changes: 1 addition & 42 deletions drivers/bluetooth/hci/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -151,48 +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
select BT_HCI_SETUP
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 @@ -310,6 +268,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
60 changes: 56 additions & 4 deletions drivers/bluetooth/hci/Kconfig.silabs
Original file line number Diff line number Diff line change
@@ -1,6 +1,58 @@
# 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
select BT_HCI_SETUP
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_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
# 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
# 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
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 +112,11 @@ config BT_SILABS_EFR32_MAX_QUEUED_ADV_REPORTS
Additional advertising reports are dropped.

config BT_SILABS_EFR32_HIGH_POWER
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
1 change: 1 addition & 0 deletions drivers/comparator/Kconfig.silabs_acmp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ config COMPARATOR_SILABS_ACMP
bool "Silabs ACMP comparator driver"
default y
depends on DT_HAS_SILABS_ACMP_ENABLED
depends on CLOCK_CONTROL
select PINCTRL
select SILABS_SISDK_ACMP
help
Expand Down
1 change: 1 addition & 0 deletions drivers/dac/Kconfig.silabs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ config DAC_SILABS_VDAC
bool "Silabs DAC driver for VDAC"
default y
depends on DT_HAS_SILABS_VDAC_ENABLED
depends on CLOCK_CONTROL
select PINCTRL
select SILABS_SISDK_VDAC
help
Expand Down
29 changes: 9 additions & 20 deletions drivers/dma/dma_silabs_siwx91x.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
#include <zephyr/drivers/clock_control.h>
#include <zephyr/logging/log.h>
#include <zephyr/pm/device.h>
#include <zephyr/pm/policy.h>
#include <zephyr/pm/device_runtime.h>
#include <zephyr/types.h>
#include "rsi_rom_udma.h"
#include "rsi_rom_udma_wrapper.h"
Expand Down Expand Up @@ -63,16 +63,6 @@ struct dma_siwx91x_data {
*/
};

static void siwx91x_dma_pm_policy_state_lock_get(void)
{
pm_policy_state_lock_get(PM_STATE_SUSPEND_TO_IDLE, PM_ALL_SUBSTATES);
}

static void siwx91x_dma_pm_policy_state_lock_put(void)
{
pm_policy_state_lock_put(PM_STATE_SUSPEND_TO_IDLE, PM_ALL_SUBSTATES);
}

static enum dma_xfer_dir siwx91x_transfer_direction(uint32_t dir)
{
if (dir == MEMORY_TO_MEMORY) {
Expand Down Expand Up @@ -495,15 +485,14 @@ static int siwx91x_dma_start(const struct device *dev, uint32_t channel)
return -EINVAL;
}

/* Get the power management policy state lock */
if (!data->zephyr_channel_info[channel].channel_active) {
siwx91x_dma_pm_policy_state_lock_get();
pm_device_runtime_get(dev);
data->zephyr_channel_info[channel].channel_active = true;
}

if (RSI_UDMA_ChannelEnable(udma_handle, channel) != 0) {
if (data->zephyr_channel_info[channel].channel_active) {
siwx91x_dma_pm_policy_state_lock_put();
pm_device_runtime_put(dev);
data->zephyr_channel_info[channel].channel_active = false;
}
return -EINVAL;
Expand Down Expand Up @@ -534,7 +523,7 @@ static int siwx91x_dma_stop(const struct device *dev, uint32_t channel)
}

if (data->zephyr_channel_info[channel].channel_active) {
siwx91x_dma_pm_policy_state_lock_put();
pm_device_runtime_put(dev);
data->zephyr_channel_info[channel].channel_active = false;
}

Expand Down Expand Up @@ -680,16 +669,16 @@ static void siwx91x_dma_isr(const struct device *dev)
}

if (data->chan_info[channel].Cnt == data->chan_info[channel].Size) {
sys_write32(BIT(channel), (mem_addr_t)&cfg->reg->UDMA_DONE_STATUS_REG);
if (data->zephyr_channel_info[channel].channel_active) {
pm_device_runtime_put_async(dev, K_NO_WAIT);
data->zephyr_channel_info[channel].channel_active = false;
}
if (data->zephyr_channel_info[channel].dma_callback) {
/* Transfer complete, call user callback */
data->zephyr_channel_info[channel].dma_callback(
dev, data->zephyr_channel_info[channel].cb_data, channel, 0);
}
sys_write32(BIT(channel), (mem_addr_t)&cfg->reg->UDMA_DONE_STATUS_REG);
if (data->zephyr_channel_info[channel].channel_active) {
siwx91x_dma_pm_policy_state_lock_put();
data->zephyr_channel_info[channel].channel_active = false;
}
} else {
/* Call UDMA ROM IRQ handler. */
ROMAPI_UDMA_WRAPPER_API->uDMAx_IRQHandler(&udma_resources, udma_resources.desc,
Expand Down
Loading
Loading