From 6c654369b8e9e942087701ff67f34e33b0277acf Mon Sep 17 00:00:00 2001 From: Aksel Skauge Mellbye Date: Fri, 3 Oct 2025 11:31:15 +0200 Subject: [PATCH 1/6] boards: silabs: Move xg24_rb4187c to shared xg24 directory Introduce xg24 directory to be able to share configuration between rb4187c and new boards. Signed-off-by: Aksel Skauge Mellbye --- .../{xg24_rb4187c => xg24}/Kconfig.defconfig | 0 .../{xg24_rb4187c => xg24}/Kconfig.xg24_rb4187c | 0 .../radio_boards/{xg24_rb4187c => xg24}/board.cmake | 0 .../radio_boards/{xg24_rb4187c => xg24}/board.yml | 0 .../doc/efr32mg24-xg24-rb4187c.jpg | Bin .../{xg24_rb4187c => xg24}/doc/index.rst | 0 .../{xg24_rb4187c => xg24}/pre_dt_board.cmake | 0 .../{xg24_rb4187c => xg24}/support/openocd.cfg | 0 .../xg24_rb4187c-pinctrl.dtsi | 0 .../{xg24_rb4187c => xg24}/xg24_rb4187c.dts | 0 .../{xg24_rb4187c => xg24}/xg24_rb4187c.yaml | 0 .../{xg24_rb4187c => xg24}/xg24_rb4187c_defconfig | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/Kconfig.defconfig (100%) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/Kconfig.xg24_rb4187c (100%) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/board.cmake (100%) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/board.yml (100%) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/doc/efr32mg24-xg24-rb4187c.jpg (100%) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/doc/index.rst (100%) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/pre_dt_board.cmake (100%) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/support/openocd.cfg (100%) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/xg24_rb4187c-pinctrl.dtsi (100%) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/xg24_rb4187c.dts (100%) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/xg24_rb4187c.yaml (100%) rename boards/silabs/radio_boards/{xg24_rb4187c => xg24}/xg24_rb4187c_defconfig (100%) diff --git a/boards/silabs/radio_boards/xg24_rb4187c/Kconfig.defconfig b/boards/silabs/radio_boards/xg24/Kconfig.defconfig similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/Kconfig.defconfig rename to boards/silabs/radio_boards/xg24/Kconfig.defconfig diff --git a/boards/silabs/radio_boards/xg24_rb4187c/Kconfig.xg24_rb4187c b/boards/silabs/radio_boards/xg24/Kconfig.xg24_rb4187c similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/Kconfig.xg24_rb4187c rename to boards/silabs/radio_boards/xg24/Kconfig.xg24_rb4187c diff --git a/boards/silabs/radio_boards/xg24_rb4187c/board.cmake b/boards/silabs/radio_boards/xg24/board.cmake similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/board.cmake rename to boards/silabs/radio_boards/xg24/board.cmake diff --git a/boards/silabs/radio_boards/xg24_rb4187c/board.yml b/boards/silabs/radio_boards/xg24/board.yml similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/board.yml rename to boards/silabs/radio_boards/xg24/board.yml diff --git a/boards/silabs/radio_boards/xg24_rb4187c/doc/efr32mg24-xg24-rb4187c.jpg b/boards/silabs/radio_boards/xg24/doc/efr32mg24-xg24-rb4187c.jpg similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/doc/efr32mg24-xg24-rb4187c.jpg rename to boards/silabs/radio_boards/xg24/doc/efr32mg24-xg24-rb4187c.jpg diff --git a/boards/silabs/radio_boards/xg24_rb4187c/doc/index.rst b/boards/silabs/radio_boards/xg24/doc/index.rst similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/doc/index.rst rename to boards/silabs/radio_boards/xg24/doc/index.rst diff --git a/boards/silabs/radio_boards/xg24_rb4187c/pre_dt_board.cmake b/boards/silabs/radio_boards/xg24/pre_dt_board.cmake similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/pre_dt_board.cmake rename to boards/silabs/radio_boards/xg24/pre_dt_board.cmake diff --git a/boards/silabs/radio_boards/xg24_rb4187c/support/openocd.cfg b/boards/silabs/radio_boards/xg24/support/openocd.cfg similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/support/openocd.cfg rename to boards/silabs/radio_boards/xg24/support/openocd.cfg diff --git a/boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c-pinctrl.dtsi b/boards/silabs/radio_boards/xg24/xg24_rb4187c-pinctrl.dtsi similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c-pinctrl.dtsi rename to boards/silabs/radio_boards/xg24/xg24_rb4187c-pinctrl.dtsi diff --git a/boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c.dts b/boards/silabs/radio_boards/xg24/xg24_rb4187c.dts similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c.dts rename to boards/silabs/radio_boards/xg24/xg24_rb4187c.dts diff --git a/boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c.yaml b/boards/silabs/radio_boards/xg24/xg24_rb4187c.yaml similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c.yaml rename to boards/silabs/radio_boards/xg24/xg24_rb4187c.yaml diff --git a/boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c_defconfig b/boards/silabs/radio_boards/xg24/xg24_rb4187c_defconfig similarity index 100% rename from boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c_defconfig rename to boards/silabs/radio_boards/xg24/xg24_rb4187c_defconfig From fbfbbf2a27fa4d2d29a5e7dcbad0368c40472925 Mon Sep 17 00:00:00 2001 From: Aksel Skauge Mellbye Date: Fri, 3 Oct 2025 12:02:58 +0200 Subject: [PATCH 2/6] boards: silabs: Tidy up xg24_rb4187c board definition Add missing PWM node, remove unused defconfig, add Commander runner support. Signed-off-by: Aksel Skauge Mellbye --- .../radio_boards/xg24/Kconfig.defconfig | 12 +--- boards/silabs/radio_boards/xg24/board.cmake | 3 + ...mg24-xg24-rb4187c.jpg => xg24_rb4187c.jpg} | Bin .../xg24/doc/{index.rst => xg24_rb4187c.rst} | 52 ++++++++++++------ .../xg24/xg24_rb4187c-pinctrl.dtsi | 8 +++ .../silabs/radio_boards/xg24/xg24_rb4187c.dts | 29 +++++++++- .../radio_boards/xg24/xg24_rb4187c.yaml | 15 ++--- .../radio_boards/xg24/xg24_rb4187c_defconfig | 2 - 8 files changed, 84 insertions(+), 37 deletions(-) rename boards/silabs/radio_boards/xg24/doc/{efr32mg24-xg24-rb4187c.jpg => xg24_rb4187c.jpg} (100%) rename boards/silabs/radio_boards/xg24/doc/{index.rst => xg24_rb4187c.rst} (60%) diff --git a/boards/silabs/radio_boards/xg24/Kconfig.defconfig b/boards/silabs/radio_boards/xg24/Kconfig.defconfig index 3cb8fa60d87cf..86e79762ce035 100644 --- a/boards/silabs/radio_boards/xg24/Kconfig.defconfig +++ b/boards/silabs/radio_boards/xg24/Kconfig.defconfig @@ -1,5 +1,6 @@ # Copyright (c) 2020 Piotr Mienkowski # Copyright (c) 2020 TriaGnoSys GmbH +# Copyright (c) 2025 Silicon Laboratories Inc. # SPDX-License-Identifier: Apache-2.0 if BOARD_XG24_RB4187C @@ -8,22 +9,15 @@ config LOG_BACKEND_SWO_FREQ_HZ default 875000 depends on LOG_BACKEND_SWO -if SOC_GECKO_USE_RAIL - config FPU - default y - -endif # SOC_GECKO_USE_RAIL + default y if SOC_GECKO_USE_RAIL || BT if BT -config FPU - default y - config MAIN_STACK_SIZE default 3072 if PM default 2304 endif # BT -endif # BOARD_XG24_RB4187C +endif diff --git a/boards/silabs/radio_boards/xg24/board.cmake b/boards/silabs/radio_boards/xg24/board.cmake index 9daf13bb39adf..5f48f932f6e38 100644 --- a/boards/silabs/radio_boards/xg24/board.cmake +++ b/boards/silabs/radio_boards/xg24/board.cmake @@ -3,5 +3,8 @@ board_runner_args(jlink "--device=EFR32MG24BxxxF1536") 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) + board_runner_args(openocd) include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) diff --git a/boards/silabs/radio_boards/xg24/doc/efr32mg24-xg24-rb4187c.jpg b/boards/silabs/radio_boards/xg24/doc/xg24_rb4187c.jpg similarity index 100% rename from boards/silabs/radio_boards/xg24/doc/efr32mg24-xg24-rb4187c.jpg rename to boards/silabs/radio_boards/xg24/doc/xg24_rb4187c.jpg diff --git a/boards/silabs/radio_boards/xg24/doc/index.rst b/boards/silabs/radio_boards/xg24/doc/xg24_rb4187c.rst similarity index 60% rename from boards/silabs/radio_boards/xg24/doc/index.rst rename to boards/silabs/radio_boards/xg24/doc/xg24_rb4187c.rst index 9d836519b5e84..adbd2ab771835 100644 --- a/boards/silabs/radio_boards/xg24/doc/index.rst +++ b/boards/silabs/radio_boards/xg24/doc/xg24_rb4187c.rst @@ -3,13 +3,18 @@ Overview ******** -The EFR32MG24 Mighty Gecko Radio Board is one of the two -radio boards delivered with `xG24-PK6010A Website`_. It contains -a Wireless System-On-Chip from the EFR32MG24 family built on an -ARM Cortex®-M33F processor with excellent low power capabilities. +The `EFR32xG24 +20 dBm Radio Board`_ is the radio board delivered with the +`EFR32xG24 Pro Kit +20 dBm`_, and is also available standalone. It contains a Wireless +System-On-Chip from the EFR32MG24 family built on an ARM Cortex®-M33 processor with excellent low +power capabilities. -The BRD4187C a.k.a. xG24-RB4187C radio board plugs into the Wireless Pro Kit -Mainboard BRD4002A and is supported as one of :ref:`silabs_radio_boards`. +The radio board plugs into the Wireless Pro Kit Mainboard BRD4002A and is supported in Zephyr as one +of several :ref:`silabs_radio_boards`. + +.. _EFR32xG24 +20 dBm Radio Board: + https://www.silabs.com/development-tools/wireless/xg24-rb4187c-efr32xg24-wireless-gecko-radio-board +.. _EFR32xG24 Pro Kit +20 dBm: + https://www.silabs.com/development-tools/wireless/efr32xg24-pro-kit-20-dbm Hardware ******** @@ -28,9 +33,17 @@ documents: - `EFR32MG24 Website`_ - `EFR32MG24 Datasheet`_ - `EFR32xG24 Reference Manual`_ -- `xG24-PK6010A Website`_ - `BRD4187C User Guide`_ +.. _EFR32MG24 Website: + https://www.silabs.com/wireless/zigbee/efr32mg24-series-2-socs +.. _EFR32MG24 Datasheet: + https://www.silabs.com/documents/public/data-sheets/efr32mg24-datasheet.pdf +.. _EFR32xG24 Reference Manual: + https://www.silabs.com/documents/public/reference-manuals/efr32xg24-rm.pdf +.. _BRD4187C User Guide: + https://www.silabs.com/documents/public/reference-manuals/brd4187c-rm.pdf + Supported Features ================== @@ -56,7 +69,7 @@ Programming and Debugging Flashing ======== -Connect the BRD4002A board with a mounted BRD4187C radio module to your host +Connect the BRD4002A board with a mounted BRD4187C radio board to your host computer using the USB port. Here is an example for the :zephyr:code-sample:`hello_world` application. @@ -79,18 +92,21 @@ Reset the board and you should see the following message in the terminal: Hello World! xg24_rb4187c +Bluetooth +========= -.. _xG24-PK6010A Website: - https://www.silabs.com/development-tools/wireless/efr32xg24-pro-kit-20-dbm +To use Bluetooth functionality, run the command below to retrieve necessary binary +blobs from the Silicon Labs HAL repository. -.. _BRD4187C User Guide: - https://www.silabs.com/documents/public/user-guides/ug526-brd4187c-user-guide.pdf +.. code-block:: console -.. _EFR32MG24 Website: - https://www.silabs.com/wireless/zigbee/efr32mg24-series-2-socs + west blobs fetch hal_silabs -.. _EFR32MG24 Datasheet: - https://www.silabs.com/documents/public/data-sheets/efr32mg24-datasheet.pdf +Then build the Zephyr kernel and a Bluetooth sample with the following +command. The :zephyr:code-sample:`bluetooth_observer` sample application is used in +this example. -.. _EFR32xG24 Reference Manual: - https://www.silabs.com/documents/public/reference-manuals/brd4187c-rm.pdf +.. zephyr-app-commands:: + :zephyr-app: samples/bluetooth/observer + :board: xg24_rb4187c + :goals: build diff --git a/boards/silabs/radio_boards/xg24/xg24_rb4187c-pinctrl.dtsi b/boards/silabs/radio_boards/xg24/xg24_rb4187c-pinctrl.dtsi index 51406d86097dd..dab45e89d337e 100644 --- a/boards/silabs/radio_boards/xg24/xg24_rb4187c-pinctrl.dtsi +++ b/boards/silabs/radio_boards/xg24/xg24_rb4187c-pinctrl.dtsi @@ -46,6 +46,14 @@ }; }; + timer0_default: timer0_default { + group0 { + pins = , ; + drive-push-pull; + output-low; + }; + }; + usart0_default: usart0_default { group0 { pins = ; diff --git a/boards/silabs/radio_boards/xg24/xg24_rb4187c.dts b/boards/silabs/radio_boards/xg24/xg24_rb4187c.dts index fa0b874bbc2df..acf54cea0032c 100644 --- a/boards/silabs/radio_boards/xg24/xg24_rb4187c.dts +++ b/boards/silabs/radio_boards/xg24/xg24_rb4187c.dts @@ -7,11 +7,12 @@ /dts-v1/; #include #include +#include #include #include "xg24_rb4187c-pinctrl.dtsi" / { - model = "Silicon Labs BRD4187C (Mighty Gecko 24 Radio Board)"; + model = "Silicon Labs EFR32xG24 2.4 GHz 20 dBm Radio Board (xG24-RB4187C, BRD4187C)"; compatible = "silabs,xg24_rb4187c", "silabs,efr32mg24"; chosen { @@ -30,6 +31,8 @@ dht0 = &si7021; led0 = &led0; led1 = &led1; + pwm-led0 = &pwm_led0; + pwm-led1 = &pwm_led1; sw0 = &button0; sw1 = &button1; watchdog0 = &wdog0; @@ -49,6 +52,20 @@ }; }; + pwmleds { + compatible = "pwm-leds"; + + pwm_led0: pwm_led_0 { + pwms = <&timer0_pwm 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>; + label = "PWM LED 0"; + }; + + pwm_led1: pwm_led_1 { + pwms = <&timer0_pwm 1 PWM_MSEC(20) PWM_POLARITY_NORMAL>; + label = "PWM LED 1"; + }; + }; + buttons { compatible = "gpio-keys"; @@ -199,6 +216,16 @@ }; }; +&timer0 { + status = "okay"; + + timer0_pwm: pwm { + pinctrl-0 = <&timer0_default>; + pinctrl-names = "default"; + status = "okay"; + }; +}; + &gpio { status = "okay"; }; diff --git a/boards/silabs/radio_boards/xg24/xg24_rb4187c.yaml b/boards/silabs/radio_boards/xg24/xg24_rb4187c.yaml index a024e6e86130a..9ee092920a088 100644 --- a/boards/silabs/radio_boards/xg24/xg24_rb4187c.yaml +++ b/boards/silabs/radio_boards/xg24/xg24_rb4187c.yaml @@ -10,14 +10,15 @@ toolchain: supported: - adc - bluetooth + - comparator + - counter + - dac + - dma + - entropy + - flash - gpio - - uart + - pwm - spi - - dma + - uart - watchdog - - comparator - - dac -testing: - ignore_tags: - - pm vendor: silabs diff --git a/boards/silabs/radio_boards/xg24/xg24_rb4187c_defconfig b/boards/silabs/radio_boards/xg24/xg24_rb4187c_defconfig index d937f7c3052ba..e70f8f5c5197d 100644 --- a/boards/silabs/radio_boards/xg24/xg24_rb4187c_defconfig +++ b/boards/silabs/radio_boards/xg24/xg24_rb4187c_defconfig @@ -5,5 +5,3 @@ CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=y CONFIG_SERIAL=y CONFIG_GPIO=y -CONFIG_SOC_GECKO_EMU_DCDC=y -CONFIG_SOC_GECKO_EMU_DCDC_MODE_ON=y From 5f2540eaaa961ef8b2c316aa8e8f673cb79d1303 Mon Sep 17 00:00:00 2001 From: Aksel Skauge Mellbye Date: Fri, 3 Oct 2025 13:19:13 +0200 Subject: [PATCH 3/6] boards: silabs: Add xg24_rb4186c board Add support for xG24-RB4186C, a 10 dBm radio board using the EFR32MG24 SoC. Pinout is mostly identical to RB4187C, so share devicetree definitions between them. Signed-off-by: Aksel Skauge Mellbye --- .../radio_boards/xg24/Kconfig.defconfig | 2 +- .../radio_boards/xg24/Kconfig.xg24_rb4186c | 5 + boards/silabs/radio_boards/xg24/board.yml | 17 +- .../radio_boards/xg24/doc/xg24_rb4186c.rst | 112 +++++++ .../radio_boards/xg24/doc/xg24_rb4186c.webp | Bin 0 -> 4936 bytes .../silabs/radio_boards/xg24/xg24_rb4186c.dts | 22 ++ .../radio_boards/xg24/xg24_rb4186c.yaml | 23 ++ .../radio_boards/xg24/xg24_rb4186c_defconfig | 7 + .../silabs/radio_boards/xg24/xg24_rb4187c.dts | 307 +---------------- ...pinctrl.dtsi => xg24_rb418xc-pinctrl.dtsi} | 0 .../radio_boards/xg24/xg24_rb418xc.dtsi | 313 ++++++++++++++++++ 11 files changed, 496 insertions(+), 312 deletions(-) create mode 100644 boards/silabs/radio_boards/xg24/Kconfig.xg24_rb4186c create mode 100644 boards/silabs/radio_boards/xg24/doc/xg24_rb4186c.rst create mode 100644 boards/silabs/radio_boards/xg24/doc/xg24_rb4186c.webp create mode 100644 boards/silabs/radio_boards/xg24/xg24_rb4186c.dts create mode 100644 boards/silabs/radio_boards/xg24/xg24_rb4186c.yaml create mode 100644 boards/silabs/radio_boards/xg24/xg24_rb4186c_defconfig rename boards/silabs/radio_boards/xg24/{xg24_rb4187c-pinctrl.dtsi => xg24_rb418xc-pinctrl.dtsi} (100%) create mode 100644 boards/silabs/radio_boards/xg24/xg24_rb418xc.dtsi diff --git a/boards/silabs/radio_boards/xg24/Kconfig.defconfig b/boards/silabs/radio_boards/xg24/Kconfig.defconfig index 86e79762ce035..040d6fbae4321 100644 --- a/boards/silabs/radio_boards/xg24/Kconfig.defconfig +++ b/boards/silabs/radio_boards/xg24/Kconfig.defconfig @@ -3,7 +3,7 @@ # Copyright (c) 2025 Silicon Laboratories Inc. # SPDX-License-Identifier: Apache-2.0 -if BOARD_XG24_RB4187C +if BOARD_XG24_RB4186C || BOARD_XG24_RB4187C config LOG_BACKEND_SWO_FREQ_HZ default 875000 diff --git a/boards/silabs/radio_boards/xg24/Kconfig.xg24_rb4186c b/boards/silabs/radio_boards/xg24/Kconfig.xg24_rb4186c new file mode 100644 index 0000000000000..742f289fa43aa --- /dev/null +++ b/boards/silabs/radio_boards/xg24/Kconfig.xg24_rb4186c @@ -0,0 +1,5 @@ +# Copyright (c) 2025 Silicon Laboratories Inc. +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_XG24_RB4186C + select SOC_EFR32MG24B210F1536IM48 diff --git a/boards/silabs/radio_boards/xg24/board.yml b/boards/silabs/radio_boards/xg24/board.yml index d4254a0c42de7..518f9991e90df 100644 --- a/boards/silabs/radio_boards/xg24/board.yml +++ b/boards/silabs/radio_boards/xg24/board.yml @@ -1,6 +1,11 @@ -board: - name: xg24_rb4187c - full_name: EFR32xG24 2.4 GHz 20 dBm (xG24-RB4187C) - vendor: silabs - socs: - - name: efr32mg24b220f1536im48 +boards: + - name: xg24_rb4186c + full_name: EFR32xG24 2.4 GHz 10 dBm (xG24-RB4186C) + vendor: silabs + socs: + - name: efr32mg24b210f1536im48 + - name: xg24_rb4187c + full_name: EFR32xG24 2.4 GHz 20 dBm (xG24-RB4187C) + vendor: silabs + socs: + - name: efr32mg24b220f1536im48 diff --git a/boards/silabs/radio_boards/xg24/doc/xg24_rb4186c.rst b/boards/silabs/radio_boards/xg24/doc/xg24_rb4186c.rst new file mode 100644 index 0000000000000..08f7f01a6f377 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/doc/xg24_rb4186c.rst @@ -0,0 +1,112 @@ +.. zephyr:board:: xg24_rb4186c + +Overview +******** + +The `EFR32xG24 +10 dBm Radio Board`_ is the radio board delivered with the +`EFR32xG24 Pro Kit +10 dBm`_, and is also available standalone. It contains a Wireless +System-On-Chip from the EFR32MG24 family built on an ARM Cortex®-M33 processor with excellent low +power capabilities. + +The radio board plugs into the Wireless Pro Kit Mainboard BRD4002A and is supported in Zephyr as one +of several :ref:`silabs_radio_boards`. + +.. _EFR32xG24 +10 dBm Radio Board: + https://www.silabs.com/development-tools/wireless/xg24-rb4186c-efr32xg24-wireless-gecko-radio-board +.. _EFR32xG24 Pro Kit +10 dBm: + https://www.silabs.com/development-tools/wireless/efr32xg24-pro-kit-10-dbm + +Hardware +******** + +- EFR32MG24B210F1536IM48 Mighty Gecko SoC +- CPU core: ARM Cortex®-M33 with FPU +- Flash memory: 1536 kB +- RAM: 256 kB +- Transmit power: up to +10 dBm +- Operation frequency: 2.4 GHz +- Crystals for LFXO (32.768 kHz) and HFXO (39 MHz). + +For more information about the EFR32MG24 SoC and BRD4186C board, refer to these +documents: + +- `EFR32MG24 Website`_ +- `EFR32MG24 Datasheet`_ +- `EFR32xG24 Reference Manual`_ +- `BRD4186C User Guide`_ + +.. _EFR32MG24 Website: + https://www.silabs.com/wireless/zigbee/efr32mg24-series-2-socs +.. _EFR32MG24 Datasheet: + https://www.silabs.com/documents/public/data-sheets/efr32mg24-datasheet.pdf +.. _EFR32xG24 Reference Manual: + https://www.silabs.com/documents/public/reference-manuals/efr32xg24-rm.pdf +.. _BRD4186C User Guide: + https://www.silabs.com/documents/public/reference-manuals/brd4186c-rm.pdf + +Supported Features +================== + +.. zephyr:board-supported-hw:: + +System Clock +============ + +The EFR32MG24 SoC is configured to use the HFRCODPLL oscillator at 78 MHz as the system clock, +locked to the 39 MHz external crystal oscillator on the board. + +Serial Port +=========== + +The EFR32MG24 SoC has one USART and two EUSARTs. +USART0 is connected to the board controller and is used for the console. + +Programming and Debugging +************************* + +.. zephyr:board-supported-runners:: + +Flashing +======== + +Connect the BRD4002A board with a mounted BRD4186C radio board to your host +computer using the USB port. + +Here is an example for the :zephyr:code-sample:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: xg24_rb4186c + :goals: flash + +Open a serial terminal (minicom, putty, etc.) with the following settings: + +- Speed: 115200 +- Data: 8 bits +- Parity: None +- Stop bits: 1 + +Reset the board and you should see the following message in the terminal: + +.. code-block:: console + + Hello World! xg24_rb4186c + +Bluetooth +========= + +To use Bluetooth functionality, run the command below to retrieve necessary binary +blobs from the Silicon Labs HAL repository. + +.. code-block:: console + + west blobs fetch hal_silabs + +Then build the Zephyr kernel and a Bluetooth sample with the following +command. The :zephyr:code-sample:`bluetooth_observer` sample application is used in +this example. + +.. zephyr-app-commands:: + :zephyr-app: samples/bluetooth/observer + :board: xg24_rb4186c + :goals: build diff --git a/boards/silabs/radio_boards/xg24/doc/xg24_rb4186c.webp b/boards/silabs/radio_boards/xg24/doc/xg24_rb4186c.webp new file mode 100644 index 0000000000000000000000000000000000000000..94bd497201a52d2edb59061e6a876f284c17dffd GIT binary patch literal 4936 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 literal 0 HcmV?d00001 diff --git a/boards/silabs/radio_boards/xg24/xg24_rb4186c.dts b/boards/silabs/radio_boards/xg24/xg24_rb4186c.dts new file mode 100644 index 0000000000000..fb57dfe751cd0 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xg24_rb4186c.dts @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include "xg24_rb418xc.dtsi" + +/ { + model = "Silicon Labs EFR32xG24 2.4 GHz 10 dBm Radio Board (xG24-RB4186C, BRD4186C)"; + compatible = "silabs,xg24_rb4186c", "silabs,efr32mg24"; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <120>; +}; + +&radio { + pa-voltage-mv = <1800>; +}; diff --git a/boards/silabs/radio_boards/xg24/xg24_rb4186c.yaml b/boards/silabs/radio_boards/xg24/xg24_rb4186c.yaml new file mode 100644 index 0000000000000..caeef4c138535 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xg24_rb4186c.yaml @@ -0,0 +1,23 @@ +identifier: xg24_rb4186c +name: EFR32xG24 2.4 GHz 10 dBm Radio Board (xG24-RB4186C, BRD4186C) +type: mcu +arch: arm +ram: 256 +flash: 1536 +toolchain: + - zephyr + - gnuarmemb +supported: + - bluetooth + - comparator + - counter + - dac + - dma + - entropy + - flash + - gpio + - pwm + - spi + - uart + - watchdog +vendor: silabs diff --git a/boards/silabs/radio_boards/xg24/xg24_rb4186c_defconfig b/boards/silabs/radio_boards/xg24/xg24_rb4186c_defconfig new file mode 100644 index 0000000000000..e70f8f5c5197d --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xg24_rb4186c_defconfig @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_ARM_MPU=y +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_GPIO=y diff --git a/boards/silabs/radio_boards/xg24/xg24_rb4187c.dts b/boards/silabs/radio_boards/xg24/xg24_rb4187c.dts index acf54cea0032c..adda945b8499e 100644 --- a/boards/silabs/radio_boards/xg24/xg24_rb4187c.dts +++ b/boards/silabs/radio_boards/xg24/xg24_rb4187c.dts @@ -1,317 +1,14 @@ /* - * Copyright (c) 2023 Fr. Sauter AG + * Copyright (c) 2025 Silicon Laboratories Inc. * * SPDX-License-Identifier: Apache-2.0 */ /dts-v1/; #include -#include -#include -#include -#include "xg24_rb4187c-pinctrl.dtsi" +#include "xg24_rb418xc.dtsi" / { model = "Silicon Labs EFR32xG24 2.4 GHz 20 dBm Radio Board (xG24-RB4187C, BRD4187C)"; compatible = "silabs,xg24_rb4187c", "silabs,efr32mg24"; - - chosen { - zephyr,bt-hci = &bt_hci_silabs; - zephyr,code-partition = &slot0_partition; - zephyr,console = &usart0; - zephyr,display = &ls0xx_ls013b7dh03; - zephyr,flash = &flash0; - zephyr,shell-uart = &usart0; - zephyr,sram = &sram0; - zephyr,uart-pipe = &usart0; - }; - - /* These aliases are provided for compatibility with samples */ - aliases { - dht0 = &si7021; - led0 = &led0; - led1 = &led1; - pwm-led0 = &pwm_led0; - pwm-led1 = &pwm_led1; - sw0 = &button0; - sw1 = &button1; - watchdog0 = &wdog0; - }; - - leds { - compatible = "gpio-leds"; - - led0: led_0 { - gpios = <&gpiob 2 GPIO_ACTIVE_HIGH>; - label = "LED 0"; - }; - - led1: led_1 { - gpios = <&gpiob 4 GPIO_ACTIVE_HIGH>; - label = "LED 1"; - }; - }; - - pwmleds { - compatible = "pwm-leds"; - - pwm_led0: pwm_led_0 { - pwms = <&timer0_pwm 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>; - label = "PWM LED 0"; - }; - - pwm_led1: pwm_led_1 { - pwms = <&timer0_pwm 1 PWM_MSEC(20) PWM_POLARITY_NORMAL>; - label = "PWM LED 1"; - }; - }; - - buttons { - compatible = "gpio-keys"; - - button0: button_0 { - gpios = <&gpiob 1 GPIO_ACTIVE_LOW>; - label = "User Push Button 0"; - zephyr,code = ; - }; - - button1: button_1 { - gpios = <&gpiob 3 GPIO_ACTIVE_LOW>; - label = "User Push Button 1"; - zephyr,code = ; - }; - }; - - sensor_enable: sensor_enable { - compatible = "regulator-fixed"; - enable-gpios = <&gpiod 3 GPIO_ACTIVE_HIGH>; - regulator-name = "sensor_enable"; - }; - - exp_header: exp-header { - compatible = "silabs,exp-header"; - #gpio-cells = <2>; - gpio-map = <3 0 &gpiob 5 0>, - <4 0 &gpioc 1 0>, - <5 0 &gpioa 0 0>, - <6 0 &gpioc 2 0>, - <7 0 &gpioa 5 0>, - <8 0 &gpioc 3 0>, - <9 0 &gpiod 2 0>, - <10 0 &gpioc 0 0>, - <11 0 &gpioa 6 0>, - <12 0 &gpioa 8 0>, - <13 0 &gpioa 7 0>, - <14 0 &gpioa 9 0>, - <15 0 &gpioc 5 0>, - <16 0 &gpioc 7 0>; - gpio-map-mask = <0xffffffff 0x0>; - gpio-map-pass-thru = <0x0 GPIO_DT_FLAGS_MASK>; - }; -}; - -&cpu0 { - clock-frequency = <78000000>; -}; - -&itm { - pinctrl-0 = <&itm_default>; - pinctrl-names = "default"; - swo-ref-frequency = ; -}; - -&hfxo { - ctune = <95>; - precision = <50>; - status = "okay"; -}; - -&lfxo { - ctune = <44>; - precision = <50>; - status = "okay"; -}; - -&hfrcodpll { - clock-frequency = ; - clocks = <&hfxo>; - dpll-autorecover; - dpll-edge = "fall"; - dpll-lock = "phase"; - dpll-m = <1919>; - dpll-n = <3839>; -}; - -&em23grpaclk { - clocks = <&lfxo>; -}; - -&em4grpaclk { - clocks = <&lfxo>; -}; - -&sysrtcclk { - clocks = <&lfxo>; -}; - -&wdog0clk { - clocks = <&lfxo>; -}; - -&wdog1clk { - clocks = <&lfxo>; -}; - -&usart0 { - current-speed = <115200>; - pinctrl-0 = <&usart0_default>; - pinctrl-names = "default"; - status = "okay"; -}; - -&eusart1 { - compatible = "silabs,eusart-spi"; - #address-cells = <1>; - #size-cells = <0>; - clock-frequency = ; - pinctrl-0 = <&eusart1_default>; - pinctrl-names = "default"; - status = "okay"; - - cs-gpios = <&gpioc 8 GPIO_ACTIVE_HIGH>, <&gpioc 4 GPIO_ACTIVE_LOW>; - - ls0xx_ls013b7dh03: ls0xx@0 { - compatible = "sharp,ls0xx"; - reg = <0>; - height = <128>; - spi-max-frequency = ; - width = <128>; - extcomin-gpios = <&gpioc 6 GPIO_ACTIVE_HIGH>; - extcomin-frequency = <60>; - disp-en-gpios = <&gpioc 9 GPIO_ACTIVE_HIGH>; - }; - - mx25r80: mx25r8035f@1 { - compatible = "jedec,spi-nor"; - reg = <1>; - dpd-wakeup-sequence = <30000 20 35000>; - has-dpd; - jedec-id = [c2 28 14]; - mxicy,mx25r-power-mode = "low-power"; - size = ; - spi-max-frequency = ; - zephyr,pm-device-runtime-auto; - }; -}; - -&i2c0 { - pinctrl-0 = <&i2c0_default>; - pinctrl-names = "default"; - status = "okay"; - - si7021: si7021@40 { - compatible = "silabs,si7006"; - reg = <0x40>; - vin-supply = <&sensor_enable>; - }; -}; - -&timer0 { - status = "okay"; - - timer0_pwm: pwm { - pinctrl-0 = <&timer0_default>; - pinctrl-names = "default"; - status = "okay"; - }; -}; - -&gpio { - status = "okay"; -}; - -&gpioa { - status = "okay"; -}; - -&gpiob { - status = "okay"; - - board-controller-enable { - gpio-hog; - gpios = <0 GPIO_ACTIVE_HIGH>; - output-high; - }; -}; - -&gpioc { - status = "okay"; -}; - -&gpiod { - status = "okay"; -}; - -&wdog0 { - status = "okay"; -}; - -&sysrtc0 { - status = "okay"; -}; - -&se { - status = "okay"; -}; - -&dcdc { - regulator-boot-on; - regulator-initial-mode = ; - silabs,pfmx-peak-current-milliamp = <100>; - status = "okay"; -}; - -&flash0 { - partitions { - compatible = "fixed-partitions"; - #address-cells = <1>; - #size-cells = <1>; - - /* Reserve 48 kB for the bootloader */ - boot_partition: partition@0 { - reg = <0x0 DT_SIZE_K(48)>; - label = "mcuboot"; - read-only; - }; - - /* Reserve 728 kB for the application in slot 0 */ - slot0_partition: partition@c000 { - reg = <0x0000c000 DT_SIZE_K(728)>; - label = "image-0"; - }; - - /* Reserve 728 kB for the application in slot 1 */ - slot1_partition: partition@c2000 { - reg = <0x000c2000 DT_SIZE_K(728)>; - label = "image-1"; - }; - - /* Set 32 kB of storage at the end of the 1536 kB of flash */ - storage_partition: partition@178000 { - reg = <0x00178000 DT_SIZE_K(32)>; - label = "storage"; - }; - }; -}; - -&vdac0 { - status = "okay"; -}; - -&vdac1 { - status = "okay"; -}; - -&bt_hci_silabs { - status = "okay"; }; diff --git a/boards/silabs/radio_boards/xg24/xg24_rb4187c-pinctrl.dtsi b/boards/silabs/radio_boards/xg24/xg24_rb418xc-pinctrl.dtsi similarity index 100% rename from boards/silabs/radio_boards/xg24/xg24_rb4187c-pinctrl.dtsi rename to boards/silabs/radio_boards/xg24/xg24_rb418xc-pinctrl.dtsi diff --git a/boards/silabs/radio_boards/xg24/xg24_rb418xc.dtsi b/boards/silabs/radio_boards/xg24/xg24_rb418xc.dtsi new file mode 100644 index 0000000000000..f528920e67a38 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xg24_rb418xc.dtsi @@ -0,0 +1,313 @@ +/* + * Copyright (c) 2023 Fr. Sauter AG + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include "xg24_rb418xc-pinctrl.dtsi" + +/ { + chosen { + zephyr,bt-hci = &bt_hci_silabs; + zephyr,code-partition = &slot0_partition; + zephyr,console = &usart0; + zephyr,display = &ls0xx_ls013b7dh03; + zephyr,flash = &flash0; + zephyr,shell-uart = &usart0; + zephyr,sram = &sram0; + zephyr,uart-pipe = &usart0; + }; + + /* These aliases are provided for compatibility with samples */ + aliases { + dht0 = &si7021; + led0 = &led0; + led1 = &led1; + pwm-led0 = &pwm_led0; + pwm-led1 = &pwm_led1; + spi-flash0 = &mx25r80; + sw0 = &button0; + sw1 = &button1; + watchdog0 = &wdog0; + }; + + leds { + compatible = "gpio-leds"; + + led0: led_0 { + gpios = <&gpiob 2 GPIO_ACTIVE_HIGH>; + label = "LED 0"; + }; + + led1: led_1 { + gpios = <&gpiob 4 GPIO_ACTIVE_HIGH>; + label = "LED 1"; + }; + }; + + pwmleds { + compatible = "pwm-leds"; + + pwm_led0: pwm_led_0 { + pwms = <&timer0_pwm 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>; + label = "PWM LED 0"; + }; + + pwm_led1: pwm_led_1 { + pwms = <&timer0_pwm 1 PWM_MSEC(20) PWM_POLARITY_NORMAL>; + label = "PWM LED 1"; + }; + }; + + buttons { + compatible = "gpio-keys"; + + button0: button_0 { + gpios = <&gpiob 1 GPIO_ACTIVE_LOW>; + label = "User Push Button 0"; + zephyr,code = ; + }; + + button1: button_1 { + gpios = <&gpiob 3 GPIO_ACTIVE_LOW>; + label = "User Push Button 1"; + zephyr,code = ; + }; + }; + + sensor_enable: sensor_enable { + compatible = "regulator-fixed"; + enable-gpios = <&gpiod 3 GPIO_ACTIVE_HIGH>; + regulator-name = "sensor_enable"; + }; + + exp_header: exp-header { + compatible = "silabs,exp-header"; + #gpio-cells = <2>; + gpio-map = <3 0 &gpiob 5 0>, + <4 0 &gpioc 1 0>, + <5 0 &gpioa 0 0>, + <6 0 &gpioc 2 0>, + <7 0 &gpioa 5 0>, + <8 0 &gpioc 3 0>, + <9 0 &gpiod 2 0>, + <10 0 &gpioc 0 0>, + <11 0 &gpioa 6 0>, + <12 0 &gpioa 8 0>, + <13 0 &gpioa 7 0>, + <14 0 &gpioa 9 0>, + <15 0 &gpioc 5 0>, + <16 0 &gpioc 7 0>; + gpio-map-mask = <0xffffffff 0x0>; + gpio-map-pass-thru = <0x0 GPIO_DT_FLAGS_MASK>; + }; +}; + +&cpu0 { + clock-frequency = <78000000>; +}; + +&itm { + pinctrl-0 = <&itm_default>; + pinctrl-names = "default"; + swo-ref-frequency = ; +}; + +&hfxo { + ctune = <95>; + precision = <50>; + status = "okay"; +}; + +&lfxo { + ctune = <44>; + precision = <50>; + status = "okay"; +}; + +&hfrcodpll { + clock-frequency = ; + clocks = <&hfxo>; + dpll-autorecover; + dpll-edge = "fall"; + dpll-lock = "phase"; + dpll-m = <1919>; + dpll-n = <3839>; +}; + +&em23grpaclk { + clocks = <&lfxo>; +}; + +&em4grpaclk { + clocks = <&lfxo>; +}; + +&sysrtcclk { + clocks = <&lfxo>; +}; + +&wdog0clk { + clocks = <&lfxo>; +}; + +&wdog1clk { + clocks = <&lfxo>; +}; + +&usart0 { + current-speed = <115200>; + pinctrl-0 = <&usart0_default>; + pinctrl-names = "default"; + status = "okay"; +}; + +&eusart1 { + compatible = "silabs,eusart-spi"; + #address-cells = <1>; + #size-cells = <0>; + clock-frequency = ; + pinctrl-0 = <&eusart1_default>; + pinctrl-names = "default"; + status = "okay"; + + cs-gpios = <&gpioc 8 GPIO_ACTIVE_HIGH>, <&gpioc 4 GPIO_ACTIVE_LOW>; + + ls0xx_ls013b7dh03: ls0xx@0 { + compatible = "sharp,ls0xx"; + reg = <0>; + height = <128>; + spi-max-frequency = ; + width = <128>; + extcomin-gpios = <&gpioc 6 GPIO_ACTIVE_HIGH>; + extcomin-frequency = <60>; + disp-en-gpios = <&gpioc 9 GPIO_ACTIVE_HIGH>; + }; + + mx25r80: mx25r8035f@1 { + compatible = "jedec,spi-nor"; + reg = <1>; + dpd-wakeup-sequence = <30000 20 35000>; + has-dpd; + jedec-id = [c2 28 14]; + mxicy,mx25r-power-mode = "low-power"; + size = ; + spi-max-frequency = ; + zephyr,pm-device-runtime-auto; + }; +}; + +&i2c0 { + pinctrl-0 = <&i2c0_default>; + pinctrl-names = "default"; + status = "okay"; + + si7021: si7021@40 { + compatible = "silabs,si7006"; + reg = <0x40>; + vin-supply = <&sensor_enable>; + }; +}; + +&timer0 { + status = "okay"; + + timer0_pwm: pwm { + pinctrl-0 = <&timer0_default>; + pinctrl-names = "default"; + status = "okay"; + }; +}; + +&gpio { + status = "okay"; +}; + +&gpioa { + status = "okay"; +}; + +&gpiob { + status = "okay"; + + board-controller-enable { + gpio-hog; + gpios = <0 GPIO_ACTIVE_HIGH>; + output-high; + }; +}; + +&gpioc { + status = "okay"; +}; + +&gpiod { + status = "okay"; +}; + +&wdog0 { + status = "okay"; +}; + +&sysrtc0 { + status = "okay"; +}; + +&se { + status = "okay"; +}; + +&dcdc { + regulator-boot-on; + regulator-initial-mode = ; + silabs,pfmx-peak-current-milliamp = <100>; + status = "okay"; +}; + +&flash0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* Reserve 48 kB for the bootloader */ + boot_partition: partition@0 { + reg = <0x0 DT_SIZE_K(48)>; + label = "mcuboot"; + read-only; + }; + + /* Reserve 728 kB for the application in slot 0 */ + slot0_partition: partition@c000 { + reg = <0x0000c000 DT_SIZE_K(728)>; + label = "image-0"; + }; + + /* Reserve 728 kB for the application in slot 1 */ + slot1_partition: partition@c2000 { + reg = <0x000c2000 DT_SIZE_K(728)>; + label = "image-1"; + }; + + /* Set 32 kB of storage at the end of the 1536 kB of flash */ + storage_partition: partition@178000 { + reg = <0x00178000 DT_SIZE_K(32)>; + label = "storage"; + }; + }; +}; + +&vdac0 { + status = "okay"; +}; + +&vdac1 { + status = "okay"; +}; + +&bt_hci_silabs { + status = "okay"; +}; From c98b6fd7bde29f57ae395a0100f58502d16f1a7c Mon Sep 17 00:00:00 2001 From: Aksel Skauge Mellbye Date: Wed, 8 Oct 2025 20:50:29 +0200 Subject: [PATCH 4/6] dts: arm: silabs: Add xgm24 modules Add devicetree and soc entries for xgm24 modules. Signed-off-by: Aksel Skauge Mellbye --- dts/arm/silabs/xg24/bgm240pa22vna.dtsi | 42 +++++++++++++++ dts/arm/silabs/xg24/bgm240pa32vna.dtsi | 38 +++++++++++++ dts/arm/silabs/xg24/bgm240pa32vnn.dtsi | 38 +++++++++++++ dts/arm/silabs/xg24/bgm240pb22vna.dtsi | 42 +++++++++++++++ dts/arm/silabs/xg24/bgm240pb32vna.dtsi | 38 +++++++++++++ dts/arm/silabs/xg24/bgm240pb32vnn.dtsi | 38 +++++++++++++ dts/arm/silabs/xg24/bgm240sa22vna.dtsi | 5 ++ dts/arm/silabs/xg24/bgm240sb22vna.dtsi | 42 +++++++++++++++ dts/arm/silabs/xg24/mgm240pa22vna.dtsi | 42 +++++++++++++++ dts/arm/silabs/xg24/mgm240pa32vna.dtsi | 38 +++++++++++++ dts/arm/silabs/xg24/mgm240pa32vnn.dtsi | 38 +++++++++++++ dts/arm/silabs/xg24/mgm240pb22vna.dtsi | 42 +++++++++++++++ dts/arm/silabs/xg24/mgm240pb32vna.dtsi | 5 ++ dts/arm/silabs/xg24/mgm240pb32vnn.dtsi | 38 +++++++++++++ dts/arm/silabs/xg24/mgm240sa22vna.dtsi | 42 +++++++++++++++ dts/arm/silabs/xg24/mgm240sd22vna.dtsi | 5 ++ soc/silabs/silabs_s2/xg24/Kconfig.soc | 75 ++++++++++++++++++++++++-- soc/silabs/soc.yml | 15 +++++- west.yml | 2 +- 19 files changed, 618 insertions(+), 7 deletions(-) create mode 100644 dts/arm/silabs/xg24/bgm240pa22vna.dtsi create mode 100644 dts/arm/silabs/xg24/bgm240pa32vna.dtsi create mode 100644 dts/arm/silabs/xg24/bgm240pa32vnn.dtsi create mode 100644 dts/arm/silabs/xg24/bgm240pb22vna.dtsi create mode 100644 dts/arm/silabs/xg24/bgm240pb32vna.dtsi create mode 100644 dts/arm/silabs/xg24/bgm240pb32vnn.dtsi create mode 100644 dts/arm/silabs/xg24/bgm240sb22vna.dtsi create mode 100644 dts/arm/silabs/xg24/mgm240pa22vna.dtsi create mode 100644 dts/arm/silabs/xg24/mgm240pa32vna.dtsi create mode 100644 dts/arm/silabs/xg24/mgm240pa32vnn.dtsi create mode 100644 dts/arm/silabs/xg24/mgm240pb22vna.dtsi create mode 100644 dts/arm/silabs/xg24/mgm240pb32vnn.dtsi create mode 100644 dts/arm/silabs/xg24/mgm240sa22vna.dtsi diff --git a/dts/arm/silabs/xg24/bgm240pa22vna.dtsi b/dts/arm/silabs/xg24/bgm240pa22vna.dtsi new file mode 100644 index 0000000000000..2ebbbe760a90e --- /dev/null +++ b/dts/arm/silabs/xg24/bgm240pa22vna.dtsi @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,bgm240pa22vna", "silabs,bgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <80>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&radio { + pa-voltage-mv = <1800>; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/bgm240pa32vna.dtsi b/dts/arm/silabs/xg24/bgm240pa32vna.dtsi new file mode 100644 index 0000000000000..6403965f95c8a --- /dev/null +++ b/dts/arm/silabs/xg24/bgm240pa32vna.dtsi @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,bgm240pa32vna", "silabs,bgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <50>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/bgm240pa32vnn.dtsi b/dts/arm/silabs/xg24/bgm240pa32vnn.dtsi new file mode 100644 index 0000000000000..758d9e08ce9a3 --- /dev/null +++ b/dts/arm/silabs/xg24/bgm240pa32vnn.dtsi @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,bgm240pa32vnn", "silabs,bgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <50>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/bgm240pb22vna.dtsi b/dts/arm/silabs/xg24/bgm240pb22vna.dtsi new file mode 100644 index 0000000000000..e8eec8d4e82db --- /dev/null +++ b/dts/arm/silabs/xg24/bgm240pb22vna.dtsi @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,bgm240pb22vna", "silabs,bgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <80>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&radio { + pa-voltage-mv = <1800>; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/bgm240pb32vna.dtsi b/dts/arm/silabs/xg24/bgm240pb32vna.dtsi new file mode 100644 index 0000000000000..25cef99b68cbe --- /dev/null +++ b/dts/arm/silabs/xg24/bgm240pb32vna.dtsi @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,bgm240pb32vna", "silabs,bgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <50>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/bgm240pb32vnn.dtsi b/dts/arm/silabs/xg24/bgm240pb32vnn.dtsi new file mode 100644 index 0000000000000..2592c626913bb --- /dev/null +++ b/dts/arm/silabs/xg24/bgm240pb32vnn.dtsi @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,bgm240pb32vnn", "silabs,bgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <50>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/bgm240sa22vna.dtsi b/dts/arm/silabs/xg24/bgm240sa22vna.dtsi index fcc78247f6f00..20c740f9239e2 100644 --- a/dts/arm/silabs/xg24/bgm240sa22vna.dtsi +++ b/dts/arm/silabs/xg24/bgm240sa22vna.dtsi @@ -8,6 +8,7 @@ #include #include +#include / { soc { @@ -16,6 +17,10 @@ }; }; +&dcdc { + silabs,pfmx-peak-current-milliamp = <80>; +}; + &flash0 { reg = <0x08000000 DT_SIZE_K(1536)>; }; diff --git a/dts/arm/silabs/xg24/bgm240sb22vna.dtsi b/dts/arm/silabs/xg24/bgm240sb22vna.dtsi new file mode 100644 index 0000000000000..6e1329e731dad --- /dev/null +++ b/dts/arm/silabs/xg24/bgm240sb22vna.dtsi @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,bgm240sb22vna", "silabs,bgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <80>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&radio { + pa-voltage-mv = <1800>; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/mgm240pa22vna.dtsi b/dts/arm/silabs/xg24/mgm240pa22vna.dtsi new file mode 100644 index 0000000000000..704ea7dc101c3 --- /dev/null +++ b/dts/arm/silabs/xg24/mgm240pa22vna.dtsi @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,mgm240pa22vna", "silabs,mgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <80>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&radio { + pa-voltage-mv = <1800>; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/mgm240pa32vna.dtsi b/dts/arm/silabs/xg24/mgm240pa32vna.dtsi new file mode 100644 index 0000000000000..3dd78d482f5f1 --- /dev/null +++ b/dts/arm/silabs/xg24/mgm240pa32vna.dtsi @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,mgm240pa32vna", "silabs,mgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <50>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/mgm240pa32vnn.dtsi b/dts/arm/silabs/xg24/mgm240pa32vnn.dtsi new file mode 100644 index 0000000000000..05b076625e3ff --- /dev/null +++ b/dts/arm/silabs/xg24/mgm240pa32vnn.dtsi @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,mgm240pa32vnn", "silabs,mgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <50>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/mgm240pb22vna.dtsi b/dts/arm/silabs/xg24/mgm240pb22vna.dtsi new file mode 100644 index 0000000000000..541074f9084db --- /dev/null +++ b/dts/arm/silabs/xg24/mgm240pb22vna.dtsi @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,mgm240pb22vna", "silabs,mgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <80>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&radio { + pa-voltage-mv = <1800>; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/mgm240pb32vna.dtsi b/dts/arm/silabs/xg24/mgm240pb32vna.dtsi index 632aa5c8932ff..81ff2f51b1bd8 100644 --- a/dts/arm/silabs/xg24/mgm240pb32vna.dtsi +++ b/dts/arm/silabs/xg24/mgm240pb32vna.dtsi @@ -7,6 +7,7 @@ #include #include +#include / { soc { @@ -15,6 +16,10 @@ }; }; +&dcdc { + silabs,pfmx-peak-current-milliamp = <50>; +}; + &flash0 { reg = <0x08000000 DT_SIZE_K(1536)>; }; diff --git a/dts/arm/silabs/xg24/mgm240pb32vnn.dtsi b/dts/arm/silabs/xg24/mgm240pb32vnn.dtsi new file mode 100644 index 0000000000000..fa0e6d4ef28b9 --- /dev/null +++ b/dts/arm/silabs/xg24/mgm240pb32vnn.dtsi @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,mgm240pb32vnn", "silabs,mgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <50>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/mgm240sa22vna.dtsi b/dts/arm/silabs/xg24/mgm240sa22vna.dtsi new file mode 100644 index 0000000000000..8719ff4ef1282 --- /dev/null +++ b/dts/arm/silabs/xg24/mgm240sa22vna.dtsi @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +/ { + soc { + compatible = "silabs,mgm240sa22vna", "silabs,mgm24", "silabs,xg24", "silabs,efr32", + "simple-bus"; + }; +}; + +&dcdc { + silabs,pfmx-peak-current-milliamp = <80>; +}; + +&flash0 { + reg = <0x08000000 DT_SIZE_K(1536)>; +}; + +&hfxo { + ctune = <140>; + precision = <50>; + status = "okay"; +}; + +&lfrco { + precision-mode; +}; + +&radio { + pa-voltage-mv = <1800>; +}; + +&sram0 { + reg = <0x20000000 DT_SIZE_K(256)>; +}; diff --git a/dts/arm/silabs/xg24/mgm240sd22vna.dtsi b/dts/arm/silabs/xg24/mgm240sd22vna.dtsi index a36f3fb1c427e..3eb0e1e21b7bc 100644 --- a/dts/arm/silabs/xg24/mgm240sd22vna.dtsi +++ b/dts/arm/silabs/xg24/mgm240sd22vna.dtsi @@ -7,6 +7,7 @@ #include #include +#include / { soc { @@ -15,6 +16,10 @@ }; }; +&dcdc { + silabs,pfmx-peak-current-milliamp = <80>; +}; + &flash0 { reg = <0x08000000 DT_SIZE_K(1536)>; }; diff --git a/soc/silabs/silabs_s2/xg24/Kconfig.soc b/soc/silabs/silabs_s2/xg24/Kconfig.soc index 059589101f91c..6430f4ce1141f 100644 --- a/soc/silabs/silabs_s2/xg24/Kconfig.soc +++ b/soc/silabs/silabs_s2/xg24/Kconfig.soc @@ -43,7 +43,51 @@ config SOC_EFR32MG24B210F1536IM48 bool select SOC_SERIES_EFR32MG24 -config SOC_MGM240SD22VNA +config SOC_BGM240PA22VNA + bool + select SOC_SERIES_BGM24 + +config SOC_BGM240PA32VNA + bool + select SOC_SERIES_BGM24 + +config SOC_BGM240PA32VNN + bool + select SOC_SERIES_BGM24 + +config SOC_BGM240PB22VNA + bool + select SOC_SERIES_BGM24 + +config SOC_BGM240PB32VNA + bool + select SOC_SERIES_BGM24 + +config SOC_BGM240PB32VNN + bool + select SOC_SERIES_BGM24 + +config SOC_BGM240SA22VNA + bool + select SOC_SERIES_BGM24 + +config SOC_BGM240SB22VNA + bool + select SOC_SERIES_BGM24 + +config SOC_MGM240PA22VNA + bool + select SOC_SERIES_MGM24 + +config SOC_MGM240PA32VNA + bool + select SOC_SERIES_MGM24 + +config SOC_MGM240PA32VNN + bool + select SOC_SERIES_MGM24 + +config SOC_MGM240PB22VNA bool select SOC_SERIES_MGM24 @@ -51,9 +95,17 @@ config SOC_MGM240PB32VNA bool select SOC_SERIES_MGM24 -config SOC_BGM240SA22VNA +config SOC_MGM240PB32VNN bool - select SOC_SERIES_BGM24 + select SOC_SERIES_MGM24 + +config SOC_MGM240SA22VNA + bool + select SOC_SERIES_MGM24 + +config SOC_MGM240SD22VNA + bool + select SOC_SERIES_MGM24 config SOC_SERIES default "efr32mg24" if SOC_SERIES_EFR32MG24 @@ -65,6 +117,19 @@ config SOC default "efr32mg24b310f1536im48" if SOC_EFR32MG24B310F1536IM48 default "efr32mg24b210f1536im48" if SOC_EFR32MG24B210F1536IM48 default "efr32mg24b020f1536im40" if SOC_EFR32MG24B020F1536IM40 - default "mgm240sd22vna" if SOC_MGM240SD22VNA - default "mgm240pb32vna" if SOC_MGM240PB32VNA + default "bgm240pa22vna" if SOC_BGM240PA22VNA + default "bgm240pa32vna" if SOC_BGM240PA32VNA + default "bgm240pa32vnn" if SOC_BGM240PA32VNN + default "bgm240pb22vna" if SOC_BGM240PB22VNA + default "bgm240pb32vna" if SOC_BGM240PB32VNA + default "bgm240pb32vnn" if SOC_BGM240PB32VNN default "bgm240sa22vna" if SOC_BGM240SA22VNA + default "bgm240sb22vna" if SOC_BGM240SB22VNA + default "mgm240pa22vna" if SOC_MGM240PA22VNA + default "mgm240pa32vna" if SOC_MGM240PA32VNA + default "mgm240pa32vnn" if SOC_MGM240PA32VNN + default "mgm240pb22vna" if SOC_MGM240PB22VNA + default "mgm240pb32vna" if SOC_MGM240PB32VNA + default "mgm240pb32vnn" if SOC_MGM240PB32VNN + default "mgm240sa22vna" if SOC_MGM240SA22VNA + default "mgm240sd22vna" if SOC_MGM240SD22VNA diff --git a/soc/silabs/soc.yml b/soc/silabs/soc.yml index 2e9fcfa723638..69f00fd9c829d 100644 --- a/soc/silabs/soc.yml +++ b/soc/silabs/soc.yml @@ -69,11 +69,24 @@ family: - name: efr32mg24b020f1536im40 - name: bgm24 socs: + - name: bgm240pa22vna + - name: bgm240pa32vna + - name: bgm240pa32vnn + - name: bgm240pb22vna + - name: bgm240pb32vna + - name: bgm240pb32vnn - name: bgm240sa22vna + - name: bgm240sb22vna - name: mgm24 socs: - - name: mgm240sd22vna + - name: mgm240pa22vna + - name: mgm240pa32vna + - name: mgm240pa32vnn + - name: mgm240pb22vna - name: mgm240pb32vna + - name: mgm240pb32vnn + - name: mgm240sa22vna + - name: mgm240sd22vna - name: efr32bg27 socs: - name: efr32bg27c140f768im32 diff --git a/west.yml b/west.yml index 8ddf3001a042d..a48a843572f5d 100644 --- a/west.yml +++ b/west.yml @@ -240,7 +240,7 @@ manifest: groups: - hal - name: hal_silabs - revision: 37f989015ee6cb178957f8b154fd14f760456b29 + revision: 5871310b8c5ebae05c457598a6eef53690ca1bad path: modules/hal/silabs groups: - hal From e171ec60edb31b03b342db45c1d6c891483eb44e Mon Sep 17 00:00:00 2001 From: Aksel Skauge Mellbye Date: Wed, 8 Oct 2025 19:49:56 +0200 Subject: [PATCH 5/6] boards: silabs: Add xgm240_rb4316a and xgm240_rb4317a Add support for xGM240-RB4316A and xGM240-RB4317A radio boards for xGM240 modules. The two boards share pinout configuration, but have different radio and power configurations. Signed-off-by: Aksel Skauge Mellbye --- .../radio_boards/xg24/Kconfig.defconfig | 2 +- .../radio_boards/xg24/Kconfig.xgm240_rb4316a | 5 + .../radio_boards/xg24/Kconfig.xgm240_rb4317a | 5 + boards/silabs/radio_boards/xg24/board.yml | 10 + .../radio_boards/xg24/doc/xgm240_rb4316a.rst | 116 +++++++ .../radio_boards/xg24/doc/xgm240_rb4316a.webp | Bin 0 -> 5480 bytes .../radio_boards/xg24/doc/xgm240_rb4317a.rst | 116 +++++++ .../radio_boards/xg24/doc/xgm240_rb4317a.webp | Bin 0 -> 5814 bytes .../radio_boards/xg24/xgm240_rb4316a.dts | 14 + .../radio_boards/xg24/xgm240_rb4316a.yaml | 23 ++ .../xg24/xgm240_rb4316a_defconfig | 8 + .../radio_boards/xg24/xgm240_rb4317a.dts | 14 + .../radio_boards/xg24/xgm240_rb4317a.yaml | 23 ++ .../xg24/xgm240_rb4317a_defconfig | 8 + .../xg24/xgm240_rb431xa-pinctrl.dtsi | 69 ++++ .../radio_boards/xg24/xgm240_rb431xa.dtsi | 301 ++++++++++++++++++ 16 files changed, 713 insertions(+), 1 deletion(-) create mode 100644 boards/silabs/radio_boards/xg24/Kconfig.xgm240_rb4316a create mode 100644 boards/silabs/radio_boards/xg24/Kconfig.xgm240_rb4317a create mode 100644 boards/silabs/radio_boards/xg24/doc/xgm240_rb4316a.rst create mode 100644 boards/silabs/radio_boards/xg24/doc/xgm240_rb4316a.webp create mode 100644 boards/silabs/radio_boards/xg24/doc/xgm240_rb4317a.rst create mode 100644 boards/silabs/radio_boards/xg24/doc/xgm240_rb4317a.webp create mode 100644 boards/silabs/radio_boards/xg24/xgm240_rb4316a.dts create mode 100644 boards/silabs/radio_boards/xg24/xgm240_rb4316a.yaml create mode 100644 boards/silabs/radio_boards/xg24/xgm240_rb4316a_defconfig create mode 100644 boards/silabs/radio_boards/xg24/xgm240_rb4317a.dts create mode 100644 boards/silabs/radio_boards/xg24/xgm240_rb4317a.yaml create mode 100644 boards/silabs/radio_boards/xg24/xgm240_rb4317a_defconfig create mode 100644 boards/silabs/radio_boards/xg24/xgm240_rb431xa-pinctrl.dtsi create mode 100644 boards/silabs/radio_boards/xg24/xgm240_rb431xa.dtsi diff --git a/boards/silabs/radio_boards/xg24/Kconfig.defconfig b/boards/silabs/radio_boards/xg24/Kconfig.defconfig index 040d6fbae4321..3b339549997b6 100644 --- a/boards/silabs/radio_boards/xg24/Kconfig.defconfig +++ b/boards/silabs/radio_boards/xg24/Kconfig.defconfig @@ -3,7 +3,7 @@ # Copyright (c) 2025 Silicon Laboratories Inc. # SPDX-License-Identifier: Apache-2.0 -if BOARD_XG24_RB4186C || BOARD_XG24_RB4187C +if BOARD_XG24_RB4186C || BOARD_XG24_RB4187C || BOARD_XGM240_RB4316A || BOARD_XGM240_RB4317A config LOG_BACKEND_SWO_FREQ_HZ default 875000 diff --git a/boards/silabs/radio_boards/xg24/Kconfig.xgm240_rb4316a b/boards/silabs/radio_boards/xg24/Kconfig.xgm240_rb4316a new file mode 100644 index 0000000000000..7715bc9cf6d63 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/Kconfig.xgm240_rb4316a @@ -0,0 +1,5 @@ +# Copyright (c) 2025 Silicon Laboratories Inc. +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_XGM240_RB4316A + select SOC_MGM240PB22VNA diff --git a/boards/silabs/radio_boards/xg24/Kconfig.xgm240_rb4317a b/boards/silabs/radio_boards/xg24/Kconfig.xgm240_rb4317a new file mode 100644 index 0000000000000..5a6b5e30b0ab0 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/Kconfig.xgm240_rb4317a @@ -0,0 +1,5 @@ +# Copyright (c) 2025 Silicon Laboratories Inc. +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_XGM240_RB4317A + select SOC_MGM240PB32VNA diff --git a/boards/silabs/radio_boards/xg24/board.yml b/boards/silabs/radio_boards/xg24/board.yml index 518f9991e90df..8e0834d98818b 100644 --- a/boards/silabs/radio_boards/xg24/board.yml +++ b/boards/silabs/radio_boards/xg24/board.yml @@ -9,3 +9,13 @@ boards: vendor: silabs socs: - name: efr32mg24b220f1536im48 + - name: xgm240_rb4316a + full_name: xGM240P 10 dBm Module Radio Board (xGM240-RB4316A) + vendor: silabs + socs: + - name: mgm240pb22vna + - name: xgm240_rb4317a + full_name: xGM240P 20 dBm Module Radio Board (xGM240-RB4317A) + vendor: silabs + socs: + - name: mgm240pb32vna diff --git a/boards/silabs/radio_boards/xg24/doc/xgm240_rb4316a.rst b/boards/silabs/radio_boards/xg24/doc/xgm240_rb4316a.rst new file mode 100644 index 0000000000000..c8e793184078f --- /dev/null +++ b/boards/silabs/radio_boards/xg24/doc/xgm240_rb4316a.rst @@ -0,0 +1,116 @@ +.. zephyr:board:: xgm240_rb4316a + +Overview +******** + +The `xGM240P +10 dBm Module Radio Board`_ for the xGM240P module contains a Wireless +System-On-Chip from the EFR32MG24 family built on an ARM Cortex®-M33 processor with excellent low +power capabilities. + +The radio board plugs into the Wireless Pro Kit Mainboard BRD4002A and is supported in Zephyr as one +of several :ref:`silabs_radio_boards`. + +.. _xGM240P +10 dBm Module Radio Board: + https://www.silabs.com/development-tools/wireless/xgm240-rb4316a-xgm240p-module-radio-board + +Hardware +******** + +- MGM240PB32VNA module based on EFR32MG24 +- CPU core: ARM Cortex®-M33 with FPU +- Flash memory: 1536 kB +- RAM: 256 kB +- Transmit power: up to +10 dBm +- Operation frequency: 2.4 GHz +- Crystal for LFXO (32.768 kHz) on the board and HFXO (39 MHz) in the module. + +For more information about the MGM240P module, EFR32MG24 SoC and BRD4316A board, refer to these +documents: + +- `MGM240 Modules Website`_ +- `MGM240P Datasheet`_ +- `EFR32xG24 Reference Manual`_ +- `BRD4316A User Guide`_ + +.. _MGM240 Modules Website: + https://www.silabs.com/wireless/zigbee/efr32mg24-series-2-modules +.. _MGM240P Datasheet: + https://www.silabs.com/documents/public/data-sheets/mgm240p-datasheet.pdf +.. _EFR32xG24 Reference Manual: + https://www.silabs.com/documents/public/reference-manuals/efr32xg24-rm.pdf +.. _BRD4316A User Guide: + https://www.silabs.com/documents/public/user-guides/ug528-brd4316a-user-guide.pdf + +Supported Features +================== + +.. zephyr:board-supported-hw:: + +System Clock +============ + +The MGM240P module is configured to use the HFRCODPLL oscillator at 78 MHz as the system clock, +locked to the 39 MHz external crystal oscillator on the board. + +Serial Port +=========== + +The MGM240P module has one USART and two EUSARTs. +USART0 is connected to the board controller and is used for the console. + +Buttons and LEDs +================ + +This board has two buttons and two LEDs that share GPIO pins. If an application wants to use both +a button and a LED with the same number (e.g. button 0 and LED 0), it needs to time multiplex the +two functions. + +Programming and Debugging +************************* + +.. zephyr:board-supported-runners:: + +Flashing +======== + +Connect the BRD4002A board with a mounted BRD4186C radio board to your host +computer using the USB port. + +Here is an example for the :zephyr:code-sample:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: xgm240_rb4316a + :goals: flash + +Open a serial terminal (minicom, putty, etc.) with the following settings: + +- Speed: 115200 +- Data: 8 bits +- Parity: None +- Stop bits: 1 + +Reset the board and you should see the following message in the terminal: + +.. code-block:: console + + Hello World! xgm240_rb4316a + +Bluetooth +========= + +To use Bluetooth functionality, run the command below to retrieve necessary binary +blobs from the Silicon Labs HAL repository. + +.. code-block:: console + + west blobs fetch hal_silabs + +Then build the Zephyr kernel and a Bluetooth sample with the following +command. The :zephyr:code-sample:`bluetooth_observer` sample application is used in +this example. + +.. zephyr-app-commands:: + :zephyr-app: samples/bluetooth/observer + :board: xgm240_rb4316a + :goals: build diff --git a/boards/silabs/radio_boards/xg24/doc/xgm240_rb4316a.webp b/boards/silabs/radio_boards/xg24/doc/xgm240_rb4316a.webp new file mode 100644 index 0000000000000000000000000000000000000000..8c7519f98e35cb01217172479834067e1c8c2f69 GIT binary patch literal 5480 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 literal 0 HcmV?d00001 diff --git a/boards/silabs/radio_boards/xg24/doc/xgm240_rb4317a.rst b/boards/silabs/radio_boards/xg24/doc/xgm240_rb4317a.rst new file mode 100644 index 0000000000000..8baa8b5dde9c0 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/doc/xgm240_rb4317a.rst @@ -0,0 +1,116 @@ +.. zephyr:board:: xgm240_rb4317a + +Overview +******** + +The `xGM240P +20 dBm Module Radio Board`_ for the xGM240P module contains a Wireless +System-On-Chip from the EFR32MG24 family built on an ARM Cortex®-M33 processor with excellent low +power capabilities. + +The radio board plugs into the Wireless Pro Kit Mainboard BRD4002A and is supported in Zephyr as one +of several :ref:`silabs_radio_boards`. + +.. _xGM240P +20 dBm Module Radio Board: + https://www.silabs.com/development-tools/wireless/xgm240-rb4317a-xgm240p-module-radio-board + +Hardware +******** + +- MGM240PB32VNA module based on EFR32MG24 +- CPU core: ARM Cortex®-M33 with FPU +- Flash memory: 1536 kB +- RAM: 256 kB +- Transmit power: up to +20 dBm +- Operation frequency: 2.4 GHz +- Crystal for LFXO (32.768 kHz) on the board and HFXO (39 MHz) in the module. + +For more information about the MGM240P module, EFR32MG24 SoC and BRD4317A board, refer to these +documents: + +- `MGM240 Modules Website`_ +- `MGM240P Datasheet`_ +- `EFR32xG24 Reference Manual`_ +- `BRD4317A User Guide`_ + +.. _MGM240 Modules Website: + https://www.silabs.com/wireless/zigbee/efr32mg24-series-2-modules +.. _MGM240P Datasheet: + https://www.silabs.com/documents/public/data-sheets/mgm240p-datasheet.pdf +.. _EFR32xG24 Reference Manual: + https://www.silabs.com/documents/public/reference-manuals/efr32xg24-rm.pdf +.. _BRD4317A User Guide: + https://www.silabs.com/documents/public/user-guides/ug529-brd4317a-user-guide.pdf + +Supported Features +================== + +.. zephyr:board-supported-hw:: + +System Clock +============ + +The MGM240P module is configured to use the HFRCODPLL oscillator at 78 MHz as the system clock, +locked to the 39 MHz external crystal oscillator on the board. + +Serial Port +=========== + +The MGM240P module has one USART and two EUSARTs. +USART0 is connected to the board controller and is used for the console. + +Buttons and LEDs +================ + +This board has two buttons and two LEDs that share GPIO pins. If an application wants to use both +a button and a LED with the same number (e.g. button 0 and LED 0), it needs to time multiplex the +two functions. + +Programming and Debugging +************************* + +.. zephyr:board-supported-runners:: + +Flashing +======== + +Connect the BRD4002A board with a mounted BRD4186C radio board to your host +computer using the USB port. + +Here is an example for the :zephyr:code-sample:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: xgm240_rb4317a + :goals: flash + +Open a serial terminal (minicom, putty, etc.) with the following settings: + +- Speed: 115200 +- Data: 8 bits +- Parity: None +- Stop bits: 1 + +Reset the board and you should see the following message in the terminal: + +.. code-block:: console + + Hello World! xgm240_rb4317a + +Bluetooth +========= + +To use Bluetooth functionality, run the command below to retrieve necessary binary +blobs from the Silicon Labs HAL repository. + +.. code-block:: console + + west blobs fetch hal_silabs + +Then build the Zephyr kernel and a Bluetooth sample with the following +command. The :zephyr:code-sample:`bluetooth_observer` sample application is used in +this example. + +.. zephyr-app-commands:: + :zephyr-app: samples/bluetooth/observer + :board: xgm240_rb4317a + :goals: build diff --git a/boards/silabs/radio_boards/xg24/doc/xgm240_rb4317a.webp b/boards/silabs/radio_boards/xg24/doc/xgm240_rb4317a.webp new file mode 100644 index 0000000000000000000000000000000000000000..3bf841199b99bf292fc5870e421dd034df6d1322 GIT binary patch literal 5814 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 Aw*UYD literal 0 HcmV?d00001 diff --git a/boards/silabs/radio_boards/xg24/xgm240_rb4316a.dts b/boards/silabs/radio_boards/xg24/xgm240_rb4316a.dts new file mode 100644 index 0000000000000..17a9ecb9cbf32 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xgm240_rb4316a.dts @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include "xgm240_rb431xa.dtsi" + +/ { + model = "Silicon Labs xGM240P +10 dBm Module Radio Board (xGM240-RB4316A, BRD4316A)"; + compatible = "silabs,xgm240_rb4316a", "silabs,mgm24"; +}; diff --git a/boards/silabs/radio_boards/xg24/xgm240_rb4316a.yaml b/boards/silabs/radio_boards/xg24/xgm240_rb4316a.yaml new file mode 100644 index 0000000000000..9b25799459207 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xgm240_rb4316a.yaml @@ -0,0 +1,23 @@ +identifier: xgm240_rb4316a +name: xGM240P +10 dBm Module Radio Board (xGM240-RB4316A, BRD4316A) +type: mcu +arch: arm +ram: 256 +flash: 1536 +toolchain: + - zephyr + - gnuarmemb +supported: + - bluetooth + - comparator + - counter + - dac + - dma + - entropy + - flash + - gpio + - pwm + - spi + - uart + - watchdog +vendor: silabs diff --git a/boards/silabs/radio_boards/xg24/xgm240_rb4316a_defconfig b/boards/silabs/radio_boards/xg24/xgm240_rb4316a_defconfig new file mode 100644 index 0000000000000..8401c4d1e8fde --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xgm240_rb4316a_defconfig @@ -0,0 +1,8 @@ +# Copyright (c) 2025 Silicon Laboratories Inc. +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_ARM_MPU=y +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_GPIO=y diff --git a/boards/silabs/radio_boards/xg24/xgm240_rb4317a.dts b/boards/silabs/radio_boards/xg24/xgm240_rb4317a.dts new file mode 100644 index 0000000000000..454a2f1be4755 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xgm240_rb4317a.dts @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include "xgm240_rb431xa.dtsi" + +/ { + model = "Silicon Labs xGM240P +20 dBm Module Radio Board (xGM240-RB4317A, BRD4317A)"; + compatible = "silabs,xgm240_rb4317a", "silabs,mgm24"; +}; diff --git a/boards/silabs/radio_boards/xg24/xgm240_rb4317a.yaml b/boards/silabs/radio_boards/xg24/xgm240_rb4317a.yaml new file mode 100644 index 0000000000000..a8ea40c4b3c42 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xgm240_rb4317a.yaml @@ -0,0 +1,23 @@ +identifier: xgm240_rb4317a +name: xGM240P +20 dBm Module Radio Board (xGM240-RB4317A, BRD4317A) +type: mcu +arch: arm +ram: 256 +flash: 1536 +toolchain: + - zephyr + - gnuarmemb +supported: + - bluetooth + - comparator + - counter + - dac + - dma + - entropy + - flash + - gpio + - pwm + - spi + - uart + - watchdog +vendor: silabs diff --git a/boards/silabs/radio_boards/xg24/xgm240_rb4317a_defconfig b/boards/silabs/radio_boards/xg24/xgm240_rb4317a_defconfig new file mode 100644 index 0000000000000..8401c4d1e8fde --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xgm240_rb4317a_defconfig @@ -0,0 +1,8 @@ +# Copyright (c) 2025 Silicon Laboratories Inc. +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_ARM_MPU=y +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_GPIO=y diff --git a/boards/silabs/radio_boards/xg24/xgm240_rb431xa-pinctrl.dtsi b/boards/silabs/radio_boards/xg24/xgm240_rb431xa-pinctrl.dtsi new file mode 100644 index 0000000000000..9267ab741778f --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xgm240_rb431xa-pinctrl.dtsi @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&pinctrl { + eusart1_default: eusart1_default { + group0 { + pins = , ; + drive-push-pull; + output-high; + }; + + group1 { + pins = ; + input-enable; + silabs,input-filter; + }; + }; + + itm_default: itm_default { + group0 { + pins = ; + drive-push-pull; + output-high; + }; + }; + + i2c0_default: i2c0_default { + group0 { + pins = , ; + drive-open-drain; + bias-pull-up; + }; + }; + + pti_default: pti_default { + group0 { + pins = , ; + drive-push-pull; + output-high; + }; + }; + + timer0_default: timer0_default { + group0 { + pins = , ; + drive-push-pull; + output-high; + }; + }; + + usart0_default: usart0_default { + group0 { + pins = ; + drive-push-pull; + output-high; + }; + + group1 { + pins = ; + input-enable; + silabs,input-filter; + }; + }; +}; diff --git a/boards/silabs/radio_boards/xg24/xgm240_rb431xa.dtsi b/boards/silabs/radio_boards/xg24/xgm240_rb431xa.dtsi new file mode 100644 index 0000000000000..7e22f7ebe9471 --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xgm240_rb431xa.dtsi @@ -0,0 +1,301 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include "xgm240_rb431xa-pinctrl.dtsi" + +/ { + chosen { + zephyr,bt-hci = &bt_hci_silabs; + zephyr,code-partition = &slot0_partition; + zephyr,console = &usart0; + zephyr,display = &ls0xx_ls013b7dh03; + zephyr,flash = &flash0; + zephyr,shell-uart = &usart0; + zephyr,sram = &sram0; + zephyr,uart-pipe = &usart0; + }; + + aliases { + dht0 = &si7021; + led0 = &led0; + led1 = &led1; + pwm-led0 = &pwm_led0; + pwm-led1 = &pwm_led1; + spi-flash0 = &mx25r80; + sw0 = &button0; + sw1 = &button1; + watchdog0 = &wdog0; + }; + + leds { + compatible = "gpio-leds"; + + led0: led_0 { + gpios = <&gpiob 0 GPIO_ACTIVE_LOW>; + label = "LED 0"; + }; + + led1: led_1 { + gpios = <&gpiob 1 GPIO_ACTIVE_LOW>; + label = "LED 1"; + }; + }; + + pwmleds { + compatible = "pwm-leds"; + + pwm_led0: pwm_led_0 { + pwms = <&timer0_pwm 0 PWM_MSEC(20) PWM_POLARITY_INVERTED>; + label = "PWM LED 0"; + }; + + pwm_led1: pwm_led_1 { + pwms = <&timer0_pwm 1 PWM_MSEC(20) PWM_POLARITY_INVERTED>; + label = "PWM LED 1"; + }; + }; + + buttons { + compatible = "gpio-keys"; + + button0: button_0 { + gpios = <&gpiob 0 GPIO_ACTIVE_LOW>; + label = "User Push Button 0"; + zephyr,code = ; + }; + + button1: button_1 { + gpios = <&gpiob 1 GPIO_ACTIVE_LOW>; + label = "User Push Button 1"; + zephyr,code = ; + }; + }; + + sensor_enable: sensor_enable { + compatible = "regulator-fixed"; + enable-gpios = <&gpiod 2 GPIO_ACTIVE_HIGH>; + regulator-name = "sensor_enable"; + }; + + exp_header: exp-header { + compatible = "silabs,exp-header"; + #gpio-cells = <2>; + gpio-map = <4 0 &gpioc 0 0>, + <6 0 &gpioc 1 0>, + <7 0 &gpiob 0 0>, + <8 0 &gpioc 2 0>, + <9 0 &gpiob 1 0>, + <10 0 &gpioc 3 0>, + <12 0 &gpioa 5 0>, + <14 0 &gpioa 6 0>, + <15 0 &gpiob 2 0>, + <16 0 &gpiob 3 0>; + gpio-map-mask = <0xffffffff 0x0>; + gpio-map-pass-thru = <0x0 GPIO_DT_FLAGS_MASK>; + }; +}; + +&cpu0 { + clock-frequency = <78000000>; +}; + +&itm { + pinctrl-0 = <&itm_default>; + pinctrl-names = "default"; + swo-ref-frequency = ; +}; + +&lfxo { + ctune = <44>; + precision = <50>; + status = "okay"; +}; + +&hfrcodpll { + clock-frequency = ; + clocks = <&hfxo>; + dpll-autorecover; + dpll-edge = "fall"; + dpll-lock = "phase"; + dpll-m = <1919>; + dpll-n = <3839>; +}; + +&em23grpaclk { + clocks = <&lfxo>; +}; + +&em4grpaclk { + clocks = <&lfxo>; +}; + +&sysrtcclk { + clocks = <&lfxo>; +}; + +&wdog0clk { + clocks = <&lfxo>; +}; + +&wdog1clk { + clocks = <&lfxo>; +}; + +&usart0 { + current-speed = <115200>; + pinctrl-0 = <&usart0_default>; + pinctrl-names = "default"; + status = "okay"; +}; + +&eusart1 { + compatible = "silabs,eusart-spi"; + #address-cells = <1>; + #size-cells = <0>; + clock-frequency = ; + pinctrl-0 = <&eusart1_default>; + pinctrl-names = "default"; + status = "okay"; + + cs-gpios = <&gpioc 6 GPIO_ACTIVE_HIGH>, <&gpioa 4 GPIO_ACTIVE_LOW>; + + ls0xx_ls013b7dh03: ls0xx@0 { + compatible = "sharp,ls0xx"; + reg = <0>; + height = <128>; + spi-max-frequency = ; + width = <128>; + extcomin-gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>; + extcomin-frequency = <60>; + disp-en-gpios = <&gpiod 3 GPIO_ACTIVE_HIGH>; + }; + + mx25r80: mx25r8035f@1 { + compatible = "jedec,spi-nor"; + reg = <1>; + dpd-wakeup-sequence = <30000 20 35000>; + has-dpd; + jedec-id = [c2 28 14]; + mxicy,mx25r-power-mode = "low-power"; + size = ; + spi-max-frequency = ; + zephyr,pm-device-runtime-auto; + }; +}; + +&i2c0 { + pinctrl-0 = <&i2c0_default>; + pinctrl-names = "default"; + status = "okay"; + + si7021: si7021@40 { + compatible = "silabs,si7006"; + reg = <0x40>; + vin-supply = <&sensor_enable>; + }; +}; + +&timer0 { + status = "okay"; + + timer0_pwm: pwm { + pinctrl-0 = <&timer0_default>; + pinctrl-names = "default"; + status = "okay"; + }; +}; + +&gpio { + status = "okay"; +}; + +&gpioa { + status = "okay"; +}; + +&gpiob { + status = "okay"; + + board-controller-enable { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + output-high; + }; +}; + +&gpioc { + status = "okay"; +}; + +&gpiod { + status = "okay"; +}; + +&wdog0 { + status = "okay"; +}; + +&sysrtc0 { + status = "okay"; +}; + +&se { + status = "okay"; +}; + +&dcdc { + regulator-boot-on; + regulator-initial-mode = ; + status = "okay"; +}; + +&flash0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* Reserve 48 kB for the bootloader */ + boot_partition: partition@0 { + reg = <0x0 DT_SIZE_K(48)>; + label = "mcuboot"; + read-only; + }; + + /* Reserve 728 kB for the application in slot 0 */ + slot0_partition: partition@c000 { + reg = <0x0000c000 DT_SIZE_K(728)>; + label = "image-0"; + }; + + /* Reserve 728 kB for the application in slot 1 */ + slot1_partition: partition@c2000 { + reg = <0x000c2000 DT_SIZE_K(728)>; + label = "image-1"; + }; + + /* Set 32 kB of storage at the end of the 1536 kB of flash */ + storage_partition: partition@178000 { + reg = <0x00178000 DT_SIZE_K(32)>; + label = "storage"; + }; + }; +}; + +&vdac0 { + status = "okay"; +}; + +&vdac1 { + status = "okay"; +}; + +&bt_hci_silabs { + status = "okay"; +}; From be36dec1c1e49a9142a09f47d692597ac62413b3 Mon Sep 17 00:00:00 2001 From: Aksel Skauge Mellbye Date: Wed, 8 Oct 2025 21:00:45 +0200 Subject: [PATCH 6/6] samples: basic: button: Disable led on xgm240 boards Button 0 and LED 0 share a GPIO pin on xgm240 boards. Remove the `led0` alias in a board overlay to make the button sample work out of the box. Signed-off-by: Aksel Skauge Mellbye --- samples/basic/button/boards/xgm240_rb4316a.overlay | 12 ++++++++++++ samples/basic/button/boards/xgm240_rb4317a.overlay | 12 ++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 samples/basic/button/boards/xgm240_rb4316a.overlay create mode 100644 samples/basic/button/boards/xgm240_rb4317a.overlay diff --git a/samples/basic/button/boards/xgm240_rb4316a.overlay b/samples/basic/button/boards/xgm240_rb4316a.overlay new file mode 100644 index 0000000000000..58c02cf373ecb --- /dev/null +++ b/samples/basic/button/boards/xgm240_rb4316a.overlay @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + aliases { + /* led0 interferes with sw0 since it uses the same pin */ + /delete-property/ led0; + }; +}; diff --git a/samples/basic/button/boards/xgm240_rb4317a.overlay b/samples/basic/button/boards/xgm240_rb4317a.overlay new file mode 100644 index 0000000000000..58c02cf373ecb --- /dev/null +++ b/samples/basic/button/boards/xgm240_rb4317a.overlay @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2025 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + aliases { + /* led0 interferes with sw0 since it uses the same pin */ + /delete-property/ led0; + }; +};