Skip to content

Commit e4dc7c9

Browse files
silabs-bozontkartben
authored andcommitted
soc: silabs: Add support for the MGM240SD22VNA
Also introduce the framework to support other Silicon Labs modules. Signed-off-by: Tamas Jozsi <tamas.jozsi@silabs.com>
1 parent 6176b2c commit e4dc7c9

File tree

10 files changed

+105
-8
lines changed

10 files changed

+105
-8
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* Copyright (c) 2023 Fr. Sauter AG
3+
* Copyright (c) 2025 Silicon Laboratories Inc.
4+
*
5+
* SPDX-License-Identifier: Apache-2.0
6+
*/
7+
8+
#include <mem.h>
9+
#include <silabs/xg24/efr32mg24.dtsi>
10+
11+
/ {
12+
sram0: memory@20000000 {
13+
reg = <0x20000000 DT_SIZE_K(256)>;
14+
};
15+
16+
soc {
17+
compatible = "silabs,mgm240sd22vna", "silabs,efr32mg24", "silabs,xg24",
18+
"silabs,efr32", "simple-bus";
19+
};
20+
};
21+
22+
&flash0 {
23+
reg = <0x08000000 DT_SIZE_K(1536)>;
24+
};
25+
26+
&radio {
27+
pa-voltage-mv = <1800>;
28+
};

include/zephyr/drivers/clock_control/clock_control_silabs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#include <zephyr/dt-bindings/clock/silabs/xg22-clock.h>
1616
#elif defined(CONFIG_SOC_SERIES_EFR32ZG23)
1717
#include <zephyr/dt-bindings/clock/silabs/xg23-clock.h>
18-
#elif defined(CONFIG_SOC_SERIES_EFR32MG24)
18+
#elif defined(CONFIG_SOC_SERIES_XG24)
1919
#include <zephyr/dt-bindings/clock/silabs/xg24-clock.h>
2020
#elif defined(CONFIG_SOC_SERIES_EFR32BG27)
2121
#include <zephyr/dt-bindings/clock/silabs/xg27-clock.h>

modules/hal_silabs/simplicity_sdk/CMakeLists.txt

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,16 @@ set(BLOBS_DIR ${ZEPHYR_HAL_SILABS_MODULE_DIR}/zephyr/blobs/simplicity_sdk)
2323
# respectively.
2424
string(TOUPPER ${CONFIG_SOC_SERIES} SILABS_DEVICE_FAMILY)
2525

26-
# Get SoC series number, i.e. translate e.g. efr32bg22 -> 22
27-
string(SUBSTRING ${CONFIG_SOC_SERIES} 7 2 SILABS_DEVICE_FAMILY_NUMBER)
26+
# Get SoC series number, i.e. translate efr32bg22 -> 22, mgm240p -> 24, simg301 -> 301
27+
if(CONFIG_SOC_SERIES MATCHES "^ef[rm]32")
28+
string(SUBSTRING ${CONFIG_SOC_SERIES} 7 2 SILABS_DEVICE_FAMILY_NUMBER)
29+
elseif(CONFIG_SOC_SERIES MATCHES "^si")
30+
string(SUBSTRING ${CONFIG_SOC_SERIES} 4 3 SILABS_DEVICE_FAMILY_NUMBER)
31+
elseif(CONFIG_SOC_SERIES MATCHES "^.gm")
32+
string(SUBSTRING ${CONFIG_SOC_SERIES} 3 2 SILABS_DEVICE_FAMILY_NUMBER)
33+
else()
34+
message(FATAL_ERROR "unknown part")
35+
endif()
2836

2937
set(SILABS_DEVICE_PART_NUMBER ${CONFIG_SOC_PART_NUMBER})
3038

@@ -88,11 +96,20 @@ if(CONFIG_SOC_GECKO_HAS_RADIO)
8896

8997
if(CONFIG_SOC_GECKO_USE_RAIL)
9098
# rail
91-
zephyr_library_sources(${RADIO_DIR}/rail_lib/plugin/pa-conversions/pa_curves_efr32.c)
99+
# PA curve for the modules comes from their config archive - omit the compilation of the SoC curves on modules
100+
if(NOT CONFIG_SILABS_DEVICE_IS_MODULE)
101+
zephyr_library_sources(${RADIO_DIR}/rail_lib/plugin/pa-conversions/pa_curves_efr32.c)
102+
endif()
92103
zephyr_library_sources(${RADIO_DIR}/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c)
93104

94-
# prebuilt libs
95-
add_prebuilt_library(librail platform/radio/rail_lib/autogen/librail_release/librail_efr32xg${SILABS_DEVICE_FAMILY_NUMBER}_gcc_release.a)
105+
if(CONFIG_SILABS_DEVICE_IS_MODULE)
106+
# RAIL lib and config for modules
107+
add_prebuilt_library(librail platform/radio/rail_lib/autogen/librail_release/librail_module_efr32xg${SILABS_DEVICE_FAMILY_NUMBER}_gcc_release.a)
108+
add_prebuilt_library(librail_config platform/radio/rail_lib/autogen/librail_release/librail_config_${CONFIG_SOC}_gcc.a)
109+
else()
110+
# generic RAIL lib for SoCs
111+
add_prebuilt_library(librail platform/radio/rail_lib/autogen/librail_release/librail_efr32xg${SILABS_DEVICE_FAMILY_NUMBER}_gcc_release.a)
112+
endif()
96113

97114
zephyr_include_directories_ifdef(CONFIG_SOC_GECKO_CUSTOM_RADIO_PHY
98115
${RADIO_DIR}/rail_lib/protocol/ble

soc/silabs/silabs_s2/Kconfig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,8 @@ rsource "*/Kconfig"
1414
config ARM_SECURE_FIRMWARE
1515
default y
1616

17+
config SILABS_DEVICE_IS_MODULE
18+
bool
19+
default n
20+
1721
endif

soc/silabs/silabs_s2/efr32mg24/Kconfig renamed to soc/silabs/silabs_s2/xg24/Kconfig

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# Copyright (c) 2020 TriaGnoSys GmbH
2+
# Copyright (c) 2025 Silicon Laboratories Inc.
23
# SPDX-License-Identifier: Apache-2.0
34

45
config SOC_SERIES_EFR32MG24
@@ -20,5 +21,26 @@ config SOC_SERIES_EFR32MG24
2021
select SOC_GECKO_SE
2122
select HAS_PM
2223

24+
config SOC_SERIES_MGM24
25+
select ARM
26+
select CPU_CORTEX_M33
27+
select CPU_HAS_FPU
28+
select CPU_HAS_ARM_MPU
29+
select CPU_HAS_ARM_SAU
30+
select CPU_CORTEX_M_HAS_DWT
31+
select ARMV8_M_DSP
32+
select ARM_TRUSTZONE_M
33+
select SOC_GECKO_HAS_RADIO
34+
select HAS_SILABS_SISDK
35+
select HAS_SWO
36+
select SOC_GECKO_CMU
37+
select SOC_GECKO_EMU
38+
select SOC_GECKO_GPIO
39+
select SOC_GECKO_DEV_INIT
40+
select SOC_GECKO_SE
41+
select HAS_PM
42+
select SILABS_DEVICE_IS_MODULE
43+
2344
config SOC_GECKO_SDID
2445
default 215 if SOC_SERIES_EFR32MG24
46+
default 215 if SOC_SERIES_MGM24

soc/silabs/silabs_s2/efr32mg24/Kconfig.defconfig renamed to soc/silabs/silabs_s2/xg24/Kconfig.defconfig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# Copyright (c) 2021 Sateesh Kotapati
2+
# Copyright (c) 2025 Silicon Laboratories Inc.
23
# SPDX-License-Identifier: Apache-2.0
34

4-
if SOC_SERIES_EFR32MG24
5+
if SOC_SERIES_EFR32MG24 || SOC_SERIES_MGM24
56

67
config NUM_IRQS
78
# must be >= the highest interrupt number used

soc/silabs/silabs_s2/efr32mg24/Kconfig.soc renamed to soc/silabs/silabs_s2/xg24/Kconfig.soc

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,26 @@
11
# Copyright (c) 2020 TriaGnoSys GmbH
2+
# Copyright (c) 2025 Silicon Laboratories Inc.
23
# SPDX-License-Identifier: Apache-2.0
34

5+
config SOC_SERIES_XG24
6+
bool
7+
help
8+
Silicon Labs EFR32 24 Series SoC and modules
9+
410
config SOC_SERIES_EFR32MG24
511
bool
612
select SOC_FAMILY_SILABS_S2
13+
select SOC_SERIES_XG24
714
help
815
Silicon Labs EFR32MG24 (Mighty Gecko) Series MCU
916

17+
config SOC_SERIES_MGM24
18+
bool
19+
select SOC_FAMILY_SILABS_S2
20+
select SOC_SERIES_XG24
21+
help
22+
Silicon Labs MGM240 (Mighty Gecko) Series MCU modules
23+
1024
config SOC_PART_NUMBER_EFR32MG24B020F1536IM40
1125
bool
1226
select SOC_SERIES_EFR32MG24
@@ -23,17 +37,24 @@ config SOC_PART_NUMBER_EFR32MG24B210F1536IM48
2337
bool
2438
select SOC_SERIES_EFR32MG24
2539

40+
config SOC_PART_NUMBER_MGM240SD22VNA
41+
bool
42+
select SOC_SERIES_MGM24
43+
2644
config SOC_SERIES
2745
default "efr32mg24" if SOC_SERIES_EFR32MG24
46+
default "mgm24" if SOC_SERIES_MGM24
2847

2948
config SOC
3049
default "efr32mg24b220f1536im48" if SOC_PART_NUMBER_EFR32MG24B220F1536IM48
3150
default "efr32mg24b310f1536im48" if SOC_PART_NUMBER_EFR32MG24B310F1536IM48
3251
default "efr32mg24b210f1536im48" if SOC_PART_NUMBER_EFR32MG24B210F1536IM48
3352
default "efr32mg24b020f1536im40" if SOC_PART_NUMBER_EFR32MG24B020F1536IM40
53+
default "mgm240sd22vna" if SOC_PART_NUMBER_MGM240SD22VNA
3454

3555
config SOC_PART_NUMBER
3656
default "EFR32MG24B220F1536IM48" if SOC_PART_NUMBER_EFR32MG24B220F1536IM48
3757
default "EFR32MG24B310F1536IM48" if SOC_PART_NUMBER_EFR32MG24B310F1536IM48
3858
default "EFR32MG24B210F1536IM48" if SOC_PART_NUMBER_EFR32MG24B210F1536IM48
3959
default "EFR32MG24B020F1536IM40" if SOC_PART_NUMBER_EFR32MG24B020F1536IM40
60+
default "MGM240SD22VNA" if SOC_PART_NUMBER_MGM240SD22VNA

soc/silabs/silabs_s2/efr32mg24/soc_pinmap.h renamed to soc/silabs/silabs_s2/xg24/soc_pinmap.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/*
22
* Copyright (c) 2020 TriaGnoSys GmbH
3+
* Copyright (c) 2025 Silicon Laboratories Inc.
34
* SPDX-License-Identifier: Apache-2.0
45
*/
56

soc/silabs/soc.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ family:
5353
- name: efr32mg24b310f1536im48
5454
- name: efr32mg24b210f1536im48
5555
- name: efr32mg24b020f1536im40
56+
- name: mgm24
57+
socs:
58+
- name: mgm240sd22vna
5659
- name: efr32bg27
5760
socs:
5861
- name: efr32bg27c140f768im40

west.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ manifest:
235235
groups:
236236
- hal
237237
- name: hal_silabs
238-
revision: 13275a7b5393e628fdfb9f1bdda7fbeb32d73117
238+
revision: 921041808ba4843f72a617f9ad90e0d3beb52bbd
239239
path: modules/hal/silabs
240240
groups:
241241
- hal

0 commit comments

Comments
 (0)