diff --git a/boards/silabs/radio_boards/xg24_rb4187c/Kconfig.defconfig b/boards/silabs/radio_boards/xg24/Kconfig.defconfig similarity index 60% rename from boards/silabs/radio_boards/xg24_rb4187c/Kconfig.defconfig rename to boards/silabs/radio_boards/xg24/Kconfig.defconfig index 3cb8fa60d87cf..3b339549997b6 100644 --- a/boards/silabs/radio_boards/xg24_rb4187c/Kconfig.defconfig +++ b/boards/silabs/radio_boards/xg24/Kconfig.defconfig @@ -1,29 +1,23 @@ # 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 +if BOARD_XG24_RB4186C || BOARD_XG24_RB4187C || BOARD_XGM240_RB4316A || BOARD_XGM240_RB4317A 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/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_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/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_rb4187c/board.cmake b/boards/silabs/radio_boards/xg24/board.cmake similarity index 64% rename from boards/silabs/radio_boards/xg24_rb4187c/board.cmake rename to boards/silabs/radio_boards/xg24/board.cmake index 9daf13bb39adf..5f48f932f6e38 100644 --- a/boards/silabs/radio_boards/xg24_rb4187c/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/board.yml b/boards/silabs/radio_boards/xg24/board.yml new file mode 100644 index 0000000000000..8e0834d98818b --- /dev/null +++ b/boards/silabs/radio_boards/xg24/board.yml @@ -0,0 +1,21 @@ +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 + - 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/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 0000000000000..94bd497201a52 Binary files /dev/null and b/boards/silabs/radio_boards/xg24/doc/xg24_rb4186c.webp differ diff --git a/boards/silabs/radio_boards/xg24_rb4187c/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_rb4187c/doc/efr32mg24-xg24-rb4187c.jpg rename to boards/silabs/radio_boards/xg24/doc/xg24_rb4187c.jpg diff --git a/boards/silabs/radio_boards/xg24_rb4187c/doc/index.rst b/boards/silabs/radio_boards/xg24/doc/xg24_rb4187c.rst similarity index 60% rename from boards/silabs/radio_boards/xg24_rb4187c/doc/index.rst rename to boards/silabs/radio_boards/xg24/doc/xg24_rb4187c.rst index 9d836519b5e84..adbd2ab771835 100644 --- a/boards/silabs/radio_boards/xg24_rb4187c/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/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 0000000000000..8c7519f98e35c Binary files /dev/null and b/boards/silabs/radio_boards/xg24/doc/xgm240_rb4316a.webp differ 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 0000000000000..3bf841199b99b Binary files /dev/null and b/boards/silabs/radio_boards/xg24/doc/xgm240_rb4317a.webp differ 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/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 new file mode 100644 index 0000000000000..adda945b8499e --- /dev/null +++ b/boards/silabs/radio_boards/xg24/xg24_rb4187c.dts @@ -0,0 +1,14 @@ +/* + * 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 20 dBm Radio Board (xG24-RB4187C, BRD4187C)"; + compatible = "silabs,xg24_rb4187c", "silabs,efr32mg24"; +}; diff --git a/boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c.yaml b/boards/silabs/radio_boards/xg24/xg24_rb4187c.yaml similarity index 87% rename from boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c.yaml rename to boards/silabs/radio_boards/xg24/xg24_rb4187c.yaml index a024e6e86130a..9ee092920a088 100644 --- a/boards/silabs/radio_boards/xg24_rb4187c/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_rb4187c/xg24_rb4187c_defconfig b/boards/silabs/radio_boards/xg24/xg24_rb4187c_defconfig similarity index 66% rename from boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c_defconfig rename to boards/silabs/radio_boards/xg24/xg24_rb4187c_defconfig index d937f7c3052ba..e70f8f5c5197d 100644 --- a/boards/silabs/radio_boards/xg24_rb4187c/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 diff --git a/boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c-pinctrl.dtsi b/boards/silabs/radio_boards/xg24/xg24_rb418xc-pinctrl.dtsi similarity index 88% rename from boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c-pinctrl.dtsi rename to boards/silabs/radio_boards/xg24/xg24_rb418xc-pinctrl.dtsi index 51406d86097dd..dab45e89d337e 100644 --- a/boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c-pinctrl.dtsi +++ b/boards/silabs/radio_boards/xg24/xg24_rb418xc-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_rb4187c/xg24_rb4187c.dts b/boards/silabs/radio_boards/xg24/xg24_rb418xc.dtsi similarity index 89% rename from boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c.dts rename to boards/silabs/radio_boards/xg24/xg24_rb418xc.dtsi index fa0b874bbc2df..f528920e67a38 100644 --- a/boards/silabs/radio_boards/xg24_rb4187c/xg24_rb4187c.dts +++ b/boards/silabs/radio_boards/xg24/xg24_rb418xc.dtsi @@ -4,16 +4,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -/dts-v1/; -#include #include +#include #include -#include "xg24_rb4187c-pinctrl.dtsi" +#include "xg24_rb418xc-pinctrl.dtsi" / { - model = "Silicon Labs BRD4187C (Mighty Gecko 24 Radio Board)"; - compatible = "silabs,xg24_rb4187c", "silabs,efr32mg24"; - chosen { zephyr,bt-hci = &bt_hci_silabs; zephyr,code-partition = &slot0_partition; @@ -30,6 +26,9 @@ dht0 = &si7021; led0 = &led0; led1 = &led1; + pwm-led0 = &pwm_led0; + pwm-led1 = &pwm_led1; + spi-flash0 = &mx25r80; sw0 = &button0; sw1 = &button1; watchdog0 = &wdog0; @@ -49,6 +48,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 +212,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/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"; +}; diff --git a/boards/silabs/radio_boards/xg24_rb4187c/board.yml b/boards/silabs/radio_boards/xg24_rb4187c/board.yml deleted file mode 100644 index d4254a0c42de7..0000000000000 --- a/boards/silabs/radio_boards/xg24_rb4187c/board.yml +++ /dev/null @@ -1,6 +0,0 @@ -board: - name: xg24_rb4187c - full_name: EFR32xG24 2.4 GHz 20 dBm (xG24-RB4187C) - vendor: silabs - socs: - - name: efr32mg24b220f1536im48 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/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; + }; +}; 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