Skip to content

soc: silabs: Add RAIL Multiprotocol support #93892

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

loopj
Copy link
Contributor

@loopj loopj commented Jul 30, 2025

This PR adds support for the Silicon Labs RAIL Multiprotocol library, which provides coexistence and arbitration between multiple wireless protocols (for example, Bluetooth LE and a proprietary 2.4 GHz stack) on Gecko SoCs.

Depends on zephyrproject-rtos/hal_silabs#126

Copy link

github-actions bot commented Jul 30, 2025

The following west manifest projects have changed revision in this Pull Request:

Name Old Revision New Revision Diff
hal_silabs zephyrproject-rtos/hal_silabs@95e9574 zephyrproject-rtos/hal_silabs@295caf3 (main) zephyrproject-rtos/[email protected]

Additional metadata changed:

Name URL Submodules West cmds module.yml Blobs
hal_silabs 12x 🆕

DNM label due to: 1 project with metadata changes and 12 blob changes

Note: This message is automatically posted and updated by the Manifest GitHub Action.

@github-actions github-actions bot added manifest manifest-hal_silabs DNM (manifest) This PR should not be merged (controlled by action-manifest) Binary Blobs Added labels Jul 30, 2025
Copy link
Contributor

@asmellby asmellby left a comment

Choose a reason for hiding this comment

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

Nice, thanks a lot for this!

@@ -310,4 +310,13 @@ config SOC_GECKO_CUSTOM_RADIO_PHY
management, sending and receiving packets on radio phy. User has
to provide the radio_config.c and radio_config.h files for the phy.

config SOC_GECKO_RAIL_MULTIPROTOCOL
Copy link
Contributor

Choose a reason for hiding this comment

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

We would like for new Kconfig options that are used to select HAL content to be in the HAL Kconfig files. We also have a desire to split options targeting Gecko SDK from options targeting Simplicity SDK, as these SDKs will diverge over time.

I propose adding config SILABS_SISDK_RAIL_MULTIPROTOCOL in modules/hal_silabs/simplicity_sdk/Kconfig, and a similar option in gecko.

The existing SOC_GECKO options will need to be disentangled over time and migrated to the HAL Kconfig files, but that's out of scope for this PR IMO.

@loopj loopj force-pushed the silabs-rail-multiprotocol-support branch from 561392d to 1b318b8 Compare July 31, 2025 17:07
@loopj
Copy link
Contributor Author

loopj commented Jul 31, 2025

@asmellby made those requested Kconfig option changes, and also fixed a pre-existing bug with blob importing on series 1 / gecko_sdk devices.

Side note: Bluetooth HCI doesn't actually seem to be implemented on any Series 1 boards in Zephyr, I'll consider adding that in a seperate set of PRs.

@loopj loopj force-pushed the silabs-rail-multiprotocol-support branch from 1b318b8 to 26ed65f Compare July 31, 2025 18:51
@loopj loopj force-pushed the silabs-rail-multiprotocol-support branch from fbb6b20 to c250f4c Compare August 1, 2025 17:03
@loopj loopj force-pushed the silabs-rail-multiprotocol-support branch from c250f4c to 4662908 Compare August 4, 2025 17:53
asmellby
asmellby previously approved these changes Aug 5, 2025
@@ -34,4 +34,12 @@ config RAIL_PA_ENABLE_CALIBRATION
calibration. This option is enabled by default, and is recommended for all
Series 2 devices.

config SILABS_SISDK_RAIL_MULTIPROTOCOL
Copy link
Contributor

@jerome-pouiller jerome-pouiller Aug 1, 2025

Choose a reason for hiding this comment

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

We use SILABS_SISDK_ prefix for the features but other Rail related options are just prefixed by RAIL_. We should keep consistency (I am not opposed to rename RAIL_ options, but it would break compatibility).

@jhedberg
Copy link
Member

jhedberg commented Aug 5, 2025

@loopj there's a conflict in west.yml that needs resolving (i.e. you need to rebase against latest main)

loopj added 4 commits August 5, 2025 08:29
Adds Kconfig options to enable RAIL Multiprotocol support

Signed-off-by: James Smith <[email protected]>
Enables RAIL Multiprotocol support by linking against the multiprotocol
RAIL library blob when `CONFIG_SILABS_GECKO_RAIL_MULTIPROTOCOL` or
`CONFIG_SILABS_SISDK_RAIL_MULTIPROTOCOL` are enabled.

Signed-off-by: James Smith <[email protected]>
Bugfix to correct broken binary blobs path when using the Gecko SDK.

Signed-off-by: James Smith <[email protected]>
Set `SL_RAIL_LIB_MULTIPROTOCOL_SUPPORT` to `1` when Rail
Multiprotocol Kconfig is enabled.

This is required to run the Bluetooth multiprotocol initialization
code during `sl_btctrl_init`.

Signed-off-by: James Smith <[email protected]>
@loopj loopj force-pushed the silabs-rail-multiprotocol-support branch from 4662908 to cc130b3 Compare August 5, 2025 15:30
@loopj
Copy link
Contributor Author

loopj commented Aug 5, 2025

@asmellby @jerome-pouiller can you please discuss and give me some concrete guidance on the following

  1. If setting the #define SL_RAIL_LIB_MULTIPROTOCOL_SUPPORT explicitly to 0 or 1 (vs implicitly) need to be changed - I set these explicitly to mirror the .slcc behavior in simplicity_sdk
  2. What I should name the Kconfig variable - I've already changed this once, so I guess I'll hold off until I have clarity

In the meantime I've rebased from main to avoid the west.yml conflict so we should be good to go there.

Thanks!

Copy link

sonarqubecloud bot commented Aug 5, 2025

@jerome-pouiller
Copy link
Contributor

  • If setting the #define SL_RAIL_LIB_MULTIPROTOCOL_SUPPORT explicitly to 0 or 1 (vs implicitly) need to be changed.

Let's keep the current code until a real policy emerge.

  • What I should name the Kconfig variable - I've already changed this once, so I guess I'll hold off until I have clarity

The right thing to do is to rename the RAIL_PA_ options. I will take care of this change today (I want to avoid half done clean-up).

@jerome-pouiller
Copy link
Contributor

jerome-pouiller commented Aug 6, 2025

I will take care of this change today

In progress: #94151

@jhedberg jhedberg removed the DNM (manifest) This PR should not be merged (controlled by action-manifest) label Aug 6, 2025
@jhedberg
Copy link
Member

jhedberg commented Aug 6, 2025

Removed the "DNM (manifest)" label after verifying that the added blobs are compliant with Zephyr policy.

@jhedberg jhedberg merged commit ba86c10 into zephyrproject-rtos:main Aug 6, 2025
27 of 29 checks passed
@loopj loopj deleted the silabs-rail-multiprotocol-support branch August 6, 2025 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants