diff --git a/bsp/efm32/Efm32gg_rom.ld b/bsp/efm32/Efm32gg_rom.ld
new file mode 100644
index 0000000000..a721754fa5
--- /dev/null
+++ b/bsp/efm32/Efm32gg_rom.ld
@@ -0,0 +1,169 @@
+/***************************************************************************//**
+ * @file efm32_rom_gg.ld
+ * @brief Linker script for EFM32 giant gecko with GNU ld
+ * COPYRIGHT (C) 2011, RT-Thread Development Team
+ * @author onelife
+ * @version 0.4 beta
+ *******************************************************************************
+ * @section License
+ * The license and distribution terms for this file may be found in the file
+ * LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
+ *******************************************************************************
+ * @section Change Logs
+ * Date Author Notes
+ * 2011-12-08 onelife Initial creation for EFM3 giant gecko
+ * support
+ ******************************************************************************/
+OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
+ENTRY(__cs3_reset)
+SEARCH_DIR(.)
+GROUP(-lgcc -lc -lcs3 -lcs3unhosted)
+
+MEMORY
+{
+ CODE (rx) : ORIGIN = 0x00000000, LENGTH = 1024K
+ DATA (rwx) : ORIGIN = 0x20000000, LENGTH = 128K
+}
+_system_stack_size = 0x200;
+
+/* These force the linker to search for particular symbols from
+ * the start of the link process and thus ensure the user's
+ * overrides are picked up
+ */
+
+EXTERN(__cs3_reset __cs3_reset_efm32)
+EXTERN(__cs3_start_asm _start)
+
+PROVIDE(__cs3_reset = __cs3_reset_efm32);
+PROVIDE(__cs3_start_asm = _start);
+
+SECTIONS
+{
+ .text :
+ {
+ . = ALIGN(4);
+ KEEP(*(.cs3.interrupt_vector)) /* Startup code */
+ . = ALIGN(4);
+
+ *(.cs3.reset)
+ *(.cs3.init)
+ *(.text) /* remaining code */
+ *(.text.*) /* remaining code */
+ *(.rodata) /* read-only data (constants) */
+ *(.rodata*)
+ *(.glue_7)
+ *(.glue_7t)
+ *(.gnu.linkonce.t*)
+
+ /* section information for finsh shell */
+ . = ALIGN(4);
+ __fsymtab_start = .;
+ KEEP(*(FSymTab))
+ __fsymtab_end = .;
+ . = ALIGN(4);
+ __vsymtab_start = .;
+ KEEP(*(VSymTab))
+ __vsymtab_end = .;
+ . = ALIGN(4);
+
+ . = ALIGN(4);
+ _etext = .;
+ } > CODE = 0
+
+ /* .ARM.exidx is sorted, so has to go in its own output section. */
+ __exidx_start = .;
+ .ARM.exidx :
+ {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+
+ /* This is used by the startup in order to initialize the .data secion */
+ _sidata = .;
+ } > CODE
+ __exidx_end = .;
+
+ /* .data section which is used for initialized data */
+ .data : AT (_sidata)
+ {
+ . = ALIGN(4);
+ /* This is used by the startup in order to initialize the .data secion */
+ _sdata = . ;
+
+ *(.data)
+ *(.data.*)
+ *(.gnu.linkonce.d*)
+
+ . = ALIGN(4);
+ /* This is used by the startup in order to initialize the .data secion */
+ _edata = . ;
+ } >DATA
+
+ .stack :
+ {
+ . = . + _system_stack_size;
+ . = ALIGN(4);
+ __cs3_stack = .;
+ } >DATA
+
+ __bss_start = .;
+ .bss :
+ {
+ . = ALIGN(4);
+ /* This is used by the startup in order to initialize the .bss secion */
+ _sbss = .;
+
+ *(.bss)
+ *(.bss.*)
+ *(COMMON)
+
+ . = ALIGN(4);
+ /* This is used by the startup in order to initialize the .bss secion */
+ _ebss = . ;
+
+ *(.bss.init)
+ } > DATA
+ __bss_end = .;
+ _end = .;
+
+ /* Stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+
+ /* DWARF debug sections.
+ * Symbols in the DWARF debugging sections are relative to
+ * the beginning of the section so we begin them at 0.
+ */
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ /* DWARF 2.1 */
+ .debug_ranges 0 : { *(.debug_ranges) }
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+
+ .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
+ .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) }
+ /DISCARD/ : { *(.note.GNU-stack) }
+}
+
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32.h
index 96085cb33f..b30932656e 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32.h
@@ -9,7 +9,7 @@
* Add "#include "efm32.h" to your source files
* @endverbatim
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f16.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f16.h
index 12009caa9f..89e9221bd7 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f16.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f16.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G200F16
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -9762,6 +9762,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f32.h
index a183dc57f8..1385722a2b 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G200F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -9762,6 +9762,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f64.h
index 56649219c4..89e6c391f1 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g200f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G200F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -9762,6 +9762,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g210f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g210f128.h
index 213decd036..4db39cca13 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g210f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g210f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G210F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -9983,6 +9983,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f128.h
index f3922682ca..d87d56cb77 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G222F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10061,6 +10061,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f32.h
index c9b2e0bcf8..73af882687 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G222F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10061,6 +10061,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f64.h
index fd02519efb..23ad73f03d 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g222f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G222F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10061,6 +10061,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f128.h
index 9804ef2034..88d966764f 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G230F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10104,6 +10104,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f32.h
index 066c78b3bc..42ef63dcb9 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G230F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10104,6 +10104,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f64.h
index c4a7254a21..28ddf4a6b8 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g230f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G230F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10104,6 +10104,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f128.h
index df8a52b73c..00f60897e9 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G232F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10104,6 +10104,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f32.h
index b1c37d0576..3491fcaff4 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G232F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10104,6 +10104,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f64.h
index 67b28e1b86..2597d080ed 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g232f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G232F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10104,6 +10104,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f128.h
index a029f18f16..7758e1c590 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G280F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11293,6 +11293,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f32.h
index 2a58ba46e9..96dbfaa01b 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G280F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11293,6 +11293,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f64.h
index a3622a675a..97d031308d 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g280f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G280F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11293,6 +11293,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f128.h
index e42af3169f..3007a0ff8f 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G290F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11293,6 +11293,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f32.h
index 68c9926f21..4e84f53ccf 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G290F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11293,6 +11293,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f64.h
index e70f42f68e..470ff898a1 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g290f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G290F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11293,6 +11293,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f128.h
index aedb2fd890..d8ca27420e 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G840F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10578,6 +10578,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f32.h
index 9860f5bca8..9ef1f168ae 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G840F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10578,6 +10578,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f64.h
index 3034bd10ba..0972f9dc03 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g840f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G840F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10578,6 +10578,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f128.h
index 6b93e93491..437ae55d57 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G842F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10578,6 +10578,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f32.h
index e888e3b548..822a7c9a2f 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G842F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10578,6 +10578,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f64.h
index a415724e62..1efe9485ff 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g842f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G842F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -10578,6 +10578,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f128.h
index 72b5c4173c..0ef6555370 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G880F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11767,6 +11767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f32.h
index 06c8105fbe..0553c8f8a6 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G880F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11767,6 +11767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f64.h
index 8d434861e6..9efe2fc5f9 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g880f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G880F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11767,6 +11767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f128.h
index 33968ec2ba..2077e21eb5 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G890F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11767,6 +11767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f32.h
index 2df8a46fd4..059afb0338 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G890F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11767,6 +11767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f64.h
index 84fea456b1..7335a144c7 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32g890f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32G890F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -11767,6 +11767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg230f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg230f1024.h
index 0b3fed892e..b0fc447199 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg230f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg230f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG230F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15326,6 +15326,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg230f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg230f512.h
index 141c23a53b..2064665cb8 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg230f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg230f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG230F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15326,6 +15326,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg232f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg232f1024.h
index 90f311748d..e72600a59c 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg232f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg232f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG232F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15326,6 +15326,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg232f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg232f512.h
index d62620e479..c3f280bc8c 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg232f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg232f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG232F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15326,6 +15326,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg280f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg280f1024.h
index 73e488a156..ee150de61e 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg280f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg280f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG280F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg280f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg280f512.h
index b0a67cefaa..c07fec41ef 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg280f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg280f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG280F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg290f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg290f1024.h
index d99227e3e7..ba333c71ba 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg290f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg290f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG290F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg290f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg290f512.h
index a1c995cb7f..2a92e9262c 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg290f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg290f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG290F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg295f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg295f1024.h
index a2220f931c..1576b00ff9 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg295f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg295f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG295F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg295f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg295f512.h
index 302e010b9e..620e1c61d5 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg295f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg295f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG295F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg330f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg330f1024.h
index f10b1b6fbc..6e85bd1b0c 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg330f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg330f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG330F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18083,6 +18083,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg330f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg330f512.h
index 43abf5d9e9..b862155f06 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg330f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg330f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG330F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18083,6 +18083,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg332f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg332f1024.h
index 78c08b806b..b66b2fae87 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg332f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg332f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG332F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18083,6 +18083,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg332f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg332f512.h
index 2ff6527d90..2fdd4528a3 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg332f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg332f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG332F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18083,6 +18083,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg380f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg380f1024.h
index 415dcd05a9..36e7137cea 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg380f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg380f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG380F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg380f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg380f512.h
index 0d1a72398e..a6e7e7d597 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg380f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg380f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG380F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg390f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg390f1024.h
index 5328bf62ca..429ddfc066 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg390f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg390f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG390F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg390f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg390f512.h
index e0ed2b84f2..d8d4169c52 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg390f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg390f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG390F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg395f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg395f1024.h
index 0b0df8ca41..dc8691737f 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg395f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg395f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG395F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg395f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg395f512.h
index 7d6ebb4b49..dcdb024388 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg395f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg395f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG395F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg840f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg840f1024.h
index 3e4743ff4b..ace839a26c 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg840f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg840f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG840F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15940,6 +15940,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg840f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg840f512.h
index bbb6894337..fae4608ed6 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg840f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg840f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG840F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15940,6 +15940,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg842f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg842f1024.h
index 8fa6420a8e..2d871a81e8 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg842f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg842f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG842F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15940,6 +15940,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg842f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg842f512.h
index 0477bd13de..cccc5b7e48 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg842f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg842f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG842F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15940,6 +15940,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg880f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg880f1024.h
index 0931e94d15..8480a15de9 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg880f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg880f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG880F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg880f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg880f512.h
index d3160f1465..6c9f89a8a3 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg880f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg880f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG880F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg890f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg890f1024.h
index ffb89ed02c..dac4e2dfaf 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg890f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg890f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG890F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg890f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg890f512.h
index 592c976a2a..05d161c9a9 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg890f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg890f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG890F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg895f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg895f1024.h
index 334739e21e..504c81aa33 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg895f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg895f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG895F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg895f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg895f512.h
index 540bc6d5ca..f42a389139 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg895f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg895f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG895F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg940f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg940f1024.h
index 4e2212f224..30b95373f9 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg940f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg940f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG940F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18697,6 +18697,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg940f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg940f512.h
index cab171f7a8..d0c5aa1412 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg940f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg940f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG940F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18697,6 +18697,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg942f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg942f1024.h
index dda22eef60..3b82453f97 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg942f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg942f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG942F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18697,6 +18697,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg942f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg942f512.h
index 4afd914c62..7b514f4547 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg942f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg942f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG942F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18697,6 +18697,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg980f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg980f1024.h
index 5771a2e328..7165f4237e 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg980f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg980f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG980F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg980f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg980f512.h
index 06b0df2051..c54d13f9b4 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg980f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg980f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG980F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg990f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg990f1024.h
index f8b5b529fa..eb8a3196c5 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg990f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg990f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG990F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg990f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg990f512.h
index e9dfe003b1..ba2de4ba7f 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg990f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg990f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG990F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg995f1024.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg995f1024.h
index aeddf095b6..4d17471184 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg995f1024.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg995f1024.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG995F1024
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg995f512.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg995f512.h
index 31443e47ce..c79d532cec 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg995f512.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32gg995f512.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32GG995F512
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f128.h
index 37dd418656..36f9cdf3c1 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG230F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15326,6 +15326,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f256.h
index 28ca629d97..29ec564861 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG230F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15326,6 +15326,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f64.h
index 9fe64b182e..071e8c6aab 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg230f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG230F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15326,6 +15326,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f128.h
index c073bf8a57..96837ee985 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG232F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15326,6 +15326,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f256.h
index df8ea9c90a..d47a0686f3 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG232F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15326,6 +15326,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f64.h
index da935bae3f..cd353d0609 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg232f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG232F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15326,6 +15326,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f128.h
index 8b3e3ad5a1..1055522946 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG280F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f256.h
index 01b3048979..9af4024e8d 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG280F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f64.h
index bc038010e6..7540e0b2cc 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg280f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG280F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f128.h
index cda8751bbf..29c58e8154 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG290F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f256.h
index 4a528db1bd..c2e9912f6c 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG290F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f64.h
index 35193498f2..b9cd00d9e6 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg290f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG290F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f128.h
index 04f524510a..4daf0ec310 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG295F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f256.h
index 6144679ce1..e5bce196a4 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG295F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f64.h
index e332855a0f..fc281d5774 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg295f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG295F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -17905,6 +17905,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f128.h
index ceca3ffe37..cc16709e35 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG330F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18083,6 +18083,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f256.h
index f4b108498e..1f660a8b54 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG330F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18083,6 +18083,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f64.h
index 66dc366d44..fd2b94edf8 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg330f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG330F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18083,6 +18083,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f128.h
index e4e00bf8d2..5b751a73bc 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG332F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18083,6 +18083,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f256.h
index 3a41c9867d..08c8ed1dad 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG332F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18083,6 +18083,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f64.h
index f17d2e1bc8..71f5824677 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg332f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG332F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18083,6 +18083,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f128.h
index d13672a8aa..7a0c856e80 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG380F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f256.h
index 09e9bc0766..2827ec5874 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG380F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f64.h
index 4d82dced30..f4f41eeecc 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg380f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG380F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f128.h
index 2df33dd0ba..c6cdf368eb 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG390F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f256.h
index 6d17a2f231..7f91a9476e 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG390F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f64.h
index 8abc0d88f3..c0d7616472 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg390f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG390F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f128.h
index c0535b8e69..d033ba3d94 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG395F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f256.h
index 23617fe8ee..73110a41aa 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG395F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f64.h
index cc5ed6158b..93fae5cbf1 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg395f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG395F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -20662,6 +20662,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f128.h
index 88fac1800b..5a7fb3b5fe 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG840F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15940,6 +15940,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f256.h
index 9591913dfc..6d2f24ee24 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG840F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15940,6 +15940,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f64.h
index a70c622deb..8ce4279d14 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg840f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG840F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15940,6 +15940,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f128.h
index 200437fd3e..c3832faaad 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG842F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15940,6 +15940,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f256.h
index 5649ed0b03..175419cef6 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG842F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15940,6 +15940,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f64.h
index 04fc382b59..dbd114ceeb 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg842f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG842F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -15940,6 +15940,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f128.h
index b6c0840d49..e9d5714452 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG880F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f256.h
index 3d1e9fa820..ec8800a1ae 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG880F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f64.h
index e3e6d57e87..aed2dd7e32 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg880f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG880F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f128.h
index 4528181d7f..3ae79ec68f 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG890F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f256.h
index f89ecbf5ce..62707292a7 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG890F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f64.h
index a72bdcd8e8..b636263aef 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg890f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG890F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f128.h
index 12a6e7c59f..39b3bc2f88 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG895F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f256.h
index 3488d00319..3a8d0df658 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG895F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f64.h
index e31644c04d..3a712f825b 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg895f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG895F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18519,6 +18519,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f128.h
index 64f6c9bf77..0ffef455b6 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG940F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18697,6 +18697,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f256.h
index e46d7b681b..063eaca883 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG940F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18697,6 +18697,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f64.h
index 10603af112..1935ed808b 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg940f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG940F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18697,6 +18697,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f128.h
index 6a2cd59ead..bbd0d59484 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG942F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18697,6 +18697,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f256.h
index 23b2a7bc3f..75899e7eca 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG942F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18697,6 +18697,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f64.h
index d5dec14ede..91d2e8887c 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg942f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG942F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -18697,6 +18697,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f128.h
index 513339e78a..b00ed7ba6a 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG980F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f256.h
index 2aac421ed7..a003477716 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG980F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f64.h
index 03c41eebcc..1fb5ee125e 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg980f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG980F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f128.h
index 33f77ec1aa..824c0edba7 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG990F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f256.h
index 5583849722..549b76ccc2 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG990F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f64.h
index 9ece9c2f46..09641505ee 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg990f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG990F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f128.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f128.h
index a9e09e43e8..1fcc7abe7c 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f128.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f128.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG995F128
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f256.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f256.h
index f292f30610..13a7d3a7f9 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f256.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f256.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG995F256
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f64.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f64.h
index 178e418047..673d9268bf 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f64.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32lg995f64.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32LG995F64
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -21276,6 +21276,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f16.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f16.h
index fac6b14722..771b9a0bf8 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f16.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f16.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG108F16
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2654,11 +2654,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3331,11 +3335,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -11076,6 +11082,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f32.h
index c7eab1658d..c8525842fb 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG108F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2654,11 +2654,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3331,11 +3335,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -11076,6 +11082,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f4.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f4.h
index b0cbbe3c23..da53f72762 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f4.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f4.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG108F4
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2654,11 +2654,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3331,11 +3335,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -11076,6 +11082,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f8.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f8.h
index ee79dc4584..c65f1ea552 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f8.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg108f8.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG108F8
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2654,11 +2654,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3331,11 +3335,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -11076,6 +11082,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f16.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f16.h
index ebf378935a..ffea56c651 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f16.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f16.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG110F16
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f32.h
index 0574a399c4..733e5451c1 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG110F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f4.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f4.h
index 5a1d56726a..ebb92a62d4 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f4.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f4.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG110F4
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f8.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f8.h
index 3eb2f4259d..2e74f497e1 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f8.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg110f8.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG110F8
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f16.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f16.h
index a9d9b670ff..eeb65422de 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f16.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f16.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG210F16
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f32.h
index 5dc90e6235..eff2ff1128 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG210F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f8.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f8.h
index edbc7f1ea7..fe6aaa10be 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f8.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg210f8.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG210F8
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f16.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f16.h
index 0ae940d5de..0e3f366517 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f16.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f16.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG222F16
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f32.h
index 3edf3b0adf..b5dee1e90d 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG222F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f8.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f8.h
index d9b5343133..50698728e2 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f8.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg222f8.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG222F8
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f16.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f16.h
index 9187a2f0ff..c27074d158 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f16.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f16.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG230F16
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f32.h
index a3f9b2064c..f35425123d 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG230F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f8.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f8.h
index 07647ec0d4..8f25b1c048 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f8.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg230f8.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG230F8
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f16.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f16.h
index c389a2c2c9..0aa060e272 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f16.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f16.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG232F16
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f32.h
index 1581f2eb15..c4acf7a19e 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG232F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f8.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f8.h
index 605323d120..4fb3810413 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f8.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg232f8.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG232F8
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2763,11 +2763,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3440,11 +3444,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -12761,6 +12767,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f16.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f16.h
index f0133da0f1..203aaedddf 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f16.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f16.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG822F16
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2803,11 +2803,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3480,11 +3484,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -13254,6 +13260,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f32.h
index 6b84649896..9d57687322 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG822F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2803,11 +2803,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3480,11 +3484,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -13254,6 +13260,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f8.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f8.h
index 0f276fb87e..71c79333ec 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f8.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg822f8.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG822F8
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2803,11 +2803,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3480,11 +3484,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -13254,6 +13260,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f16.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f16.h
index 38a8f6dda2..ae94f1f062 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f16.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f16.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG840F16
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2803,11 +2803,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3480,11 +3484,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -13254,6 +13260,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f32.h
index f2689ca593..bb149dbd3b 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG840F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2803,11 +2803,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3480,11 +3484,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -13254,6 +13260,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f8.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f8.h
index 52611a75c9..35e106d157 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f8.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg840f8.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG840F8
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2803,11 +2803,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3480,11 +3484,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -13254,6 +13260,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f16.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f16.h
index d69a753bda..5eeded516c 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f16.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f16.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG842F16
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2803,11 +2803,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3480,11 +3484,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -13254,6 +13260,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f32.h
index e054fad1bd..403a4c28e7 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f32.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG842F32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2803,11 +2803,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3480,11 +3484,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -13254,6 +13260,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f8.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f8.h
index b5121338fb..25950b1937 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f8.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/efm32tg842f8.h
@@ -3,7 +3,7 @@
* @brief CMSIS Cortex-M3 Peripheral Access Layer Header File
* for EFM EFM32TG842F8
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -2803,11 +2803,15 @@ typedef struct
#define _USART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for USART_ROUTE */
#define _USART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for USART_ROUTE */
+#define _USART_ROUTE_LOCATION_LOC5 0x00000005UL /**< Mode LOC5 for USART_ROUTE */
#define USART_ROUTE_LOCATION_DEFAULT (_USART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC0 (_USART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC1 (_USART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC2 (_USART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for USART_ROUTE */
#define USART_ROUTE_LOCATION_LOC3 (_USART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC4 (_USART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for USART_ROUTE */
+#define USART_ROUTE_LOCATION_LOC5 (_USART_ROUTE_LOCATION_LOC5 << 8) /**< Shifted mode LOC5 for USART_ROUTE */
/* Bit fields for USART INPUT */
#define _USART_INPUT_RESETVALUE 0x00000000UL /**< Default value for USART_INPUT */
@@ -3480,11 +3484,13 @@ typedef struct
#define _LEUART_ROUTE_LOCATION_LOC1 0x00000001UL /**< Mode LOC1 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC2 0x00000002UL /**< Mode LOC2 for LEUART_ROUTE */
#define _LEUART_ROUTE_LOCATION_LOC3 0x00000003UL /**< Mode LOC3 for LEUART_ROUTE */
+#define _LEUART_ROUTE_LOCATION_LOC4 0x00000004UL /**< Mode LOC4 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_DEFAULT (_LEUART_ROUTE_LOCATION_DEFAULT << 8) /**< Shifted mode DEFAULT for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC0 (_LEUART_ROUTE_LOCATION_LOC0 << 8) /**< Shifted mode LOC0 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC1 (_LEUART_ROUTE_LOCATION_LOC1 << 8) /**< Shifted mode LOC1 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC2 (_LEUART_ROUTE_LOCATION_LOC2 << 8) /**< Shifted mode LOC2 for LEUART_ROUTE */
#define LEUART_ROUTE_LOCATION_LOC3 (_LEUART_ROUTE_LOCATION_LOC3 << 8) /**< Shifted mode LOC3 for LEUART_ROUTE */
+#define LEUART_ROUTE_LOCATION_LOC4 (_LEUART_ROUTE_LOCATION_LOC4 << 8) /**< Shifted mode LOC4 for LEUART_ROUTE */
/* Bit fields for LEUART INPUT */
#define _LEUART_INPUT_RESETVALUE 0x00000000UL /**< Default value for LEUART_INPUT */
@@ -13254,6 +13260,11 @@ typedef struct
#define _DEVINFO_PART_PROD_REV_SHIFT 24 /**< Bit position for production revision */
#define _DEVINFO_PART_DEVICE_FAMILY_MASK 0x00FF0000UL /**< Device Family, 0x47 for Gecko */
#define _DEVINFO_PART_DEVICE_FAMILY_SHIFT 16 /**< Bit position for device family */
+#define _DEVINFO_PART_DEVICE_FAMILY_G 71 /**< Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_GG 72 /**< Giant Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_TG 73 /**< Tiny Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_LG 74 /**< Leopard Gecko Device Family */
+#define _DEVINFO_PART_DEVICE_FAMILY_ZG 75 /**< Zero Gecko Device Family */
#define _DEVINFO_PART_DEVICE_NUMBER_MASK 0x0000FFFFUL /**< Device number */
#define _DEVINFO_PART_DEVICE_NUMBER_SHIFT 0 /**< Bit position for device number */
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32.s
index 55ad181d40..c4fbc0f376 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32.s
@@ -2,7 +2,7 @@
; * @file: startup_efm32.s
; * @purpose: CMSIS Cortex-M3 Core Device Startup File
; * for the Energy Micro EFM32 device series
-; * @version 2.2.2
+; * @version 2.3.0
; * @date: January 2011
; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
; *
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32gg.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32gg.s
index ddb9d41cbc..0cf033dbd1 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32gg.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32gg.s
@@ -2,7 +2,7 @@
; * @file: startup_efm32.s
; * @purpose: CMSIS Cortex-M3 Core Device Startup File
; * for the Energy Micro EFM32 device series
-; * @version 2.2.2
+; * @version 2.3.0
; * @date: January 2011
; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
; *
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32lg.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32lg.s
index 83cf8da684..0cf033dbd1 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32lg.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32lg.s
@@ -2,7 +2,7 @@
; * @file: startup_efm32.s
; * @purpose: CMSIS Cortex-M3 Core Device Startup File
; * for the Energy Micro EFM32 device series
-; * @version 2.2.2
+; * @version 2.3.0
; * @date: January 2011
; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
; *
@@ -108,6 +108,7 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD MSC_IRQHandler ; 35: MSC Interrupt
DCD AES_IRQHandler ; 36: AES Interrupt
DCD EBI_IRQHandler ; 37: EBI Interrupt
+ DCD EMU_IRQHandler ; 38: EMU Interrupt
__Vectors_End
@@ -211,6 +212,7 @@ Default_Handler PROC
EXPORT MSC_IRQHandler [WEAK]
EXPORT AES_IRQHandler [WEAK]
EXPORT EBI_IRQHandler [WEAK]
+ EXPORT EMU_IRQHandler [WEAK]
DMA_IRQHandler
@@ -251,6 +253,7 @@ LCD_IRQHandler
MSC_IRQHandler
AES_IRQHandler
EBI_IRQHandler
+EMU_IRQHandler
B .
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32tg.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32tg.s
index f06a06af23..f136c879bf 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32tg.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/arm/startup_efm32tg.s
@@ -2,7 +2,7 @@
; * @file: startup_efm32.s
; * @purpose: CMSIS Cortex-M3 Core Device Startup File
; * for the Energy Micro EFM32 device series
-; * @version 2.2.2
+; * @version 2.3.0
; * @date: January 2011
; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
; *
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32.s
index 081f06db08..fbf0b35c36 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32.s
@@ -16,7 +16,7 @@
* they apply.
*
* Energy Micro release version
- * @version 2.2.2
+ * @version 2.3.0
*/
.section ".cs3.interrupt_vector", "ax"
.globl __cs3_interrupt_vector_efm32g
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32gg.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32gg.s
index de289ec6e2..181362d050 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32gg.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32gg.s
@@ -16,7 +16,7 @@
* they apply.
*
* Energy Micro release version
- * @version 2.2.2
+ * @version 2.3.0
*/
.section ".cs3.interrupt_vector", "ax"
.globl __cs3_interrupt_vector_efm32g
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32lg.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32lg.s
index 2fcf5829e3..181362d050 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32lg.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32lg.s
@@ -16,7 +16,7 @@
* they apply.
*
* Energy Micro release version
- * @version 2.2.2
+ * @version 2.3.0
*/
.section ".cs3.interrupt_vector", "ax"
.globl __cs3_interrupt_vector_efm32g
@@ -76,6 +76,7 @@ __cs3_interrupt_vector_efm32g:
.long MSC_IRQHandler
.long AES_IRQHandler
.long EBI_IRQHandler
+ .long EMU_IRQHandler
.size __cs3_interrupt_vector_efm32g, . - __cs3_interrupt_vector_efm32g
@@ -254,4 +255,7 @@ _IRQHandlerinterrupt:
.weak EBI_IRQHandler
.globl EBI_IRQHandler
.set EBI_IRQHandler, _IRQHandlerinterrupt
+ .weak EMU_IRQHandler
+ .globl EMU_IRQHandler
+ .set EMU_IRQHandler, _IRQHandlerinterrupt
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32tg.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32tg.s
index 5edd8e2e07..3b0613552f 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32tg.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/startup_efm32tg.s
@@ -16,7 +16,7 @@
* they apply.
*
* Energy Micro release version
- * @version 2.2.2
+ * @version 2.3.0
*/
.section ".cs3.interrupt_vector", "ax"
.globl __cs3_interrupt_vector_efm32g
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32.c b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32.c
index aee10d6806..fd5906dc63 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32.c
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32.c
@@ -2,7 +2,7 @@
* @file
* @brief CMSIS Compatible EFM32 startup file in C for IAR EWARM
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32.s
index 8ba7c93b58..93c7d887c6 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32.s
@@ -2,7 +2,7 @@
; * @file: startup_efm32.s
; * @purpose: CMSIS Cortex-M3 Core Device Startup File
; * for the Energy Micro 'EFM32G' Device Series
-; * @version 2.2.2
+; * @version 2.3.0
; * @date: January 2011
; *----------------------------------------------------------------------------
; *
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32gg.c b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32gg.c
index 8943a0a741..af1e72be37 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32gg.c
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32gg.c
@@ -2,7 +2,7 @@
* @file
* @brief CMSIS Compatible EFM32 startup file in Cfor IAR EWARM
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32gg.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32gg.s
index 162c8160ec..d37c48fb9e 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32gg.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32gg.s
@@ -2,7 +2,7 @@
; * @file: startup_efm32.s
; * @purpose: CMSIS Cortex-M3 Core Device Startup File
; * for the Energy Micro 'EFM32G' Device Series
-; * @version 2.2.2
+; * @version 2.3.0
; * @date: January 2011
; *----------------------------------------------------------------------------
; *
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32lg.c b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32lg.c
index 370da06098..af1e72be37 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32lg.c
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32lg.c
@@ -2,7 +2,7 @@
* @file
* @brief CMSIS Compatible EFM32 startup file in Cfor IAR EWARM
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -277,6 +277,11 @@ __weak void EBI_IRQHandler(void)
while(1);
}
+__weak void EMU_IRQHandler(void)
+{
+ while(1);
+}
+
/* With IAR, the CSTACK is defined via project options settings */
#pragma location = ".intvec"
@@ -335,5 +340,6 @@ const void * const __vector_table[]= {
(void *) MSC_IRQHandler, /* 35 - MSC */
(void *) AES_IRQHandler, /* 36 - AES */
(void *) EBI_IRQHandler, /* 37 - EBI */
+ (void *) EMU_IRQHandler, /* 38 - EMU */
};
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32lg.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32lg.s
index 3f13fdb63a..d37c48fb9e 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32lg.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32lg.s
@@ -2,7 +2,7 @@
; * @file: startup_efm32.s
; * @purpose: CMSIS Cortex-M3 Core Device Startup File
; * for the Energy Micro 'EFM32G' Device Series
-; * @version 2.2.2
+; * @version 2.3.0
; * @date: January 2011
; *----------------------------------------------------------------------------
; *
@@ -114,6 +114,7 @@ __vector_table_0x1c
DCD MSC_IRQHandler ; 35: MSC Interrupt
DCD AES_IRQHandler ; 36: AES Interrupt
DCD EBI_IRQHandler ; 37: EBI Interrupt
+ DCD EMU_IRQHandler ; 38: EMU Interrupt
@@ -372,5 +373,10 @@ AES_IRQHandler
EBI_IRQHandler
B EBI_IRQHandler
+ PUBWEAK EMU_IRQHandler
+ SECTION .text:CODE:REORDER(1)
+EMU_IRQHandler
+ B EMU_IRQHandler
+
END
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32tg.c b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32tg.c
index e7cfb4cfe6..c5cb606b01 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32tg.c
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32tg.c
@@ -2,7 +2,7 @@
* @file
* @brief CMSIS Compatible EFM32 startup file in Cfor IAR EWARM
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32tg.s b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32tg.s
index 27211f6b71..caaf4aa7b5 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32tg.s
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/iar/startup_efm32tg.s
@@ -2,7 +2,7 @@
; * @file: startup_efm32.s
; * @purpose: CMSIS Cortex-M3 Core Device Startup File
; * for the Energy Micro 'EFM32G' Device Series
-; * @version 2.2.2
+; * @version 2.3.0
; * @date: January 2011
; *----------------------------------------------------------------------------
; *
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/system_efm32.c b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/system_efm32.c
index 803282110b..84dabbdf15 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/system_efm32.c
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/system_efm32.c
@@ -2,7 +2,7 @@
* @file
* @brief CMSIS Cortex-M3 Peripheral Access Layer for EFM32 devices.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -115,6 +115,10 @@ uint32_t SystemCoreClockGet(void)
uint32_t ret;
ret = SystemHFClockGet();
+#if defined (_EFM32_GIANT_FAMILY)
+ /* Leopard/Giant Gecko has an additional divider */
+ ret = ret / (1 + ((CMU->CTRL & _CMU_CTRL_HFCLKDIV_MASK)>>_CMU_CTRL_HFCLKDIV_SHIFT));
+#endif
ret >>= (CMU->HFCORECLKDIV & _CMU_HFCORECLKDIV_HFCORECLKDIV_MASK) >>
_CMU_HFCORECLKDIV_HFCORECLKDIV_SHIFT;
diff --git a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/system_efm32.h b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/system_efm32.h
index 707becf169..a711ea6761 100644
--- a/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/system_efm32.h
+++ b/bsp/efm32/Libraries/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/system_efm32.h
@@ -2,7 +2,7 @@
* @file
* @brief CMSIS Cortex-M3 Peripheral Access Layer for EFM32 devices.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/SConscript b/bsp/efm32/Libraries/SConscript
index 9fc6c7d81c..fc8ae147e9 100644
--- a/bsp/efm32/Libraries/SConscript
+++ b/bsp/efm32/Libraries/SConscript
@@ -38,18 +38,20 @@ efm32lib/src/efm32_wdog.c
# starupt scripts for each EFM32 family
startup_scripts = {}
-startup_scripts['Gecko'] = 'startup_efm32.s'
startup_scripts['TinyGecko'] = 'startup_efm32tg.s'
+startup_scripts['Gecko'] = 'startup_efm32.s'
+startup_scripts['Giant Gecko'] = 'startup_efm32gg.s'
# linker scripts for each EFM32 family
#linker_scripts = {}
-#linker_scripts['Gecko'] = 'efm32g.ld'
#linker_scripts['TinyGecko'] = 'efm32tg.ld'
+#linker_scripts['Gecko'] = 'efm32g.ld'
+#linker_scripts['Giant Gecko'] = 'efm32gg.ld'
-# add startup script
+# add startup script
src = src + ['CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32/startup/cs3/' + startup_scripts[rtconfig.EFM32_FAMILY]]
-
-path = [cwd + '/efm32lib/inc',
+
+path = [cwd + '/efm32lib/inc',
cwd + '/CMSIS/CM3/CoreSupport',
cwd + '/CMSIS/CM3/DeviceSupport/EnergyMicro/EFM32']
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_acmp.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_acmp.h
index 68c7c2c4e0..9e10699aaa 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_acmp.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_acmp.h
@@ -2,7 +2,7 @@
* @file
* @brief Analog Comparator (ACMP) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_adc.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_adc.h
index cb0176aa34..63ff796278 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_adc.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_adc.h
@@ -2,7 +2,7 @@
* @file
* @brief Analog to Digital Converter (ADC) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_aes.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_aes.h
index 96d89a7e9c..6293753c78 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_aes.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_aes.h
@@ -3,7 +3,7 @@
* @brief Advanced encryption standard (AES) accelerator peripheral API for
* EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_assert.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_assert.h
index 33a677616a..0a38da1462 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_assert.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_assert.h
@@ -2,7 +2,7 @@
* @file
* @brief EFM32 peripheral API "assert" implementation.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*
* @details
* By default, EFM32 library assert usage is not included in order to reduce
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_bitband.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_bitband.h
index 16eb28c974..52c7e7a54c 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_bitband.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_bitband.h
@@ -2,7 +2,7 @@
* @file
* @brief Bitband Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_chip.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_chip.h
index 65aeeb49b0..1cd01e4331 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_chip.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_chip.h
@@ -2,7 +2,7 @@
* @file
* @brief Chip Initialization API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_cmu.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_cmu.h
index 45318fb97b..8aad895874 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_cmu.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_cmu.h
@@ -2,7 +2,7 @@
* @file
* @brief Clock management unit (CMU) API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -53,6 +53,10 @@ extern "C" {
#define CMU_HFCLKSEL_REG 1
#define CMU_LFACLKSEL_REG 2
#define CMU_LFBCLKSEL_REG 3
+#define CMU_DBGCLKSEL_REG 4
+#if defined (_EFM32_GIANT_FAMILY)
+#define CMU_USBCCLKSEL_REG 5
+#endif
#define CMU_SEL_REG_POS 0
#define CMU_SEL_REG_MASK 0xf
@@ -63,7 +67,9 @@ extern "C" {
#define CMU_HFCORECLKDIV_REG 2
#define CMU_LFAPRESC0_REG 3
#define CMU_LFBPRESC0_REG 4
-
+#if defined (_EFM32_GIANT_FAMILY)
+#define CMU_HFCLKDIV_REG 5
+#endif
#define CMU_DIV_REG_POS 4
#define CMU_DIV_REG_MASK 0xf
@@ -96,6 +102,9 @@ extern "C" {
#define CMU_LFB_CLK_BRANCH 9
#define CMU_LEUART0_CLK_BRANCH 10
#define CMU_LEUART1_CLK_BRANCH 11
+#define CMU_DBG_CLK_BRANCH 12
+#define CMU_AUX_CLK_BRANCH 13
+#define CMU_USBC_CLK_BRANCH 14
#define CMU_CLK_BRANCH_POS 17
#define CMU_CLK_BRANCH_MASK 0x1f
@@ -106,27 +115,26 @@ extern "C" {
******************************** ENUMS ************************************
******************************************************************************/
-/** Clock divisors. */
-typedef enum
-{
- cmuClkDiv_1 = 0, /**< Divide clock by 1. */
- cmuClkDiv_2 = 1, /**< Divide clock by 2. */
- cmuClkDiv_4 = 2, /**< Divide clock by 4. */
- cmuClkDiv_8 = 3, /**< Divide clock by 8. */
- cmuClkDiv_16 = 4, /**< Divide clock by 16. */
- cmuClkDiv_32 = 5, /**< Divide clock by 32. */
- cmuClkDiv_64 = 6, /**< Divide clock by 64. */
- cmuClkDiv_128 = 7, /**< Divide clock by 128. */
- cmuClkDiv_256 = 8, /**< Divide clock by 256. */
- cmuClkDiv_512 = 9, /**< Divide clock by 512. */
- cmuClkDiv_1024 = 10, /**< Divide clock by 1024. */
- cmuClkDiv_2048 = 11, /**< Divide clock by 2048. */
- cmuClkDiv_4096 = 12, /**< Divide clock by 4096. */
- cmuClkDiv_8192 = 13, /**< Divide clock by 8192. */
- cmuClkDiv_16384 = 14, /**< Divide clock by 16384. */
- cmuClkDiv_32768 = 15 /**< Divide clock by 32768. */
-} CMU_ClkDiv_TypeDef;
+/** Clock divisors. These values are valid for prescalers. */
+#define cmuClkDiv_1 1 /**< Divide clock by 1. */
+#define cmuClkDiv_2 2 /**< Divide clock by 2. */
+#define cmuClkDiv_4 4 /**< Divide clock by 4. */
+#define cmuClkDiv_8 8 /**< Divide clock by 8. */
+#define cmuClkDiv_16 16 /**< Divide clock by 16. */
+#define cmuClkDiv_32 32 /**< Divide clock by 32. */
+#define cmuClkDiv_64 64 /**< Divide clock by 64. */
+#define cmuClkDiv_128 128 /**< Divide clock by 128. */
+#define cmuClkDiv_256 256 /**< Divide clock by 256. */
+#define cmuClkDiv_512 512 /**< Divide clock by 512. */
+#define cmuClkDiv_1024 1024 /**< Divide clock by 1024. */
+#define cmuClkDiv_2048 2048 /**< Divide clock by 2048. */
+#define cmuClkDiv_4096 4096 /**< Divide clock by 4096. */
+#define cmuClkDiv_8192 8192 /**< Divide clock by 8192. */
+#define cmuClkDiv_16384 16384 /**< Divide clock by 16384. */
+#define cmuClkDiv_32768 32768 /**< Divide clock by 32768. */
+/** Clock divider configuration */
+typedef uint32_t CMU_ClkDiv_TypeDef;
/** High frequency RC bands. */
typedef enum
@@ -146,6 +154,25 @@ typedef enum
} CMU_HFRCOBand_TypeDef;
+#if defined(_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
+/** AUX High frequency RC bands. */
+typedef enum
+{
+ /** 1MHz RC band. */
+ cmuAUXHFRCOBand_1MHz = _CMU_AUXHFRCOCTRL_BAND_1MHZ,
+ /** 7MHz RC band. */
+ cmuAUXHFRCOBand_7MHz = _CMU_AUXHFRCOCTRL_BAND_7MHZ,
+ /** 11MHz RC band. */
+ cmuAUXHFRCOBand_11MHz = _CMU_AUXHFRCOCTRL_BAND_11MHZ,
+ /** 14MHz RC band. */
+ cmuAUXHFRCOBand_14MHz = _CMU_AUXHFRCOCTRL_BAND_14MHZ,
+ /** 21MHz RC band. */
+ cmuAUXHFRCOBand_21MHz = _CMU_AUXHFRCOCTRL_BAND_21MHZ,
+ /** 28MHz RC band. */
+ cmuAUXHFRCOBand_28MHz = _CMU_AUXHFRCOCTRL_BAND_28MHZ
+} CMU_AUXHFRCOBand_TypeDef;
+#endif
+
/** Clock points in CMU. Please refer to CMU overview in reference manual. */
typedef enum
{
@@ -154,11 +181,33 @@ typedef enum
/*******************/
/** High frequency clock */
+#if defined(_EFM32_GIANT_FAMILY)
+ cmuClock_HF = (CMU_HFCLKDIV_REG << CMU_DIV_REG_POS) |
+ (CMU_HFCLKSEL_REG << CMU_SEL_REG_POS) |
+ (CMU_NO_EN_REG << CMU_EN_REG_POS) |
+ (0 << CMU_EN_BIT_POS) |
+ (CMU_HF_CLK_BRANCH << CMU_CLK_BRANCH_POS),
+#else
cmuClock_HF = (CMU_NODIV_REG << CMU_DIV_REG_POS) |
(CMU_HFCLKSEL_REG << CMU_SEL_REG_POS) |
(CMU_NO_EN_REG << CMU_EN_REG_POS) |
(0 << CMU_EN_BIT_POS) |
(CMU_HF_CLK_BRANCH << CMU_CLK_BRANCH_POS),
+#endif
+
+ /** Debug clock */
+ cmuClock_DBG = (CMU_NODIV_REG << CMU_DIV_REG_POS) |
+ (CMU_DBGCLKSEL_REG << CMU_SEL_REG_POS) |
+ (CMU_NO_EN_REG << CMU_EN_REG_POS) |
+ (0 << CMU_EN_BIT_POS) |
+ (CMU_DBG_CLK_BRANCH << CMU_CLK_BRANCH_POS),
+
+ /** AUX clock */
+ cmuClock_AUX = (CMU_NODIV_REG << CMU_DIV_REG_POS) |
+ (CMU_NOSEL_REG << CMU_SEL_REG_POS) |
+ (CMU_NO_EN_REG << CMU_EN_REG_POS) |
+ (0 << CMU_EN_BIT_POS) |
+ (CMU_AUX_CLK_BRANCH << CMU_CLK_BRANCH_POS),
/**********************************/
/* HF peripheral clock sub-branch */
@@ -262,7 +311,7 @@ typedef enum
#endif
/** Peripheral reflex system clock. */
-#if defined(PRS_PRESENT)
+#if defined(_CMU_HFPERCLKEN0_PRS_MASK)
cmuClock_PRS = (CMU_NODIV_REG << CMU_DIV_REG_POS) |
(CMU_NOSEL_REG << CMU_SEL_REG_POS) |
(CMU_HFPERCLKEN0_EN_REG << CMU_EN_REG_POS) |
@@ -368,6 +417,20 @@ typedef enum
(CMU_HFCORE_CLK_BRANCH << CMU_CLK_BRANCH_POS),
#endif
+#if defined(USB_PRESENT)
+ cmuClock_USBC = (CMU_NODIV_REG << CMU_DIV_REG_POS) |
+ (CMU_USBCCLKSEL_REG << CMU_SEL_REG_POS) |
+ (CMU_HFCORECLKEN0_EN_REG << CMU_EN_REG_POS) |
+ (_CMU_HFCORECLKEN0_USBC_SHIFT << CMU_EN_BIT_POS) |
+ (CMU_USBC_CLK_BRANCH << CMU_CLK_BRANCH_POS),
+
+ cmuClock_USB = (CMU_NODIV_REG << CMU_DIV_REG_POS) |
+ (CMU_NOSEL_REG << CMU_SEL_REG_POS) |
+ (CMU_HFCORECLKEN0_EN_REG << CMU_EN_REG_POS) |
+ (_CMU_HFCORECLKEN0_USB_SHIFT << CMU_EN_BIT_POS) |
+ (CMU_HFCORE_CLK_BRANCH << CMU_CLK_BRANCH_POS),
+#endif
+
/***************/
/* LF A branch */
/***************/
@@ -504,8 +567,10 @@ typedef enum
cmuSelect_HFXO, /**< High frequency crystal oscillator. */
cmuSelect_HFRCO, /**< High frequency RC oscillator. */
cmuSelect_CORELEDIV2, /**< Core low energy clock divided by 2. */
+ cmuSelect_AUXHFRCO, /**< Auxilliary clock source can be used for debug clock */
+ cmuSelect_HFCLK, /**< Divided HFCLK on Giant for debug clock, undivided on Tiny Gecko and for USBC (not used on Gecko) */
#if defined(_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
- cmuSelect_ULFRCO /**< Ultra low frequency RC oscillator. */
+ cmuSelect_ULFRCO, /**< Ultra low frequency RC oscillator. */
#endif
} CMU_Select_TypeDef;
@@ -523,6 +588,10 @@ void CMU_ClockSelectSet(CMU_Clock_TypeDef clock, CMU_Select_TypeDef ref);
CMU_HFRCOBand_TypeDef CMU_HFRCOBandGet(void);
void CMU_HFRCOBandSet(CMU_HFRCOBand_TypeDef band);
+#if defined(_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
+CMU_AUXHFRCOBand_TypeDef CMU_AUXHFRCOBandGet(void);
+void CMU_AUXHFRCOBandSet(CMU_AUXHFRCOBand_TypeDef band);
+#endif
void CMU_HFRCOStartupDelaySet(uint32_t delay);
uint32_t CMU_HFRCOStartupDelayGet(void);
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_common.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_common.h
index ac4cf15bfc..3f29719506 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_common.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_common.h
@@ -2,7 +2,7 @@
* @file
* @brief EFM32 general purpose utilities.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_dac.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_dac.h
index b0d9bfe180..5f152b9afb 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_dac.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_dac.h
@@ -2,7 +2,7 @@
* @file
* @brief Digital to Analog Converter (DAC) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_dbg.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_dbg.h
index 6b00536c97..c3c88d2da5 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_dbg.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_dbg.h
@@ -2,7 +2,7 @@
* @file
* @brief Debug (DBG) API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_dma.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_dma.h
index 7d3b5f92a5..ff97629ff8 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_dma.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_dma.h
@@ -2,7 +2,7 @@
* @file
* @brief Direct memory access (DMA) API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_ebi.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_ebi.h
index cb6080a0d3..3aa8680dec 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_ebi.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_ebi.h
@@ -2,7 +2,7 @@
* @file
* @brief External Bus Iterface (EBI) peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_emu.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_emu.h
index 5ab282688d..1e1d9bc598 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_emu.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_emu.h
@@ -2,7 +2,7 @@
* @file
* @brief Energy management unit (EMU) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_gpio.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_gpio.h
index b8efa9712d..916de5a110 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_gpio.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_gpio.h
@@ -2,7 +2,7 @@
* @file
* @brief General Purpose IO (GPIO) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_i2c.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_i2c.h
index d039dc0931..ca0c6da726 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_i2c.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_i2c.h
@@ -2,7 +2,7 @@
* @file
* @brief Inter-intergrated circuit (I2C) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_int.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_int.h
index 5e3582c4d1..7c2d222efa 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_int.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_int.h
@@ -2,7 +2,7 @@
* @file
* @brief Interrupt enable/disable unit API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_lcd.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_lcd.h
index 4cc6aa047e..b62c64ae07 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_lcd.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_lcd.h
@@ -2,7 +2,7 @@
* @file
* @brief Liquid Crystal Display (LCD) peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
@@ -223,6 +223,10 @@ typedef struct
LCD_AnimShift_TypeDef BShift;
/** A and B Logical Operation to use for mixing and outputting resulting segments */
LCD_AnimLogic_TypeDef animLogic;
+#if defined(_EFM32_GIANT_FAMILY)
+ /** Number of first segment to animate. Options are 0 or 8 for Giant/Leopard. End is startSeg+7 */
+ int startSeg;
+#endif
} LCD_AnimInit_TypeDef;
/** LCD Frame Control Initialization */
@@ -253,7 +257,7 @@ typedef struct
LCD_ConConf_TypeDef contrast;
} LCD_Init_TypeDef;
-/** Default config for LCD init structure, enables all 160 segments */
+/** Default config for LCD init structure, enables 160 segments */
#define LCD_INIT_DEFAULT \
{ true, \
lcdMuxQuadruplex, \
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_lesense.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_lesense.h
index c0a335b884..a0539e11f2 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_lesense.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_lesense.h
@@ -2,7 +2,7 @@
* @file
* @brief Low Energy Sensor (LESENSE) peripheral API for EFM32 TG/GG devices.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_letimer.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_letimer.h
index 620d5ce845..328eb090ab 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_letimer.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_letimer.h
@@ -2,7 +2,7 @@
* @file
* @brief Low Energy Timer (LETIMER) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_leuart.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_leuart.h
index 0d5f0785f8..9a07e19b53 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_leuart.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_leuart.h
@@ -3,7 +3,7 @@
* @brief Low Energy Universal Asynchronous Receiver/Transmitter (LEUART)
* peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_mpu.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_mpu.h
index 943ce140ac..760d38c9cd 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_mpu.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_mpu.h
@@ -2,7 +2,7 @@
* @file
* @brief Memory protection unit (MPU) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_msc.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_msc.h
index 7817b3122a..4d63cf166e 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_msc.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_msc.h
@@ -2,7 +2,7 @@
* @file
* @brief Flash controller module (MSC) peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_opamp.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_opamp.h
index 4277914862..a7a7850803 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_opamp.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_opamp.h
@@ -2,7 +2,7 @@
* @file
* @brief Operational Amplifier (OPAMP) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_pcnt.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_pcnt.h
index 557c305eb9..87329508e3 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_pcnt.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_pcnt.h
@@ -2,7 +2,7 @@
* @file
* @brief Pulse Counter (PCNT) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_prs.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_prs.h
index 129e598f22..b784fa1a04 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_prs.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_prs.h
@@ -2,7 +2,7 @@
* @file
* @brief Peripheral Reflex System (PRS) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_rmu.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_rmu.h
index ffe970568f..ad80d65fc1 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_rmu.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_rmu.h
@@ -2,7 +2,7 @@
* @file
* @brief Reset Management Unit (RMU) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_rtc.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_rtc.h
index 6fd78da82f..1c82245d2f 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_rtc.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_rtc.h
@@ -2,7 +2,7 @@
* @file
* @brief Real Time Counter (RTC) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_system.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_system.h
index 924f00659b..e1442c6990 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_system.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_system.h
@@ -2,7 +2,7 @@
* @file
* @brief System API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_timer.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_timer.h
index 0f931109ab..13471e04ae 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_timer.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_timer.h
@@ -2,7 +2,7 @@
* @file
* @brief Timer/counter (TIMER) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_usart.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_usart.h
index 1054a002b1..8dc8f886c4 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_usart.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_usart.h
@@ -3,7 +3,7 @@
* @brief Universal synchronous/asynchronous receiver/transmitter (USART/UART)
* peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
@@ -187,29 +187,44 @@ typedef enum
/** USART Rx input PRS selection. */
typedef enum
{
- usartPrsRxCh0 = _USART_INPUT_RXPRSSEL_PRSCH0, /**< PRSCH0 selected as USART_INPUT */
- usartPrsRxCh1 = _USART_INPUT_RXPRSSEL_PRSCH1, /**< PRSCH1 selected as USART_INPUT */
- usartPrsRxCh2 = _USART_INPUT_RXPRSSEL_PRSCH2, /**< PRSCH2 selected as USART_INPUT */
- usartPrsRxCh3 = _USART_INPUT_RXPRSSEL_PRSCH3, /**< PRSCH3 selected as USART_INPUT */
- usartPrsRxCh4 = _USART_INPUT_RXPRSSEL_PRSCH4, /**< PRSCH4 selected as USART_INPUT */
- usartPrsRxCh5 = _USART_INPUT_RXPRSSEL_PRSCH5, /**< PRSCH5 selected as USART_INPUT */
- usartPrsRxCh6 = _USART_INPUT_RXPRSSEL_PRSCH6, /**< PRSCH6 selected as USART_INPUT */
+ usartPrsRxCh0 = USART_INPUT_RXPRSSEL_PRSCH0, /**< PRSCH0 selected as USART_INPUT */
+ usartPrsRxCh1 = USART_INPUT_RXPRSSEL_PRSCH1, /**< PRSCH1 selected as USART_INPUT */
+ usartPrsRxCh2 = USART_INPUT_RXPRSSEL_PRSCH2, /**< PRSCH2 selected as USART_INPUT */
+ usartPrsRxCh3 = USART_INPUT_RXPRSSEL_PRSCH3, /**< PRSCH3 selected as USART_INPUT */
+ usartPrsRxCh4 = USART_INPUT_RXPRSSEL_PRSCH4, /**< PRSCH4 selected as USART_INPUT */
+ usartPrsRxCh5 = USART_INPUT_RXPRSSEL_PRSCH5, /**< PRSCH5 selected as USART_INPUT */
+ usartPrsRxCh6 = USART_INPUT_RXPRSSEL_PRSCH6, /**< PRSCH6 selected as USART_INPUT */
#if defined(_EFM32_TINY_FAMILY)
- usartPrsRxCh7 = _USART_INPUT_RXPRSSEL_PRSCH7 /**< PRSCH7 selected as USART_INPUT */
+ usartPrsRxCh7 = USART_INPUT_RXPRSSEL_PRSCH7 /**< PRSCH7 selected as USART_INPUT */
#elif defined(_EFM32_GIANT_FAMILY)
- usartPrsRxCh7 = _USART_INPUT_RXPRSSEL_PRSCH7, /**< PRSCH7 selected as USART_INPUT */
- usartPrsRxCh8 = _USART_INPUT_RXPRSSEL_PRSCH8, /**< PRSCH8 selected as USART_INPUT */
- usartPrsRxCh9 = _USART_INPUT_RXPRSSEL_PRSCH9, /**< PRSCH9 selected as USART_INPUT */
- usartPrsRxCh10 = _USART_INPUT_RXPRSSEL_PRSCH10, /**< PRSCH10 selected as USART_INPUT */
- usartPrsRxCh11 = _USART_INPUT_RXPRSSEL_PRSCH11 /**< PRSCH11 selected as USART_INPUT */
+ usartPrsRxCh7 = USART_INPUT_RXPRSSEL_PRSCH7, /**< PRSCH7 selected as USART_INPUT */
+ usartPrsRxCh8 = USART_INPUT_RXPRSSEL_PRSCH8, /**< PRSCH8 selected as USART_INPUT */
+ usartPrsRxCh9 = USART_INPUT_RXPRSSEL_PRSCH9, /**< PRSCH9 selected as USART_INPUT */
+ usartPrsRxCh10 = USART_INPUT_RXPRSSEL_PRSCH10, /**< PRSCH10 selected as USART_INPUT */
+ usartPrsRxCh11 = USART_INPUT_RXPRSSEL_PRSCH11 /**< PRSCH11 selected as USART_INPUT */
#else
#error Unknown EFM32 family.
#endif
} USART_PrsRxCh_TypeDef;
#endif
+#if defined (_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
+/** USART PRS Transmit Trigger Channels */
+typedef enum
+{
+ usartPrsTriggerCh0 = USART_TRIGCTRL_TSEL_PRSCH0, /**< PRSCH0 selected as USART Trigger */
+ usartPrsTriggerCh1 = USART_TRIGCTRL_TSEL_PRSCH1, /**< PRSCH0 selected as USART Trigger */
+ usartPrsTriggerCh2 = USART_TRIGCTRL_TSEL_PRSCH2, /**< PRSCH0 selected as USART Trigger */
+ usartPrsTriggerCh3 = USART_TRIGCTRL_TSEL_PRSCH3, /**< PRSCH0 selected as USART Trigger */
+ usartPrsTriggerCh4 = USART_TRIGCTRL_TSEL_PRSCH4, /**< PRSCH0 selected as USART Trigger */
+ usartPrsTriggerCh5 = USART_TRIGCTRL_TSEL_PRSCH5, /**< PRSCH0 selected as USART Trigger */
+ usartPrsTriggerCh6 = USART_TRIGCTRL_TSEL_PRSCH6, /**< PRSCH0 selected as USART Trigger */
+ usartPrsTriggerCh7 = USART_TRIGCTRL_TSEL_PRSCH7, /**< PRSCH0 selected as USART Trigger */
+} USART_PrsTriggerCh_TypeDef;
+#endif
+
/*******************************************************************************
******************************* STRUCTS ***********************************
******************************************************************************/
@@ -254,6 +269,23 @@ typedef struct
#endif
} USART_InitAsync_TypeDef;
+#if defined(_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
+/** USART PRS trigger enable */
+typedef struct
+{
+#if defined(_EFM32_GIANT_FAMILY)
+ /** Enable AUTOTX */
+ bool autoTxTriggerEnable;
+#endif
+ /** Trigger receive via PRS channel */
+ bool rxTriggerEnable;
+ /** Trigger transmit via PRS channel */
+ bool txTriggerEnable;
+ /** PRS channel to be used to trigger auto transmission */
+ USART_PrsTriggerCh_TypeDef prsTriggerChannel;
+} USART_PrsTriggerInit_TypeDef;
+#endif
+
/** Default config for USART async init structure. */
#if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_TINY_FAMILY)
#define USART_INITASYNC_DEFAULT \
@@ -464,6 +496,7 @@ void USART_InitIrDA(const USART_InitIrDA_TypeDef *init);
#if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_TINY_FAMILY)
void USART_InitI2s(USART_TypeDef *usart, USART_InitI2s_TypeDef *init);
+void USART_InitPrsTrigger(USART_TypeDef *usart, const USART_PrsTriggerInit_TypeDef *init);
#endif
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_vcmp.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_vcmp.h
index 9a792a907d..8fed4a3e42 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_vcmp.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_vcmp.h
@@ -2,7 +2,7 @@
* @file
* @brief Voltage Comparator (VCMP) peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/inc/efm32_wdog.h b/bsp/efm32/Libraries/efm32lib/inc/efm32_wdog.h
index 83df8d7535..281aeaf0db 100644
--- a/bsp/efm32/Libraries/efm32lib/inc/efm32_wdog.h
+++ b/bsp/efm32/Libraries/efm32lib/inc/efm32_wdog.h
@@ -2,7 +2,7 @@
* @file
* @brief Watchdog (WDOG) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_acmp.c b/bsp/efm32/Libraries/efm32lib/src/efm32_acmp.c
index 36cde729c6..7716495da3 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_acmp.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_acmp.c
@@ -3,7 +3,7 @@
* @brief Analog Comparator (ACMP) peripheral module library implementation
* for EFM32 devices.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_adc.c b/bsp/efm32/Libraries/efm32lib/src/efm32_adc.c
index 95ac8621de..ff8028ce51 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_adc.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_adc.c
@@ -2,7 +2,7 @@
* @file
* @brief Analog to Digital Converter (ADC) Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_aes.c b/bsp/efm32/Libraries/efm32lib/src/efm32_aes.c
index c52a1a5dc7..b5e1accfc8 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_aes.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_aes.c
@@ -3,7 +3,7 @@
* @brief Advanced Encryption Standard (AES) accelerator peripheral API
* for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_assert.c b/bsp/efm32/Libraries/efm32lib/src/efm32_assert.c
index 345ef12270..a29c3e67f0 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_assert.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_assert.c
@@ -2,7 +2,7 @@
* @file
* @brief Assert API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_cmu.c b/bsp/efm32/Libraries/efm32lib/src/efm32_cmu.c
index 6a463e7799..3a37c676eb 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_cmu.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_cmu.c
@@ -2,7 +2,7 @@
* @file
* @brief Clock management unit (CMU) Peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
@@ -69,7 +69,7 @@
/***************************************************************************//**
* @brief
- * Configure flash access wait states to most conservative setting for
+ * Configure flash access wait states to most conservative setting for
* this target. Retain SCBTP setting.
******************************************************************************/
static void CMU_FlashWaitStateMax(void)
@@ -95,7 +95,7 @@ static void CMU_FlashWaitStateMax(void)
case MSC_READCTRL_MODE_WS2SCBTP:
cfg = (cfg & ~_MSC_READCTRL_MODE_MASK) | MSC_READCTRL_MODE_WS2SCBTP;
#else
- cfg = (cfg & ~_MSC_READCTRL_MODE_MASK) | MSC_READCTRL_MODE_WS1SCBTP;
+ cfg = (cfg & ~_MSC_READCTRL_MODE_MASK) | MSC_READCTRL_MODE_WS1SCBTP;
#endif
break;
}
@@ -103,6 +103,37 @@ static void CMU_FlashWaitStateMax(void)
}
+/***************************************************************************//**
+ * @brief Convert dividend to prescaler logarithmic value. Only works for even
+ * numbers equal to 2^n
+ * @param[in] div Unscaled dividend,
+ * @return Logarithm of 2, as used by fixed prescalers
+ ******************************************************************************/
+static uint32_t CMU_DivToLog2(CMU_ClkDiv_TypeDef div)
+{
+ uint32_t log2;
+
+ /* Prescalers take argument of 32768 or less */
+ EFM_ASSERT((div>0) && (div <= 32768));
+
+ /* Count leading zeroes and "reverse" result, Cortex-M3 intrinsic */
+ log2 = (31 - __CLZ(div));
+
+ return log2;
+}
+
+
+/***************************************************************************//**
+ * @brief Convert logarithm of 2 prescaler to division factor
+ * @param[in] log2
+ * @return Dividend
+ ******************************************************************************/
+static uint32_t CMU_Log2ToDiv(uint32_t log2)
+{
+ return 1<AUXHFRCOCTRL & _CMU_AUXHFRCOCTRL_BAND_MASK)
+ {
+ case CMU_AUXHFRCOCTRL_BAND_1MHZ:
+ ret = 1000000;
+ break;
+ case CMU_AUXHFRCOCTRL_BAND_7MHZ:
+ ret = 7000000;
+ break;
+ case CMU_AUXHFRCOCTRL_BAND_11MHZ:
+ ret = 11000000;
+ break;
+ case CMU_AUXHFRCOCTRL_BAND_14MHZ:
+ ret = 14000000;
+ break;
+ case CMU_AUXHFRCOCTRL_BAND_21MHZ:
+ ret = 21000000;
+ break;
+ case CMU_AUXHFRCOCTRL_BAND_28MHZ:
+ ret = 28000000;
+ break;
+ default:
+ ret = 0;
+ break;
+ }
+#endif
+ return ret;
+}
+
+
+/***************************************************************************//**
+ * @brief
+ * Get the Debug Trace clock frequency
+ *
+ * @return
+ * Debug Trace frequency in Hz
+ ******************************************************************************/
+static uint32_t CMU_DBGClkGet(void)
+{
+ uint32_t ret;
+ CMU_Select_TypeDef clk;
+
+ /* Get selected clock source */
+ clk = CMU_ClockSelectGet(cmuClock_DBG);
+
+ switch(clk)
+ {
+ case cmuSelect_HFCLK:
+ ret = SystemHFClockGet();
+#if defined(_EFM32_GIANT_FAMILY)
+ /* Giant Gecko has an additional divider, not used by USBC */
+ ret = ret / (1 + ((CMU->CTRL & _CMU_CTRL_HFCLKDIV_MASK) >>
+ _CMU_CTRL_HFCLKDIV_SHIFT));
+#endif
+ break;
+
+ case cmuSelect_AUXHFRCO:
+ ret = CMU_AUXClkGet();
+ break;
+
+ default:
+ EFM_ASSERT(0);
+ ret = 0;
+ break;
+ }
+ return ret;
+}
+
+
/***************************************************************************//**
* @brief
* Get the LFnCLK frequency based on current configuration.
*
- * @param[in] group
- * LF group, 0 = A, 1 = B, ...
+ * @param[in] lfClkBranch
+ * LF branch, 0 = LFA, 1 = LFB, ...
*
* @return
* The LFnCLK frequency in Hz. If no LFnCLK is selected (disabled), 0 is
* returned.
******************************************************************************/
-static uint32_t CMU_LFClkGet(unsigned int group)
+static uint32_t CMU_LFClkGet(unsigned int lfClkBranch)
{
uint32_t ret;
- EFM_ASSERT(group == 0 || group == 1);
+ EFM_ASSERT(lfClkBranch == CMU_LFA || lfClkBranch == CMU_LFB);
- /* Note - this needs to be changed */
-#if defined _CMU_LFCLKSEL_LFAE_ULFRCO
- if ((group == 0) && (CMU->LFCLKSEL & CMU_LFCLKSEL_LFAE_ULFRCO))
- {
- return SystemULFRCOClockGet();
- }
-#endif
-#if defined _CMU_LFCLKSEL_LFBE_ULFRCO
- if ((group == 1) && (CMU->LFCLKSEL & CMU_LFCLKSEL_LFBE_ULFRCO))
- {
- return SystemULFRCOClockGet();
- }
-#endif
-
- switch ((CMU->LFCLKSEL >> (group * 2)) & 0x3)
+ switch ((CMU->LFCLKSEL >> (lfClkBranch * 2)) & 0x3)
{
case _CMU_LFCLKSEL_LFA_LFRCO:
ret = SystemLFRCOClockGet();
@@ -217,7 +355,35 @@ static uint32_t CMU_LFClkGet(unsigned int group)
break;
case _CMU_LFCLKSEL_LFA_HFCORECLKLEDIV2:
+#if defined (_EFM32_GIANT_FAMILY)
+ /* Giant Gecko can use a /4 divider (and must >32MHz) */
+ if((CMU->HFCORECLKDIV & _CMU_HFCORECLKDIV_HFCORECLKLEDIV_MASK) == CMU_HFCORECLKDIV_HFCORECLKLEDIV_DIV4)
+ {
+ ret = SystemCoreClockGet() / 4;
+ }
+ else
+ {
+ ret = SystemCoreClockGet() / 2;
+ }
+#else
ret = SystemCoreClockGet() / 2;
+#endif
+ break;
+
+ case _CMU_LFCLKSEL_LFA_DISABLED:
+#if defined (_EFM32_GIANT_FAMILY)
+ /* Check LF Extended bit setting for ULFRCO clock */
+ if(CMU->LFCLKSEL >> (_CMU_LFCLKSEL_LFAE_SHIFT + lfClkBranch * 4))
+ {
+ ret = SystemULFRCOClockGet();
+ }
+ else
+ {
+ ret = 0;
+ }
+#else
+ ret = 0;
+#endif
break;
default:
@@ -432,7 +598,7 @@ void CMU_CalibrateConfig(uint32_t downCycles, CMU_Osc_TypeDef downSel,
* have a divisor/prescaler. Please refer to CMU overview in reference manual.
*
* @return
- * The current clock point divisor/prescaler. #cmuClkDiv_1 is returned
+ * The current clock point divisor/prescaler. 1 is returned
* if @p clock specifies a clock point without a divisor/prescaler.
******************************************************************************/
CMU_ClkDiv_TypeDef CMU_ClockDivGet(CMU_Clock_TypeDef clock)
@@ -445,16 +611,25 @@ CMU_ClkDiv_TypeDef CMU_ClockDivGet(CMU_Clock_TypeDef clock)
switch (divReg)
{
+#if defined(_EFM32_GIANT_FAMILY)
+ case CMU_HFCLKDIV_REG:
+ ret = 1 + ((CMU->CTRL & _CMU_CTRL_HFCLKDIV_MASK) >>
+ _CMU_CTRL_HFCLKDIV_SHIFT);
+ break;
+#endif
+
case CMU_HFPERCLKDIV_REG:
ret = (CMU_ClkDiv_TypeDef)((CMU->HFPERCLKDIV &
_CMU_HFPERCLKDIV_HFPERCLKDIV_MASK) >>
_CMU_HFPERCLKDIV_HFPERCLKDIV_SHIFT);
+ ret = CMU_Log2ToDiv(ret);
break;
case CMU_HFCORECLKDIV_REG:
ret = (CMU_ClkDiv_TypeDef)((CMU->HFCORECLKDIV &
_CMU_HFCORECLKDIV_HFCORECLKDIV_MASK) >>
_CMU_HFCORECLKDIV_HFCORECLKDIV_SHIFT);
+ ret = CMU_Log2ToDiv(ret);
break;
case CMU_LFAPRESC0_REG:
@@ -463,12 +638,14 @@ CMU_ClkDiv_TypeDef CMU_ClockDivGet(CMU_Clock_TypeDef clock)
case cmuClock_RTC:
ret = (CMU_ClkDiv_TypeDef)(((CMU->LFAPRESC0 & _CMU_LFAPRESC0_RTC_MASK) >>
_CMU_LFAPRESC0_RTC_SHIFT));
+ ret = CMU_Log2ToDiv(ret);
break;
#if defined(_CMU_LFAPRESC0_LETIMER0_MASK)
case cmuClock_LETIMER0:
ret = (CMU_ClkDiv_TypeDef)(((CMU->LFAPRESC0 & _CMU_LFAPRESC0_LETIMER0_MASK) >>
_CMU_LFAPRESC0_LETIMER0_SHIFT));
+ ret = CMU_Log2ToDiv(ret);
break;
#endif
@@ -476,6 +653,7 @@ CMU_ClkDiv_TypeDef CMU_ClockDivGet(CMU_Clock_TypeDef clock)
case cmuClock_LCDpre:
ret = (CMU_ClkDiv_TypeDef)(((CMU->LFAPRESC0 & _CMU_LFAPRESC0_LCD_MASK) >>
_CMU_LFAPRESC0_LCD_SHIFT) + cmuClkDiv_16);
+ ret = CMU_Log2ToDiv(ret);
break;
#endif
@@ -483,6 +661,7 @@ CMU_ClkDiv_TypeDef CMU_ClockDivGet(CMU_Clock_TypeDef clock)
case cmuClock_LESENSE:
ret = (CMU_ClkDiv_TypeDef)(((CMU->LFAPRESC0 & _CMU_LFAPRESC0_LESENSE_MASK) >>
_CMU_LFAPRESC0_LESENSE_SHIFT));
+ ret = CMU_Log2ToDiv(ret);
break;
#endif
@@ -500,6 +679,7 @@ CMU_ClkDiv_TypeDef CMU_ClockDivGet(CMU_Clock_TypeDef clock)
case cmuClock_LEUART0:
ret = (CMU_ClkDiv_TypeDef)(((CMU->LFBPRESC0 & _CMU_LFBPRESC0_LEUART0_MASK) >>
_CMU_LFBPRESC0_LEUART0_SHIFT));
+ ret = CMU_Log2ToDiv(ret);
break;
#endif
@@ -507,6 +687,7 @@ CMU_ClkDiv_TypeDef CMU_ClockDivGet(CMU_Clock_TypeDef clock)
case cmuClock_LEUART1:
ret = (CMU_ClkDiv_TypeDef)(((CMU->LFBPRESC0 & _CMU_LFBPRESC0_LEUART1_MASK) >>
_CMU_LFBPRESC0_LEUART1_SHIFT));
+ ret = CMU_Log2ToDiv(ret);
break;
#endif
@@ -556,9 +737,30 @@ void CMU_ClockDivSet(CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div)
switch (divReg)
{
- case CMU_HFPERCLKDIV_REG:
- EFM_ASSERT(div <= cmuClkDiv_512);
+#if defined (_EFM32_GIANT_FAMILY)
+ case CMU_HFCLKDIV_REG:
+ EFM_ASSERT((div>=1) && (div<=8));
+ /* Configure worst case wait states for flash access before setting divisor */
+ CMU_FlashWaitStateMax();
+
+ /* Set divider */
+ CMU->CTRL = (CMU->CTRL & ~_CMU_CTRL_HFCLKDIV_MASK) |
+ ((div-1) << _CMU_CTRL_HFCLKDIV_SHIFT);
+
+ /* Update CMSIS core clock variable */
+ /* (The function will update the global variable) */
+ freq = SystemCoreClockGet();
+
+ /* Optimize flash access wait state setting for current core clk */
+ CMU_FlashWaitStateControl(freq);
+ break;
+#endif
+
+ case CMU_HFPERCLKDIV_REG:
+ EFM_ASSERT((div >= cmuClkDiv_1) && (div <= cmuClkDiv_512));
+ /* Convert to correct scale */
+ div = CMU_DivToLog2(div);
CMU->HFPERCLKDIV = (CMU->HFPERCLKDIV & ~_CMU_HFPERCLKDIV_HFPERCLKDIV_MASK) |
(div << _CMU_HFPERCLKDIV_HFPERCLKDIV_SHIFT);
break;
@@ -569,6 +771,9 @@ void CMU_ClockDivSet(CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div)
/* Configure worst case wait states for flash access before setting divisor */
CMU_FlashWaitStateMax();
+ /* Convert to correct scale */
+ div = CMU_DivToLog2(div);
+
CMU->HFCORECLKDIV = (CMU->HFCORECLKDIV & ~_CMU_HFCORECLKDIV_HFCORECLKDIV_MASK) |
(div << _CMU_HFCORECLKDIV_HFCORECLKDIV_SHIFT);
@@ -589,6 +794,9 @@ void CMU_ClockDivSet(CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div)
/* LF register about to be modified require sync. busy check */
CMU_Sync(CMU_SYNCBUSY_LFAPRESC0);
+ /* Convert to correct scale */
+ div = CMU_DivToLog2(div);
+
CMU->LFAPRESC0 = (CMU->LFAPRESC0 & ~_CMU_LFAPRESC0_RTC_MASK) |
(div << _CMU_LFAPRESC0_RTC_SHIFT);
break;
@@ -600,6 +808,9 @@ void CMU_ClockDivSet(CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div)
/* LF register about to be modified require sync. busy check */
CMU_Sync(CMU_SYNCBUSY_LFAPRESC0);
+ /* Convert to correct scale */
+ div = CMU_DivToLog2(div);
+
CMU->LFAPRESC0 = (CMU->LFAPRESC0 & ~_CMU_LFAPRESC0_LETIMER0_MASK) |
(div << _CMU_LFAPRESC0_LETIMER0_SHIFT);
break;
@@ -607,16 +818,17 @@ void CMU_ClockDivSet(CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div)
#if defined(LCD_PRESENT)
case cmuClock_LCDpre:
-#if 1
EFM_ASSERT((div >= cmuClkDiv_16) && (div <= cmuClkDiv_128));
/* LF register about to be modified require sync. busy check */
CMU_Sync(CMU_SYNCBUSY_LFAPRESC0);
+ /* Convert to correct scale */
+ div = CMU_DivToLog2(div);
+
CMU->LFAPRESC0 = (CMU->LFAPRESC0 & ~_CMU_LFAPRESC0_LCD_MASK) |
((div - cmuClkDiv_16) << _CMU_LFAPRESC0_LCD_SHIFT);
break;
-#endif
#endif /* defined(LCD_PRESENT) */
#if defined(LESENSE_PRESENT)
@@ -626,6 +838,9 @@ void CMU_ClockDivSet(CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div)
/* LF register about to be modified require sync. busy check */
CMU_Sync(CMU_SYNCBUSY_LFAPRESC0);
+ /* Convert to correct scale */
+ div = CMU_DivToLog2(div);
+
CMU->LFAPRESC0 = (CMU->LFAPRESC0 & ~_CMU_LFAPRESC0_LESENSE_MASK) |
(div << _CMU_LFAPRESC0_LESENSE_SHIFT);
break;
@@ -647,6 +862,9 @@ void CMU_ClockDivSet(CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div)
/* LF register about to be modified require sync. busy check */
CMU_Sync(CMU_SYNCBUSY_LFBPRESC0);
+ /* Convert to correct scale */
+ div = CMU_DivToLog2(div);
+
CMU->LFBPRESC0 = (CMU->LFBPRESC0 & ~_CMU_LFBPRESC0_LEUART0_MASK) |
(((uint32_t)div) << _CMU_LFBPRESC0_LEUART0_SHIFT);
break;
@@ -659,6 +877,9 @@ void CMU_ClockDivSet(CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div)
/* LF register about to be modified require sync. busy check */
CMU_Sync(CMU_SYNCBUSY_LFBPRESC0);
+ /* Convert to correct scale */
+ div = CMU_DivToLog2(div);
+
CMU->LFBPRESC0 = (CMU->LFBPRESC0 & ~_CMU_LFBPRESC0_LEUART1_MASK) |
(((uint32_t)div) << _CMU_LFBPRESC0_LEUART1_SHIFT);
break;
@@ -777,38 +998,56 @@ uint32_t CMU_ClockFreqGet(CMU_Clock_TypeDef clock)
case (CMU_HF_CLK_BRANCH << CMU_CLK_BRANCH_POS):
{
ret = SystemHFClockGet();
+#if defined(_EFM32_GIANT_FAMILY)
+ /* Giant Gecko has an additional divider, not used by USBC */
+ ret = ret / (1 + ((CMU->CTRL & _CMU_CTRL_HFCLKDIV_MASK) >>
+ _CMU_CTRL_HFCLKDIV_SHIFT));
+#endif
} break;
+
#if defined(_CMU_HFPERCLKEN0_USART0_MASK) || \
defined(_CMU_HFPERCLKEN0_USART1_MASK) || \
defined(_CMU_HFPERCLKEN0_USART2_MASK) || \
defined(_CMU_HFPERCLKEN0_UART0_MASK) || \
+ defined(_CMU_HFPERCLKEN0_UART1_MASK) || \
defined(_CMU_HFPERCLKEN0_TIMER0_MASK) || \
defined(_CMU_HFPERCLKEN0_TIMER1_MASK) || \
defined(_CMU_HFPERCLKEN0_TIMER2_MASK) || \
+ defined(_CMU_HFPERCLKEN0_TIMER3_MASK) || \
defined(_CMU_HFPERCLKEN0_ACMP0_MASK) || \
defined(_CMU_HFPERCLKEN0_ACMP1_MASK) || \
- defined(PRS_PRESENT) || \
defined(_CMU_HFPERCLKEN0_DAC0_MASK) || \
- defined(GPIO_PRESENT) || \
- defined(VCMP_PRESENT) || \
defined(_CMU_HFPERCLKEN0_ADC0_MASK) || \
defined(_CMU_HFPERCLKEN0_I2C0_MASK) || \
- defined(_CMU_HFPERCLKEN0_I2C1_MASK)
+ defined(_CMU_HFPERCLKEN0_I2C1_MASK) || \
+ defined(_CMU_HFPERCLKEN0_USB_MASK) || \
+ defined(PRS_PRESENT) || \
+ defined(VCMP_PRESENT)|| \
+ defined(GPIO_PRESENT)
case (CMU_HFPER_CLK_BRANCH << CMU_CLK_BRANCH_POS):
{
ret = SystemHFClockGet();
+#if defined (_EFM32_GIANT_FAMILY)
+ /* Leopard/Giant Gecko has an additional divider */
+ ret = ret / (1 + ((CMU->CTRL & _CMU_CTRL_HFCLKDIV_MASK) >>
+ _CMU_CTRL_HFCLKDIV_SHIFT));
+#endif
ret >>= (CMU->HFPERCLKDIV & _CMU_HFPERCLKDIV_HFPERCLKDIV_MASK) >>
_CMU_HFPERCLKDIV_HFPERCLKDIV_SHIFT;
} break;
#endif
+
#if defined(AES_PRESENT) || \
defined(DMA_PRESENT) || \
- defined(EBI_PRESENT)
+ defined(EBI_PRESENT) || \
+ defined(USB_PRESENT) || \
+ defined(USBC_PRESENT)
case (CMU_HFCORE_CLK_BRANCH << CMU_CLK_BRANCH_POS):
{
ret = SystemCoreClockGet();
} break;
#endif
+
case (CMU_LFA_CLK_BRANCH << CMU_CLK_BRANCH_POS):
{
ret = CMU_LFClkGet(CMU_LFA);
@@ -836,6 +1075,7 @@ uint32_t CMU_ClockFreqGet(CMU_Clock_TypeDef clock)
ret >>= (CMU->LFAPRESC0 & _CMU_LFAPRESC0_LCD_MASK) >>
_CMU_LFAPRESC0_LCD_SHIFT;
} break;
+
case (CMU_LCD_CLK_BRANCH << CMU_CLK_BRANCH_POS):
{
ret = CMU_LFClkGet(CMU_LFA);
@@ -869,8 +1109,25 @@ uint32_t CMU_ClockFreqGet(CMU_Clock_TypeDef clock)
case (CMU_LEUART1_CLK_BRANCH << CMU_CLK_BRANCH_POS):
{
ret = CMU_LFClkGet(CMU_LFB);
- ret >>= (CMU->LFBPRESC0 & _CMU_LFBPRESC0_LEUART0_MASK) >>
- _CMU_LFBPRESC0_LEUART0_SHIFT;
+ ret >>= (CMU->LFBPRESC0 & _CMU_LFBPRESC0_LEUART1_MASK) >>
+ _CMU_LFBPRESC0_LEUART1_SHIFT;
+ } break;
+#endif
+
+ case (CMU_DBG_CLK_BRANCH << CMU_CLK_BRANCH_POS):
+ {
+ ret = CMU_DBGClkGet();
+ } break;
+
+ case (CMU_AUX_CLK_BRANCH << CMU_CLK_BRANCH_POS):
+ {
+ ret = CMU_AUXClkGet();
+ } break;
+
+#if defined(USB_PRESENT)
+ case (CMU_USBC_CLK_BRANCH << CMU_CLK_BRANCH_POS):
+ {
+ ret = CMU_USBCClkGet();
} break;
#endif
default:
@@ -892,6 +1149,8 @@ uint32_t CMU_ClockFreqGet(CMU_Clock_TypeDef clock)
* @li #cmuClock_HF
* @li #cmuClock_LFA
* @li #cmuClock_LFB
+ * @li #cmuClock_USBC
+ * @li #cmuClock_DBG
*
* @return
* Reference clock used for clocking selected branch, #cmuSelect_Error if
@@ -899,7 +1158,7 @@ uint32_t CMU_ClockFreqGet(CMU_Clock_TypeDef clock)
*****************************************************************************/
CMU_Select_TypeDef CMU_ClockSelectGet(CMU_Clock_TypeDef clock)
{
- CMU_Select_TypeDef ret;
+ CMU_Select_TypeDef ret = cmuSelect_Disabled;
uint32_t selReg;
selReg = (clock >> CMU_SEL_REG_POS) & CMU_SEL_REG_MASK;
@@ -944,7 +1203,15 @@ CMU_Select_TypeDef CMU_ClockSelectGet(CMU_Clock_TypeDef clock)
break;
default:
+#if defined(_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
+ if (CMU->LFCLKSEL & _CMU_LFCLKSEL_LFAE_MASK)
+ {
+ ret = cmuSelect_ULFRCO;
+ break;
+ }
+#else
ret = cmuSelect_Disabled;
+#endif
break;
}
break;
@@ -965,10 +1232,62 @@ CMU_Select_TypeDef CMU_ClockSelectGet(CMU_Clock_TypeDef clock)
break;
default:
+#if defined(_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
+ if (CMU->LFCLKSEL & _CMU_LFCLKSEL_LFBE_MASK)
+ {
+ ret = cmuSelect_ULFRCO;
+ break;
+ }
+#else
+ ret = cmuSelect_Disabled;
+#endif
+ break;
+ }
+ break;
+
+ case CMU_DBGCLKSEL_REG:
+#if defined(_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
+ switch(CMU->CTRL & _CMU_CTRL_DBGCLK_MASK)
+ {
+ case CMU_CTRL_DBGCLK_AUXHFRCO:
+ ret = cmuSelect_AUXHFRCO;
+ break;
+
+ case CMU_CTRL_DBGCLK_HFCLK:
+ ret = cmuSelect_HFCLK;
+ break;
+ }
+#endif
+#if defined(_EFM32_GECKO_FAMILY)
+ ret = cmuSelect_AUXHFRCO;
+#endif
+ break;
+
+
+#if defined(USB_PRESENT)
+ case CMU_USBCCLKSEL_REG:
+ switch(CMU->STATUS & (CMU_STATUS_USBCHFCLKSEL |
+ CMU_STATUS_USBCLFXOSEL |
+ CMU_STATUS_USBCLFRCOSEL))
+ {
+ case CMU_STATUS_USBCHFCLKSEL:
+ ret = cmuSelect_HFCLK;
+ break;
+
+ case CMU_STATUS_USBCLFXOSEL:
+ ret = cmuSelect_LFXO;
+ break;
+
+ case CMU_STATUS_USBCLFRCOSEL:
+ ret = cmuSelect_LFRCO;
+ break;
+
+ default:
ret = cmuSelect_Disabled;
break;
}
break;
+#endif
default:
EFM_ASSERT(0);
@@ -999,6 +1318,8 @@ CMU_Select_TypeDef CMU_ClockSelectGet(CMU_Clock_TypeDef clock)
* @li #cmuClock_HF
* @li #cmuClock_LFA
* @li #cmuClock_LFB
+ * @li #cmuClock_USBC
+ * @li #cmuClock_DBG
*
* @param[in] ref
* Reference selected for clocking, please refer to reference manual for
@@ -1037,6 +1358,13 @@ void CMU_ClockSelectSet(CMU_Clock_TypeDef clock, CMU_Select_TypeDef ref)
case cmuSelect_HFXO:
select = CMU_CMD_HFCLKSEL_HFXO;
osc = cmuOsc_HFXO;
+#if defined(_EFM32_GIANT_FAMILY)
+ /* Adjust HFXO buffer current for high frequencies */
+ if(SystemHFXOClockGet() > 32000000)
+ {
+ CMU->CTRL = (CMU->CTRL | _CMU_CTRL_HFXOBUFCUR_MASK);
+ }
+#endif
break;
case cmuSelect_HFRCO:
@@ -1115,16 +1443,31 @@ void CMU_ClockSelectSet(CMU_Clock_TypeDef clock, CMU_Select_TypeDef ref)
/* Ensure HFCORE to LE clocking is enabled */
BITBAND_Peripheral(&(CMU->HFCORECLKEN0), _CMU_HFCORECLKEN0_LE_SHIFT, 1);
tmp = _CMU_LFCLKSEL_LFA_HFCORECLKLEDIV2;
+#if defined(_EFM32_GIANT_FAMILY)
+ /* If core frequency is > 32MHz on Giant/Leopard, enable HFLE and DIV4 */
+ freq = SystemCoreClockGet();
+ if(freq > CMU_MAX_FREQ_1WS)
+ {
+ /* Enable CMU HFLE */
+ CMU->CTRL |= CMU_CTRL_HFLE;
+
+ /* Enable DIV4 factor for peripheral clock */
+ CMU->HFCORECLKDIV = (CMU->HFCORECLKDIV & ~(_CMU_HFCORECLKDIV_HFCORECLKLEDIV_MASK))|
+ CMU_HFCORECLKDIV_HFCORECLKLEDIV_DIV4;
+ }
+#endif
break;
#if defined(_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
case cmuSelect_ULFRCO:
+ /* ULFRCO is always enabled */
tmp = _CMU_LFCLKSEL_LFA_DISABLED;
lfExtended = 1;
break;
#endif
default:
+ /* Illegal clock source for LFA/LFB selected */
EFM_ASSERT(0);
return;
}
@@ -1138,6 +1481,76 @@ void CMU_ClockSelectSet(CMU_Clock_TypeDef clock, CMU_Select_TypeDef ref)
#endif
break;
+#if defined(_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
+ case CMU_DBGCLKSEL_REG:
+ switch(ref)
+ {
+ case cmuSelect_AUXHFRCO:
+ /* Select AUXHFRCO as debug clock */
+ CMU->CTRL = (CMU->CTRL & ~(_CMU_CTRL_DBGCLK_MASK))| CMU_CTRL_DBGCLK_AUXHFRCO;
+ break;
+
+ case cmuSelect_HFCLK:
+ /* Select divided HFCLK as debug clock */
+ CMU->CTRL = (CMU->CTRL & ~(_CMU_CTRL_DBGCLK_MASK))| CMU_CTRL_DBGCLK_HFCLK;
+ break;
+
+ default:
+ /* Illegal clock source for debug selected */
+ EFM_ASSERT(0);
+ return;
+ }
+ break;
+#endif
+
+#if defined(USB_PRESENT)
+ case CMU_USBCCLKSEL_REG:
+ switch(ref)
+ {
+
+ case cmuSelect_HFCLK:
+ /* Select undivided HFCLK as clock source for USB */
+ /* Oscillator must already be enabled, if not the core had stopped */
+ CMU->CMD = CMU_CMD_USBCCLKSEL_HFCLK;
+ /* Wait until clock is activated */
+ while((CMU->STATUS & CMU_STATUS_USBCHFCLKSEL)==0);
+ break;
+
+ case cmuSelect_LFXO:
+ /* Select LFXO as clock source for USB, can only be used in sleep mode */
+
+ /* Ensure selected oscillator is enabled, waiting for it to stabilize */
+ CMU_OscillatorEnable(cmuOsc_LFXO, true, true);
+
+ /* Switch oscillator */
+ CMU->CMD = CMU_CMD_USBCCLKSEL_LFXO;
+
+ /* Wait until clock is activated */
+ while((CMU->STATUS & CMU_STATUS_USBCLFXOSEL)==0);
+ break;
+
+ case cmuSelect_LFRCO:
+ /* Select LFRCO as clock source for USB, can only be used in sleep mode */
+
+ /* Ensure selected oscillator is enabled, waiting for it to stabilize */
+ CMU_OscillatorEnable(cmuOsc_LFRCO, true, true);
+
+ /* Switch oscillator */
+ CMU->CMD = CMU_CMD_USBCCLKSEL_LFRCO;
+
+ /* Wait until clock is activated */
+ while((CMU->STATUS & CMU_STATUS_USBCLFRCOSEL)==0);
+ break;
+
+ default:
+ /* Illegal clock source for USB */
+ EFM_ASSERT(0);
+ return;
+ }
+ /* Wait until clock has been activated */
+ break;
+#endif
+
default:
EFM_ASSERT(0);
break;
@@ -1197,6 +1610,80 @@ void CMU_FreezeEnable(bool enable)
}
+#if defined(_EFM32_TINY_FAMILY) || defined(_EFM32_GIANT_FAMILY)
+/***************************************************************************//**
+ * @brief
+ * Get AUXHFRCO band in use.
+ *
+ * @return
+ * AUXHFRCO band in use.
+ ******************************************************************************/
+CMU_AUXHFRCOBand_TypeDef CMU_AUXHFRCOBandGet(void)
+{
+ return (CMU_AUXHFRCOBand_TypeDef)((CMU->AUXHFRCOCTRL & _CMU_AUXHFRCOCTRL_BAND_MASK) >>
+ _CMU_AUXHFRCOCTRL_BAND_SHIFT);
+}
+
+/***************************************************************************//**
+ * @brief
+ * Set AUIXHFRCO band and the tuning value based on the value in the
+ * calibration table made during production.
+ *
+ * @param[in] band
+ * AUXHFRCO band to activate.
+ ******************************************************************************/
+void CMU_AUXHFRCOBandSet(CMU_AUXHFRCOBand_TypeDef band)
+{
+ uint32_t tuning;
+
+ /* Read tuning value from calibration table */
+ switch (band)
+ {
+ case cmuAUXHFRCOBand_1MHz:
+ tuning = (DEVINFO->AUXHFRCOCAL0 & _DEVINFO_AUXHFRCOCAL0_BAND1_MASK) >>
+ _DEVINFO_AUXHFRCOCAL0_BAND1_SHIFT;
+ break;
+
+ case cmuAUXHFRCOBand_7MHz:
+ tuning = (DEVINFO->AUXHFRCOCAL0 & _DEVINFO_AUXHFRCOCAL0_BAND7_MASK) >>
+ _DEVINFO_AUXHFRCOCAL0_BAND7_SHIFT;
+ break;
+
+ case cmuAUXHFRCOBand_11MHz:
+ tuning = (DEVINFO->AUXHFRCOCAL0 & _DEVINFO_AUXHFRCOCAL0_BAND11_MASK) >>
+ _DEVINFO_AUXHFRCOCAL0_BAND11_SHIFT;
+ break;
+
+ case cmuAUXHFRCOBand_14MHz:
+ tuning = (DEVINFO->AUXHFRCOCAL0 & _DEVINFO_AUXHFRCOCAL0_BAND14_MASK) >>
+ _DEVINFO_AUXHFRCOCAL0_BAND14_SHIFT;
+ break;
+
+ case cmuAUXHFRCOBand_21MHz:
+ tuning = (DEVINFO->AUXHFRCOCAL1 & _DEVINFO_AUXHFRCOCAL1_BAND21_MASK) >>
+ _DEVINFO_AUXHFRCOCAL1_BAND21_SHIFT;
+ break;
+
+ case cmuAUXHFRCOBand_28MHz:
+ tuning = (DEVINFO->AUXHFRCOCAL1 & _DEVINFO_AUXHFRCOCAL1_BAND28_MASK) >>
+ _DEVINFO_AUXHFRCOCAL1_BAND28_SHIFT;
+ break;
+
+ default:
+ EFM_ASSERT(0);
+ return;
+ }
+
+ /* Set band/tuning */
+ CMU->AUXHFRCOCTRL = (CMU->AUXHFRCOCTRL &
+ ~(_CMU_AUXHFRCOCTRL_BAND_MASK | _CMU_AUXHFRCOCTRL_TUNING_MASK)) |
+ (band << _CMU_AUXHFRCOCTRL_BAND_SHIFT) |
+ (tuning << _CMU_AUXHFRCOCTRL_TUNING_SHIFT);
+
+}
+#endif
+
+
/***************************************************************************//**
* @brief
* Get HFRCO band in use.
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_dac.c b/bsp/efm32/Libraries/efm32lib/src/efm32_dac.c
index 10b7279993..0698d5d998 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_dac.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_dac.c
@@ -2,7 +2,7 @@
* @file
* @brief Digital to Analog Coversion (DAC) Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_dbg.c b/bsp/efm32/Libraries/efm32lib/src/efm32_dbg.c
index f4a15b449f..3bee9c0d46 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_dbg.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_dbg.c
@@ -2,7 +2,7 @@
* @file
* @brief Debug (DBG) Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_dma.c b/bsp/efm32/Libraries/efm32lib/src/efm32_dma.c
index f1e9ed8e61..f572157f52 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_dma.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_dma.c
@@ -2,7 +2,7 @@
* @file
* @brief Direct memory access (DMA) module peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_ebi.c b/bsp/efm32/Libraries/efm32lib/src/efm32_ebi.c
index 0318fb434e..2a0f16d826 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_ebi.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_ebi.c
@@ -2,7 +2,7 @@
* @file
* @brief External Bus Interface (EBI) Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
@@ -318,6 +318,29 @@ void EBI_BankEnable(uint32_t banks, bool enable)
******************************************************************************/
uint32_t EBI_BankAddress(uint32_t bank)
{
+#if defined (_EFM32_GIANT_FAMILY)
+ if(EBI->CTRL & EBI_CTRL_ALTMAP)
+ {
+ switch (bank)
+ {
+ case EBI_BANK0:
+ return(EBI_MEM_BASE);
+
+ case EBI_BANK1:
+ return(EBI_MEM_BASE + 0x10000000UL);
+
+ case EBI_BANK2:
+ return(EBI_MEM_BASE + 0x20000000UL);
+
+ case EBI_BANK3:
+ return(EBI_MEM_BASE + 0x30000000UL);
+
+ default:
+ EFM_ASSERT(0);
+ break;
+ }
+ }
+#endif
switch (bank)
{
case EBI_BANK0:
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_emu.c b/bsp/efm32/Libraries/efm32lib/src/efm32_emu.c
index d7e2244f90..53647b94f3 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_emu.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_emu.c
@@ -2,7 +2,7 @@
* @file
* @brief Energy Management Unit (EMU) Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_gpio.c b/bsp/efm32/Libraries/efm32lib/src/efm32_gpio.c
index edd1314845..104ebc0ab2 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_gpio.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_gpio.c
@@ -3,7 +3,7 @@
* @brief General Purpose IO (GPIO) peripheral API for EFM32
* devices.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_i2c.c b/bsp/efm32/Libraries/efm32lib/src/efm32_i2c.c
index 64a301168e..6315c85bac 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_i2c.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_i2c.c
@@ -2,7 +2,7 @@
* @file
* @brief Inter-integrated Circuit (I2C) Peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_int.c b/bsp/efm32/Libraries/efm32lib/src/efm32_int.c
index 56dc1a408d..6f08b211b8 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_int.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_int.c
@@ -2,7 +2,7 @@
* @file
* @brief Interrupt enable/disable unit API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_lcd.c b/bsp/efm32/Libraries/efm32lib/src/efm32_lcd.c
index 8466256143..85ec1b36cf 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_lcd.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_lcd.c
@@ -2,7 +2,7 @@
* @file
* @brief Liquid Crystal Display (LCD) Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
@@ -58,6 +58,8 @@ void LCD_Init(const LCD_Init_TypeDef *lcdInit)
{
uint32_t dispCtrl = LCD->DISPCTRL;
+ EFM_ASSERT(lcdInit != (void *) 0);
+
/* Disable controller before reconfiguration */
LCD_Enable(false);
@@ -143,6 +145,8 @@ void LCD_FrameCountInit(const LCD_FrameCountInit_TypeDef *fcInit)
{
uint32_t bactrl = LCD->BACTRL;
+ EFM_ASSERT(fcInit != (void *) 0);
+
/* Verify FC Top Counter to be within limits */
EFM_ASSERT(fcInit->top < 64);
@@ -170,6 +174,8 @@ void LCD_AnimInit(const LCD_AnimInit_TypeDef *animInit)
{
uint32_t bactrl = LCD->BACTRL;
+ EFM_ASSERT(animInit != (void *) 0);
+
/* Set Animation Register Values */
LCD->AREGA = animInit->AReg;
LCD->AREGB = animInit->BReg;
@@ -183,6 +189,17 @@ void LCD_AnimInit(const LCD_AnimInit_TypeDef *animInit)
bactrl |= (animInit->BShift << _LCD_BACTRL_AREGBSC_SHIFT);
bactrl |= animInit->animLogic;
+#if defined(_EFM32_GIANT_FAMILY)
+ if(animInit->startSeg == 0)
+ {
+ bactrl |= LCD_BACTRL_ALOC_SEG0TO7;
+ }
+ else if(animInit->startSeg == 8)
+ {
+ bactrl |= LCD_BACTRL_ALOC_SEG8TO15;
+ }
+#endif
+
/* Reconfigure */
LCD->BACTRL = bactrl;
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_lesense.c b/bsp/efm32/Libraries/efm32lib/src/efm32_lesense.c
index e5c62a7250..950f7cf520 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_lesense.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_lesense.c
@@ -2,7 +2,7 @@
* @file
* @brief Low Energy Sensor (LESENSE) Peripheral API for EFM32 TG/GG devices.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_letimer.c b/bsp/efm32/Libraries/efm32lib/src/efm32_letimer.c
index 4e086fa454..3dbdbc3d50 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_letimer.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_letimer.c
@@ -2,7 +2,7 @@
* @file
* @brief Low Energy Timer (LETIMER) Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_leuart.c b/bsp/efm32/Libraries/efm32lib/src/efm32_leuart.c
index 2b0469991a..55d92a8e31 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_leuart.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_leuart.c
@@ -3,7 +3,7 @@
* @brief Low Energy Universal Asynchronous Receiver/Transmitter (LEUART)
* peripheral module peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_mpu.c b/bsp/efm32/Libraries/efm32lib/src/efm32_mpu.c
index 6661b4d8be..6aa1cb2319 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_mpu.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_mpu.c
@@ -2,7 +2,7 @@
* @file
* @brief Memory Protection Unit (MPU) Peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_msc.c b/bsp/efm32/Libraries/efm32lib/src/efm32_msc.c
index 786a873dca..d4c101ecf7 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_msc.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_msc.c
@@ -2,7 +2,7 @@
* @file
* @brief Flash controller (MSC) Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_opamp.c b/bsp/efm32/Libraries/efm32lib/src/efm32_opamp.c
index dcf672591c..e812bc8692 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_opamp.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_opamp.c
@@ -2,7 +2,7 @@
* @file
* @brief Operational Amplifier (OPAMP) peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
******************************************************************************
* @section License
* (C) Copyright 2011 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_pcnt.c b/bsp/efm32/Libraries/efm32lib/src/efm32_pcnt.c
index 040edf67d3..b3eb1beeea 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_pcnt.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_pcnt.c
@@ -2,7 +2,7 @@
* @file
* @brief Pulse Counter (PCNT) peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_prs.c b/bsp/efm32/Libraries/efm32lib/src/efm32_prs.c
index 8a334eb8d5..7877e40833 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_prs.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_prs.c
@@ -2,7 +2,7 @@
* @file
* @brief Peripheral Reflex System (PRS) Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_rmu.c b/bsp/efm32/Libraries/efm32lib/src/efm32_rmu.c
index d873d37f69..db4d852fbc 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_rmu.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_rmu.c
@@ -3,7 +3,7 @@
* @brief Reset Management Unit (RMU) peripheral module peripheral API
* for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_rtc.c b/bsp/efm32/Libraries/efm32lib/src/efm32_rtc.c
index 37ffbe0c85..5ce2cbb678 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_rtc.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_rtc.c
@@ -2,7 +2,7 @@
* @file
* @brief Real Time Counter (RTC) Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_system.c b/bsp/efm32/Libraries/efm32lib/src/efm32_system.c
index eb1e7c2c41..4c7bee1d3e 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_system.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_system.c
@@ -2,7 +2,7 @@
* @file
* @brief System Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_timer.c b/bsp/efm32/Libraries/efm32lib/src/efm32_timer.c
index ebbb918165..4a253c15cb 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_timer.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_timer.c
@@ -2,7 +2,7 @@
* @file
* @brief Timer/counter (TIMER) Peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
@@ -131,6 +131,9 @@ void TIMER_Init(TIMER_TypeDef *timer, const TIMER_Init_TypeDef *init)
{
timer->CMD = TIMER_CMD_STOP;
}
+
+ /* Reset counter */
+ timer->CNT = _TIMER_CNT_RESETVALUE;
timer->CTRL =
((uint32_t)(init->prescale) << _TIMER_CTRL_PRESC_SHIFT) |
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_usart.c b/bsp/efm32/Libraries/efm32lib/src/efm32_usart.c
index 8acaec9f9f..9a9cb0e2c9 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_usart.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_usart.c
@@ -3,7 +3,7 @@
* @brief Universal synchronous/asynchronous receiver/transmitter (USART/UART)
* peripheral module peripheral API for EFM32.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
@@ -715,6 +715,48 @@ void USART_InitI2s(USART_TypeDef *usart, USART_InitI2s_TypeDef *init)
USART_Enable(usart, enable);
}
}
+
+
+/***************************************************************************//**
+ * @brief
+ * Initialize automatic transmissions using PRS channel as trigger
+ * @note
+ * Initialize USART with USART_Init() before setting up PRS configuration
+ *
+ * @param[in] usart Pointer to USART to configure
+ * @param[in] init Pointer to initialization structure
+ ******************************************************************************/
+void USART_InitPrsTrigger(USART_TypeDef *usart, const USART_PrsTriggerInit_TypeDef *init)
+{
+ uint32_t trigctrl;
+
+ /* Clear values that will be reconfigured */
+ trigctrl = usart->TRIGCTRL & ~(_USART_TRIGCTRL_RXTEN_MASK|
+ _USART_TRIGCTRL_TXTEN_MASK|
+#if defined(_EFM32_GIANT_FAMILY)
+ _USART_TRIGCTRL_AUTOTXTEN_MASK|
+#endif
+ _USART_TRIGCTRL_TSEL_MASK);
+
+#if defined(_EFM32_GIANT_FAMILY)
+ if(init->autoTxTriggerEnable)
+ {
+ trigctrl |= USART_TRIGCTRL_AUTOTXTEN;
+ }
+#endif
+ if(init->txTriggerEnable)
+ {
+ trigctrl |= USART_TRIGCTRL_TXTEN;
+ }
+ if(init->rxTriggerEnable)
+ {
+ trigctrl |= USART_TRIGCTRL_RXTEN;
+ }
+ trigctrl |= init->prsTriggerChannel;
+
+ /* Enable new configuration */
+ usart->TRIGCTRL = trigctrl;
+}
#endif
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_vcmp.c b/bsp/efm32/Libraries/efm32lib/src/efm32_vcmp.c
index 8d354854c4..5828297b0a 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_vcmp.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_vcmp.c
@@ -2,7 +2,7 @@
* @file
* @brief Voltage Comparator (VCMP) peripheral API for EFM32
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
@@ -50,7 +50,7 @@ void VCMP_Init(const VCMP_Init_TypeDef *vcmpInit)
{
/* Verify input */
EFM_ASSERT((vcmpInit->inactive == 0) || (vcmpInit->inactive == 1));
- EFM_ASSERT((vcmpInit->biasProg > 0) && (vcmpInit->biasProg < 16));
+ EFM_ASSERT((vcmpInit->biasProg >= 0) && (vcmpInit->biasProg < 16));
/* Configure Half Bias setting */
if (vcmpInit->halfBias)
@@ -106,8 +106,7 @@ void VCMP_Init(const VCMP_Init_TypeDef *vcmpInit)
/* Configure inactive output value */
VCMP->CTRL |= (vcmpInit->inactive << _VCMP_CTRL_INACTVAL_SHIFT);
- /* Configure input selection values, low power and trigger level */
- VCMP_LowPowerRefSet(vcmpInit->lowPowerRef);
+ /* Configure trigger level */
VCMP_TriggerSet(vcmpInit->triggerLevel);
/* Enable or disable VCMP */
@@ -120,6 +119,16 @@ void VCMP_Init(const VCMP_Init_TypeDef *vcmpInit)
VCMP->CTRL &= ~(VCMP_CTRL_EN);
}
+ /* If Low Power Reference is enabled, wait until VCMP is ready */
+ /* before enabling it, see reference manual for deatils */
+ /* Configuring Low Power Ref without enable has no effect */
+ if(vcmpInit->lowPowerRef && vcmpInit->enable)
+ {
+ /* Poll for VCMP ready */
+ while(!VCMP_Ready());
+ VCMP_LowPowerRefSet(vcmpInit->lowPowerRef);
+ }
+
/* Clear edge interrupt */
VCMP_IntClear(VCMP_IF_EDGE);
}
diff --git a/bsp/efm32/Libraries/efm32lib/src/efm32_wdog.c b/bsp/efm32/Libraries/efm32lib/src/efm32_wdog.c
index 87415f18b0..69ada9b963 100644
--- a/bsp/efm32/Libraries/efm32lib/src/efm32_wdog.c
+++ b/bsp/efm32/Libraries/efm32lib/src/efm32_wdog.c
@@ -3,7 +3,7 @@
* @brief Watchdog (WDOG) peripheral API for EFM32
* devices.
* @author Energy Micro AS
- * @version 2.2.2
+ * @version 2.3.0
*******************************************************************************
* @section License
* (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com
diff --git a/bsp/efm32/SConscript b/bsp/efm32/SConscript
index 031d291edc..8f36f940e8 100644
--- a/bsp/efm32/SConscript
+++ b/bsp/efm32/SConscript
@@ -2,17 +2,20 @@ import rtconfig
Import('RTT_ROOT')
from building import *
-if rtconfig.EFM32_BOARD == 'EFM32_G290_DK':
- src_kit = Glob('EFM32_Gxxx_DK/*.c')
- CPPPATH = [RTT_ROOT + '/bsp/efm32/EFM32_Gxxx_DK']
+if rtconfig.EFM32_BOARD == 'EFM32_GXXX_DK':
+ src_kit = Glob('EFM32_Gxxx_DK/*.c')
+ CPPPATH = [RTT_ROOT + '/bsp/efm32/EFM32_Gxxx_DK']
+elif rtconfig.EFM32_BOARD == 'EFM32GG_DK3750':
+ src_kit = Glob('EFM32GG_DK3750/*.c')
+ CPPPATH = [RTT_ROOT + '/bsp/efm32/EFM32GG_DK3750']
else:
- src_kit = []
- CPPPATH = []
+ src_kit = []
+ CPPPATH = []
src_bsp = ['application.c', 'startup.c', 'board.c']
if rtconfig.PLATFORM == 'gcc':
src_bsp.append('start_gcc.S')
-src_drv1 = ['drv_dma.c', 'drv_rtc.c', 'drv_adc.c', 'drv_acmp.c', 'drv_usart.c', 'drv_iic.c', 'drv_timer.c']
+src_drv1 = ['drv_dma.c', 'drv_rtc.c', 'drv_adc.c', 'drv_acmp.c', 'drv_usart.c', 'drv_leuart.c', 'drv_iic.c', 'drv_timer.c']
src_drv2 = ['drv_sdcard.c', 'drv_ethernet.c']
src_dev = ['dev_misc.c', 'dev_led.c', 'dev_accel.c', 'dev_sflash.c']
src_hdl = ['hdl_interrupt.c']
diff --git a/bsp/efm32/SConstruct b/bsp/efm32/SConstruct
index 38493c53a9..4ff332568b 100644
--- a/bsp/efm32/SConstruct
+++ b/bsp/efm32/SConstruct
@@ -24,8 +24,8 @@ objs = PrepareBuilding(env, RTT_ROOT)
# EFM32 library building script
objs = objs + SConscript(RTT_ROOT + '/bsp/efm32/Libraries/SConscript', variant_dir='build/bsp/Libraries', duplicate=0)
-# build program
+# build program
env.Program(TARGET, objs)
-# end building
+# end building
EndBuilding(TARGET)
diff --git a/bsp/efm32/application.c b/bsp/efm32/application.c
index 506e55dfae..f0e84ad9b3 100644
--- a/bsp/efm32/application.c
+++ b/bsp/efm32/application.c
@@ -6,7 +6,7 @@
* @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
* @section Change Logs
@@ -16,10 +16,10 @@
* 2011-05-06 onelife Add SPI Flash DEMO
* 2011-07-15 onelife Add accelerometer DEMO
* 2011-07-27 onelife Modify Ethernet DEMO
- * 2011-08-23 onelife Modify Ethernet DEMO according to the changes of
- * lwIP API in reversion 1668
+ * 2011-08-23 onelife Modify Ethernet DEMO according to the changes of
+ * lwIP API in reversion 1668
******************************************************************************/
-
+
/***************************************************************************//**
* @addtogroup efm32
* @{
@@ -124,7 +124,7 @@ void rt_demo_thread_entry(void* parameter)
efm_spiFlash_cmd(sflash_inst_rdsr, EFM32_NO_DATA, buf2, sizeof(buf2));
rt_kprintf("Status: %x\n", buf2[0]);
-
+
efm_spiFlash_cmd(sflash_inst_read, 0x00000300, buf, sizeof(buf));
rt_kprintf("READ: \n");
for (i = 0; i < sizeof(buf); i++)
@@ -241,18 +241,18 @@ int rt_application_init()
#if (RT_THREAD_PRIORITY_MAX == 32)
demo_thread = rt_thread_create(
"demo",
- rt_demo_thread_entry,
+ rt_demo_thread_entry,
RT_NULL,
- 1024,
- 3,
+ 1024,
+ 5,
20);
led_thread = rt_thread_create(
"led",
- rt_led_thread_entry,
+ rt_led_thread_entry,
RT_NULL,
256,
- 3,
+ 5,
20);
#else
#endif
diff --git a/bsp/efm32/board.c b/bsp/efm32/board.c
index ea794e5436..9c051189ac 100644
--- a/bsp/efm32/board.c
+++ b/bsp/efm32/board.c
@@ -6,7 +6,7 @@
* @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
* @section Change Logs
@@ -14,8 +14,15 @@
* 2010-12-21 onelife Initial creation for EFM32
* 2011-05-06 onelife Add EFM32 development kit and SPI Flash support
* 2011-07-12 onelife Add SWO output enable function
+ * 2011-12-08 onelife Add giant gecko development kit support
+ * 2011-12-09 onelife Add giant gecko support
+ * 2011-12-09 onelife Add LEUART module support
+ * 2011-12-14 onelife Add LFXO enabling routine in driver initialization
+ * function
+ * 2011-12-15 onelife Add MicroSD enabling routine in driver
+ * initialization function
******************************************************************************/
-
+
/***************************************************************************//**
* @addtogroup efm32
* @{
@@ -48,7 +55,7 @@
/* Private functions ---------------------------------------------------------*/
/***************************************************************************//**
* @brief
- * Set the allocation and offset of the vector table
+ * Set the allocation and offset of the vector table
*
* @details
*
@@ -61,19 +68,19 @@
* The vector table offset
******************************************************************************/
static void NVIC_SetVectorTable(
- rt_uint32_t NVIC_VectTab,
+ rt_uint32_t NVIC_VectTab,
rt_uint32_t Offset)
-{
+{
/* Check the parameters */
RT_ASSERT(IS_NVIC_VECTTAB(NVIC_VectTab));
- RT_ASSERT(IS_NVIC_OFFSET(Offset));
+ RT_ASSERT(IS_NVIC_OFFSET(Offset));
SCB->VTOR = NVIC_VectTab | (Offset & (rt_uint32_t)0x1FFFFF80);
}
/***************************************************************************//**
* @brief
- * Configure the address of vector table
+ * Configure the address of vector table
*
* @details
*
@@ -90,7 +97,7 @@ static void NVIC_Configuration(void)
NVIC_SetVectorTable(FLASH_MEM_BASE, 0x0);
#endif
- /* Set NVIC Preemption Priority Bits: 0 bit for pre-emption, 4 bits for
+ /* Set NVIC Preemption Priority Bits: 0 bit for pre-emption, 4 bits for
subpriority */
NVIC_SetPriorityGrouping(0x7UL);
@@ -100,7 +107,7 @@ static void NVIC_Configuration(void)
/***************************************************************************//**
* @brief
- * Enable high frequency crystal oscillator (HFXO), and set HFCLK domain to
+ * Enable high frequency crystal oscillator (HFXO), and set HFCLK domain to
* use HFXO as source.
*
* @details
@@ -108,7 +115,7 @@ static void NVIC_Configuration(void)
* @note
*
******************************************************************************/
-static void switchToHFXO(void)
+static void efm_hfxo_switch(void)
{
CMU_TypeDef *cmu = CMU;
@@ -147,7 +154,7 @@ static void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)
{
/* Check the parameters */
RT_ASSERT(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
-
+
if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
{
SysTick->CTRL |= SysTick_CLKSource_HCLK;
@@ -172,7 +179,7 @@ static void SysTick_Configuration(void)
rt_uint32_t core_clock;
rt_uint32_t cnts;
- switchToHFXO();
+ efm_hfxo_switch();
core_clock = SystemCoreClockGet();
cnts = core_clock / RT_TICK_PER_SECOND;
@@ -189,7 +196,7 @@ static void SysTick_Configuration(void)
* @note
*
******************************************************************************/
-void setupSWO(void)
+void efm_swo_setup(void)
{
rt_uint32_t *dwt_ctrl = (rt_uint32_t *) 0xE0001000;
rt_uint32_t *tpiu_prescaler = (rt_uint32_t *) 0xE0040010;
@@ -237,9 +244,11 @@ void rt_hw_board_init(void)
/* Chip errata */
CHIP_Init();
-#if defined(EFM32_G290_DK)
- /* Initialize DVK board register access */
+ /* Initialize DVK board register access */
+#if defined(EFM32_GXXX_DK)
DVK_init();
+#elif defined(EFM32GG_DK3750)
+ DVK_init(DVK_Init_EBI);
#endif
/* NVIC Configuration */
@@ -247,9 +256,9 @@ void rt_hw_board_init(void)
/* Configure external oscillator */
SystemHFXOClockSet(EFM32_HFXO_FREQUENCY);
-
+
/* Configure the SysTick */
- SysTick_Configuration();
+ SysTick_Configuration();
}
/***************************************************************************//**
@@ -271,24 +280,50 @@ void rt_hw_driver_init(void)
/* Enabling clock to the interface of the low energy modules */
CMU_ClockEnable(cmuClock_CORELE, true);
-#ifdef EFM32_SWO_ENABLE
- /* Enable SWO */
- setupSWO();
+ /* Starting LFXO and waiting until it is stable */
+#if defined(EFM32_USING_LFXO)
+ CMU_OscillatorEnable(cmuOsc_LFXO, true, true);
+
+ /* Select LFXO for specified module (and wait for it to stabilize) */
+ #if (defined(RT_USING_LEUART0) || defined(RT_USING_LEUART1))
+ CMU_ClockSelectSet(cmuClock_LFB, cmuSelect_LFXO);
+ #endif
+ #if defined(RT_USING_RTC)
+ CMU_ClockSelectSet(cmuClock_LFA,cmuSelect_LFXO);
+ #endif
+#endif
+
+ /* Enable SWO */
+#if defined(EFM32_SWO_ENABLE)
+ efm_swo_setup();
#endif
/* Initialize DMA */
rt_hw_dma_init();
/* Initialize USART */
-#if defined(EFM32_G290_DK)
- DVK_enablePeripheral(DVK_RS232A);
- DVK_enablePeripheral(DVK_SPI);
-#endif
-#if (defined(RT_USING_USART0) || defined(RT_USING_USART1) || defined(RT_USING_USART2))
+#if (defined(RT_USING_USART0) || defined(RT_USING_USART1) || \
+ defined(RT_USING_USART2) || defined(RT_USING_UART0) || \
+ defined(RT_USING_UART1))
rt_hw_usart_init();
#endif
- /* Setup console */
+ /* Initialize LEUART */
+#if (defined(RT_USING_LEUART0) || defined(RT_USING_LEUART1))
+ rt_hw_leuart_init();
+#endif
+
+ /* Setup Console */
+#if defined(EFM32_GXXX_DK)
+ DVK_enablePeripheral(DVK_RS232A);
+ DVK_enablePeripheral(DVK_SPI);
+#elif defined(EFM32GG_DK3750)
+ #if (RT_CONSOLE_DEVICE == EFM_UART1)
+ DVK_enablePeripheral(DVK_RS232_UART);
+ #elif (RT_CONSOLE_DEVICE == EFM_LEUART1)
+ DVK_enablePeripheral(DVK_RS232_LEUART);
+ #endif
+#endif
rt_console_set_device(CONSOLE_DEVICE);
/* Initialize Timer */
@@ -315,6 +350,20 @@ void rt_hw_driver_init(void)
#if defined(RT_USING_RTC)
rt_hw_rtc_init();
#endif
+
+ /* Enable SPI access to MicroSD card */
+#if defined(EFM32_USING_SPISD)
+ #if defined(EFM32_GXXX_DK)
+ DVK_writeRegister(BC_SPI_CFG, 1);
+ #elif defined(EFM32GG_DK3750)
+ DVK_enablePeripheral(DVK_MICROSD);
+ #endif
+#endif
+
+ /* Enable SPI access to Ethernet */
+#if defined(EFM32_USING_ETHERNET)
+ DVK_enablePeripheral(DVK_ETH);
+#endif
}
/***************************************************************************//**
diff --git a/bsp/efm32/board.h b/bsp/efm32/board.h
index 6e91c29026..90b9ad810a 100644
--- a/bsp/efm32/board.h
+++ b/bsp/efm32/board.h
@@ -6,15 +6,20 @@
* @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
* @section Change Logs
* Date Author Notes
* 2010-12-21 onelife Initial creation for EFM32
* 2011-05-06 onelife Add EFM32 development kit and SPI Flash support
- * 2011-07-12 onelife Add prototype for SWO output enable and interrupt
- * context check functions
+ * 2011-07-12 onelife Add prototype for SWO output enable and interrupt
+ * context check functions
+ * 2011-12-08 onelife Add giant gecko development kit support
+ * 2011-12-09 onelife Add giant gecko support
+ * 2011-12-09 onelife Add LEUART module support
+ * 2011-12-14 onelife Add LFXO enabling routine in driver initialization
+ * function
******************************************************************************/
#ifndef __BOARD_H__
#define __BOARD_H__
@@ -22,8 +27,9 @@
#if defined(EFM32G890F128)
#elif defined(EFM32G290F128)
#elif defined(EFM32G230F128)
+#elif defined(EFM32GG990F1024)
#else
-#error Unknown MCU type
+#error Unknown MCU type
#endif
/* Includes ------------------------------------------------------------------*/
@@ -38,11 +44,12 @@
#include
#include
#include
+#include
#include
#include
-#if defined(EFM32_G290_DK)
+#if (defined(EFM32_GXXX_DK) || defined(EFM32GG_DK3750))
#include
#endif
@@ -72,30 +79,61 @@ extern volatile rt_uint32_t rt_system_status;
/* SECTION: Micro SD */
#if defined(EFM32_USING_SPISD)
-#define USART_0_AUTOCS (1)
-#define SD_CS_PORT (gpioPortC)
-#define SD_CS_PIN (8)
+ #if defined(EFM32_GXXX_DK)
+ #define USART_0_AUTOCS (1)
+ #define SD_CS_PORT (gpioPortC)
+ #define SD_CS_PIN (8)
+ #elif defined(EFM32GG_DK3750)
+ #define USART_0_AUTOCS (1)
+ #define SD_CS_PORT (gpioPortE)
+ #define SD_CS_PIN (4)
+ #endif
#endif
/* SECTION: Ethernet */
#if defined(EFM32_USING_ETHERNET)
-#define USART_2_AUTOCS (0)
-#define ETH_CS_PORT (gpioPortB)
-#define ETH_CS_PIN (6)
+ #if defined(EFM32_GXXX_DK)
+ #define USART_2_AUTOCS (0)
+ #define ETH_CS_PORT (gpioPortB)
+ #define ETH_CS_PIN (6)
+ #elif defined(EFM32GG_DK3750)
+ #define USART_1_AUTOCS (0)
+ #define ETH_CS_PORT (gpioPortD)
+ #define ETH_CS_PIN (3)
+ #endif
#endif
/* SECTION: SYSTEM */
#define EFM32_SRAM_END (SRAM_BASE + SRAM_SIZE)
#define EFM32_BASE_PRI_DEFAULT (0x0UL << 5)
#define EFM32_IRQ_PRI_DEFAULT (0x4UL << 5)
-#if (defined(EFM32_G890_STK) || defined(EFM32_G290_DK))
-#define EFM32_HFXO_FREQUENCY (32000000)
-#else
-#define EFM32_HFXO_FREQUENCY (00000000)
+
+/* SECTION: CLOCK */
+#define EFM32_USING_HFXO
+#define EFM32_USING_LFXO
+#if defined(EFM32_USING_HFXO)
+ #if (defined(EFM32_G8XX_STK) || defined(EFM32_GXXX_DK))
+ #define EFM32_HFXO_FREQUENCY (32000000)
+ #elif defined(EFM32GG_DK3750)
+ #define EFM32_HFXO_FREQUENCY (48000000)
+ #else
+ #define EFM32_HFXO_FREQUENCY (00000000)
+ #endif
#endif
/* SECTION: USART */
#define USART_RX_BUFFER_SIZE (64)
+#define LEUART_RX_BUFFER_SIZE (64)
+/* Location count (start from 0) */
+#if defined(EFM32_GXXX_DK)
+#define EFM32_USART_LOCATION_COUNT (3)
+#define EFM32_UART_LOCATION_COUNT (4)
+#define EFM32_LEUART_LOCATION_COUNT (3)
+#elif defined(EFM32GG_DK3750)
+#define EFM32_USART_LOCATION_COUNT (6)
+#define EFM32_UART_LOCATION_COUNT (4)
+#define EFM32_LEUART_LOCATION_COUNT (5)
+#endif
/* SUBSECTION: UART */
#define UART_BAUDRATE (115200)
@@ -120,20 +158,33 @@ extern volatile rt_uint32_t rt_system_status;
/* SECTION: I2C */
#define IIC_RX_BUFFER_SIZE (32)
+#if defined(EFM32_GXXX_DK)
+#define EFM32_IIC_LOCATION_COUNT (4)
+#elif defined(EFM32GG_DK3750)
+#define EFM32_IIC_LOCATION_COUNT (7)
+#endif
/* SECTION: ADC */
#define ADC_CALI_REF adcRef2V5
#define ADC_CALI_CH adcSingleInpCh5
#define ADC_CONVERT_FREQUENCY (7000000)
-#if (RT_CONSOLE_DEVICE == 0x0UL)
+#if (RT_CONSOLE_DEVICE == EFM_USART0)
#define CONSOLE_DEVICE RT_USART0_NAME
-#elif (RT_CONSOLE_DEVICE == 0x1UL)
+#elif (RT_CONSOLE_DEVICE == EFM_USART1)
#define CONSOLE_DEVICE RT_USART1_NAME
-#elif (RT_CONSOLE_DEVICE == 0x2UL)
+#elif (RT_CONSOLE_DEVICE == EFM_USART2)
#define CONSOLE_DEVICE RT_USART2_NAME
+#elif (RT_CONSOLE_DEVICE == EFM_UART0)
+#define CONSOLE_DEVICE RT_UART0_NAME
+#elif (RT_CONSOLE_DEVICE == EFM_UART1)
+#define CONSOLE_DEVICE RT_UART1_NAME
+#elif (RT_CONSOLE_DEVICE == EFM_LEUART0)
+#define CONSOLE_DEVICE RT_LEUART0_NAME
+#elif (RT_CONSOLE_DEVICE == EFM_LEUART1)
+#define CONSOLE_DEVICE RT_LEUART1_NAME
#else
-#define CONSOLE_DEVICE "no"
+#define CONSOLE_DEVICE "NONE"
#endif
@@ -161,13 +212,14 @@ extern volatile rt_uint32_t rt_system_status;
#define RT_DEVICE_CTRL_SD_GET_SDSTAT MMC_GET_SDSTAT
/*! fixme: move the following define to Rtdef.h */
-#define RT_DEVICE_CTRL_USART_RBUFFER (0xF1) /*!< set USART rx buffer */
-#define RT_DEVICE_CTRL_IIC_SETTING (0xF2) /*!< change IIC setting */
-#define RT_DEVICE_CTRL_TIMER_PERIOD (0xF3) /*!< set Timer timeout period */
-#define RT_DEVICE_CTRL_ADC_MODE (0xF4) /*!< change ADC mode */
-#define RT_DEVICE_CTRL_ADC_RESULT (0xF5) /*!< get ADC result */
-#define RT_DEVICE_CTRL_ACMP_INIT (0xF6) /*!< Initialize ACMP */
-#define RT_DEVICE_CTRL_ACMP_OUTPUT (0xF7) /*!< get ACMP output */
+#define RT_DEVICE_CTRL_USART_RBUFFER (0xF1) /*!< set USART/UART rx buffer */
+#define RT_DEVICE_CTRL_LEUART_RBUFFER (0xF2) /*!< set LEUART rx buffer */
+#define RT_DEVICE_CTRL_IIC_SETTING (0xF3) /*!< change IIC setting */
+#define RT_DEVICE_CTRL_TIMER_PERIOD (0xF4) /*!< set Timer timeout period */
+#define RT_DEVICE_CTRL_ADC_MODE (0xF5) /*!< change ADC mode */
+#define RT_DEVICE_CTRL_ADC_RESULT (0xF6) /*!< get ADC result */
+#define RT_DEVICE_CTRL_ACMP_INIT (0xF7) /*!< Initialize ACMP */
+#define RT_DEVICE_CTRL_ACMP_OUTPUT (0xF8) /*!< get ACMP output */
/* Exported functions ------------------------------------------------------- */
void rt_hw_board_init(void);
diff --git a/bsp/efm32/dev_accel.c b/bsp/efm32/dev_accel.c
index 989e498279..0974067c88 100644
--- a/bsp/efm32/dev_accel.c
+++ b/bsp/efm32/dev_accel.c
@@ -6,14 +6,14 @@
* @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
* @section Change Logs
* Date Author Notes
- * 2011-07-13 onelife Initial creation for using EFM32 ADC module to
+ * 2011-07-13 onelife Initial creation for using EFM32 ADC module to
* interface the Freescale MMA7361L
- * 2011-08-02 onelife Add digital interface support of using EFM32 IIC
+ * 2011-08-02 onelife Add digital interface support of using EFM32 IIC
* module for the Freescale MMA7455L
******************************************************************************/
@@ -76,7 +76,7 @@ static rt_uint32_t accelConfig = 0;
* @return
* Error code
******************************************************************************/
-rt_err_t efm_accel_get_data(struct efm32_accel_result_t *data,
+rt_err_t efm_accel_get_data(struct efm32_accel_result_t *data,
rt_bool_t lowResolution)
{
RT_ASSERT(accel != RT_NULL);
@@ -89,7 +89,7 @@ rt_err_t efm_accel_get_data(struct efm32_accel_result_t *data,
}
ret = RT_EOK;
- do
+ do
{
/* --------- ADC interface --------- */
#if (EFM32_USING_ACCEL == EFM32_INTERFACE_ADC)
@@ -97,7 +97,7 @@ rt_err_t efm_accel_get_data(struct efm32_accel_result_t *data,
result.mode = control.mode;
result.buffer = (void *)data;
- if ((ret = accel->control(accel, RT_DEVICE_CTRL_RESUME,
+ if ((ret = accel->control(accel, RT_DEVICE_CTRL_RESUME,
(void *)&result)) != RT_EOK)
{
break;
@@ -311,7 +311,7 @@ rt_err_t efm_accel_config(rt_uint32_t config,
{
mctl_reg |= MCTL_PIN_INT1;
}
-
+
/* Modify CTL1 */
if (config & ACCEL_INTPIN_INVERSE)
{
@@ -346,7 +346,7 @@ rt_err_t efm_accel_config(rt_uint32_t config,
break;
default:
break;
- }
+ }
if (config & ACCEL_THRESHOLD_INTEGER)
{
@@ -485,16 +485,16 @@ rt_err_t efm_accel_config(rt_uint32_t config,
BITBAND_Peripheral(&(GPIO->IFC), ACCEL_INT2_PIN, 0x1UL);
/* Set raising edge interrupt and clear/enable it */
GPIO_IntConfig(
- ACCEL_INT1_PORT,
- ACCEL_INT1_PIN,
- true,
- false,
+ ACCEL_INT1_PORT,
+ ACCEL_INT1_PIN,
+ true,
+ false,
true);
GPIO_IntConfig(
- ACCEL_INT2_PORT,
- ACCEL_INT2_PIN,
- true,
- false,
+ ACCEL_INT2_PORT,
+ ACCEL_INT2_PIN,
+ true,
+ false,
true);
if (((rt_uint8_t)ACCEL_INT1_PORT % 2) || \
((rt_uint8_t)ACCEL_INT2_PORT % 2))
@@ -602,7 +602,7 @@ rt_err_t efm_accel_auto_zero(rt_uint8_t mode, rt_tick_t period)
if ((temp.x == 0) && (temp.y == 0) && \
(temp.z == 0))
{
- accel_debug("Accel: Offset %+d %+d %+d\n",
+ accel_debug("Accel: Offset %+d %+d %+d\n",
accelOffset.x, accelOffset.y, accelOffset.z);
break;
}
@@ -620,7 +620,7 @@ rt_err_t efm_accel_auto_zero(rt_uint8_t mode, rt_tick_t period)
{
break;
}
-
+
/* Set offset drift registers */
max.x -= temp.x;
max.y -= temp.y;
@@ -645,7 +645,7 @@ rt_err_t efm_accel_auto_zero(rt_uint8_t mode, rt_tick_t period)
"cal_tmr",
efm_accel_timer,
RT_NULL,
- period,
+ period,
RT_TIMER_FLAG_ONE_SHOT)) == RT_NULL)
{
accel_debug("Accel err: Create timer failed!\n");
@@ -704,7 +704,7 @@ rt_err_t efm_accel_auto_zero(rt_uint8_t mode, rt_tick_t period)
rt_thread_sleep(1);
} while (accelInTime);
- accel_debug("Accel: Min %+d %+d %+d, max %+d %+d %+d\n",
+ accel_debug("Accel: Min %+d %+d %+d, max %+d %+d %+d\n",
min.x, min.y, min.z, max.x, max.y, max.z);
#if (EFM32_USING_ACCEL == EFM32_INTERFACE_ADC)
@@ -712,7 +712,7 @@ rt_err_t efm_accel_auto_zero(rt_uint8_t mode, rt_tick_t period)
accelOffset.y = -((min.y + max.y) >> 1);
accelOffset.z = -((min.z + max.z) >> 1);
- accel_debug("Accel: Offset %+d %+d %+d\n",
+ accel_debug("Accel: Offset %+d %+d %+d\n",
accelOffset.x, accelOffset.y, accelOffset.z);
#elif (EFM32_USING_ACCEL == EFM32_INTERFACE_IIC)
@@ -725,7 +725,7 @@ rt_err_t efm_accel_auto_zero(rt_uint8_t mode, rt_tick_t period)
return -RT_ERROR;
}
- accel_debug("Accel: Offset %+d %+d %+d\n",
+ accel_debug("Accel: Offset %+d %+d %+d\n",
*(rt_int16_t *)&cmd[1], *(rt_int16_t *)&cmd[3], *(rt_int16_t *)&cmd[5]);
#endif
@@ -767,7 +767,7 @@ rt_err_t efm_accel_init(void)
#if (EFM32_USING_ACCEL == EFM32_INTERFACE_ADC)
ADC_InitScan_TypeDef scanInit = ADC_INITSCAN_DEFAULT;
- #if defined(EFM32_G290_DK)
+ #if defined(EFM32_GXXX_DK)
/* Enable accelerometer */
DVK_enablePeripheral(DVK_ACCEL);
/* Select g-range */
@@ -802,11 +802,11 @@ rt_err_t efm_accel_init(void)
}
if (efm_accel_config(
- ACCEL_MODE_MEASUREMENT | ACCEL_RANGE_2G,
- EFM32_NO_DATA,
- EFM32_NO_DATA,
- EFM32_NO_DATA,
- EFM32_NO_DATA,
+ ACCEL_MODE_MEASUREMENT | ACCEL_RANGE_2G,
+ EFM32_NO_DATA,
+ EFM32_NO_DATA,
+ EFM32_NO_DATA,
+ EFM32_NO_DATA,
EFM32_NO_DATA) != RT_EOK)
{
break;
@@ -859,11 +859,11 @@ void test_accel(rt_uint8_t mode)
{
if (efm_accel_config(
ACCEL_MODE_LEVEL | ACCEL_RANGE_8G | ACCEL_INT_LEVEL_PULSE | \
- ACCEL_SOURCE_LEVEL_X | ACCEL_SOURCE_LEVEL_Y,
- 0x1f,
- EFM32_NO_DATA,
- EFM32_NO_DATA,
- EFM32_NO_DATA,
+ ACCEL_SOURCE_LEVEL_X | ACCEL_SOURCE_LEVEL_Y,
+ 0x1f,
+ EFM32_NO_DATA,
+ EFM32_NO_DATA,
+ EFM32_NO_DATA,
EFM32_NO_DATA) != RT_EOK)
{
rt_kprintf("efm_accel_config(): error\n");
@@ -874,11 +874,11 @@ void test_accel(rt_uint8_t mode)
{
if (efm_accel_config(
ACCEL_MODE_PULSE | ACCEL_RANGE_8G | ACCEL_INT_SINGLE_DOUBLE | \
- ACCEL_SOURCE_PULSE_X | ACCEL_SOURCE_PULSE_Y,
- 0x1f,
- 0x1f,
- 200,
- 255,
+ ACCEL_SOURCE_PULSE_X | ACCEL_SOURCE_PULSE_Y,
+ 0x1f,
+ 0x1f,
+ 200,
+ 255,
255) != RT_EOK)
{
rt_kprintf("efm_accel_config(): error\n");
diff --git a/bsp/efm32/dev_led.c b/bsp/efm32/dev_led.c
index c1cceb92e8..bf357a023d 100644
--- a/bsp/efm32/dev_led.c
+++ b/bsp/efm32/dev_led.c
@@ -6,7 +6,7 @@
* @version 0.4 beta
**********************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file LICENSE in this
+ * The license and distribution terms for this file may be found in the file LICENSE in this
* distribution or at http://www.rt-thread.org/license/LICENSE
**********************************************************************
* @section Change Logs
@@ -14,6 +14,7 @@
* 2009-01-05 Bernard the first version
* 2010-12-27 onelife Modify for EFM32
* 2011-05-06 onelife Add EFM32 development kit support
+ * 2011-12-08 onelife Add giant gecko development kit support
*********************************************************************/
/******************************************************************//**
@@ -29,7 +30,7 @@
/* Private define --------------------------------------------------------------*/
/* Private macro --------------------------------------------------------------*/
/* Private constants -----------------------------------------------------------*/
-#if defined(EFM32_G890_STK)
+#if defined(EFM32_G8XX_STK)
static const rt_uint8_t leds_list[LEDS_MAX_NUMBER][2] = \
{
{LEDS_PIN_PORT_0, LEDS_PIN_NUMBER_0},
@@ -58,12 +59,12 @@ void rt_hw_led_on(rt_uint8_t num)
{
RT_ASSERT(num < LEDS_MAX_NUMBER);
-#if defined(EFM32_G890_STK)
+#if defined(EFM32_G8XX_STK)
GPIO_PinOutSet(leds_list[num][0], leds_list[num][1]);
-#elif defined(EFM32_G290_DK)
+#elif (defined(EFM32_GXXX_DK) || defined(EFM32GG_DK3750))
{
rt_uint16_t leds;
-
+
leds = DVK_getLEDs() | (rt_uint16_t)(1 << num);
DVK_setLEDs(leds);
}
@@ -86,12 +87,12 @@ void rt_hw_led_off(rt_uint8_t num)
{
RT_ASSERT(num < LEDS_MAX_NUMBER);
-#if defined(EFM32_G890_STK)
+#if defined(EFM32_G8XX_STK)
GPIO_PinOutClear(leds_list[num][0], leds_list[num][1]);
-#elif defined(EFM32_G290_DK)
+#elif (defined(EFM32_GXXX_DK) || defined(EFM32GG_DK3750))
{
rt_uint16_t leds;
-
+
leds = DVK_getLEDs() & ~(rt_uint16_t)(1 << num);
DVK_setLEDs(leds);
}
@@ -114,12 +115,12 @@ void rt_hw_led_toggle(rt_uint8_t num)
{
RT_ASSERT(num < LEDS_MAX_NUMBER);
-#if defined(EFM32_G890_STK)
+#if defined(EFM32_G8XX_STK)
GPIO_PinOutToggle(leds_list[num][0], leds_list[num][1]);
-#elif defined(EFM32_G290_DK)
+#elif (defined(EFM32_GXXX_DK) || defined(EFM32GG_DK3750))
{
rt_uint16_t leds;
-
+
leds = DVK_getLEDs() ^ (rt_uint16_t)(1 << num);
DVK_setLEDs(leds);
}
@@ -130,9 +131,9 @@ rt_uint8_t rt_hw_led_state(rt_uint8_t num)
{
RT_ASSERT(num < LEDS_MAX_NUMBER);
-#if defined(EFM32_G890_STK)
+#if defined(EFM32_G8XX_STK)
return (rt_uint8_t)GPIO_PinInGet(leds_list[num][0], leds_list[num][1]);
-#elif defined(EFM32_G290_DK)
+#elif (defined(EFM32_GXXX_DK) || defined(EFM32GG_DK3750))
return ((DVK_getLEDs() & (rt_uint16_t)(1 << num)) >> num);
#endif
@@ -151,9 +152,9 @@ rt_uint8_t rt_hw_led_state(rt_uint8_t num)
*********************************************************************/
rt_err_t rt_hw_led_init(void)
{
-#if defined(EFM32_G890_STK)
+#if defined(EFM32_G8XX_STK)
rt_uint8_t i;
-
+
/* Configure GPIO */
for (i = 0; i < LEDS_MAX_NUMBER; i++)
{
@@ -182,14 +183,14 @@ void list_leds(void)
for (i = 0; i < LEDS_MAX_NUMBER; i++)
{
-#if defined(EFM32_G890_STK)
- rt_kprintf(" %d \t %x \t %x \t %x \n",
+#if defined(EFM32_G8XX_STK)
+ rt_kprintf(" %d \t %x \t %x \t %x \n",
i, leds_list[i][0], leds_list[i][1], rt_hw_led_state(i));
-#elif defined(EFM32_G290_DK)
+#elif (defined(EFM32_GXXX_DK) || defined(EFM32GG_DK3750))
rt_uint16_t leds;
-
+
leds = DVK_getLEDs();
- rt_kprintf(" %d \t FPGA \t FPGA \t %x \n",
+ rt_kprintf(" %d \t FPGA \t FPGA \t %x \n",
i, (leds & (1 << i))? 1 : 0);
#endif
}
diff --git a/bsp/efm32/dev_led.h b/bsp/efm32/dev_led.h
index 9bc7190e4a..e5a5bf6f4c 100644
--- a/bsp/efm32/dev_led.h
+++ b/bsp/efm32/dev_led.h
@@ -6,7 +6,7 @@
* @version 0.4 beta
**********************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file LICENSE in this
+ * The license and distribution terms for this file may be found in the file LICENSE in this
* distribution or at http://www.rt-thread.org/license/LICENSE
**********************************************************************
* @section Change Logs
@@ -14,6 +14,7 @@
* 2009-01-05 Bernard the first version
* 2010-12-27 onelife Modify for EFM32
* 2011-05-06 onelife Add EFM32 development kit support
+ * 2011-12-08 onelife Add giant gecko development kit support
*********************************************************************/
#ifndef __DEV_LED_H__
#define __DEV_LED_H__
@@ -22,7 +23,7 @@
/* Exported types -------------------------------------------------------------*/
/* Exported constants ---------------------------------------------------------*/
/* Exported macro -------------------------------------------------------------*/
-#if defined(EFM32_G890_STK)
+#if defined(EFM32_G8XX_STK)
#define LEDS_MAX_NUMBER (4)
/* Configure GPIO port C 0-3 for LEDs */
#define LEDS_PIN_PORT_0 gpioPortC
@@ -33,7 +34,7 @@
#define LEDS_PIN_NUMBER_2 (2)
#define LEDS_PIN_PORT_3 gpioPortC
#define LEDS_PIN_NUMBER_3 (3)
-#elif defined(EFM32_G290_DK)
+#elif (defined(EFM32_GXXX_DK) || defined(EFM32GG_DK3750))
#define LEDS_MAX_NUMBER (16)
#endif
@@ -44,4 +45,4 @@ void rt_hw_led_off(rt_uint8_t num);
void rt_hw_led_toggle(rt_uint8_t num);
rt_uint8_t rt_hw_led_state(rt_uint8_t num);
-#endif /* __DEV_LED_H__ */
\ No newline at end of file
+#endif /* __DEV_LED_H__ */
diff --git a/bsp/efm32/dev_sflash.c b/bsp/efm32/dev_sflash.c
index 5a7e192254..00486e5cca 100644
--- a/bsp/efm32/dev_sflash.c
+++ b/bsp/efm32/dev_sflash.c
@@ -1,14 +1,14 @@
/******************************************************************//**
* @file dev_sflash.c
* @brief SPI Flash driver of RT-Thread RTOS for using EFM32 USART module.
- * This driver is tested by using the M25PX16 device on the EFM32 development
+ * This driver is tested by using the M25PX16 device on the EFM32 development
* kit.
* COPYRIGHT (C) 2011, RT-Thread Development Team
* @author onelife
* @version 0.4 beta
**********************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file LICENSE in this
+ * The license and distribution terms for this file may be found in the file LICENSE in this
* distribution or at http://www.rt-thread.org/license/LICENSE
**********************************************************************
* @section Change Logs
@@ -44,7 +44,7 @@ typedef struct
#endif
/* Private constants -----------------------------------------------------------*/
-static rt_uint8_t sflash_inst_code_tbl[] =
+static rt_uint8_t sflash_inst_code_tbl[] =
{
/* Instruction only */
SFLASH_INST_CODE_WREN,
@@ -70,7 +70,7 @@ static rt_uint8_t sflash_inst_code_tbl[] =
SFLASH_INST_CODE_DOFR,
SFLASH_INST_CODE_ROTP
};
-static rt_uint16_t sflash_data_len_tbl[] =
+static rt_uint16_t sflash_data_len_tbl[] =
{
/* Instruction only */
SFLASH_REPLY_LEN_WREN,
@@ -96,7 +96,7 @@ static rt_uint16_t sflash_data_len_tbl[] =
SFLASH_REPLY_LEN_DOFR,
SFLASH_REPLY_LEN_ROTP
};
-static rt_bool_t sflash_read_inst_tbl[] =
+static rt_bool_t sflash_read_inst_tbl[] =
{
/* Instruction only */
false,
@@ -146,7 +146,7 @@ rt_err_t efm_spiFlash_init(void)
usart = (struct efm32_usart_device_t *)(sFlash->user_data);
-#if defined(EFM32_G290_DK)
+#if defined(EFM32_GXXX_DK)
/* Enable SPI access to Flash */
DVK_writeRegister(BC_SPI_CFG, 0);
#endif
@@ -157,7 +157,7 @@ rt_err_t efm_spiFlash_init(void)
sFlash = rt_device_find(SFLASH_USING_DEVICE_NAME);
if (sFlash == RT_NULL)
{
- sflash_debug("SFLASH: Can't find device %s!\n",
+ sflash_debug("SFLASH: Can't find device %s!\n",
SFLASH_USING_DEVICE_NAME);
break;
}
@@ -203,7 +203,7 @@ rt_err_t efm_spiFlash_deinit(void)
sflash_debug("SFLASH: Already deinit!\n");
break;
}
-
+
/* Close SPI device */
if (sFlash->close(sFlash) != RT_EOK)
{
@@ -269,9 +269,9 @@ static void efm_spiFlash_cs(rt_uint8_t enable)
* Number of read/written bytes
*********************************************************************/
rt_uint32_t efm_spiFlash_cmd(
- enum sflash_inst_type_t command,
+ enum sflash_inst_type_t command,
rt_uint32_t address,
- rt_uint8_t *buffer,
+ rt_uint8_t *buffer,
rt_uint32_t size)
{
RT_ASSERT(sFlash != RT_NULL);
@@ -338,7 +338,7 @@ rt_uint32_t efm_spiFlash_cmd(
if (sflash_read_inst_tbl[command])
{
rt_off_t skip;
-
+
inst_buf[0] = inst_len;
*(rt_uint8_t **)(inst_buf + head_len) = buffer;
if (command == sflash_inst_read)
@@ -349,7 +349,7 @@ rt_uint32_t efm_spiFlash_cmd(
{
skip = SFLASH_SPI_COMMAND_SKIP;
}
-
+
efm_spiFlash_cs(1);
if (sFlash->read(sFlash, skip, inst_buf, \
(data_len == size)? data_len - 1 : data_len) == 0)
@@ -396,7 +396,7 @@ void list_sflash(void)
rt_uint8_t buf[4];
efm_spiFlash_cmd(sflash_inst_rdid_s, EFM32_NO_DATA, buf, sizeof(buf));
-
+
rt_kprintf(" spi flash on %s\n", SFLASH_USING_DEVICE_NAME);
rt_kprintf(" ------------------------------\n");
rt_kprintf(" Manufacturer ID:\t%x\n", buf[0]);
diff --git a/bsp/efm32/drv_iic.c b/bsp/efm32/drv_iic.c
index 6df67c184c..d4881b9ca8 100644
--- a/bsp/efm32/drv_iic.c
+++ b/bsp/efm32/drv_iic.c
@@ -6,20 +6,20 @@
* @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
* @section Change Logs
* Date Author Notes
* 2011-01-06 onelife Initial creation for EFM32
- * 2011-06-17 onelife Modify init function for EFM32 library v2.0.0
+ * 2011-06-17 onelife Modify init function for EFM32 library v2.0.0
* upgrading
- * 2011-07-11 onelife Add lock (semaphore) to prevent simultaneously
+ * 2011-07-11 onelife Add lock (semaphore) to prevent simultaneously
* access
- * 2011-08-04 onelife Change the usage of the second parameter of Read
+ * 2011-08-04 onelife Change the usage of the second parameter of Read
* and Write functions from (seldom used) "Offset" to "Slave address"
* 2011-08-04 onelife Add a timer to prevent from forever waiting
- * 2011-11-29 onelife Modify init function for EFM32 library v2.2.2
+ * 2011-11-29 onelife Modify init function for EFM32 library v2.2.2
* upgrading
******************************************************************************/
@@ -52,15 +52,15 @@ struct efm32_iic_block
/* Private variables ---------------------------------------------------------*/
#ifdef RT_USING_IIC0
- #if (RT_USING_IIC0 > 3)
- #error "The location number range of IIC is 0~3"
+ #if (RT_USING_IIC0 > EFM32_IIC_LOCATION_COUNT)
+ #error "Wrong location number"
#endif
static struct efm32_iic_block iic0;
#endif
#ifdef RT_USING_IIC1
- #if (RT_USING_IIC1 > 3)
- #error "The location number range of IIC is 0~3"
+ #if (RT_USING_IIC1 > EFM32_IIC_LOCATION_COUNT)
+ #error "Wrong location number"
#endif
static struct efm32_iic_block iic1;
#endif
@@ -122,7 +122,7 @@ static rt_err_t rt_iic_open(rt_device_t dev, rt_uint16_t oflag)
RT_ASSERT(dev != RT_NULL);
struct efm32_iic_device_t *iic;
-
+
iic = (struct efm32_iic_device_t *)(dev->user_data);
iic->counter++;
@@ -149,7 +149,7 @@ static rt_err_t rt_iic_close(rt_device_t dev)
RT_ASSERT(dev != RT_NULL);
struct efm32_iic_device_t *iic;
-
+
iic = (struct efm32_iic_device_t *)(dev->user_data);
if (--iic->counter == 0)
{
@@ -184,9 +184,9 @@ static rt_err_t rt_iic_close(rt_device_t dev)
* Error code
******************************************************************************/
static rt_size_t rt_iic_read (
- rt_device_t dev,
- rt_off_t pos,
- void* buffer,
+ rt_device_t dev,
+ rt_off_t pos,
+ void* buffer,
rt_size_t size)
{
rt_err_t err_code;
@@ -238,7 +238,7 @@ static rt_size_t rt_iic_read (
{
ret = I2C_Transfer(iic->iic_device);
}
-
+
if (ret != i2cTransferDone)
{
iic_debug("IIC read error: %x\n", ret);
@@ -335,9 +335,9 @@ static rt_size_t rt_iic_read (
* Error code
******************************************************************************/
static rt_size_t rt_iic_write (
- rt_device_t dev,
- rt_off_t pos,
- const void* buffer,
+ rt_device_t dev,
+ rt_off_t pos,
+ const void* buffer,
rt_size_t size)
{
rt_err_t err_code;
@@ -391,7 +391,7 @@ static rt_size_t rt_iic_write (
{
ret = I2C_Transfer(iic->iic_device);
}
-
+
if (ret != i2cTransferDone)
{
err_code = (rt_err_t)ret;
@@ -430,8 +430,8 @@ static rt_size_t rt_iic_write (
* Error code
******************************************************************************/
static rt_err_t rt_iic_control (
- rt_device_t dev,
- rt_uint8_t cmd,
+ rt_device_t dev,
+ rt_uint8_t cmd,
void *args)
{
RT_ASSERT(dev != RT_NULL);
@@ -502,7 +502,7 @@ static rt_err_t rt_iic_control (
iic->rx_buffer->read_index = 0;
iic->rx_buffer->save_index = 0;
}
-
+
/* Enable slave mode */
I2C_SlaveAddressSet(iic->iic_device, iic->address);
I2C_SlaveAddressMaskSet(iic->iic_device, 0xFF);
@@ -511,7 +511,7 @@ static rt_err_t rt_iic_control (
/* Enable interrupts */
I2C_IntEnable(iic->iic_device, I2C_IEN_ADDR | I2C_IEN_RXDATAV | I2C_IEN_SSTOP);
I2C_IntClear(iic->iic_device, _I2C_IFC_MASK);
-
+
/* Enable I2Cn interrupt vector in NVIC */
#ifdef RT_USING_IIC0
if (dev == &iic0.device)
@@ -574,20 +574,20 @@ static void rt_iic_timer(void *timeout)
* Configuration flags
*
* @param[in] iic
- * Pointer to IIC device descriptor
+ * Pointer to IIC device descriptor
*
* @return
* Error code
******************************************************************************/
rt_err_t rt_hw_iic_register(
- rt_device_t device,
- const char *name,
- rt_uint32_t flag,
+ rt_device_t device,
+ const char *name,
+ rt_uint32_t flag,
struct efm32_iic_device_t *iic)
{
RT_ASSERT(device != RT_NULL);
- if ((flag & RT_DEVICE_FLAG_DMA_TX) || (flag & RT_DEVICE_FLAG_DMA_RX) ||
+ if ((flag & RT_DEVICE_FLAG_DMA_TX) || (flag & RT_DEVICE_FLAG_DMA_RX) ||
(flag & RT_DEVICE_FLAG_INT_TX))
{
RT_ASSERT(0);
@@ -635,20 +635,20 @@ static void rt_hw_iic_slave_isr(rt_device_t dev)
if (status & I2C_IF_ADDR)
{
- /* Address Match */
+ /* Address Match */
/* Indicating that reception is started */
temp = iic->iic_device->RXDATA & 0xFFUL;
if ((temp != 0x00) || (iic->state & IIC_STATE_BROADCAST))
{
iic->state |= IIC_STATE_RX_BUSY;
}
- }
+ }
else if (status & I2C_IF_RXDATAV)
{
if (iic->state & IIC_STATE_RX_BUSY)
{
rt_base_t level;
-
+
/* disable interrupt */
level = rt_hw_interrupt_disable();
@@ -687,7 +687,7 @@ static void rt_hw_iic_slave_isr(rt_device_t dev)
/***************************************************************************//**
* @brief
- * Initialize the specified IIC unit
+ * Initialize the specified IIC unit
*
* @details
*
@@ -697,11 +697,11 @@ static void rt_hw_iic_slave_isr(rt_device_t dev)
* Unit number
*
* @param[in] location
- * Pin location number
+ * Pin location number
******************************************************************************/
static struct efm32_iic_device_t *rt_hw_iic_unit_init(
struct efm32_iic_block *block,
- rt_uint8_t unitNumber,
+ rt_uint8_t unitNumber,
rt_uint8_t location)
{
struct efm32_iic_device_t *iic;
@@ -737,7 +737,7 @@ static struct efm32_iic_device_t *rt_hw_iic_unit_init(
{
case 0:
iic->iic_device = I2C0;
- iicClock = (CMU_Clock_TypeDef)cmuClock_I2C0;
+ iicClock = (CMU_Clock_TypeDef)cmuClock_I2C0;
port_scl = AF_I2C0_SCL_PORT(location);
pin_scl = AF_I2C0_SCL_PIN(location);
port_sda = AF_I2C0_SDA_PORT(location);
@@ -747,7 +747,7 @@ static struct efm32_iic_device_t *rt_hw_iic_unit_init(
#if (I2C_COUNT > 1)
case 1:
iic->iic_device = I2C1;
- iicClock = (CMU_Clock_TypeDef)cmuClock_I2C1;
+ iicClock = (CMU_Clock_TypeDef)cmuClock_I2C1;
port_scl = AF_I2C1_SCL_PORT(location);
pin_scl = AF_I2C1_SCL_PIN(location);
port_sda = AF_I2C1_SDA_PORT(location);
@@ -761,7 +761,7 @@ static struct efm32_iic_device_t *rt_hw_iic_unit_init(
rt_sprintf(name, "iic%d", unitNumber);
/* Enabling clock */
- CMU_ClockEnable(iicClock, true);
+ CMU_ClockEnable(iicClock, true);
/* Reset */
I2C_Reset(iic->iic_device);
@@ -803,7 +803,7 @@ static struct efm32_iic_device_t *rt_hw_iic_unit_init(
}
/* Initialize timer */
- rt_timer_init(iic->timer, name, rt_iic_timer, &iic->timeout,
+ rt_timer_init(iic->timer, name, rt_iic_timer, &iic->timeout,
IIC_TIMEOUT_PERIOD, RT_TIMER_FLAG_ONE_SHOT);
return iic;
@@ -813,7 +813,7 @@ static struct efm32_iic_device_t *rt_hw_iic_unit_init(
{
rt_free(iic);
}
-
+
iic_debug("IIC: Unit %d init failed!\n", unitNumber);
return RT_NULL;
}
diff --git a/bsp/efm32/drv_leuart.c b/bsp/efm32/drv_leuart.c
new file mode 100644
index 0000000000..3fda466ad8
--- /dev/null
+++ b/bsp/efm32/drv_leuart.c
@@ -0,0 +1,1077 @@
+/***************************************************************************//**
+ * @file drv_leuart.c
+ * @brief LEUART driver of RT-Thread RTOS for EFM32
+ * COPYRIGHT (C) 2011, RT-Thread Development Team
+ * @author onelife
+ * @version 0.4 beta
+ *******************************************************************************
+ * @section License
+ * The license and distribution terms for this file may be found in the file
+ * LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
+ *******************************************************************************
+ * @section Change Logs
+ * Date Author Notes
+ * 2011-12-09 onelife Initial creation for EFM32
+ ******************************************************************************/
+
+/***************************************************************************//**
+ * @addtogroup efm32
+ * @{
+ ******************************************************************************/
+
+/* Includes ------------------------------------------------------------------*/
+#include "board.h"
+#include "hdl_interrupt.h"
+#include "drv_leuart.h"
+
+#if (defined(RT_USING_LEUART0) || defined(RT_USING_LEUART1))
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+#ifdef RT_LEUART_DEBUG
+#define leuart_debug(format,args...) rt_kprintf(format, ##args)
+#else
+#define leuart_debug(format,args...)
+#endif
+
+/* Private variables ---------------------------------------------------------*/
+#ifdef RT_USING_LEUART0
+#if (RT_USING_LEUART0 >= EFM32_LEUART_LOCATION_COUNT)
+ #error "Wrong location number"
+#endif
+ struct rt_device leuart0_device;
+ static struct rt_semaphore leuart0_lock;
+#endif
+
+#ifdef RT_USING_LEUART1
+#if (RT_USING_LEUART1 >= EFM32_LEUART_LOCATION_COUNT)
+ #error "Wrong location number"
+#endif
+ struct rt_device leuart1_device;
+ static struct rt_semaphore leuart1_lock;
+#endif
+
+/* Private function prototypes -----------------------------------------------*/
+/* Private functions ---------------------------------------------------------*/
+/***************************************************************************//**
+ * @brief
+ * Initialize LEUART device
+ *
+ * @details
+ *
+ * @note
+ *
+ * @param[in] dev
+ * Pointer to device descriptor
+ *
+ * @return
+ * Error code
+ ******************************************************************************/
+static rt_err_t rt_leuart_init (rt_device_t dev)
+{
+ struct efm32_leuart_device_t *leuart;
+
+ leuart = (struct efm32_leuart_device_t *)(dev->user_data);
+
+ if (!(dev->flag & RT_DEVICE_FLAG_ACTIVATED))
+ {
+ if (dev->flag & RT_DEVICE_FLAG_DMA_TX)
+ {
+ struct efm32_leuart_dma_mode_t *dma_tx;
+
+ dma_tx = (struct efm32_leuart_dma_mode_t *)(leuart->tx_mode);
+
+ leuart->state |= LEUART_STATE_RX_BUSY;
+ }
+
+ if (dev->flag & RT_DEVICE_FLAG_INT_RX)
+ {
+ struct efm32_leuart_int_mode_t *int_rx;
+
+ int_rx = (struct efm32_leuart_int_mode_t *)(leuart->rx_mode);
+
+ int_rx->data_ptr = RT_NULL;
+ }
+
+ /* Enable LEUART */
+ LEUART_Enable(leuart->leuart_device, leuartEnable);
+
+ dev->flag |= RT_DEVICE_FLAG_ACTIVATED;
+ }
+
+ return RT_EOK;
+}
+
+/***************************************************************************//**
+ * @brief
+ * Open LEUART device
+ *
+ * @details
+ *
+ * @note
+ *
+ * @param[in] dev
+ * Pointer to device descriptor
+ *
+ * @param[in] oflag
+ * Device open flag
+ *
+ * @return
+ * Error code
+ ******************************************************************************/
+static rt_err_t rt_leuart_open(rt_device_t dev, rt_uint16_t oflag)
+{
+ RT_ASSERT(dev != RT_NULL);
+
+ struct efm32_leuart_device_t *leuart;
+
+ leuart = (struct efm32_leuart_device_t *)(dev->user_data);
+
+ if (dev->flag & RT_DEVICE_FLAG_INT_RX)
+ {
+ IRQn_Type rxIrq;
+
+ //if (leuart->state & LEUART_STATE_CONSOLE)
+ { /* Allocate new RX buffer */
+ struct efm32_leuart_int_mode_t *int_mode;
+
+ int_mode = (struct efm32_leuart_int_mode_t *)(leuart->rx_mode);
+
+ if ((int_mode->data_ptr = rt_malloc(LEUART_RX_BUFFER_SIZE)) == RT_NULL)
+ {
+ leuart_debug("LEUART%d err: no mem for RX BUF\n", leuart->unit);
+ return -RT_ENOMEM;
+ }
+ rt_memset(int_mode->data_ptr, 0, LEUART_RX_BUFFER_SIZE);
+ int_mode->data_size = LEUART_RX_BUFFER_SIZE;
+ int_mode->read_index = 0;
+ int_mode->save_index = 0;
+ }
+
+ /* Enable RX interrupt */
+ leuart->leuart_device->IEN = LEUART_IEN_RXDATAV;
+
+ /* Enable IRQ */
+ switch (leuart->unit)
+ {
+ case 0:
+ rxIrq = LEUART0_IRQn;
+ break;
+ case 1:
+ rxIrq = LEUART1_IRQn;
+ break;
+ }
+ if (oflag != RT_DEVICE_OFLAG_WRONLY)
+ {
+ NVIC_ClearPendingIRQ(rxIrq);
+ NVIC_SetPriority(rxIrq, EFM32_IRQ_PRI_DEFAULT);
+ NVIC_EnableIRQ(rxIrq);
+ }
+ }
+
+ /* Clear Flag */
+ leuart->leuart_device->IFC = _LEUART_IFC_MASK;
+
+ if ((dev->flag & RT_DEVICE_FLAG_DMA_TX) && (oflag != RT_DEVICE_OFLAG_RDONLY))
+ {
+ /* DMA IRQ is enabled by DMA_Init() */
+ NVIC_SetPriority(DMA_IRQn, EFM32_IRQ_PRI_DEFAULT);
+ }
+
+ leuart->counter++;
+ leuart_debug("LEUART%d: Open with flag %x\n", leuart->unit, oflag);
+ return RT_EOK;
+}
+
+/***************************************************************************//**
+ * @brief
+ * Close LEUART device
+ *
+ * @details
+ *
+ * @note
+ *
+ * @param[in] dev
+ * Pointer to device descriptor
+ *
+ * @return
+ * Error code
+ ******************************************************************************/
+static rt_err_t rt_leuart_close(rt_device_t dev)
+{
+ RT_ASSERT(dev != RT_NULL);
+
+ struct efm32_leuart_device_t *leuart;
+
+ leuart = (struct efm32_leuart_device_t *)(dev->user_data);
+
+ if (--leuart->counter == 0)
+ {
+ if (dev->flag & RT_DEVICE_FLAG_INT_RX)
+ {
+ struct efm32_leuart_int_mode_t *int_rx;
+
+ int_rx = (struct efm32_leuart_int_mode_t *)leuart->rx_mode;
+
+ rt_free(int_rx->data_ptr);
+ int_rx->data_ptr = RT_NULL;
+ }
+ }
+
+ return RT_EOK;
+}
+
+/***************************************************************************//**
+ * @brief
+ * Read from LEUART device
+ *
+ * @details
+ *
+ * @note
+ *
+ * @param[in] dev
+ * Pointer to device descriptor
+ *
+ * @param[in] pos
+ * Offset
+ *
+ * @param[in] buffer
+ * Poniter to the buffer
+ *
+ * @param[in] size
+ * Buffer size in byte
+ *
+ * @return
+ * Number of read bytes
+ ******************************************************************************/
+static rt_size_t rt_leuart_read (
+ rt_device_t dev,
+ rt_off_t pos,
+ void *buffer,
+ rt_size_t size)
+{
+ struct efm32_leuart_device_t *leuart;
+ rt_uint8_t *ptr;
+ rt_err_t err_code;
+ rt_size_t read_len;
+
+ leuart = (struct efm32_leuart_device_t *)(dev->user_data);
+
+ /* Lock device */
+ if (rt_hw_interrupt_check())
+ {
+ err_code = rt_sem_take(leuart->lock, RT_WAITING_NO);
+ }
+ else
+ {
+ err_code = rt_sem_take(leuart->lock, RT_WAITING_FOREVER);
+ }
+ if (err_code != RT_EOK)
+ {
+ rt_set_errno(err_code);
+ return 0;
+ }
+
+ if (dev->flag & RT_DEVICE_FLAG_INT_RX)
+ {
+ ptr = buffer;
+
+ /* interrupt mode Rx */
+ while (size)
+ {
+ rt_base_t level;
+ struct efm32_leuart_int_mode_t *int_rx;
+
+ int_rx = (struct efm32_leuart_int_mode_t *)\
+ (((struct efm32_leuart_device_t *)(dev->user_data))->rx_mode);
+
+ /* disable interrupt */
+ level = rt_hw_interrupt_disable();
+
+ if (int_rx->read_index != int_rx->save_index)
+ {
+ /* read a character */
+ *ptr++ = int_rx->data_ptr[int_rx->read_index];
+ size--;
+
+ /* move to next position */
+ int_rx->read_index ++;
+ if (int_rx->read_index >= LEUART_RX_BUFFER_SIZE)
+ {
+ int_rx->read_index = 0;
+ }
+ }
+ else
+ {
+ /* set error code */
+ err_code = -RT_EEMPTY;
+
+ /* enable interrupt */
+ rt_hw_interrupt_enable(level);
+ break;
+ }
+
+ /* enable interrupt */
+ rt_hw_interrupt_enable(level);
+ }
+
+ read_len = (rt_uint32_t)ptr - (rt_uint32_t)buffer;
+ }
+ else
+ {
+ LEUART_TypeDef *leuart_device;
+
+ leuart = (struct efm32_leuart_device_t *)(dev->user_data);
+ leuart_device = ((struct efm32_leuart_device_t *)(dev->user_data))->leuart_device;
+ ptr = buffer;
+
+ /* polling mode */
+ while ((rt_uint32_t)ptr - (rt_uint32_t)buffer < size)
+ {
+ while (leuart_device->STATUS & LEUART_STATUS_RXDATAV)
+ {
+ *ptr = leuart_device->RXDATA & 0xff;
+ ptr ++;
+ }
+ }
+
+ read_len = size;
+ }
+
+ /* Unlock device */
+ rt_sem_release(leuart->lock);
+
+ /* set error code */
+ rt_set_errno(err_code);
+ return read_len;
+}
+
+/***************************************************************************//**
+ * @brief
+ * Write to LEUART device
+ *
+ * @details
+ *
+ * @note
+ *
+ * @param[in] dev
+ * Pointer to device descriptor
+ *
+ * @param[in] pos
+ * Offset
+ *
+ * @param[in] buffer
+ * Poniter to the buffer
+ *
+ * @param[in] size
+ * Buffer size in byte
+ *
+ * @return
+ * Number of written bytes
+ ******************************************************************************/
+static rt_size_t rt_leuart_write (
+ rt_device_t dev,
+ rt_off_t pos,
+ const void* buffer,
+ rt_size_t size)
+{
+ rt_err_t err_code;
+ rt_size_t write_size;
+ struct efm32_leuart_device_t* leuart;
+
+ write_size = 0;
+ leuart = (struct efm32_leuart_device_t*)(dev->user_data);
+
+ /* Lock device */
+ if (rt_hw_interrupt_check())
+ {
+ err_code = rt_sem_take(leuart->lock, RT_WAITING_NO);
+ }
+ else
+ {
+ err_code = rt_sem_take(leuart->lock, RT_WAITING_FOREVER);
+ }
+ if (err_code != RT_EOK)
+ {
+ rt_set_errno(err_code);
+ return 0;
+ }
+
+ if ((dev->flag & RT_DEVICE_FLAG_DMA_TX) && (size > 2))
+ { /* DMA mode Tx */
+ struct efm32_leuart_dma_mode_t *dma_tx;
+
+ if (dev->flag & RT_DEVICE_FLAG_STREAM)
+ {
+ if (*((rt_uint8_t *)buffer + size - 1) == '\n')
+ {
+ *((rt_uint8_t *)buffer + size - 1) = '\r';
+ *((rt_uint8_t *)buffer + size++) = '\n';
+ *((rt_uint8_t *)buffer + size) = 0;
+ }
+ }
+
+ dma_tx = (struct efm32_leuart_dma_mode_t *)(leuart->tx_mode);
+ dma_tx->data_ptr = (rt_uint32_t *)buffer;
+ dma_tx->data_size = size;
+
+ leuart->state |= LEUART_STATE_TX_BUSY;
+
+ DMA_ActivateBasic(
+ dma_tx->dma_channel,
+ true,
+ false,
+ (void *)&(leuart->leuart_device->TXDATA),
+ (void *)buffer,
+ (rt_uint32_t)(size - 1));
+
+ /* Wait, otherwise the TX buffer is overwrite */
+// if (leuart->state & LEUART_STATE_CONSOLE)
+// {
+ while(leuart->state & LEUART_STATE_TX_BUSY);
+// }
+// else
+// {
+// while(leuart->state & LEUART_STATE_TX_BUSY)
+// {
+// rt_thread_sleep(LEUART_WAIT_TIME_TX);
+// }
+// }
+// TODO: This function blocks the process
+ write_size = size;
+ }
+ else
+ { /* polling mode */
+ rt_uint8_t *ptr = (rt_uint8_t *)buffer;
+
+ if (dev->flag & RT_DEVICE_FLAG_STREAM)
+ {
+ /* stream mode */
+ while (size)
+ {
+ if (*ptr == '\n')
+ {
+ while (!(leuart->leuart_device->STATUS & LEUART_STATUS_TXBL));
+ leuart->leuart_device->TXDATA = '\r';
+ }
+
+ while (!(leuart->leuart_device->STATUS & LEUART_STATUS_TXBL));
+ leuart->leuart_device->TXDATA = (rt_uint32_t)*ptr;
+ ++ptr; --size;
+ }
+ }
+ else
+ {
+ /* write data directly */
+ while (size)
+ {
+ while (!(leuart->leuart_device->STATUS & LEUART_STATUS_TXBL));
+ leuart->leuart_device->TXDATA = (rt_uint32_t)*ptr;
+ ++ptr; --size;
+ }
+ }
+
+ write_size = (rt_size_t)ptr - (rt_size_t)buffer;
+ }
+
+ /* Unlock device */
+ rt_sem_release(leuart->lock);
+
+ /* set error code */
+ rt_set_errno(err_code);
+ return write_size;
+}
+
+/***************************************************************************//**
+* @brief
+* Configure LEUART device
+*
+* @details
+*
+* @note
+*
+* @param[in] dev
+* Pointer to device descriptor
+*
+* @param[in] cmd
+* IIC control command
+*
+* @param[in] args
+* Arguments
+*
+* @return
+* Error code
+******************************************************************************/
+static rt_err_t rt_leuart_control (
+ rt_device_t dev,
+ rt_uint8_t cmd,
+ void *args)
+{
+ RT_ASSERT(dev != RT_NULL);
+
+ rt_err_t err_code;
+ struct efm32_leuart_device_t *leuart;
+
+ leuart = (struct efm32_leuart_device_t *)(dev->user_data);
+
+ /* Lock device */
+ if (rt_hw_interrupt_check())
+ {
+ err_code = rt_sem_take(leuart->lock, RT_WAITING_NO);
+ }
+ else
+ {
+ err_code = rt_sem_take(leuart->lock, RT_WAITING_FOREVER);
+ }
+ if (err_code != RT_EOK)
+ {
+ return err_code;
+ }
+
+ switch (cmd)
+ {
+ case RT_DEVICE_CTRL_SUSPEND:
+ /* Suspend device */
+ dev->flag |= RT_DEVICE_FLAG_SUSPENDED;
+ LEUART_Enable(leuart->leuart_device, leuartDisable);
+ break;
+
+ case RT_DEVICE_CTRL_RESUME:
+ /* Resume device */
+ dev->flag &= ~RT_DEVICE_FLAG_SUSPENDED;
+ LEUART_Enable(leuart->leuart_device, leuartEnable);
+ break;
+
+ case RT_DEVICE_CTRL_LEUART_RBUFFER:
+ /* Set RX buffer */
+ {
+ struct efm32_leuart_int_mode_t *int_rx;
+ rt_uint8_t size;
+
+ int_rx = (struct efm32_leuart_int_mode_t *)(leuart->rx_mode);
+ size = (rt_uint8_t)((rt_uint32_t)args & 0xFFUL);
+
+ /* Free previous RX buffer */
+ if (int_rx->data_ptr != RT_NULL)
+ {
+ if (size == 0)
+ { /* Free RX buffer */
+ rt_free(int_rx->data_ptr);
+ int_rx->data_ptr = RT_NULL;
+ }
+ else if (size != int_rx->data_size)
+ {
+ /* Re-allocate RX buffer */
+ if ((int_rx->data_ptr = rt_realloc(int_rx->data_ptr, size)) \
+ == RT_NULL)
+ {
+ leuart_debug("LEUART%d err: no mem for RX BUF\n", leuart->unit);
+ err_code = -RT_ENOMEM;
+ break;
+ }
+ // TODO: Is the following line necessary?
+ //rt_memset(int_rx->data_ptr, 0, size);
+ }
+ }
+ else
+ {
+ /* Allocate new RX buffer */
+ if ((int_rx->data_ptr = rt_malloc(size)) == RT_NULL)
+ {
+ leuart_debug("LEUART%d err: no mem for RX BUF\n", leuart->unit);
+ err_code = -RT_ENOMEM;
+ break;
+ }
+ }
+ int_rx->data_size = size;
+ int_rx->read_index = 0;
+ int_rx->save_index = 0;
+ }
+ break;
+
+ }
+
+ /* Unlock device */
+ rt_sem_release(leuart->lock);
+
+ return err_code;
+}
+
+/***************************************************************************//**
+ * @brief
+ * LEUART RX data valid interrupt handler
+ *
+ * @details
+ *
+ * @note
+ *
+ * @param[in] dev
+ * Pointer to device descriptor
+ ******************************************************************************/
+void rt_hw_leuart_rx_isr(rt_device_t dev)
+{
+ struct efm32_leuart_device_t *leuart;
+ struct efm32_leuart_int_mode_t *int_rx;
+ rt_uint32_t flag;
+
+ /* interrupt mode receive */
+ RT_ASSERT(dev->flag & RT_DEVICE_FLAG_INT_RX);
+
+ leuart = (struct efm32_leuart_device_t *)(dev->user_data);
+ int_rx = (struct efm32_leuart_int_mode_t *)(leuart->rx_mode);
+
+ RT_ASSERT(int_rx->data_ptr != RT_NULL);
+
+ /* Set status */
+ leuart->state |= LEUART_STATE_RX_BUSY;
+
+ /* save into rx buffer */
+ while (leuart->leuart_device->STATUS & LEUART_STATUS_RXDATAV)
+ {
+ rt_base_t level;
+
+ /* disable interrupt */
+ level = rt_hw_interrupt_disable();
+
+ /* save character */
+ int_rx->data_ptr[int_rx->save_index] = \
+ (rt_uint8_t)(leuart->leuart_device->RXDATA & 0xFFUL);
+ int_rx->save_index ++;
+ if (int_rx->save_index >= LEUART_RX_BUFFER_SIZE)
+ int_rx->save_index = 0;
+
+ /* if the next position is read index, discard this 'read char' */
+ if (int_rx->save_index == int_rx->read_index)
+ {
+ int_rx->read_index ++;
+ if (int_rx->read_index >= LEUART_RX_BUFFER_SIZE)
+ {
+ int_rx->read_index = 0;
+ }
+ }
+
+ /* enable interrupt */
+ rt_hw_interrupt_enable(level);
+ }
+
+ /* invoke callback */
+ if (dev->rx_indicate != RT_NULL)
+ {
+ rt_size_t rx_length;
+
+ /* get rx length */
+ rx_length = int_rx->read_index > int_rx->save_index ?
+ LEUART_RX_BUFFER_SIZE - int_rx->read_index + int_rx->save_index : \
+ int_rx->save_index - int_rx->read_index;
+
+ dev->rx_indicate(dev, rx_length);
+ }
+}
+
+/***************************************************************************//**
+ * @brief
+ * DMA for LEUART TX interrupt handler
+ *
+ * @details
+ *
+ * @note
+ *
+ * @param[in] dev
+ * Pointer to device descriptor
+ ******************************************************************************/
+void rt_hw_leuart_dma_tx_isr(rt_device_t dev)
+{
+ /* DMA mode receive */
+ struct efm32_leuart_device_t *leuart;
+ struct efm32_leuart_dma_mode_t *dma_tx;
+
+ RT_ASSERT(dev->flag & RT_DEVICE_FLAG_DMA_TX);
+
+ leuart = (struct efm32_leuart_device_t *)(dev->user_data);
+ dma_tx = (struct efm32_leuart_dma_mode_t *)(leuart->tx_mode);
+
+ /* invoke call to notify tx complete */
+ if (dev->tx_complete != RT_NULL)
+ {
+ dev->tx_complete(dev, dma_tx->data_ptr);
+ }
+
+ /* Set status */
+ leuart->state &= ~(rt_uint32_t)LEUART_STATE_TX_BUSY;
+}
+
+/***************************************************************************//**
+* @brief
+* Register LEUART device
+*
+* @details
+*
+* @note
+*
+* @param[in] device
+* Pointer to device descriptor
+*
+* @param[in] name
+* Device name
+*
+* @param[in] flag
+* Configuration flags
+*
+* @param[in] leuart
+* Pointer to LEUART device descriptor
+*
+* @return
+* Error code
+******************************************************************************/
+rt_err_t rt_hw_leuart_register(
+ rt_device_t device,
+ const char *name,
+ rt_uint32_t flag,
+ struct efm32_leuart_device_t *leuart)
+{
+ RT_ASSERT(device != RT_NULL);
+
+ if ((flag & RT_DEVICE_FLAG_DMA_RX) ||
+ (flag & RT_DEVICE_FLAG_INT_TX))
+ {
+ RT_ASSERT(0);
+ }
+
+ device->type = RT_Device_Class_Char;
+ device->rx_indicate = RT_NULL;
+ device->tx_complete = RT_NULL;
+ device->init = rt_leuart_init;
+ device->open = rt_leuart_open;
+ device->close = rt_leuart_close;
+ device->read = rt_leuart_read;
+ device->write = rt_leuart_write;
+ device->control = rt_leuart_control;
+ device->user_data = leuart;
+
+ /* register a character device */
+ return rt_device_register(device, name, RT_DEVICE_FLAG_RDWR | flag);
+}
+
+/***************************************************************************//**
+* @brief
+* Initialize the specified LEUART unit
+*
+* @details
+*
+* @note
+*
+* @param[in] device
+* Pointer to device descriptor
+*
+* @param[in] unitNumber
+* Unit number
+*
+* @param[in] location
+* Pin location number
+*
+* @param[in] flag
+* Configuration flag
+*
+* @param[in] dmaChannel
+* DMA channel number for TX
+*
+* @param[in] console
+* Indicate if using as console
+*
+* @return
+* Pointer to LEUART device
+******************************************************************************/
+static struct efm32_leuart_device_t *rt_hw_leuart_unit_init(
+ rt_device_t device,
+ rt_uint8_t unitNumber,
+ rt_uint8_t location,
+ rt_uint32_t flag,
+ rt_uint32_t dmaChannel,
+ rt_uint8_t config)
+{
+ struct efm32_leuart_device_t *leuart;
+ struct efm32_leuart_dma_mode_t *dma_mode;
+ DMA_CB_TypeDef *callback;
+ CMU_Clock_TypeDef leuartClock;
+ rt_uint32_t txDmaSelect;
+ GPIO_Port_TypeDef port_tx, port_rx, port_clk, port_cs;
+ rt_uint32_t pin_tx, pin_rx, pin_clk, pin_cs;
+ LEUART_Init_TypeDef init = LEUART_INIT_DEFAULT;
+ efm32_irq_hook_init_t hook;
+
+ do
+ {
+ /* Allocate device */
+ leuart = rt_malloc(sizeof(struct efm32_leuart_device_t));
+ if (leuart == RT_NULL)
+ {
+ leuart_debug("LEUART%d err: no mem\n", unitNumber);
+ break;
+ }
+ leuart->counter = 0;
+ leuart->unit = unitNumber;
+ leuart->state = config;
+ leuart->tx_mode = RT_NULL;
+ leuart->rx_mode = RT_NULL;
+
+ /* Allocate TX */
+ dma_mode = RT_NULL;
+ if (flag & RT_DEVICE_FLAG_DMA_TX)
+ {
+ leuart->tx_mode = dma_mode = rt_malloc(sizeof(struct efm32_leuart_dma_mode_t));
+ if (dma_mode == RT_NULL)
+ {
+ leuart_debug("LEUART%d err: no mem for DMA TX\n", unitNumber);
+ break;
+ }
+ dma_mode->dma_channel = dmaChannel;
+ }
+
+ /* Allocate RX */
+ if (flag & RT_DEVICE_FLAG_INT_RX)
+ {
+ leuart->rx_mode = rt_malloc(sizeof(struct efm32_leuart_int_mode_t));
+ if (leuart->rx_mode == RT_NULL)
+ {
+ leuart_debug("LEUART%d err: no mem for INT RX\n, unitNumber");
+ break;
+ }
+ }
+
+ /* Initialization */
+ if (unitNumber >= LEUART_COUNT)
+ {
+ break;
+ }
+ switch (unitNumber)
+ {
+ case 0:
+ leuart->leuart_device = LEUART0;
+ leuartClock = (CMU_Clock_TypeDef)cmuClock_LEUART0;
+ txDmaSelect = DMAREQ_LEUART0_TXBL;
+ port_tx = AF_LEUART0_TX_PORT(location);
+ pin_tx = AF_LEUART0_TX_PIN(location);
+ port_rx = AF_LEUART0_RX_PORT(location);
+ pin_rx = AF_LEUART0_RX_PIN(location);
+ break;
+
+ case 1:
+ leuart->leuart_device = LEUART1;
+ leuartClock = (CMU_Clock_TypeDef)cmuClock_LEUART1;
+ txDmaSelect = DMAREQ_LEUART1_TXBL;
+ port_tx = AF_LEUART1_TX_PORT(location);
+ pin_tx = AF_LEUART1_TX_PIN(location);
+ port_rx = AF_LEUART1_RX_PORT(location);
+ pin_rx = AF_LEUART1_RX_PIN(location);
+ break;
+
+ default:
+ break;
+ }
+
+ /* Do not prescale clock */
+ CMU_ClockDivSet(leuartClock, cmuClkDiv_1);
+
+ /* Enable LEUART clock */
+ CMU_ClockEnable(leuartClock, true);
+
+ /* Config GPIO */
+ GPIO_PinModeSet(
+ port_tx,
+ pin_tx,
+ gpioModePushPull,
+ 0);
+ GPIO_PinModeSet(
+ port_rx,
+ pin_rx,
+ gpioModeInputPull,
+ 1);
+
+ /* Config interrupt and NVIC */
+ if (flag & RT_DEVICE_FLAG_INT_RX)
+ {
+ hook.type = efm32_irq_type_leuart;
+ hook.unit = unitNumber;
+ hook.cbFunc = rt_hw_leuart_rx_isr;
+ hook.userPtr = device;
+ efm32_irq_hook_register(&hook);
+ }
+
+ /* Config DMA */
+ if (flag & RT_DEVICE_FLAG_DMA_TX)
+ {
+ DMA_CfgChannel_TypeDef chnlCfg;
+ DMA_CfgDescr_TypeDef descrCfg;
+
+ hook.type = efm32_irq_type_dma;
+ hook.unit = dmaChannel;
+ hook.cbFunc = rt_hw_leuart_dma_tx_isr;
+ hook.userPtr = device;
+ efm32_irq_hook_register(&hook);
+
+ callback = (DMA_CB_TypeDef *)rt_malloc(sizeof(DMA_CB_TypeDef));
+ if (callback == RT_NULL)
+ {
+ leuart_debug("LEUART%d err: no mem for callback\n", unitNumber);
+ break;
+ }
+ callback->cbFunc = DMA_IRQHandler_All;
+ callback->userPtr = RT_NULL;
+ callback->primary = 0;
+
+ /* Setting up DMA channel */
+ chnlCfg.highPri = false; /* Can't use with peripherals */
+ chnlCfg.enableInt = true; /* Interrupt for callback function */
+ chnlCfg.select = txDmaSelect;
+ chnlCfg.cb = callback;
+ DMA_CfgChannel(dmaChannel, &chnlCfg);
+
+ /* Setting up DMA channel descriptor */
+ descrCfg.dstInc = dmaDataIncNone;
+ descrCfg.srcInc = dmaDataInc1;
+ descrCfg.size = dmaDataSize1;
+ descrCfg.arbRate = dmaArbitrate1;
+ descrCfg.hprot = 0;
+ DMA_CfgDescr(dmaChannel, true, &descrCfg);
+ }
+
+ /* Init specified LEUART unit */
+ LEUART_Init(leuart->leuart_device, &init);
+
+ /* Enable RX and TX pins and set location */
+ leuart->leuart_device->ROUTE = LEUART_ROUTE_RXPEN | LEUART_ROUTE_TXPEN | \
+ (location << _LEUART_ROUTE_LOCATION_SHIFT);
+
+ /* Clear RX/TX buffers */
+ leuart->leuart_device->CMD = LEUART_CMD_CLEARRX | LEUART_CMD_CLEARTX;
+
+ return leuart;
+ } while(0);
+
+ if (leuart->rx_mode)
+ {
+ rt_free(leuart->rx_mode);
+ }
+ if (leuart->tx_mode)
+ {
+ rt_free(leuart->tx_mode);
+ }
+ if (leuart)
+ {
+ rt_free(leuart);
+ }
+ if (callback)
+ {
+ rt_free(leuart);
+ }
+
+ leuart_debug("LEUART%d err: init failed!\n", unitNumber);
+ return RT_NULL;
+}
+
+/***************************************************************************//**
+* @brief
+* Initialize all LEUART module related hardware and register LEUART device to
+* kernel
+*
+* @details
+*
+* @note
+******************************************************************************/
+void rt_hw_leuart_init(void)
+{
+ struct efm32_leuart_device_t *leuart;
+ rt_uint32_t flag;
+ rt_uint8_t config;
+
+ do
+ {
+#ifdef RT_USING_LEUART0
+ config = 0;
+ flag = RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX;
+
+ #if (RT_CONSOLE_DEVICE == EFM_LEUART0)
+ config |= LEUART_STATE_CONSOLE;
+ flag |= RT_DEVICE_FLAG_STREAM;
+ #endif
+
+ #ifdef RT_LEUART0_USING_DMA
+ RT_ASSERT(RT_LEUART0_USING_DMA < DMA_CHAN_COUNT);
+ flag |= RT_DEVICE_FLAG_DMA_TX;
+ #else
+ #define RT_LEUART0_USING_DMA EFM32_NO_DMA
+ #endif
+
+ /* Initialize and Register leuart0 */
+ if ((leuart = rt_hw_leuart_unit_init(
+ &leuart0_device,
+ 0,
+ RT_USING_LEUART0,
+ flag,
+ RT_LEUART0_USING_DMA,
+ config)) != RT_NULL)
+ {
+ rt_hw_leuart_register(&leuart0_device, RT_LEUART0_NAME, flag, leuart);
+ }
+ else
+ {
+ break;
+ }
+ /* Initialize lock for leuart0 */
+ leuart->lock = &leuart0_lock;
+ if (rt_sem_init(leuart->lock, RT_LEUART0_NAME, 1, RT_IPC_FLAG_FIFO) != RT_EOK)
+ {
+ break;
+ }
+#endif
+
+#ifdef RT_USING_LEUART1
+ config = 0;
+ flag = RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX;
+
+ #if (RT_CONSOLE_DEVICE == EFM_LEUART1)
+ config |= LEUART_STATE_CONSOLE;
+ flag |= RT_DEVICE_FLAG_STREAM;
+ #endif
+
+ #ifdef RT_LEUART1_USING_DMA
+ RT_ASSERT(RT_LEUART1_USING_DMA < DMA_CHAN_COUNT);
+ flag |= RT_DEVICE_FLAG_DMA_TX;
+ #else
+ #define RT_LEUART1_USING_DMA EFM32_NO_DMA
+ #endif
+
+ /* Initialize and Register leuart1 */
+ if ((leuart = rt_hw_leuart_unit_init(
+ &leuart1_device,
+ 1,
+ RT_USING_LEUART1,
+ flag,
+ RT_LEUART1_USING_DMA,
+ config)) != RT_NULL)
+ {
+ rt_hw_leuart_register(&leuart1_device, RT_LEUART1_NAME, flag, leuart);
+ }
+ else
+ {
+ break;
+ }
+ /* Initialize lock for leuart1 */
+ leuart->lock = &leuart1_lock;
+ if (rt_sem_init(leuart->lock, RT_LEUART1_NAME, 1, RT_IPC_FLAG_FIFO) != RT_EOK)
+ {
+ break;
+ }
+#endif
+
+ leuart_debug("LEUART: H/W init OK!\n");
+ return;
+ } while (0);
+
+ rt_kprintf("LEUART: H/W init failed!\n");
+}
+
+#endif /* (defined(RT_USING_LEUART0) || defined(RT_USING_LEUART1)) */
+/***************************************************************************//**
+ * @}
+ ******************************************************************************/
diff --git a/bsp/efm32/drv_leuart.h b/bsp/efm32/drv_leuart.h
new file mode 100644
index 0000000000..9d2b6d52aa
--- /dev/null
+++ b/bsp/efm32/drv_leuart.h
@@ -0,0 +1,72 @@
+/***************************************************************************//**
+ * @file drv_leuart.h
+ * @brief LEUART driver of RT-Thread RTOS for EFM32
+ * COPYRIGHT (C) 2011, RT-Thread Development Team
+ * @author onelife
+ * @version 0.4 beta
+ *******************************************************************************
+ * @section License
+ * The license and distribution terms for this file may be found in the file
+ * LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
+ *******************************************************************************
+ * @section Change Logs
+ * Date Author Notes
+ * 2011-12-09 onelife Initial creation for EFM32
+ ******************************************************************************/
+#ifndef __DRV_LEUSART_H__
+#define __DRV_LEUSART_H__
+
+/* Includes ------------------------------------------------------------------*/
+/* Exported types ------------------------------------------------------------*/
+struct efm32_leuart_int_mode_t
+{
+ rt_uint8_t *data_ptr;
+ rt_uint8_t data_size;
+ rt_uint32_t read_index, save_index;
+};
+
+struct efm32_leuart_dma_mode_t
+{
+ /* DMA Channel */
+ rt_uint32_t dma_channel;
+
+ /* buffer info */
+ rt_uint32_t *data_ptr;
+ rt_uint8_t data_size;
+};
+
+struct efm32_leuart_device_t
+{
+ /* Counter */
+ rt_uint32_t counter;
+ /* Lock */
+ struct rt_semaphore *lock;
+ /* Unit number */
+ rt_uint8_t unit;
+ /* State */
+ volatile rt_uint8_t state;
+ /* Pointer to LEUART device structure */
+ LEUART_TypeDef *leuart_device;
+ /* Pointer to RX structure */
+ void *rx_mode;
+ /* Pointer to TX structure */
+ void *tx_mode;
+};
+
+/* Exported constants --------------------------------------------------------*/
+/* Exported macro ------------------------------------------------------------*/
+#define LEUART_WAIT_TIME_TX (RT_TICK_PER_SECOND / 100 * 3)
+
+#define LEUART_STATE_CONSOLE (1 << 0)
+#define LEUART_STATE_SYNC (1 << 1)
+#define LEUART_STATE_MASTER (1 << 2)
+#define LEUART_STATE_AUTOCS (1 << 3)
+#define LEUART_STATE_TX_BUSY (1 << 4)
+#define LEUART_STATE_RX_BUSY (1 << 5)
+
+
+/* Exported functions ------------------------------------------------------- */
+void rt_hw_leuart_init(void);
+
+#endif /* __DRV_LEUSART_H__ */
+
diff --git a/bsp/efm32/drv_rtc.c b/bsp/efm32/drv_rtc.c
index 6bbfef1cf7..86499a9751 100644
--- a/bsp/efm32/drv_rtc.c
+++ b/bsp/efm32/drv_rtc.c
@@ -1,49 +1,49 @@
-/******************************************************************//**
- * @file drv_rtc.c
- * @brief RTC driver of RT-Thread RTOS for EFM32
+/***************************************************************************//**
+ * @file drv_rtc.c
+ * @brief RTC driver of RT-Thread RTOS for EFM32
* COPYRIGHT (C) 2011, RT-Thread Development Team
- * @author Bernard, onelife
- * @version 0.4 beta
- **********************************************************************
+ * @author Bernard, onelife
+ * @version 0.4 beta
+ *******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file LICENSE in this
- * distribution or at http://www.rt-thread.org/license/LICENSE
- **********************************************************************
+ * The license and distribution terms for this file may be found in the file
+ * LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
+ *******************************************************************************
* @section Change Logs
* Date Author Notes
- * 2009-01-05 Bernard the first version
- * 2010-12-27 onelife Modify for EFM32
- * 2011-06-16 onelife Modify init function for efm32lib v2 upgrading
- *********************************************************************/
-
-/******************************************************************//**
+ * 2009-01-05 Bernard the first version
+ * 2010-12-27 onelife Modify for EFM32
+ * 2011-06-16 onelife Modify init function for efm32lib v2 upgrading
+ * 2011-12-14 onelife Move LFXO enabling routine to driver initialization
+ * function (board.c)
+ ******************************************************************************/
+
+/***************************************************************************//**
* @addtogroup efm32
* @{
-*********************************************************************/
+ ******************************************************************************/
-/* Includes -------------------------------------------------------------------*/
+/* Includes ------------------------------------------------------------------*/
#include "board.h"
#include "hdl_interrupt.h"
#include "drv_rtc.h"
#if defined(RT_USING_RTC)
-/* Private typedef -------------------------------------------------------------*/
-/* Private define --------------------------------------------------------------*/
-/* Private macro --------------------------------------------------------------*/
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
#ifdef RT_RTC_DEBUG
#define rtc_debug(format,args...) rt_kprintf(format, ##args)
#else
#define rtc_debug(format,args...)
#endif
-/* Private variables ------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
static struct rt_device rtc;
static rt_uint32_t rtc_time;
-/* Private function prototypes ---------------------------------------------------*/
-static void startLfxoForRtc(void);
-
-/* Private functions ------------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+/* Private functions ---------------------------------------------------------*/
static rt_err_t rt_rtc_open(rt_device_t dev, rt_uint16_t oflag)
{
if (dev->rx_indicate != RT_NULL)
@@ -55,34 +55,34 @@ static rt_err_t rt_rtc_open(rt_device_t dev, rt_uint16_t oflag)
}
static rt_size_t rt_rtc_read(
- rt_device_t dev,
- rt_off_t pos,
- void* buffer,
+ rt_device_t dev,
+ rt_off_t pos,
+ void* buffer,
rt_size_t size)
{
return 0;
}
-/******************************************************************//**
-* @brief
-* Configure RTC device
-*
-* @details
-*
-* @note
-*
-* @param[in] dev
-* Pointer to device descriptor
-*
-* @param[in] cmd
-* RTC control command
-*
-* @param[in] args
-* Arguments
-*
-* @return
-* Error code
-*********************************************************************/
+/***************************************************************************//**
+ * @brief
+ * Configure RTC device
+ *
+ * @details
+ *
+ * @note
+ *
+ * @param[in] dev
+ * Pointer to device descriptor
+ *
+ * @param[in] cmd
+ * RTC control command
+ *
+ * @param[in] args
+ * Arguments
+ *
+ * @return
+ * Error code
+ ******************************************************************************/
static rt_err_t rt_rtc_control(rt_device_t dev, rt_uint8_t cmd, void *args)
{
RT_ASSERT(dev != RT_NULL);
@@ -108,14 +108,14 @@ static rt_err_t rt_rtc_control(rt_device_t dev, rt_uint8_t cmd, void *args)
return RT_EOK;
}
-/******************************************************************//**
+/***************************************************************************//**
* @brief
- * RTC counter overflow interrupt handler
+ * RTC counter overflow interrupt handler
*
* @details
*
* @note
- *********************************************************************/
+ ******************************************************************************/
void rt_hw_rtc_isr(rt_device_t device)
{
if (RTC->IF & RTC_IFC_OF)
@@ -126,29 +126,29 @@ void rt_hw_rtc_isr(rt_device_t device)
RTC->IFC = _RTC_IFC_MASK;
}
-/******************************************************************//**
-* @brief
-* Register RTC device
-*
-* @details
-*
-* @note
-*
-* @param[in] device
-* Pointer to device descriptor
-*
-* @param[in] name
-* Device name
-*
-* @param[in] flag
-* Configuration flags
-*
-* @return
-* Error code
-*********************************************************************/
+/***************************************************************************//**
+ * @brief
+ * Register RTC device
+ *
+ * @details
+ *
+ * @note
+ *
+ * @param[in] device
+ * Pointer to device descriptor
+ *
+ * @param[in] name
+ * Device name
+ *
+ * @param[in] flag
+ * Configuration flags
+ *
+ * @return
+ * Error code
+ ******************************************************************************/
rt_err_t rt_hw_rtc_register(
- rt_device_t device,
- const char *name,
+ rt_device_t device,
+ const char *name,
rt_uint32_t flag)
{
RT_ASSERT(device != RT_NULL);
@@ -169,18 +169,18 @@ rt_err_t rt_hw_rtc_register(
}
-/******************************************************************//**
-* @brief
-* Initialize all RTC module related hardware and register RTC device to kernel
-*
-* @details
-*
-* @note
-*********************************************************************/
+/***************************************************************************//**
+ * @brief
+ * Initialize all RTC module related hardware and register RTC device to kernel
+ *
+ * @details
+ *
+ * @note
+ ******************************************************************************/
void rt_hw_rtc_init(void)
{
rt_uint32_t reset;
-
+
reset = RMU_ResetCauseGet();
// TODO: What is the current reset mode?
@@ -198,9 +198,10 @@ void rt_hw_rtc_init(void)
rt_kprintf("rtc is not configured\n");
rt_kprintf("please configure with set_date and set_time\n");
- /* Configuring clocks in the Clock Management Unit (CMU) */
- startLfxoForRtc();
-
+ /* Configuring clock */
+ CMU_ClockDivSet(cmuClock_RTC,cmuClkDiv_32768);
+ CMU_ClockEnable(cmuClock_RTC, true);
+
/* Initialize and enable RTC */
RTC_Reset();
RTC_Init(&rtcInit);
@@ -224,29 +225,9 @@ void rt_hw_rtc_init(void)
rt_hw_rtc_register(&rtc, RT_RTC_NAME, EFM32_NO_DATA);
}
-/******************************************************************//**
-* @brief
-* Start LFXO for RTC
-*
-* @details
-* Starts the LFXO and routes it to the RTC. RTC clock is prescaled to save energy.
-*
-* @note
-*********************************************************************/
-static void startLfxoForRtc(void)
-{
- /* Starting LFXO and waiting until it is stable */
- CMU_OscillatorEnable(cmuOsc_LFXO, true, true);
-
- /* Routing the LFXO clock to the RTC */
- CMU_ClockDivSet(cmuClock_RTC,cmuClkDiv_32768);
- CMU_ClockSelectSet(cmuClock_LFA,cmuSelect_LFXO);
- CMU_ClockEnable(cmuClock_RTC, true);
-}
-
-/*********************************************************************
-* Export to FINSH
-*********************************************************************/
+/***************************************************************************//**
+ * Export to FINSH
+ ******************************************************************************/
#ifdef RT_USING_FINSH
#include
#include
@@ -343,6 +324,6 @@ FINSH_FUNCTION_EXPORT(list_date, show date and time.)
#endif
-/******************************************************************//**
+/***************************************************************************//**
* @}
-*********************************************************************/
+ ******************************************************************************/
diff --git a/bsp/efm32/drv_rtc.h b/bsp/efm32/drv_rtc.h
index ef19c4ec6b..2be8074ddf 100644
--- a/bsp/efm32/drv_rtc.h
+++ b/bsp/efm32/drv_rtc.h
@@ -1,27 +1,27 @@
-/******************************************************************//**
- * @file drv_rtc.h
- * @brief RTC driver of RT-Thread RTOS for EFM32
+ /***************************************************************************//**
+ * @file drv_rtc.h
+ * @brief RTC driver of RT-Thread RTOS for EFM32
* COPYRIGHT (C) 2011, RT-Thread Development Team
- * @author Bernard, onelife
- * @version 0.4 beta
- **********************************************************************
+ * @author Bernard, onelife
+ * @version 0.4 beta
+ *******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file LICENSE in this
- * distribution or at http://www.rt-thread.org/license/LICENSE
- **********************************************************************
+ * The license and distribution terms for this file may be found in the file
+ * LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
+ *******************************************************************************
* @section Change Logs
* Date Author Notes
- * 2009-01-05 Bernard the first version
- * 2010-12-27 onelife Modification for EFM32
+ * 2009-01-05 Bernard the first version
+ * 2010-12-27 onelife Modification for EFM32
*********************************************************************/
#ifndef __DRV_RTC_H__
#define __DRV_RTC_H__
-/* Includes -------------------------------------------------------------------*/
-/* Exported types -------------------------------------------------------------*/
-/* Exported constants ---------------------------------------------------------*/
-/* Exported macro -------------------------------------------------------------*/
-/* Exported functions --------------------------------------------------------- */
+/* Includes ------------------------------------------------------------------*/
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+/* Exported macro ------------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
void rt_hw_rtc_init(void);
-#endif /* __DRV_RTC_H__ */
\ No newline at end of file
+#endif /* __DRV_RTC_H__ */
diff --git a/bsp/efm32/drv_sdcard.c b/bsp/efm32/drv_sdcard.c
index 993ca30876..e7cadf5603 100644
--- a/bsp/efm32/drv_sdcard.c
+++ b/bsp/efm32/drv_sdcard.c
@@ -1,19 +1,22 @@
/***************************************************************************//**
* @file drv_sdcard.c
- * @brief Memory card driver (SPI mode) of RT-Thread RTOS for using EFM32
+ * @brief Memory card driver (SPI mode) of RT-Thread RTOS for using EFM32
* USART module
* COPYRIGHT (C) 2011, RT-Thread Development Team
* @author onelife
* @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
* @section Change Logs
* Date Author Notes
* 2011-05-13 onelife Initial creation for using EFM32 USART module
* 2011-07-07 onelife Modify initialization function to return error code
+ * 2011-12-08 onelife Add giant gecko development kit support
+ * 2011-12-15 onelife Move MicroSD enabling routine to driver
+ * initialization function (board.c)
******************************************************************************/
/***************************************************************************//**
@@ -46,7 +49,7 @@ static rt_device_t spi = RT_NULL;
static rt_uint16_t sdType;
static rt_bool_t sdAutoCs = true;
static rt_timer_t sdTimer = RT_NULL;
-static rt_bool_t sdInTime = true;
+static volatile rt_bool_t sdInTime = true;
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
@@ -94,14 +97,14 @@ static void efm_spiSd_cs(rt_uint8_t enable)
/***************************************************************************//**
* @brief
- * Set operation speed level
+ * Set operation speed level
*
* @details
*
* @note
*
* @param[in] level
- * Set SD speed level
+ * Set SD speed level
******************************************************************************/
static void efm_spiSd_speed(rt_uint8_t level)
{
@@ -109,7 +112,7 @@ static void efm_spiSd_speed(rt_uint8_t level)
struct efm32_usart_device_t *usart;
rt_uint32_t baudrate;
-
+
usart = (struct efm32_usart_device_t *)(spi->user_data);
if (level == SD_SPEED_HIGH)
{
@@ -180,8 +183,8 @@ static rt_size_t efm_spiSd_read(void *buffer, rt_size_t size)
* Command response
******************************************************************************/
static rt_uint16_t efm_spiSd_cmd(
- rt_uint8_t cmd,
- rt_uint32_t arg,
+ rt_uint8_t cmd,
+ rt_uint32_t arg,
rt_uint8_t *trail)
{
RT_ASSERT(spi != RT_NULL);
@@ -192,7 +195,7 @@ static rt_uint16_t efm_spiSd_cmd(
rt_uint16_t ret;
rt_bool_t skip;
- ret = 0xffff;
+ ret = 0xffff;
rt_memset(buf_res, 0xff, sizeof(buf_res));
sdcard_debug("SPISD: Send command %d(%x)\n", cmd, arg);
@@ -251,7 +254,7 @@ static rt_uint16_t efm_spiSd_cmd(
{
sdcard_debug("SPISD: Send command failed!\n");
break;
- }
+ }
efm_spiSd_cs(0);
/* Skip a stuff byte when stop reading */
@@ -261,9 +264,9 @@ static rt_uint16_t efm_spiSd_cmd(
}
else
{
- skip = false;
+ skip = false;
}
- /* Find valid response: The response is sent back within command response time
+ /* Find valid response: The response is sent back within command response time
(NCR), 0 to 8 bytes for SDC, 1 to 8 bytes for MMC */
for (i = 0; i < sizeof(buf_res); i++)
{
@@ -324,7 +327,7 @@ static rt_uint16_t efm_spiSd_cmd(
/***************************************************************************//**
* @brief
- * Read a block of data from memory device. This function is used to handle
+ * Read a block of data from memory device. This function is used to handle
* the responses of specified commands (e.g. ACMD13, CMD17 and CMD18)
*
* @details
@@ -345,7 +348,7 @@ static rt_err_t efm_spiSd_readBlock(void *buffer, rt_size_t size)
RT_ASSERT(spi != RT_NULL);
rt_uint8_t buf_ins[5];
- rt_uint8_t buf_res[8]; /* Expect 2 bytes for CRC */
+ rt_uint8_t buf_res[8]; /* Expect 2 bytes for CRC */
rt_uint8_t i, len_copy;
rt_bool_t start;
@@ -356,7 +359,7 @@ static rt_err_t efm_spiSd_readBlock(void *buffer, rt_size_t size)
buf_ins[0] = 0; /* Instruction length */
*(rt_uint8_t **)(&buf_ins[1]) = buf_res; /* Pointer to RX buffer */
- while(1)
+ while(1)
{
/* Send read command */
efm_spiSd_cs(1);
@@ -393,7 +396,7 @@ static rt_err_t efm_spiSd_readBlock(void *buffer, rt_size_t size)
rt_memcpy(buffer, &buf_res[i + 1], len_copy);
sdcard_debug("SPISD: Read block start at %d, copy %d bytes\n", i, \
len_copy);
-
+
/* Build instruction buffer */
buf_ins[0] = 0; /* Instruction length */
*(rt_uint8_t **)(&buf_ins[1]) = (rt_uint8_t *)buffer + len_copy; /* Pointer to RX buffer */
@@ -423,8 +426,8 @@ static rt_err_t efm_spiSd_readBlock(void *buffer, rt_size_t size)
/***************************************************************************//**
* @brief
- * Write a block of data to memory device. This function is used to send data
- * and control tokens for block write commands (e.g. CMD24 and CMD25)
+ * Write a block of data to memory device. This function is used to send data
+ * and control tokens for block write commands (e.g. CMD24 and CMD25)
*
* @details
*
@@ -562,8 +565,8 @@ static rt_err_t efm_spiSd_writeBlock(void *buffer, rt_uint8_t token)
* Command response
******************************************************************************/
rt_uint16_t efm_spiSd_sendCmd(
- rt_uint8_t cmd,
- rt_uint32_t arg,
+ rt_uint8_t cmd,
+ rt_uint32_t arg,
rt_uint8_t *trail)
{
rt_uint16_t ret;
@@ -573,7 +576,7 @@ rt_uint16_t efm_spiSd_sendCmd(
{
cmd &= 0x7f;
ret = efm_spiSd_cmd(CMD55, 0x00000000, EFM32_NO_POINTER);
- if (ret > 0x01)
+ if (ret > 0x01)
{
return ret;
}
@@ -610,10 +613,10 @@ static rt_err_t rt_spiSd_init(rt_device_t dev)
{
/* Create and setup timer */
if ((sdTimer = rt_timer_create(
- "sdTimer",
+ "sd_tmr",
efm_spiSd_timer,
RT_NULL,
- SD_WAIT_PERIOD,
+ SD_WAIT_PERIOD,
RT_TIMER_FLAG_ONE_SHOT)) == RT_NULL)
{
sdcard_debug("SPISD: Create timer failed!\n");
@@ -627,7 +630,7 @@ static rt_err_t rt_spiSd_init(rt_device_t dev)
}
/* Switch to low speed */
- efm_spiSd_speed(SD_SPEED_LOW);
+ efm_spiSd_speed(SD_SPEED_LOW);
/* 80 dummy clocks */
efm_spiSd_read(RT_NULL, 80);
@@ -640,7 +643,7 @@ static rt_err_t rt_spiSd_init(rt_device_t dev)
if (efm_spiSd_sendCmd(CMD8, 0x000001AA, tril) == 0x01)
{
/* SDv2, Vdd: 2.7-3.6V */
- if (tril[2] == 0x01 && tril[3] == 0xAA)
+ if (tril[2] == 0x01 && tril[3] == 0xAA)
{
/* Initialize timer */
sdInTime = true;
@@ -662,7 +665,7 @@ static rt_err_t rt_spiSd_init(rt_device_t dev)
{
/* SDv1 */
type = CT_SD1;
- cmd = ACMD41;
+ cmd = ACMD41;
}
else
{
@@ -689,7 +692,7 @@ static rt_err_t rt_spiSd_init(rt_device_t dev)
/* Check type */
sdType = type;
- if (sdType)
+ if (sdType)
{
/* Initialization succeded */
efm_spiSd_speed(SD_SPEED_HIGH);
@@ -728,7 +731,7 @@ static rt_err_t rt_spiSd_init(rt_device_t dev)
if (buf_res)
{
rt_free(buf_res);
- }
+ }
efm_spiSd_deinit();
rt_kprintf("SPISD: Init failed!\n");
return -RT_ERROR;
@@ -801,7 +804,7 @@ static rt_err_t rt_spiSd_close(rt_device_t dev)
* Number of read sectors
******************************************************************************/
static rt_size_t rt_spiSd_read(
- rt_device_t dev,
+ rt_device_t dev,
rt_off_t sector,
void *buffer,
rt_size_t count)
@@ -841,7 +844,7 @@ static rt_size_t rt_spiSd_read(
sdcard_debug("SPISD: Read command error!\n");
break;
}
-
+
/* Read data */
do
{
@@ -891,7 +894,7 @@ static rt_size_t rt_spiSd_read(
* Number of written sectors
******************************************************************************/
static rt_size_t rt_spiSd_write (
- rt_device_t dev,
+ rt_device_t dev,
rt_off_t sector,
const void *buffer,
rt_size_t count)
@@ -926,7 +929,7 @@ static rt_size_t rt_spiSd_write (
cmd = CMD25;
token = 0xfc;
sdcard_debug("SPISD: Write multiple blocks\n");
- if (sdType & CT_SDC)
+ if (sdType & CT_SDC)
{
if (efm_spiSd_sendCmd(ACMD23, count, EFM32_NO_POINTER))
{
@@ -984,15 +987,15 @@ static rt_size_t rt_spiSd_write (
* Error code
******************************************************************************/
static rt_err_t rt_spiSd_control (
- rt_device_t dev,
- rt_uint8_t ctrl,
+ rt_device_t dev,
+ rt_uint8_t ctrl,
void *buffer)
{
rt_err_t ret;
rt_uint32_t c_size;
rt_uint8_t n;
rt_uint8_t *buf_res;
-
+
ret = -RT_ERROR;
buf_res = RT_NULL;
switch (ctrl)
@@ -1020,7 +1023,7 @@ static rt_err_t rt_spiSd_control (
}
if ((buf_res[0] >> 6) == 0x01)
- {
+ {
/* SDv2 */
/* C_SIZE: Bit 48~69 */
c_size = ((rt_uint32_t)(buf_res[7] & 0x3f) << 16) + \
@@ -1175,7 +1178,7 @@ static rt_err_t rt_spiSd_control (
/***************************************************************************//**
* @brief
-* Initialize all memory card related hardware and register the device to
+* Initialize all memory card related hardware and register the device to
* kernel
*
* @details
@@ -1189,18 +1192,13 @@ rt_err_t efm_spiSd_init(void)
{
struct efm32_usart_device_t *usart;
-#if defined(EFM32_G290_DK)
- /* Enable SPI access to MicroSD card */
- DVK_writeRegister(BC_SPI_CFG, 1);
-#endif
-
do
{
/* Find SPI device */
spi = rt_device_find(SPISD_USING_DEVICE_NAME);
if (spi == RT_NULL)
{
- sdcard_debug("SPISD: Can't find device %s!\n",
+ sdcard_debug("SPISD: Can't find device %s!\n",
SPISD_USING_DEVICE_NAME);
break;
}
@@ -1223,8 +1221,8 @@ rt_err_t efm_spiSd_init(void)
sd_device.control = rt_spiSd_control;
sd_device.user_data = RT_NULL;
rt_device_register(
- &sd_device,
- SPISD_DEVICE_NAME,
+ &sd_device,
+ SPISD_DEVICE_NAME,
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_REMOVABLE | RT_DEVICE_FLAG_STANDALONE);
sdcard_debug("SPISD: HW init OK, card type %x\n", sdType);
diff --git a/bsp/efm32/drv_sdcard.h b/bsp/efm32/drv_sdcard.h
index c3fdc72933..a5072601e0 100644
--- a/bsp/efm32/drv_sdcard.h
+++ b/bsp/efm32/drv_sdcard.h
@@ -1,13 +1,13 @@
/***************************************************************************//**
* @file drv_sdcard.h
- * @brief Memory card driver (SPI mode) of RT-Thread RTOS for using EFM32
+ * @brief Memory card driver (SPI mode) of RT-Thread RTOS for using EFM32
* USART module
* COPYRIGHT (C) 2011, RT-Thread Development Team
* @author onelife
* @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
* @section Change Logs
@@ -22,8 +22,16 @@
/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
-#define EFM32_SDCLK_LOW (100000)
-#define EFM32_SDCLK_HIGH (EFM32_HFXO_FREQUENCY/2)
+#define EFM32_SDCLK_LOW (100000)
+#if defined(EFM32_GXXX_DK)
+#define EFM32_SDCLK_HIGH (16000000)
+#elif defined(EFM32GG_DK3750)
+#define EFM32_SDCLK_HIGH (19000000)
+#endif
+
+#if (EFM32_SDCLK_HIGH > (EFM32_HFXO_FREQUENCY/2))
+#error "EFM32 SPI clock should not be more than (EFM32_HFXO_FREQUENCY/2)"
+#endif
#define SD_SPEED_LOW (0)
#define SD_SPEED_HIGH (1)
diff --git a/bsp/efm32/drv_usart.c b/bsp/efm32/drv_usart.c
index c04ee754c6..b08e341865 100644
--- a/bsp/efm32/drv_usart.c
+++ b/bsp/efm32/drv_usart.c
@@ -6,28 +6,31 @@
* @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
+ * @section Change Logs of serial.c
+ * Date Author Notes
+ * 2009-02-05 Bernard first version
+ * 2009-10-25 Bernard fix rt_serial_read bug when there is no data in the
+ * buffer.
+ * 2010-03-29 Bernard cleanup code.
+ *
* @section Change Logs
* Date Author Notes
* 2010-12-22 onelife Initial creation for EFM32
* 2011-01-17 onelife Merge with serial.c
* 2011-05-06 onelife Add sync mode (SPI) support
* 2011-06-14 onelife Fix a bug of TX by DMA
- * 2011-06-16 onelife Modify init function for EFM32 library v2.0.0
+ * 2011-06-16 onelife Modify init function for EFM32 library v2.0.0
* upgrading
* 2011-07-07 onelife Modify write function to avoid sleep in ISR
- * 2011-07-26 onelife Add lock (semaphore) to prevent simultaneously
+ * 2011-07-26 onelife Add lock (semaphore) to prevent simultaneously
* access
- * 2011-11-29 onelife Modify init function for EFM32 library v2.2.2
+ * 2011-11-29 onelife Modify init function for EFM32 library v2.2.2
* upgrading
- *
- * @section Change Logs of serial.c
- * 2009-02-05 Bernard first version
- * 2009-10-25 Bernard fix rt_serial_read bug when there is no data in the
- * buffer.
- * 2010-03-29 Bernard cleanup code.
+ * 2011-12-09 onelife Add giant gecko support
+ * 2011-12-09 onelife Add UART module support
******************************************************************************/
/***************************************************************************//**
@@ -40,14 +43,10 @@
#include "hdl_interrupt.h"
#include "drv_usart.h"
-#if (defined(RT_USING_USART0) || defined(RT_USING_USART1) || defined(RT_USING_USART2))
+#if (defined(RT_USING_USART0) || defined(RT_USING_USART1) || \
+ defined(RT_USING_USART2) || defined(RT_USING_UART0) || \
+ defined(RT_USING_UART1))
/* Private typedef -----------------------------------------------------------*/
-union efm32_usart_init_t
-{
- USART_InitAsync_TypeDef async;
- USART_InitSync_TypeDef sync;
-};
-
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
#ifdef RT_USART_DEBUG
@@ -58,29 +57,46 @@ union efm32_usart_init_t
/* Private variables ---------------------------------------------------------*/
#ifdef RT_USING_USART0
-#if (RT_USING_USART0 > 3)
- #error "The location number range of usart is 0~3"
+#if (RT_USING_USART0 >= EFM32_USART_LOCATION_COUNT)
+ #error "Wrong location number"
#endif
struct rt_device usart0_device;
static struct rt_semaphore usart0_lock;
#endif
#ifdef RT_USING_USART1
-#if (RT_USING_USART1 > 3)
- #error "The location number range of usart is 0~3"
+#if (RT_USING_USART1 >= EFM32_USART_LOCATION_COUNT)
+ #error "Wrong location number"
#endif
struct rt_device usart1_device;
static struct rt_semaphore usart1_lock;
#endif
#ifdef RT_USING_USART2
-#if (RT_USING_USART2 > 3)
- #error "The location number range of usart is 0~3"
+#if (RT_USING_USART2 >= EFM32_USART_LOCATION_COUNT)
+ #error "Wrong location number"
#endif
struct rt_device usart2_device;
static struct rt_semaphore usart2_lock;
#endif
+#ifdef RT_USING_UART0
+#if (RT_USING_UART0 >= EFM32_UART_LOCATION_COUNT)
+ #error "Wrong location number"
+#endif
+ struct rt_device uart0_device;
+ static struct rt_semaphore uart0_lock;
+#endif
+
+#ifdef RT_USING_UART1
+#if (RT_USING_UART1 >= EFM32_UART_LOCATION_COUNT)
+ #error "Wrong location number"
+#endif
+ struct rt_device uart1_device;
+ static struct rt_semaphore uart1_lock;
+#endif
+
+
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/***************************************************************************//**
@@ -100,7 +116,7 @@ union efm32_usart_init_t
static rt_err_t rt_usart_init (rt_device_t dev)
{
struct efm32_usart_device_t *usart;
-
+
usart = (struct efm32_usart_device_t *)(dev->user_data);
if (!(dev->flag & RT_DEVICE_FLAG_ACTIVATED))
@@ -117,9 +133,9 @@ static rt_err_t rt_usart_init (rt_device_t dev)
if (dev->flag & RT_DEVICE_FLAG_INT_RX)
{
struct efm32_usart_int_mode_t *int_rx;
-
+
int_rx = (struct efm32_usart_int_mode_t *)(usart->rx_mode);
-
+
int_rx->data_ptr = RT_NULL;
}
@@ -156,20 +172,20 @@ static rt_err_t rt_usart_open(rt_device_t dev, rt_uint16_t oflag)
struct efm32_usart_device_t *usart;
usart = (struct efm32_usart_device_t *)(dev->user_data);
-
+
if (dev->flag & RT_DEVICE_FLAG_INT_RX)
{
IRQn_Type rxIrq;
-
+
//if (usart->state & USART_STATE_CONSOLE)
{ /* Allocate new RX buffer */
struct efm32_usart_int_mode_t *int_mode;
-
+
int_mode = (struct efm32_usart_int_mode_t *)(usart->rx_mode);
if ((int_mode->data_ptr = rt_malloc(USART_RX_BUFFER_SIZE)) == RT_NULL)
{
- usart_debug("USART: no memory for RX buffer\n");
+ usart_debug("USART%d err: no mem for RX BUF\n", usart->unit);
return -RT_ENOMEM;
}
rt_memset(int_mode->data_ptr, 0, USART_RX_BUFFER_SIZE);
@@ -177,25 +193,46 @@ static rt_err_t rt_usart_open(rt_device_t dev, rt_uint16_t oflag)
int_mode->read_index = 0;
int_mode->save_index = 0;
}
-
- /* Enable TX/RX interrupt */
+
+ /* Enable RX interrupt */
+ if (usart->state & USART_STATE_ASYNC_ONLY)
+ {
+ usart->usart_device->IEN = UART_IEN_RXDATAV;
+ }
+ else
+ {
+ usart->usart_device->IEN = USART_IEN_RXDATAV;
+ }
+
+ /* Enable IRQ */
switch (usart->unit)
{
case 0:
- rxIrq = USART0_RX_IRQn;
+ if (usart->state & USART_STATE_ASYNC_ONLY)
+ {
+ rxIrq = UART0_RX_IRQn;
+ }
+ else
+ {
+ rxIrq = USART0_RX_IRQn;
+ }
break;
case 1:
- rxIrq = USART1_RX_IRQn;
+#if defined(EFM32_GIANT_FAMILY)
+ if (usart->state & USART_STATE_ASYNC_ONLY)
+ {
+ rxIrq = UART1_RX_IRQn;
+ }
+ else
+#endif
+ {
+ rxIrq = USART1_RX_IRQn;
+ }
break;
case 2:
rxIrq = USART2_RX_IRQn;
break;
}
-
- /* Enable RX interrupts */
- usart->usart_device->IEN = USART_IEN_RXDATAV;
-
- /* Enable IRQ */
if (oflag != RT_DEVICE_OFLAG_WRONLY)
{
NVIC_ClearPendingIRQ(rxIrq);
@@ -203,8 +240,17 @@ static rt_err_t rt_usart_open(rt_device_t dev, rt_uint16_t oflag)
NVIC_EnableIRQ(rxIrq);
}
}
- usart->usart_device->IFC = _USART_IFC_MASK;
-
+
+ /* Clear Flag */
+ if (usart->state & USART_STATE_ASYNC_ONLY)
+ {
+ usart->usart_device->IFC = _UART_IFC_MASK;
+ }
+ else
+ {
+ usart->usart_device->IFC = _USART_IFC_MASK;
+ }
+
if ((dev->flag & RT_DEVICE_FLAG_DMA_TX) && (oflag != RT_DEVICE_OFLAG_RDONLY))
{
/* DMA IRQ is enabled by DMA_Init() */
@@ -278,16 +324,16 @@ static rt_err_t rt_usart_close(rt_device_t dev)
* Number of read bytes
******************************************************************************/
static rt_size_t rt_usart_read (
- rt_device_t dev,
- rt_off_t pos,
- void *buffer,
+ rt_device_t dev,
+ rt_off_t pos,
+ void *buffer,
rt_size_t size)
{
struct efm32_usart_device_t *usart;
rt_uint8_t *ptr;
rt_err_t err_code;
rt_size_t read_len;
-
+
usart = (struct efm32_usart_device_t *)(dev->user_data);
/* Lock device */
@@ -402,12 +448,22 @@ static rt_size_t rt_usart_read (
}
else
{
+ rt_uint32_t flag;
+
+ if (usart->state & USART_STATE_ASYNC_ONLY)
+ {
+ flag = UART_STATUS_RXDATAV;
+ }
+ else
+ {
+ flag = USART_STATUS_RXDATAV;
+ }
ptr = buffer;
/* polling mode */
while ((rt_uint32_t)ptr - (rt_uint32_t)buffer < size)
{
- while (usart_device->STATUS & USART_STATUS_RXDATAV)
+ while (usart_device->STATUS & flag)
{
*ptr = usart_device->RXDATA & 0xff;
ptr ++;
@@ -450,9 +506,9 @@ static rt_size_t rt_usart_read (
* Number of written bytes
******************************************************************************/
static rt_size_t rt_usart_write (
- rt_device_t dev,
- rt_off_t pos,
- const void* buffer,
+ rt_device_t dev,
+ rt_off_t pos,
+ const void* buffer,
rt_size_t size)
{
rt_err_t err_code;
@@ -480,7 +536,7 @@ static rt_size_t rt_usart_write (
if ((dev->flag & RT_DEVICE_FLAG_DMA_TX) && (size > 2))
{ /* DMA mode Tx */
struct efm32_usart_dma_mode_t *dma_tx;
-
+
if (dev->flag & RT_DEVICE_FLAG_STREAM)
{
if (*((rt_uint8_t *)buffer + size - 1) == '\n')
@@ -517,13 +573,13 @@ static rt_size_t rt_usart_write (
// rt_thread_sleep(USART_WAIT_TIME_TX);
// }
// }
-// TODO: This function blocks the process
+// TODO: This function blocks the process
write_size = size;
}
else
- { /* polling mode */
+ { /* polling mode */
rt_uint8_t *ptr = (rt_uint8_t *)buffer;
-
+
if (dev->flag & RT_DEVICE_FLAG_STREAM)
{
/* stream mode */
@@ -542,10 +598,21 @@ static rt_size_t rt_usart_write (
}
else
{
+ rt_uint32_t flag;
+
+ if (usart->state & USART_STATE_ASYNC_ONLY)
+ {
+ flag = UART_STATUS_TXBL;
+ }
+ else
+ {
+ flag = USART_STATUS_TXBL;
+ }
+
/* write data directly */
while (size)
{
- while (!(usart->usart_device->STATUS & USART_STATUS_TXBL));
+ while (!(usart->usart_device->STATUS & flag));
usart->usart_device->TXDATA = (rt_uint32_t)*ptr;
++ptr; --size;
}
@@ -583,8 +650,8 @@ static rt_size_t rt_usart_write (
* Error code
******************************************************************************/
static rt_err_t rt_usart_control (
- rt_device_t dev,
- rt_uint8_t cmd,
+ rt_device_t dev,
+ rt_uint8_t cmd,
void *args)
{
RT_ASSERT(dev != RT_NULL);
@@ -645,27 +712,27 @@ static rt_err_t rt_usart_control (
if ((int_rx->data_ptr = rt_realloc(int_rx->data_ptr, size)) \
== RT_NULL)
{
- usart_debug("USART: no memory for RX buffer\n");
+ usart_debug("USART%d err: no mem for RX BUF\n", usart->unit);
err_code = -RT_ENOMEM;
break;
}
// TODO: Is the following line necessary?
- //rt_memset(int_rx->data_ptr, 0, size);
+ //rt_memset(int_rx->data_ptr, 0, size);
}
- }
+ }
else
{
/* Allocate new RX buffer */
if ((int_rx->data_ptr = rt_malloc(size)) == RT_NULL)
{
- usart_debug("USART: no memory for RX buffer\n");
+ usart_debug("USART%d err: no mem for RX BUF\n", usart->unit);
err_code = -RT_ENOMEM;
break;
}
}
int_rx->data_size = size;
int_rx->read_index = 0;
- int_rx->save_index = 0;
+ int_rx->save_index = 0;
}
break;
@@ -692,10 +759,11 @@ void rt_hw_usart_rx_isr(rt_device_t dev)
{
struct efm32_usart_device_t *usart;
struct efm32_usart_int_mode_t *int_rx;
+ rt_uint32_t flag;
/* interrupt mode receive */
RT_ASSERT(dev->flag & RT_DEVICE_FLAG_INT_RX);
-
+
usart = (struct efm32_usart_device_t *)(dev->user_data);
int_rx = (struct efm32_usart_int_mode_t *)(usart->rx_mode);
@@ -703,9 +771,17 @@ void rt_hw_usart_rx_isr(rt_device_t dev)
/* Set status */
usart->state |= USART_STATE_RX_BUSY;
-
- /* save on rx buffer */
- while (usart->usart_device->STATUS & USART_STATUS_RXDATAV)
+
+ /* save into rx buffer */
+ if (usart->state & USART_STATE_ASYNC_ONLY)
+ {
+ flag = UART_STATUS_RXDATAV;
+ }
+ else
+ {
+ flag = USART_STATUS_RXDATAV;
+ }
+ while (usart->usart_device->STATUS & flag)
{
rt_base_t level;
@@ -797,15 +873,15 @@ void rt_hw_usart_dma_tx_isr(rt_device_t dev)
* Configuration flags
*
* @param[in] usart
-* Pointer to USART device descriptor
+* Pointer to USART device descriptor
*
* @return
* Error code
******************************************************************************/
rt_err_t rt_hw_usart_register(
- rt_device_t device,
- const char *name,
- rt_uint32_t flag,
+ rt_device_t device,
+ const char *name,
+ rt_uint32_t flag,
struct efm32_usart_device_t *usart)
{
RT_ASSERT(device != RT_NULL);
@@ -816,16 +892,23 @@ rt_err_t rt_hw_usart_register(
RT_ASSERT(0);
}
- device->type = RT_Device_Class_Char;
+ if (usart->state & USART_STATE_SYNC)
+ {
+ device->type = RT_Device_Class_SPIBUS;
+ }
+ else
+ {
+ device->type = RT_Device_Class_Char;
+ }
device->rx_indicate = RT_NULL;
device->tx_complete = RT_NULL;
- device->init = rt_usart_init;
- device->open = rt_usart_open;
- device->close = rt_usart_close;
- device->read = rt_usart_read;
- device->write = rt_usart_write;
- device->control = rt_usart_control;
- device->user_data = usart;
+ device->init = rt_usart_init;
+ device->open = rt_usart_open;
+ device->close = rt_usart_close;
+ device->read = rt_usart_read;
+ device->write = rt_usart_write;
+ device->control = rt_usart_control;
+ device->user_data = usart;
/* register a character device */
return rt_device_register(device, name, RT_DEVICE_FLAG_RDWR | flag);
@@ -833,7 +916,7 @@ rt_err_t rt_hw_usart_register(
/***************************************************************************//**
* @brief
-* Initialize the specified USART unit
+* Initialize the specified USART unit
*
* @details
*
@@ -846,7 +929,7 @@ rt_err_t rt_hw_usart_register(
* Unit number
*
* @param[in] location
-* Pin location number
+* Pin location number
*
* @param[in] flag
* Configuration flag
@@ -855,14 +938,14 @@ rt_err_t rt_hw_usart_register(
* DMA channel number for TX
*
* @param[in] console
-* Indicate if using as console
+* Indicate if using as console
*
* @return
-* Pointer to USART device
+* Pointer to USART device
******************************************************************************/
static struct efm32_usart_device_t *rt_hw_usart_unit_init(
rt_device_t device,
- rt_uint8_t unitNumber,
+ rt_uint8_t unitNumber,
rt_uint8_t location,
rt_uint32_t flag,
rt_uint32_t dmaChannel,
@@ -875,7 +958,6 @@ static struct efm32_usart_device_t *rt_hw_usart_unit_init(
rt_uint32_t txDmaSelect;
GPIO_Port_TypeDef port_tx, port_rx, port_clk, port_cs;
rt_uint32_t pin_tx, pin_rx, pin_clk, pin_cs;
- union efm32_usart_init_t init;
efm32_irq_hook_init_t hook;
do
@@ -884,7 +966,7 @@ static struct efm32_usart_device_t *rt_hw_usart_unit_init(
usart = rt_malloc(sizeof(struct efm32_usart_device_t));
if (usart == RT_NULL)
{
- usart_debug("USART: no memory for USART%d device\n", unitNumber);
+ usart_debug("USART%d err: no mem\n", usart->unit);
break;
}
usart->counter = 0;
@@ -900,7 +982,7 @@ static struct efm32_usart_device_t *rt_hw_usart_unit_init(
usart->tx_mode = dma_mode = rt_malloc(sizeof(struct efm32_usart_dma_mode_t));
if (dma_mode == RT_NULL)
{
- usart_debug("USART: no memory for DMA TX\n");
+ usart_debug("USART%d err: no mem for DMA TX\n", usart->unit);
break;
}
dma_mode->dma_channel = dmaChannel;
@@ -912,46 +994,75 @@ static struct efm32_usart_device_t *rt_hw_usart_unit_init(
usart->rx_mode = rt_malloc(sizeof(struct efm32_usart_int_mode_t));
if (usart->rx_mode == RT_NULL)
{
- usart_debug("USART: no memory for interrupt RX\n");
+ usart_debug("USART%d err: no mem for INT RX\n", usart->unit);
break;
}
}
/* Initialization */
- if (unitNumber >= USART_COUNT)
+ if ((!(config & USART_STATE_ASYNC_ONLY) && (unitNumber >= USART_COUNT)) || \
+ ((config & USART_STATE_ASYNC_ONLY) && (unitNumber >= UART_COUNT)))
{
break;
}
switch (unitNumber)
{
case 0:
- usart->usart_device = USART0;
- usartClock = (CMU_Clock_TypeDef)cmuClock_USART0;
- txDmaSelect = DMAREQ_USART0_TXBL;
- port_tx = AF_USART0_TX_PORT(location);
- pin_tx = AF_USART0_TX_PIN(location);
- port_rx = AF_USART0_RX_PORT(location);
- pin_rx = AF_USART0_RX_PIN(location);
- port_clk = AF_USART0_CLK_PORT(location);
- pin_clk = AF_USART0_CLK_PIN(location);
- port_cs = AF_USART0_CS_PORT(location);
- pin_cs = AF_USART0_CS_PIN(location);
+ if (config & USART_STATE_ASYNC_ONLY)
+ {
+ usart->usart_device = UART0;
+ usartClock = (CMU_Clock_TypeDef)cmuClock_UART0;
+ txDmaSelect = DMAREQ_UART0_TXBL;
+ port_tx = AF_UART0_TX_PORT(location);
+ pin_tx = AF_UART0_TX_PIN(location);
+ port_rx = AF_UART0_RX_PORT(location);
+ pin_rx = AF_UART0_RX_PIN(location);
+ }
+ else
+ {
+ usart->usart_device = USART0;
+ usartClock = (CMU_Clock_TypeDef)cmuClock_USART0;
+ txDmaSelect = DMAREQ_USART0_TXBL;
+ port_tx = AF_USART0_TX_PORT(location);
+ pin_tx = AF_USART0_TX_PIN(location);
+ port_rx = AF_USART0_RX_PORT(location);
+ pin_rx = AF_USART0_RX_PIN(location);
+ port_clk = AF_USART0_CLK_PORT(location);
+ pin_clk = AF_USART0_CLK_PIN(location);
+ port_cs = AF_USART0_CS_PORT(location);
+ pin_cs = AF_USART0_CS_PIN(location);
+ }
break;
-
+
case 1:
- usart->usart_device = USART1;
- usartClock = (CMU_Clock_TypeDef)cmuClock_USART1;
- txDmaSelect = DMAREQ_USART1_TXBL;
- port_tx = AF_USART1_TX_PORT(location);
- pin_tx = AF_USART1_TX_PIN(location);
- port_rx = AF_USART1_RX_PORT(location);
- pin_rx = AF_USART1_RX_PIN(location);
- port_clk = AF_USART1_CLK_PORT(location);
- pin_clk = AF_USART1_CLK_PIN(location);
- port_cs = AF_USART1_CS_PORT(location);
- pin_cs = AF_USART1_CS_PIN(location);
+#if defined(EFM32_GIANT_FAMILY)
+ if (config & USART_STATE_ASYNC_ONLY)
+ {
+ usart->usart_device = UART1;
+ usartClock = (CMU_Clock_TypeDef)cmuClock_UART1;
+ txDmaSelect = DMAREQ_UART1_TXBL;
+ port_tx = AF_UART1_TX_PORT(location);
+ pin_tx = AF_UART1_TX_PIN(location);
+ port_rx = AF_UART1_RX_PORT(location);
+ pin_rx = AF_UART1_RX_PIN(location);
+ }
+ else
+#endif
+ {
+ usart->usart_device = USART1;
+ usartClock = (CMU_Clock_TypeDef)cmuClock_USART1;
+ txDmaSelect = DMAREQ_USART1_TXBL;
+ port_tx = AF_USART1_TX_PORT(location);
+ pin_tx = AF_USART1_TX_PIN(location);
+ port_rx = AF_USART1_RX_PORT(location);
+ pin_rx = AF_USART1_RX_PIN(location);
+ port_clk = AF_USART1_CLK_PORT(location);
+ pin_clk = AF_USART1_CLK_PIN(location);
+ port_cs = AF_USART1_CS_PORT(location);
+ pin_cs = AF_USART1_CS_PIN(location);
+ }
break;
-
+
case 2:
usart->usart_device = USART2;
usartClock = (CMU_Clock_TypeDef)cmuClock_USART2;
@@ -1003,9 +1114,13 @@ static struct efm32_usart_device_t *rt_hw_usart_unit_init(
/* Config interrupt and NVIC */
if (flag & RT_DEVICE_FLAG_INT_RX)
- {
+ {
hook.type = efm32_irq_type_usart;
hook.unit = unitNumber * 2 + 1;
+ if (config & USART_STATE_ASYNC_ONLY)
+ {
+ hook.unit += USART_COUNT * 2;
+ }
hook.cbFunc = rt_hw_usart_rx_isr;
hook.userPtr = device;
efm32_irq_hook_register(&hook);
@@ -1026,7 +1141,7 @@ static struct efm32_usart_device_t *rt_hw_usart_unit_init(
callback = (DMA_CB_TypeDef *)rt_malloc(sizeof(DMA_CB_TypeDef));
if (callback == RT_NULL)
{
- usart_debug("USART: no memory for callback\n");
+ usart_debug("USART%d err: no mem for callback\n", usart->unit);
break;
}
callback->cbFunc = DMA_IRQHandler_All;
@@ -1036,7 +1151,7 @@ static struct efm32_usart_device_t *rt_hw_usart_unit_init(
/* Setting up DMA channel */
chnlCfg.highPri = false; /* Can't use with peripherals */
chnlCfg.enableInt = true; /* Interrupt for callback function */
- chnlCfg.select = txDmaSelect;
+ chnlCfg.select = txDmaSelect;
chnlCfg.cb = callback;
DMA_CfgChannel(dmaChannel, &chnlCfg);
@@ -1046,38 +1161,42 @@ static struct efm32_usart_device_t *rt_hw_usart_unit_init(
descrCfg.size = dmaDataSize1;
descrCfg.arbRate = dmaArbitrate1;
descrCfg.hprot = 0;
- DMA_CfgDescr(dmaChannel, true, &descrCfg);
+ DMA_CfgDescr(dmaChannel, true, &descrCfg);
}
/* Init specified USART unit */
if (config & USART_STATE_SYNC)
{
- init.sync.enable = usartEnable;
- init.sync.refFreq = 0;
- init.sync.baudrate = SPI_BAUDRATE;
- init.sync.databits = usartDatabits8;
+ USART_InitSync_TypeDef init_sync = USART_INITSYNC_DEFAULT;
+
+ init_sync.enable = usartEnable;
+ init_sync.refFreq = 0;
+ init_sync.baudrate = SPI_BAUDRATE;
+ init_sync.databits = usartDatabits8;
if (config & USART_STATE_MASTER)
{
- init.sync.master = true;
+ init_sync.master = true;
}
else
{
- init.sync.master = false;
+ init_sync.master = false;
}
- init.sync.msbf = true;
- init.sync.clockMode = usartClockMode0; /* Clock idle low, sample on rising edge. */
- USART_InitSync(usart->usart_device, &init.sync);
+ init_sync.msbf = true;
+ init_sync.clockMode = usartClockMode0; /* Clock idle low, sample on rising edge. */
+ USART_InitSync(usart->usart_device, &init_sync);
}
else
{
- init.async.enable = usartEnable;
- init.async.refFreq = 0;
- init.async.baudrate = UART_BAUDRATE;
- init.async.oversampling = USART_CTRL_OVS_X4;
- init.async.databits = USART_FRAME_DATABITS_EIGHT;
- init.async.parity = USART_FRAME_PARITY_NONE;
- init.async.stopbits = USART_FRAME_STOPBITS_ONE;
- USART_InitAsync(usart->usart_device, &init.async);
+ USART_InitAsync_TypeDef init_async = USART_INITASYNC_DEFAULT;
+
+ init_async.enable = usartEnable;
+ init_async.refFreq = 0;
+ init_async.baudrate = UART_BAUDRATE;
+ init_async.oversampling = USART_CTRL_OVS_X4;
+ init_async.databits = USART_FRAME_DATABITS_EIGHT;
+ init_async.parity = USART_FRAME_PARITY_NONE;
+ init_async.stopbits = USART_FRAME_STOPBITS_ONE;
+ USART_InitAsync(usart->usart_device, &init_async);
}
/* Enable RX and TX pins and set location */
@@ -1119,13 +1238,20 @@ static struct efm32_usart_device_t *rt_hw_usart_unit_init(
rt_free(usart);
}
- usart_debug("USART: Unit %d init failed!\n", unitNumber);
+ if (config & USART_STATE_ASYNC_ONLY)
+ {
+ usart_debug("UART%d err: init failed!\n", unitNumber);
+ }
+ else
+ {
+ usart_debug("USART%d err: init failed!\n", unitNumber);
+ }
return RT_NULL;
}
/***************************************************************************//**
* @brief
-* Initialize all USART module related hardware and register USART device to
+* Initialize all USART module related hardware and register USART device to
* kernel
*
* @details
@@ -1159,7 +1285,7 @@ void rt_hw_usart_init(void)
config |= USART_STATE_AUTOCS;
#endif
- #if (RT_CONSOLE_DEVICE == 0x0UL)
+ #if (RT_CONSOLE_DEVICE == EFM_USART0)
config |= USART_STATE_CONSOLE;
flag |= RT_DEVICE_FLAG_STREAM;
#endif
@@ -1168,16 +1294,16 @@ void rt_hw_usart_init(void)
RT_ASSERT(RT_USART0_USING_DMA < DMA_CHAN_COUNT);
flag |= RT_DEVICE_FLAG_DMA_TX;
#else
- #define RT_USART0_USING_DMA EFM32_NO_DATA
+ #define RT_USART0_USING_DMA EFM32_NO_DMA
#endif
/* Initialize and Register usart0 */
if ((usart = rt_hw_usart_unit_init(
- &usart0_device,
- 0,
- RT_USING_USART0,
- flag,
- RT_USART0_USING_DMA,
+ &usart0_device,
+ 0,
+ RT_USING_USART0,
+ flag,
+ RT_USART0_USING_DMA,
config)) != RT_NULL)
{
rt_hw_usart_register(&usart0_device, RT_USART0_NAME, flag, usart);
@@ -1213,7 +1339,7 @@ void rt_hw_usart_init(void)
config |= USART_STATE_AUTOCS;
#endif
- #if (RT_CONSOLE_DEVICE == 0x1UL)
+ #if (RT_CONSOLE_DEVICE == EFM_USART1)
config |= USART_STATE_CONSOLE;
flag |= RT_DEVICE_FLAG_STREAM;
#endif
@@ -1222,17 +1348,17 @@ void rt_hw_usart_init(void)
RT_ASSERT(RT_USART1_USING_DMA < DMA_CHAN_COUNT);
flag |= RT_DEVICE_FLAG_DMA_TX;
#else
-
- #define RT_USART1_USING_DMA EFM32_NO_DATA
+
+ #define RT_USART1_USING_DMA EFM32_NO_DMA
#endif
/* Initialize and Register usart1 */
if ((usart = rt_hw_usart_unit_init(
- &usart1_device,
- 1,
- RT_USING_USART1,
- flag,
- RT_USART1_USING_DMA,
+ &usart1_device,
+ 1,
+ RT_USING_USART1,
+ flag,
+ RT_USART1_USING_DMA,
config)) != RT_NULL)
{
rt_hw_usart_register(&usart1_device, RT_USART1_NAME, flag, usart);
@@ -1268,7 +1394,7 @@ void rt_hw_usart_init(void)
config |= USART_STATE_AUTOCS;
#endif
-#if (RT_CONSOLE_DEVICE == 0x2UL)
+#if (RT_CONSOLE_DEVICE == EFM_USART2)
config |= USART_STATE_CONSOLE;
flag |= RT_DEVICE_FLAG_STREAM;
#endif
@@ -1278,17 +1404,17 @@ void rt_hw_usart_init(void)
flag |= RT_DEVICE_FLAG_DMA_TX;
#else
-
- #define RT_USART2_USING_DMA EFM32_NO_DATA
+
+ #define RT_USART2_USING_DMA EFM32_NO_DMA
#endif
/* Initialize and Register usart2 */
if ((usart = rt_hw_usart_unit_init(
- &usart2_device,
- 2,
- RT_USING_USART2,
- flag,
- RT_USART2_USING_DMA,
+ &usart2_device,
+ 2,
+ RT_USING_USART2,
+ flag,
+ RT_USART2_USING_DMA,
config)) != RT_NULL)
{
rt_hw_usart_register(&usart2_device, RT_USART2_NAME, flag, usart);
@@ -1305,6 +1431,84 @@ void rt_hw_usart_init(void)
}
#endif
+#ifdef RT_USING_UART0
+ config = USART_STATE_ASYNC_ONLY;
+ flag = RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX;
+
+ #if (RT_CONSOLE_DEVICE == EFM_UART0)
+ config |= USART_STATE_CONSOLE;
+ flag |= RT_DEVICE_FLAG_STREAM;
+ #endif
+
+ #ifdef RT_UART0_USING_DMA
+ RT_ASSERT(RT_UART0_USING_DMA < DMA_CHAN_COUNT);
+ flag |= RT_DEVICE_FLAG_DMA_TX;
+ #else
+ #define RT_UART0_USING_DMA EFM32_NO_DMA
+ #endif
+
+ /* Initialize and Register uart0 */
+ if ((usart = rt_hw_usart_unit_init(
+ &uart0_device,
+ 0,
+ RT_USING_UART0,
+ flag,
+ RT_UART0_USING_DMA,
+ config)) != RT_NULL)
+ {
+ rt_hw_usart_register(&uart0_device, RT_UART0_NAME, flag, usart);
+ }
+ else
+ {
+ break;
+ }
+ /* Initialize lock for uart0 */
+ usart->lock = &uart0_lock;
+ if (rt_sem_init(usart->lock, RT_UART0_NAME, 1, RT_IPC_FLAG_FIFO) != RT_EOK)
+ {
+ break;
+ }
+#endif
+
+#ifdef RT_USING_UART1
+ config = USART_STATE_ASYNC_ONLY;
+ flag = RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX;
+
+ #if (RT_CONSOLE_DEVICE == EFM_UART1)
+ config |= USART_STATE_CONSOLE;
+ flag |= RT_DEVICE_FLAG_STREAM;
+ #endif
+
+ #ifdef RT_UART1_USING_DMA
+ RT_ASSERT(RT_UART1_USING_DMA < DMA_CHAN_COUNT);
+ flag |= RT_DEVICE_FLAG_DMA_TX;
+ #else
+ #define RT_UART1_USING_DMA EFM32_NO_DMA
+ #endif
+
+ /* Initialize and Register uart1 */
+ if ((usart = rt_hw_usart_unit_init(
+ &uart1_device,
+ 1,
+ RT_USING_UART1,
+ flag,
+ RT_UART1_USING_DMA,
+ config)) != RT_NULL)
+ {
+ rt_hw_usart_register(&uart1_device, RT_UART1_NAME, flag, usart);
+ }
+ else
+ {
+ break;
+ }
+ /* Initialize lock for uart1 */
+ usart->lock = &uart1_lock;
+ if (rt_sem_init(usart->lock, RT_UART1_NAME, 1, RT_IPC_FLAG_FIFO) != RT_EOK)
+ {
+ break;
+ }
+#endif
+
usart_debug("USART: H/W init OK!\n");
return;
} while (0);
@@ -1312,7 +1516,9 @@ void rt_hw_usart_init(void)
rt_kprintf("USART: H/W init failed!\n");
}
-#endif /* (defined(RT_USING_USART0) || defined(RT_USING_USART1) || defined(RT_USING_USART2)) */
+#endif /* (defined(RT_USING_USART0) || defined(RT_USING_USART1) || \
+ defined(RT_USING_USART2) || defined(RT_USING_UART0) || \
+ defined(RT_USING_UART1)) */
/***************************************************************************//**
* @}
******************************************************************************/
diff --git a/bsp/efm32/drv_usart.h b/bsp/efm32/drv_usart.h
index 89b1fb455d..5ad28b7b5e 100644
--- a/bsp/efm32/drv_usart.h
+++ b/bsp/efm32/drv_usart.h
@@ -6,15 +6,17 @@
* @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
* @section Change Logs
* Date Author Notes
* 2010-12-22 onelife Initial creation for EFM32
* 2011-06-27 onelife Fix a bug when using compiler optimization
- * 2011-07-26 onelife Add lock (semaphore) to prevent simultaneously
+ * 2011-07-26 onelife Add lock (semaphore) to prevent simultaneously
* access
+ * 2011-12-09 onelife Add giant gecko support
+ * 2011-12-09 onelife Add UART module support
******************************************************************************/
#ifndef __DRV_USART_H__
#define __DRV_USART_H__
@@ -61,11 +63,12 @@ struct efm32_usart_device_t
#define USART_WAIT_TIME_TX (RT_TICK_PER_SECOND / 100 * 3)
#define USART_STATE_CONSOLE (1 << 0)
-#define USART_STATE_SYNC (1 << 1)
-#define USART_STATE_MASTER (1 << 2)
-#define USART_STATE_AUTOCS (1 << 3)
-#define USART_STATE_TX_BUSY (1 << 4)
-#define USART_STATE_RX_BUSY (1 << 5)
+#define USART_STATE_ASYNC_ONLY (1 << 1)
+#define USART_STATE_SYNC (1 << 2)
+#define USART_STATE_MASTER (1 << 3)
+#define USART_STATE_AUTOCS (1 << 4)
+#define USART_STATE_TX_BUSY (1 << 5)
+#define USART_STATE_RX_BUSY (1 << 6)
/* Exported functions ------------------------------------------------------- */
diff --git a/bsp/efm32/efm32_rom.ld b/bsp/efm32/efm32g_rom.ld
similarity index 93%
rename from bsp/efm32/efm32_rom.ld
rename to bsp/efm32/efm32g_rom.ld
index e1bb9dc8fc..fec1129a8e 100644
--- a/bsp/efm32/efm32_rom.ld
+++ b/bsp/efm32/efm32g_rom.ld
@@ -1,12 +1,12 @@
/***************************************************************************//**
- * @file efm32_rom.ld
- * @brief Linker script for EFM32 with GNU ld
+ * @file efm32_rom_g.ld
+ * @brief Linker script for EFM32 gecko with GNU ld
* COPYRIGHT (C) 2011, RT-Thread Development Team
* @author Bernard, onelife
* @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
* @section Change Logs
@@ -18,7 +18,7 @@
OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
ENTRY(__cs3_reset)
SEARCH_DIR(.)
-GROUP(-lgcc -lc -lcs3 -lcs3unhosted)
+GROUP(-lgcc -lc -lcs3 -lcs3unhosted)
MEMORY
{
@@ -98,7 +98,7 @@ SECTIONS
_edata = . ;
} >DATA
- .stack :
+ .stack :
{
. = . + _system_stack_size;
. = ALIGN(4);
@@ -119,7 +119,7 @@ SECTIONS
. = ALIGN(4);
/* This is used by the startup in order to initialize the .bss secion */
_ebss = . ;
-
+
*(.bss.init)
} > DATA
__bss_end = .;
@@ -133,7 +133,7 @@ SECTIONS
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
-
+
/* DWARF debug sections.
* Symbols in the DWARF debugging sections are relative to
* the beginning of the section so we begin them at 0.
diff --git a/bsp/efm32/hdl_interrupt.c b/bsp/efm32/hdl_interrupt.c
index cc26dd11f5..98f812c5b9 100644
--- a/bsp/efm32/hdl_interrupt.c
+++ b/bsp/efm32/hdl_interrupt.c
@@ -1,18 +1,21 @@
/***************************************************************************//**
- * @file hdl_interrupt.c
- * @brief USART driver of RT-Thread RTOS for EFM32
+ * @file hdl_interrupt.c
+ * @brief Interrupt handler of RT-Thread RTOS for EFM32
* COPYRIGHT (C) 2011, RT-Thread Development Team
- * @author onelife
- * @version 0.4 beta
+ * @author onelife
+ * @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
*******************************************************************************
* @section Change Logs
- * Date Author Notes
- * 2010-12-29 onelife Initial creation for EFM32
- * 2011-07-12 onelife Disable interrupts in GPIO handler
+ * Date Author Notes
+ * 2010-12-29 onelife Initial creation for EFM32
+ * 2011-07-12 onelife Disable interrupts in GPIO handler
+ * 2011-12-09 onelife Add giant gecko support
+ * 2011-12-09 onelife Add UART module support
+ * 2011-12-09 onelife Add LEUART module support
******************************************************************************/
/* Includes ------------------------------------------------------------------*/
@@ -39,7 +42,8 @@ efm32_irq_hook_t timerCbTable[TIMER_COUNT] = {RT_NULL};
efm32_irq_hook_t rtcCbTable[RTC_COUNT] = {RT_NULL};
efm32_irq_hook_t gpioCbTable[16] = {RT_NULL};
efm32_irq_hook_t acmpCbTable[ACMP_COUNT] = {RT_NULL};
-efm32_irq_hook_t usartCbTable[USART_COUNT * 2] = {RT_NULL};
+efm32_irq_hook_t usartCbTable[USART_COUNT * 2 + UART_COUNT * 2] = {RT_NULL};
+efm32_irq_hook_t leuartCbTable[LEUART_COUNT] = {RT_NULL};
efm32_irq_hook_t iicCbTable[I2C_COUNT] = {RT_NULL};
/* Private function prototypes -----------------------------------------------*/
@@ -147,10 +151,10 @@ void SysTick_Handler(void)
}
/*******************************************************************************
- * STM32F10x Peripherals Interrupt Handlers
- * Add here the Interrupt Handler for the used peripheral(s) (PPP), for the
- * available peripheral interrupt handler's name please refer to the startup
- * file (startup_stm32f10x_xx.s).
+ * STM32F10x Peripherals Interrupt Handlers
+ * Add here the Interrupt Handler for the used peripheral(s) (PPP), for the
+ * available peripheral interrupt handler's name please refer to the startup
+ * file (startup_stm32f10x_xx.s).
/******************************************************************************/
/***************************************************************************//**
@@ -158,7 +162,7 @@ void SysTick_Handler(void)
* Common DMA interrupt handler
*
* @details
- *
+ *
* @note
*
******************************************************************************/
@@ -250,7 +254,7 @@ void RTC_IRQHandler(void)
(rtcCbTable[0].cbFunc)(rtcCbTable[0].userPtr);
}
}
-
+
/* leave interrupt */
rt_interrupt_leave();
}
@@ -260,7 +264,7 @@ void RTC_IRQHandler(void)
* Common even number GPIO interrupt handler
*
* @details
- *
+ *
* @note
*
******************************************************************************/
@@ -298,7 +302,7 @@ void GPIO_EVEN_IRQHandler(void)
* Common odd number GPIO interrupt handler
*
* @details
- *
+ *
* @note
*
******************************************************************************/
@@ -533,6 +537,158 @@ void USART2_RX_IRQHandler(void)
}
}
+/***************************************************************************//**
+ * @brief
+ * Common UART0 TX interrupt handler
+ *
+ * @details
+ * This function handles UART0 TX complete interrupt request
+ *
+ * @note
+ *
+ ******************************************************************************/
+void UART0_TX_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ if (UART0->IF & UART_IF_TXC)
+ {
+ /* invoke callback function */
+ if (usartCbTable[USART_COUNT * 2].cbFunc != RT_NULL)
+ {
+ (usartCbTable[USART_COUNT * 2].cbFunc)(usartCbTable[USART_COUNT * 2].userPtr);
+ }
+
+ /* clear interrupt */
+ BITBAND_Peripheral(&(UART0->IFC), _UART_IF_TXC_SHIFT, 0x1UL);
+ }
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+
+/***************************************************************************//**
+ * @brief
+ * Common UART0 RX interrupt handler
+ *
+ * @details
+ * This function handles UART0 RX data valid interrupt request
+ *
+ * @note
+ *
+ ******************************************************************************/
+void UART0_RX_IRQHandler(void)
+{
+ if (UART0->IF & UART_IF_RXDATAV)
+ {
+ /* invoke callback function */
+ if (usartCbTable[USART_COUNT * 2 + 1].cbFunc != RT_NULL)
+ {
+ (usartCbTable[USART_COUNT * 2 + 1].cbFunc)(usartCbTable[USART_COUNT * 2 + 1].userPtr);
+ }
+ }
+}
+
+#if defined(EFM32_GIANT_FAMILY)
+/***************************************************************************//**
+ * @brief
+ * Common UART1 TX interrupt handler
+ *
+ * @details
+ * This function handles UART1 TX complete interrupt request
+ *
+ * @note
+ *
+ ******************************************************************************/
+void UART1_TX_IRQHandler(void)
+{
+ /* enter interrupt */
+ rt_interrupt_enter();
+
+ if (UART1->IF & UART_IF_TXC)
+ {
+ /* invoke callback function */
+ if (usartCbTable[USART_COUNT * 2 + 2].cbFunc != RT_NULL)
+ {
+ (usartCbTable[USART_COUNT * 2 + 2].cbFunc)(usartCbTable[USART_COUNT * 2 + 2].userPtr);
+ }
+
+ /* clear interrupt */
+ BITBAND_Peripheral(&(UART1->IFC), _UART_IF_TXC_SHIFT, 0x1UL);
+ }
+
+ /* leave interrupt */
+ rt_interrupt_leave();
+}
+
+/***************************************************************************//**
+ * @brief
+ * Common UART1 RX interrupt handler
+ *
+ * @details
+ * This function handles UART1 RX data valid interrupt request
+ *
+ * @note
+ *
+ ******************************************************************************/
+void UART1_RX_IRQHandler(void)
+{
+ if (UART1->IF & UART_IF_RXDATAV)
+ {
+ /* invoke callback function */
+ if (usartCbTable[USART_COUNT * 2 + 3].cbFunc != RT_NULL)
+ {
+ (usartCbTable[USART_COUNT * 2 + 3].cbFunc)(usartCbTable[USART_COUNT * 2 + 3].userPtr);
+ }
+ }
+}
+#endif
+
+/***************************************************************************//**
+ * @brief
+ * Common LEUART0 interrupt handler
+ *
+ * @details
+ * This function handles LEUART0 interrupt request
+ *
+ * @note
+ *
+ ******************************************************************************/
+void LEUART0_IRQHandler(void)
+{
+ if (LEUART0->IF & LEUART_IF_RXDATAV)
+ {
+ /* invoke callback function */
+ if (leuartCbTable[0].cbFunc != RT_NULL)
+ {
+ (leuartCbTable[0].cbFunc)(leuartCbTable[0].userPtr);
+ }
+ }
+}
+
+/***************************************************************************//**
+ * @brief
+ * Common LEUART1 interrupt handler
+ *
+ * @details
+ * This function handles LEUART1 interrupt request
+ *
+ * @note
+ *
+ ******************************************************************************/
+void LEUART1_IRQHandler(void)
+{
+ if (LEUART1->IF & LEUART_IF_RXDATAV)
+ {
+ /* invoke callback function */
+ if (leuartCbTable[1].cbFunc != RT_NULL)
+ {
+ (leuartCbTable[1].cbFunc)(leuartCbTable[1].userPtr);
+ }
+ }
+}
+
/***************************************************************************//**
* @brief
* Common IIC0 interrupt handler
@@ -564,7 +720,7 @@ void I2C0_IRQHandler(void)
* EFM32 common interrupt handlers register function
*
* @details
- *
+ *
* @note
*
******************************************************************************/
@@ -602,6 +758,11 @@ void efm32_irq_hook_register(efm32_irq_hook_init_t *hook)
usartCbTable[hook->unit].userPtr = hook->userPtr;
break;
+ case efm32_irq_type_leuart:
+ leuartCbTable[hook->unit].cbFunc = hook->cbFunc;
+ leuartCbTable[hook->unit].userPtr = hook->userPtr;
+ break;
+
case efm32_irq_type_iic:
iicCbTable[hook->unit].cbFunc = hook->cbFunc;
iicCbTable[hook->unit].userPtr = hook->userPtr;
diff --git a/bsp/efm32/hdl_interrupt.h b/bsp/efm32/hdl_interrupt.h
index 6003e8dd2d..576ece7927 100644
--- a/bsp/efm32/hdl_interrupt.h
+++ b/bsp/efm32/hdl_interrupt.h
@@ -1,18 +1,19 @@
-/******************************************************************//**
- * @file hdl_interrupt.h
- * @brief USART driver of RT-Thread RTOS for EFM32
+/***************************************************************************//**
+ * @file hdl_interrupt.h
+ * @brief Interrupt handler of RT-Thread RTOS for EFM32
* COPYRIGHT (C) 2011, RT-Thread Development Team
- * @author onelife
- * @version 0.4 beta
- **********************************************************************
+ * @author onelife
+ * @version 0.4 beta
+ *******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file LICENSE in this
- * distribution or at http://www.rt-thread.org/license/LICENSE
- **********************************************************************
+ * The license and distribution terms for this file may be found in the file
+ * LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
+ *******************************************************************************
* @section Change Logs
- * Date Author Notes
- * 2010-12-29 onelife Initial creation for EFM32
- *********************************************************************/
+ * Date Author Notes
+ * 2010-12-29 onelife Initial creation for EFM32
+ * 2011-12-09 onelife Add LEUART module support
+ ******************************************************************************/
#ifndef __HDL_INTERRUPT_H__
#define __HDL_INTERRUPT_H__
@@ -26,12 +27,13 @@ enum efm32_irq_hook_type_t
efm32_irq_type_gpio,
efm32_irq_type_acmp,
efm32_irq_type_usart,
+ efm32_irq_type_leuart,
efm32_irq_type_iic
};
typedef void (*efm32_irq_callback_t)(rt_device_t device);
-typedef struct
+typedef struct
{
enum efm32_irq_hook_type_t type;
rt_uint8_t unit;
@@ -39,7 +41,7 @@ typedef struct
void *userPtr;
} efm32_irq_hook_init_t;
-typedef struct
+typedef struct
{
efm32_irq_callback_t cbFunc;
void *userPtr;
@@ -58,4 +60,3 @@ void DMA_IRQHandler_All(unsigned int channel, bool primary, void *user);
void efm32_irq_hook_register(efm32_irq_hook_init_t *hook);
#endif /* __HDL_INTERRUPT_H__ */
-
diff --git a/bsp/efm32/rtconfig.h b/bsp/efm32/rtconfig.h
index fdbdb39415..05a7e6e6f0 100644
--- a/bsp/efm32/rtconfig.h
+++ b/bsp/efm32/rtconfig.h
@@ -1,12 +1,12 @@
/***************************************************************************//**
- * @file rtconfig.h
- * @brief RT-Thread config file
+ * @file rtconfig.h
+ * @brief RT-Thread config file
* COPYRIGHT (C) 2009, RT-Thread Development Team
- * @author
+ * @author
* @version 0.4 beta
*******************************************************************************
* @section License
- * The license and distribution terms for this file may be found in the file
+ * The license and distribution terms for this file may be found in the file
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
******************************************************************************/
#ifndef __RTTHREAD_CFG_H__
@@ -41,6 +41,7 @@
//#define RT_IRQHDL_DEBUG
//#define RT_USART_DEBUG
+//#define RT_LEUART_DEBUG
//#define RT_IIC_DEBUG
//#define RT_MISC_DEBUG
//#define RT_ADC_DEBUG
@@ -66,13 +67,13 @@
/* SECTION: IPC */
/* Using Semaphore*/
-#define RT_USING_SEMAPHORE /* Using by DFS and lwIP */
+#define RT_USING_SEMAPHORE /* Using by DFS and lwIP */
/* Using Mutex */
-//#define RT_USING_MUTEX /* Using by DFS */
+#define RT_USING_MUTEX /* Using by DFS */
/* Using Event */
//#define RT_USING_EVENT
/* Using MailBox */
-#define RT_USING_MAILBOX /* Using by lwIP */
+#define RT_USING_MAILBOX /* Using by lwIP */
/* Using Message Queue */
//#define RT_USING_MESSAGEQUEUE
/* SECTION: Memory Management */
@@ -89,33 +90,56 @@
/* Using Device System */
#define RT_USING_DEVICE
-/* USART Device for Console */
-#if defined(EFM32_G290_DK)
-#define RT_USING_USART1 (0x0UL)
-#define RT_USART1_NAME "debug"
-//#define RT_USART1_USING_DMA (0x0UL)
-#elif defined(EFM32_G890_STK)
-#define RT_USING_USART1 (0x1UL)
-#define RT_USART1_NAME "debug"
-//#define RT_USART1_USING_DMA (0x0UL)
+/* USART/UART/LEUART Device for Console */
+#if defined(EFM32_G8XX_STK)
+#define RT_USING_USART1 (0x1UL)
+#define RT_USART1_NAME "debug"
+//#define RT_USART1_USING_DMA (0x0UL)
+#elif defined(EFM32_GXXX_DK)
+#define RT_USING_USART1 (0x0UL)
+#define RT_USART1_NAME "debug"
+//#define RT_USART1_USING_DMA (0x0UL)
+#elif defined(EFM32GG_DK3750)
+#define EFM32GG_DK3750_USING_LEUART1
+ #if defined(EFM32GG_DK3750_USING_LEUART1)
+ #define RT_USING_LEUART1 (0x0UL)
+ #define RT_LEUART1_NAME "debug0"
+ //#define RT_LEUART1_USING_DMA (0x0UL)
+ #else
+ #define RT_USING_UART1 (0x2UL)
+ #define RT_UART1_NAME "debug"
+ //#define RT_UART1_USING_DMA (0x0UL)
+ #endif
#endif
/* SECTION: SPI options */
-#if defined(EFM32_G290_DK)
-#define RT_USING_USART0 (0x2UL)
-#define RT_USART0_SYNC_MODE (0x1UL) /* Master */
-#define RT_USART0_NAME "spi0"
-#define RT_USART0_USING_DMA (0x1UL)
-
-#define RT_USING_USART2 (0x1UL)
-#define RT_USART2_SYNC_MODE (0x1UL) /* Master */
-#define RT_USART2_NAME "spi2"
-#define RT_USART2_USING_DMA (0x2UL)
-#elif defined(EFM32_G890_STK)
+#if defined(EFM32_G8XX_STK)
//#define RT_USING_USART0 (0x0UL)
//#define RT_USART0_SYNC_MODE (0x1UL) /* Master */
//#define RT_USART0_NAME "spi0"
//#define RT_USART0_USING_DMA (0x1UL)
+#elif defined(EFM32_GXXX_DK)
+#define RT_USING_USART0 (0x2UL)
+#define RT_USART0_SYNC_MODE (0x1UL) /* Master */
+#define RT_USART0_NAME "spi0"
+#define RT_USART0_USING_DMA (0x1UL)
+
+#define RT_USING_USART2 (0x1UL)
+#define RT_USART2_SYNC_MODE (0x1UL) /* Master */
+#define RT_USART2_NAME "spi2"
+#define RT_USART2_USING_DMA (0x2UL)
+
+#elif defined(EFM32GG_DK3750)
+#define RT_USING_USART0 (0x1UL)
+#define RT_USART0_SYNC_MODE (0x1UL) /* Master */
+#define RT_USART0_NAME "spi0"
+#define RT_USART0_USING_DMA (0x1UL)
+
+#define RT_USING_USART1 (0x1UL)
+#define RT_USART1_SYNC_MODE (0x1UL) /* Master */
+#define RT_USART1_NAME "spi1"
+#define RT_USART1_USING_DMA (0x2UL)
+
#endif
/* SECTION: IIC options */
@@ -138,16 +162,30 @@
#define RT_TIMER2_NAME "tmr2"
/* SECTION: RTC options */
-#if (defined(EFM32_G290_DK) || defined(EFM32_G890_STK))
-//#define RT_USING_RTC
+#if (defined(EFM32_G8XX_STK) || defined(EFM32_GXXX_DK) || defined(EFM32GG_DK3750))
+#define RT_USING_RTC
#define RT_RTC_NAME "rtc"
#endif
/* SECTION: Serial options */
-#if defined(EFM32_G290_DK)
-#define RT_CONSOLE_DEVICE (0x1UL)
-#elif defined(EFM32_G890_STK)
-#define RT_CONSOLE_DEVICE (0x1UL)
+#define EFM_USART0 (0x00UL)
+#define EFM_USART1 (0x01UL)
+#define EFM_USART2 (0x02UL)
+#define EFM_UART0 (0x10UL)
+#define EFM_UART1 (0x11UL)
+#define EFM_LEUART0 (0x20UL)
+#define EFM_LEUART1 (0x21UL)
+
+#if defined(EFM32_G8XX_STK)
+#define RT_CONSOLE_DEVICE (EFM_USART1)
+#elif defined(EFM32_GXXX_DK)
+#define RT_CONSOLE_DEVICE (EFM_USART1)
+#elif defined(EFM32GG_DK3750)
+ #if defined(EFM32GG_DK3750_USING_LEUART1)
+ #define RT_CONSOLE_DEVICE (EFM_LEUART1)
+ #else
+ #define RT_CONSOLE_DEVICE (EFM_UART1)
+ #endif
#endif
/* SECTION: Console options */
@@ -165,11 +203,11 @@
#define EFM32_INTERFACE_ADC (0)
#define EFM32_INTERFACE_IIC (1)
#define EFM32_INTERFACE_SPI (2)
-#if defined(EFM32_G290_DK)
+#if (defined(EFM32_GXXX_DK) || defined(EFM32GG_DK3750))
//#define EFM32_USING_ACCEL EFM32_INTERFACE_IIC /* Three axis accelerometer */
//#define EFM32_USING_SFLASH /* SPI Flash */
-//#define EFM32_USING_SPISD /* MicroSD card */
-#define EFM32_USING_ETHERNET /* Ethernet controller */
+#define EFM32_USING_SPISD /* MicroSD card */
+//#define EFM32_USING_ETHERNET /* Ethernet controller */
#endif
#if defined(EFM32_USING_ACCEL)
@@ -191,22 +229,26 @@
#endif
#if defined(EFM32_USING_ETHERNET)
-#define ETH_USING_DEVICE_NAME RT_USART2_NAME
+ #if defined(EFM32_GXXX_DK)
+ #define ETH_USING_DEVICE_NAME RT_USART2_NAME
+ #elif defined(EFM32GG_DK3750)
+ #define ETH_USING_DEVICE_NAME RT_USART1_NAME
+ #endif
#define ETH_DEVICE_NAME "spiEth"
#define ETH_ADDR_DEFAULT {0x00, 0x01, 0x02, 0x03, 0x04, 0x05}
#endif
/* SECTION: device filesystem */
#if defined(EFM32_USING_SPISD)
-//#define RT_USING_DFS
-//#define RT_USING_DFS_ELMFAT
+#define RT_USING_DFS
+#define RT_USING_DFS_ELMFAT
#define DFS_ELMFAT_INTERFACE_EFM
/* the max number of mounted filesystem */
-#define DFS_FILESYSTEMS_MAX (2)
+#define DFS_FILESYSTEMS_MAX (2)
/* the max number of opened files */
-#define DFS_FD_MAX (4)
+#define DFS_FD_MAX (4)
/* the max number of cached sector */
-#define DFS_CACHE_MAX_NUM (4)
+#define DFS_CACHE_MAX_NUM (4)
#endif /* defined(EFM32_USING_SPISD) */
/* SECTION: lwip, a lighwight TCP/IP protocol stack */
@@ -216,7 +258,7 @@
//#define hostName "onelife.dyndns.org"
//#define userPwdB64 "dXNlcjpwYXNzd2Q="
-#define RT_USING_LWIP
+//#define RT_USING_LWIP
//#define RT_USING_NETUTILS
/* LwIP uses RT-Thread Memory Management */
#define RT_LWIP_USING_RT_MEM
diff --git a/bsp/efm32/rtconfig.py b/bsp/efm32/rtconfig.py
index 9657f1cb81..e0a7c006c8 100644
--- a/bsp/efm32/rtconfig.py
+++ b/bsp/efm32/rtconfig.py
@@ -9,15 +9,19 @@ if CROSS_TOOL == 'gcc':
#EXEC_PATH = 'C:\Program Files (x86)\yagarto\bin'
BUILD = 'run'
-# EFM32_BOARD = 'EFM32_G890_STK'
-EFM32_BOARD = 'EFM32_G290_DK'
+# EFM32_BOARD = 'EFM32_G8XX_STK'
+# EFM32_BOARD = 'EFM32_GXXX_DK'
+EFM32_BOARD = 'EFM32GG_DK3750'
-if EFM32_BOARD == 'EFM32_G890_STK':
+if EFM32_BOARD == 'EFM32_G8XX_STK':
EFM32_FAMILY = 'Gecko'
EFM32_TYPE = 'EFM32G890F128'
-elif EFM32_BOARD == 'EFM32_G290_DK':
+elif EFM32_BOARD == 'EFM32_GXXX_DK':
EFM32_FAMILY = 'Gecko'
EFM32_TYPE = 'EFM32G290F128'
+elif EFM32_BOARD == 'EFM32GG_DK3750':
+ EFM32_FAMILY = 'Giant Gecko'
+ EFM32_TYPE = 'EFM32GG990F1024'
if PLATFORM == 'gcc':
# toolchains
@@ -35,7 +39,11 @@ if PLATFORM == 'gcc':
#CFLAGS = DEVICE + ' -DRT_USING_MINILIBC'
CFLAGS = DEVICE
AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
- LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-efm32.map,-cref,-u,__cs3_reset -T efm32_rom.ld'
+ LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-efm32.map,-cref,-u,__cs3_reset -T'
+ if EFM32_BOARD == 'EFM32_G8XX_STK' or EFM32_BOARD == 'EFM32_GXXX_DK':
+ LFLAGS += ' efm32g_rom.ld'
+ elif EFM32_BOARD == 'EFM32GG_DK3750':
+ LFLAGS += ' efm32gg_rom.ld'
CPATH = ''
LPATH = ''